RFCs & ADRs
The design-decision record behind NextRush — 15 RFCs, grouped and numbered under docs/RFC/, and 7 ADRs under docs/adr/.
Reorganized 2026-07-17
RFCs were previously flat files named RFC-NEXTRUSH-<TOPIC>.md with no numbering. They are now
numbered 001–015 in authorship order and grouped into topic subfolders under docs/RFC/
(release-process/, request-data/, class-runtime/, runtime-adapters/). See
docs/RFC/INDEX.md for the
full index and grouping rationale, and
docs/adr/INDEX.md for ADRs.
RFCs (grouped by topic, numbered globally in authorship order)
release-process/
| RFC | Status | Date | Scope |
|---|---|---|---|
001-hybrid-versioning | Implemented | 2026-04-09 | Changesets fixed/independent versioning strategy — see Versioning |
request-data/
| RFC | Status | Date | Scope |
|---|---|---|---|
002-route-metadata | Approved, shipped | 2026-07-06 | endpoint() inline metadata + @nextrush/openapi |
003-stream | Shipped | 2026-07-06 | @nextrush/stream's writer-callback design |
004-validation | Shipped | 2026-07-06 | @nextrush/validation's Standard Schema design |
class-runtime/
| RFC | Status | Date | Scope |
|---|---|---|---|
005-plugin-system | Shipped — see ADR-0002 | 2026-07-07 | The Extension/Composition-First model |
006-di-container-ownership | Shipped (Option A) | 2026-07-08 | Per-app DI container isolation (opt-in) |
007-class-consolidation | Shipped — see ADR-0003, ADR-0004 | 2026-07-08 | Merges @nextrush/decorators + @nextrush/controllers into @nextrush/class |
008-request-scope | Shipped | 2026-07-08 | Per-request DI scope and bubbling |
009-lifecycle-hooks | Shipped | 2026-07-08 | OnInit/OnShutdown duck-typed lifecycle hooks |
010-interceptors | Shipped | 2026-07-08 | @UseInterceptor cross-cutting interceptors |
011-exception-filters | Shipped | 2026-07-08 | @Catch/@UseFilter exception filters |
012-modules | Shipped | 2026-07-08 | @Module + registerModule |
032-session-position | Draft — documentation-only, no code | 2026-07-27 | Records the @nextrush/session position — see Session position |
runtime-adapters/
| RFC | Status | Date | Scope |
|---|---|---|---|
013-adapter-contract | Shipped — see ADR-0007 | 2026-07-15 | Enforced ServerAdapter/FetchAdapter/AdapterContextFactory contract |
014-adapter-serverless | Shipped — see ADR-0007 | 2026-07-15 | @nextrush/adapter-serverless (Lambda/GCF/Azure event mappers) |
015-router-radix | Proposed — deferred, not built | 2026-07-17 | A future, opt-in @nextrush/router-radix package — design specified, build gated on a confirmed driver |
RFC 005 (plugin-system)'s own status line still reads "Draft / ready for approval" from its last
revision, even though docs/adr/ADR-0002-extension-model.md records the decision as "Accepted ·
Shipped." That mismatch is real and minor — noted here rather than silently resolved.
ADRs (all in docs/adr/)
| ADR | Decision | Status |
|---|---|---|
| ADR-0001 | Commit to the legacy TypeScript decorator dialect (not TC39 Stage 3) | Accepted |
| ADR-0002 | Extension Model (Plugin → Extension) | Accepted · Shipped |
| ADR-0003 | Class Runtime Consolidation (@nextrush/class) | Accepted · Shipped |
| ADR-0004 | Immutable Application Graph & single reflection boundary | Accepted · Shipped |
| ADR-0005 | Package tiers, sealed public surface & shim deprecation | Accepted |
| ADR-0006 | Features deferred to 1.x (not 1.0 blockers) | Accepted |
| ADR-0007 | Enforced adapter contract & serverless execution/event-format separation | Accepted |
Each ADR cross-references the RFC(s) it governs (e.g. ADR-0002 cites 005-plugin-system,
ADR-0007 cites 013-adapter-contract + 014-adapter-serverless) — the two document types are a
linked pair, not independent artifacts.
Supporting documents
docs/audits/ holds the production-readiness and class-based audits referenced by several RFCs
and ADRs. docs/migrations/class-consolidation.md is the migration guide for the
decorators/controllers → class consolidation (007-class-consolidation).
Where to read the real documents
Adapter Contract
What the cross-adapter conformance suite actually enforces — the driver interface, and the exact behaviors every adapter must match or explicitly diverge from.
Versioning & Compatibility
NextRush's real, mixed-version reality across 34 packages — verified per package.json, not assumed — and the semver/changesets policy that governs releases.