Skip to content

docs: service catalog — guides, ADR-028, migration, resolvers + regenerated API reference#46

Merged
intech merged 8 commits into
mainfrom
feature/service-catalog
Jun 16, 2026
Merged

docs: service catalog — guides, ADR-028, migration, resolvers + regenerated API reference#46
intech merged 8 commits into
mainfrom
feature/service-catalog

Conversation

@intech

@intech intech commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

What

Documentation for the service catalog feature: declarative cross-service
calls (defineService, ctx.call / ctx.stream, remoteResolver, the catalog
primitives, enabledServices, propagateHeaders).

  • New guides: service-communication/service-catalog, service-communication/resolvers.
  • New migration guide: migration/service-catalogServiceRoutedefineService, server.client({ fallback })remoteResolver, and per-service options.
  • New ADR-028 (service catalog design) + sidebar/index wiring.
  • Updated production guides (architecture, docker, kubernetes, service-mesh, envoy-gateway, in-process-transport), quickstart, patterns, index hero, and packages/core.
  • Regenerated API reference (en/api/**) against the final framework surface — includes ServiceOptions, the defineService(descriptor, handlers, options?) third argument, Context.call / Context.stream, the resolver helpers, and the catalog primitives.

Quality

A scoped audit of these docs against the framework source fixed several contract
mismatches before publishing:

  • server.client() error timing: a null-returning resolver fails at client construction (the resolver runs inside server.client()), not at call time.
  • Removed a documented validateAtStartup resolver-probe option that does not exist — startup validation is a shape check only (enabledServices ⊆ catalog).
  • CreateServerOptions reference table was missing the five catalog fields; the Exports Summary omitted the catalog exports.
  • ctx.stream takes only a method key — CallOptions go to the returned factory.
  • Restored the per-service options migration example now that defineService accepts a third ServiceOptions argument.
  • Fixed dead /guide/typescript anchors (now point at the dedicated subpages).

vitepress build passes with no dead internal links.

Coordination notes (for the reviewer/merger)

  • This PR documents API that ships in the framework's service-catalog change, which is not yet merged or published. Please merge this docs PR together with / after that framework PR so the published docs never describe an unreleased API.
  • A few cross-repo example links (the car-sharing and o11y-coroot examples) resolve only once the corresponding examples branch is pushed and merged to its main. They are external links and do not affect the docs build.

intech and others added 5 commits June 15, 2026 14:42
Document the service-catalog feature (ctx.call / ctx.stream, defineService,
catalogs, remote resolvers):
- guide/service-communication/service-catalog.md — defineService, catalog +
  codegen, ctx.call / ctx.stream, the signal/deadline/header cascade,
  enabledServices, server.client, and the split error model.
- guide/service-communication/resolvers.md — RemoteResolver contract
  (synchronous, lazy, no startup I/O) + built-in single/map/dns/per-service-env
  resolvers, endpoint hints, mock testing.
- migration/service-catalog.md — ServiceRoute → defineService and
  server.client fallback → remoteResolver, before/after + checklist.
- contributing/adr/028-service-catalog.md — the architectural decisions.
- Sidebar + ADR index updated. `vitepress build` passes (no dead links).

Every signature was verified against the @connectum/core / @connectum/testing /
@connectum/protoc-gen-catalog source.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Regenerate the TypeDoc API reference from @connectum/core (and testing) on the
service-catalog feature branch: adds defineService / defineLazyService,
defineCatalog / mergeCatalogs, the Context (ctx.call / ctx.stream) + stream
handle types, RemoteResolver + built-in resolvers, CatalogConfigError,
defaultPropagateHeaders, and the @connectum/testing mock helpers. Removes the
deleted ServiceRoute type. `vitepress build` passes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…inks

Update pre-existing guides that still described the removed API or linked to
deleted examples:
- ServiceRoute `(router) => void` registration → `defineService` (packages/core,
  guide/production/architecture, index hero, quickstart, service-communication/
  patterns).
- `server.client(Desc, { fallback })` → configure `createServer({ remoteResolver })`;
  not-local + no resolver throws CatalogConfigError (not ConnectError/Unimplemented
  at construction); resolver null → ConnectError(Unavailable).
- production guides (docker / kubernetes / service-mesh / envoy-gateway) pointed
  at the deleted examples/production-ready/ — repoint to examples/car-sharing/
  (k8s / istio / Dockerfile); drop dead envoy-gateway links (Istio embeds Envoy).
- cli-commands: examples/basic-service/* → examples/getting-started/*.

`vitepress build` passes (no dead internal links).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Regenerate the TypeDoc API reference from connectum feature/service-catalog
so it reflects the final shipped surface: the `ServiceOptions` type and the
`defineService(descriptor, handlers, options?)` third argument, `Context.call`
/ `Context.stream`, the resolver helpers, and the catalog primitives. Clean
regeneration (removed stale pages for renamed/removed symbols).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A scoped audit of the service-catalog docs against the final connectum
source surfaced several contract mismatches and navigation bugs:

- server.client(): a resolver returning null fails at client construction
  (the resolver runs inside server.client(), before any RPC), not "at call
  time" — corrected in in-process-transport and packages/core.
- ADR-028 described a validateAtStartup resolver-probe option that does not
  exist; startup validation is a shape check only (enabledServices ⊆ catalog).
- packages/core CreateServerOptions table was missing the five catalog fields
  (catalog, enabledServices, remoteResolver, outgoingInterceptors,
  propagateHeaders) and the Exports Summary omitted the catalog exports.
- service-catalog guide: ctx.stream takes only a method key; CallOptions go to
  the returned factory, not to ctx.stream itself.
- migration guide: restore the per-service options example now that
  defineService accepts a third ServiceOptions argument.
- cli-commands: drop the coordination-root gen-api-docs.sh reference and the
  example pending removal; fix two dead /guide/typescript anchors to their
  dedicated subpages (also in packages/core and quickstart).

vitepress build passes (no dead internal links).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the type:docs Documentation: guides, README, JSDoc label Jun 15, 2026
intech and others added 3 commits June 16, 2026 20:56
…ures

The two packages new in 1.0.0 had no guide/package page (only auto-generated API
reference). Add dedicated pages (modeled on the existing package pages) and
sidebar entries. vitepress build green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Regenerated the TypeDoc API reference (pnpm docs:api) against connectum main at
1.0.0 (post-#137). Reflects the final 1.0.0 surface — including the service-catalog
exports, the EffectiveTransport/TransportValidationMode value exports, and the
testing/test-fixtures split. vitepress build green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add the auto-generated en/api/ directory to the structure tree and relabel
en/packages/ as per-package guides (the API reference lives in en/api/).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@intech intech merged commit 029e105 into main Jun 16, 2026
3 checks passed
@intech intech deleted the feature/service-catalog branch June 16, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:docs Documentation: guides, README, JSDoc

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant