Build seam contracts in @dexpace/core: Transport, Serde, OperationDescriptor/buildRequest(). Builds on Phase 1 domain model, feeds Phase 4+ pipelines/resilience/adapters.
Scope
- Transport interface (send(), close()) — collapses SEAM-11/16 sync+async into one Promise contract. close() signature locked now (breaking-change avoidance), behavior deferred to Phase 8.
- composeSignal() / isTimeoutSignal() — cancellation/timeout helpers, reused by Phase 5 retry logic.
- CancellationError, OperationAssemblyError — new error classes under new DexpaceError taxonomy root (replaces DomainModelError as root).
- Serde — internal-only, provisional (SEAM-21 reshapes it Phase 6), kept out of public barrel/api-extractor surface.
- OperationDescriptor + buildRequest() — SEAM-26/27 encoding and base-URL composition rules.
- Retrofit: extract shared encodeRfc3986Component() (HTTP-29) into http/rfc3986.ts.
Toolchain
- tsconfig.base.json lib: add DOM (for AbortSignal/AbortController/DOMException)
- add expect-type devDependency
- ESLint guard against lib.dom global name collisions (Request/Response/Headers/window/document)
- CI: pin Node 18.17.0 job to conformance-check AbortSignal.any() against declared floor (NFR-10/NFR-17)
Build seam contracts in @dexpace/core: Transport, Serde, OperationDescriptor/buildRequest(). Builds on Phase 1 domain model, feeds Phase 4+ pipelines/resilience/adapters.
Scope
Toolchain