Guarantees and limits
For a first working RPC, start with the Quickstart. This reference separates generated types, configured runtime enforcement and application responsibilities; it is not a setup checklist.
Version scope
This matrix targets the 1.3 source contract. Source and test links are pinned to framework revision f145616; they do not establish npm release availability or certify a deployment. Compare installed versions with the migration guidance. Regenerate existing catalogs after upgrading the plugin to obtain its updated request types.
Contract and runtime matrix
| What is provided | Layer and owner | Required setup | Observable result and limit | Evidence |
|---|---|---|---|---|
| Typed catalog calls | Compile time: Connectum catalog plugin using protobuf-es types | Generate and import the catalog augmentation; run TypeScript checking. | Unknown procedure keys and incompatible request initializers produce type errors in checked code. This does not validate arbitrary runtime input or business rules. | Source; generation and consumer test; negative type cases |
| Unary request validation | Runtime: upstream @connectrpc/validate / Protovalidate, wired by Connectum | Declare constraints, generate their descriptors and install validation in the service's effective interceptor chain. | A constraint violation rejects with InvalidArgument before the unary handler runs. A .proto file or generated TypeScript alone does not enforce it. | Source; validation and handler-exclusion test |
| Startup failure cleanup | Runtime: Connectum core | Use server.start() and handle its rejected promise. | A synchronously throwing ready listener rejects startup, releases the bound port and automatic signal listeners, and leaves the server stopped. This is process cleanup, not application rollback. | Source; port and listener cleanup test |
Inherited signal and deadline for ctx.call | Runtime: Connectum dispatch frame and ConnectRPC transport | Configure the catalog; register a local target or configure its remote resolver. Omit overrides to inherit the inbound request context. | The downstream call receives the inbound signal and remaining timeout; a longer timeout override is clamped. A supplied signal replaces inheritance. Cancellation is cooperative, not side-effect rollback. | Source; signal and deadline tests |
| One outer outgoing interceptor chain | Runtime: Connectum core using the ConnectRPC interceptor pipeline | Configure outgoingInterceptors and use ctx.call, ctx.stream or server.client(). A standalone catalog client takes its own chain. | The chain wraps each catalog call, including local and resolver routes, outside the resolver transport's middleware. Retry inside the chain can repeat downstream execution; this is not exactly-once RPC execution. | Local/remote wiring; remote wrapper; route, kind and order tests |
Configuration boundaries
createServer()alone does not install validation or authentication.createDefaultInterceptors()includes error handling and validation unless disabled; its timeout, bulkhead, circuit breaker and retry policies are opt-in. See Interceptors.- Authentication requires configured identity verification and authorization policy. Proto annotations alone do not establish a caller's identity. Add authentication and authorization when the service needs them.
- Catalog typing does not configure deployment topology. Local registration and remote resolvers decide where calls go; no automatic credential forwarding is implied. See Service catalog.
server.localClient()andcreateLocalTransport()do not inherit the server's outgoing chain. Configuring the same policy in both the outer chain and a resolver transport runs that policy in both places; the framework cannot deduplicate it. See Client interceptors.- Local calls still need the applicable authentication and authorization setup. In-process execution does not exercise TCP, TLS or every wire-serialization detail. Leaving a stream loop with
breakis not itself cancellation; see the local transport boundary and in-process guide.
Not guaranteed
- Type checking does not prove business correctness, runtime input validity or compatibility with every deployed contract version.
- Cancellation does not undo committed work or forcibly stop signal-unaware code.
- Shared middleware does not make local and network calls identical in identity, security, serialization, latency or failure behavior.
- Connectum does not automatically provide distributed transactions, exactly-once execution or exactly-once event delivery.
For setup, follow Validation, Server lifecycle or Service communication.