Skip to content

Architecture Decision Records ​

Architecture Decision Records (ADRs) capture important design decisions with their context, rationale, and consequences. Each ADR follows a standard format: Status, Context, Decision, Consequences, Alternatives.

ADRs retain the context of each dated decision. Historical dependency versions, examples, and performance estimates are not current runtime guarantees. Follow the guides and runtime compatibility pages for current setup; measure performance with your service and workload.

Status is Proposed, Accepted -- YYYY-MM-DD, or Accepted -- YYYY-MM-DD; revised -- YYYY-MM-DD when a later dated decision in the same ADR supersedes part of the original. The amendment rules are in the documentation style guide.

Accepted ADRs ​

#TitleDateSummary
001Native TypeScript2026-02-16Native TypeScript development + compile-before-publish with tsup
003Package Decomposition2025-12-22Modular packages in dependency layers
005Input Validation2025-12-24Protovalidate as primary validation mechanism
006Resilience Patterns2025-12-24; revised 2026-10-08Resilience interceptors with cockatiel library
007Testing Strategy2025-12-24node:test runner, 90%+ coverage target
008Performance Benchmarking2025-12-24k6 load testing, p95 < 100ms SLA
009Buf CLI Migration2026-02-06Buf CLI v2 for proto generation + lint
014Method Filter Interceptor2026-02-07; revised 2026-10-08Map-based routing for unary and streaming calls; nested interceptors own streaming policy
020Reflection Proto Sync2026-02-074-phase reflection-based proto synchronization
022Protocol Extraction2026-02-11Healthcheck/Reflection as separate packages
023Uniform Registration API2026-02-11createDefaultInterceptors(), explicit interceptor control
024Auth/Authz Strategy2026-02-15; revised 2026-10-08@connectum/auth package with JWT, RBAC, context propagation
025Package Versioning Strategy2026-02-20; revised 2026-10-08Two-phase plan (Fixed for rc, Hybrid after 1.0.0); Phase 2 cancelled -- all packages share one version
026EventBus Architecture2026-03-07Proto-first EventBus with pluggable broker adapters
027External Contracts vs EventBus2026-06-12External contracts at adapter layer; EventBus stays protobuf-only; remove sync
028Service Catalog2026-06-15; revised 2026-10-09Declarative ctx.call/ctx.stream, defineService, sync RemoteResolver, split error model, buf codegen
029Internal Service-to-Service Auth2026-06-21First-class internal marker distinct from public; per-service trust-source interceptor (mesh identity / issuer-bound JWKS) for worker/out-of-process callers
030OpenAPI generation with proto-authz overlay2026-06-23Generate OpenAPI v3.1 (buf remote plugin) + overlay reading the same resolveMethodAuth the runtime uses → contract reflects authz, no drift; reference pattern in car-sharing, framework CLI deferred

Creating a New ADR ​

  1. Create XXX-title.md using the template below
  2. Status starts as Proposed
  3. After review and approval, change to Accepted
  4. Update this index
markdown
# ADR-XXX: Title

## Status
Proposed -- YYYY-MM-DD

## Context
Why is this decision needed?

## Decision
What did we decide?

## Consequences
### Positive
### Negative

## Alternatives Considered

## Changelog