Architecture

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 001015 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/

RFCStatusDateScope
001-hybrid-versioningImplemented2026-04-09Changesets fixed/independent versioning strategy — see Versioning

request-data/

RFCStatusDateScope
002-route-metadataApproved, shipped2026-07-06endpoint() inline metadata + @nextrush/openapi
003-streamShipped2026-07-06@nextrush/stream's writer-callback design
004-validationShipped2026-07-06@nextrush/validation's Standard Schema design

class-runtime/

RFCStatusDateScope
005-plugin-systemShipped — see ADR-00022026-07-07The Extension/Composition-First model
006-di-container-ownershipShipped (Option A)2026-07-08Per-app DI container isolation (opt-in)
007-class-consolidationShipped — see ADR-0003, ADR-00042026-07-08Merges @nextrush/decorators + @nextrush/controllers into @nextrush/class
008-request-scopeShipped2026-07-08Per-request DI scope and bubbling
009-lifecycle-hooksShipped2026-07-08OnInit/OnShutdown duck-typed lifecycle hooks
010-interceptorsShipped2026-07-08@UseInterceptor cross-cutting interceptors
011-exception-filtersShipped2026-07-08@Catch/@UseFilter exception filters
012-modulesShipped2026-07-08@Module + registerModule
032-session-positionDraft — documentation-only, no code2026-07-27Records the @nextrush/session position — see Session position

runtime-adapters/

RFCStatusDateScope
013-adapter-contractShipped — see ADR-00072026-07-15Enforced ServerAdapter/FetchAdapter/AdapterContextFactory contract
014-adapter-serverlessShipped — see ADR-00072026-07-15@nextrush/adapter-serverless (Lambda/GCF/Azure event mappers)
015-router-radixProposed — deferred, not built2026-07-17A 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/)

ADRDecisionStatus
ADR-0001Commit to the legacy TypeScript decorator dialect (not TC39 Stage 3)Accepted
ADR-0002Extension Model (PluginExtension)Accepted · Shipped
ADR-0003Class Runtime Consolidation (@nextrush/class)Accepted · Shipped
ADR-0004Immutable Application Graph & single reflection boundaryAccepted · Shipped
ADR-0005Package tiers, sealed public surface & shim deprecationAccepted
ADR-0006Features deferred to 1.x (not 1.0 blockers)Accepted
ADR-0007Enforced adapter contract & serverless execution/event-format separationAccepted

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

Was this helpful?

On this page