Skip to main content
Every significant engineering decision in Nika Diamond lives as an ADR β€” a short markdown file in docs/adr/ with status, date, context, decision, consequences. total: Accepted, Proposed.
Canonical source: docs/adr/index.json (machine-readable) + docs/adr/README.md (human index). One file per ADR, immutable once Accepted (superseded rather than edited).

At a glance

Total

decision records

Accepted

locked

Proposed

in review

By theme

How Nika runs itself as a project β€” version cadence, admission, ADRs-on-ADRs.
IDTitleStatus
ADR-001Diamond orphan branch rewrite instead of iterative refactorβœ… Accepted
ADR-002Real semver toward 1.0 β€” 0.91.0 release-candidate, 1.0 public API lock when gates are greenπŸ”„ amended (D-2026-06-20-N1)
ADR-00312-gate crate admission protocolβœ… Accepted
ADR-009ADR process and hook disciplineβœ… Accepted
ADR-011cargo xtask as canonical automation surfaceβœ… Accepted
The six-layer crate discipline + physical workspace layout.
IDTitleStatus
ADR-004Context-window-sized crate architectureβœ… Accepted
ADR-006Layered architecture with kernel ISP atomic traits + trait_variantβœ… Accepted
ADR-022Foundation crate layout v0.81: 14 crates, publish = falseβœ… Accepted
ADR-023File modularity: 800 LOC warn / 1500 fail / 3000 fail-with-ADRβœ… Accepted
ADR-026workspace.toml single source of truth + auto-generated crate.mdβœ… Accepted
ADR-027Strict L0 sublayer tiers + max 3 sibling depsβœ… Accepted
How Nika stays additive across decades without breaking changes.
IDTitleStatus
ADR-007Forward-compat invariants with #[non_exhaustive], new(), pre-planted reservationsβœ… Accepted
ADR-014Sealed kernel traits with explicit adapter registrationβœ… Accepted
ADR-025Per-crate semver via release-plz (publishable crates only)βœ… Accepted
ADR-028Forward-compat reservation policy: seams now, crates laterβœ… Accepted
How NikaError is shaped + how failures surface to users.
IDTitleStatus
ADR-005Trait-based error hierarchy with NikaErrorCode + Box<dyn>βœ… Accepted
ADR-010miette as the L4 diagnostic presentation layerβœ… Accepted
Cancellation, streaming, sync primitives, retry / timeout ownership.
IDTitleStatus
ADR-012Typestate for nika-runtime workflow lifecycleβœ… Accepted
ADR-016Cancellation model: future-drop primary + CancelCtx cooperative moduleβœ… Accepted
ADR-017Streaming policy: bounded mpsc(32), ReceiverStream at kernel boundaryβœ… Accepted
ADR-018Runtime + sync primitives: single Tokio rt, parking_lot defaultβœ… Accepted
ADR-019Retry + timeout ownership: stratified by layerβœ… Accepted
How the engine verifies itself beyond unit tests.
IDTitleStatus
ADR-013Loom-based concurrency verification for L0.5 + L3βœ… Accepted
ADR-015expect-test for inline snapshot assertions on rendered outputβœ… Accepted
The data-driven provider catalog and the workflow envelope convention.
IDTitleStatus
ADR-008TOML-driven catalog with build-time codegen + perfect-hash lookupβœ… Accepted
ADR-021YAML envelope: apiVersion + kind + metadata + specβœ… Accepted
The v0.100 plugin boundary, pre-planted at v0.80.
IDTitleStatus
ADR-020WASM plugin boundary + Sandbox: trait stubs now, dual timeout laterβœ… Accepted
Cross-cutting idiom adoption.
IDTitleStatus
ADR-024Adopt SOTA Rust patterns: bon Builder, Arc<str>, camino, sealed modulesβœ… Accepted
Late-added Accepted ADRs covering foundational types + kernel expansion.
IDTitleStatus
ADR-033L0 foundational types: Cost, UUIDv7, TrustLevel, TokenUsage evolutionβœ… Accepted
ADR-034L0.5 kernel traits expansion: 6 new traits scoped to v0.81+βœ… Accepted
Seed-level reservations ahead of their implementing crates.
IDTitleStatus
ADR-029EmbeddingSpec value-type reservation (memory subsystem seed)πŸ•’ Proposed
ADR-030MemoryFrameRef.trust reservation (Shield gate seed)πŸ•’ Proposed
ADR-031RecallQuery.tenant reservation (multi-tenant keyspace seed)πŸ•’ Proposed
ADR-032WasmPluginError::OutOfFuel + Trap + PluginCallContext reservationπŸ•’ Proposed
ADR-035Telemetry seams: SpanGuard.parent_span_id + SpanRef (OTel-ready)πŸ•’ Proposed

How ADRs work

1

Propose

Any significant engineering decision starts as a Proposed ADR β€” short markdown file in docs/adr/adr-NNN-<slug>.md with frontmatter: id, title, status: Proposed, date, tags, related. Writer describes the context, options considered, and recommended decision.
2

Review

Proposed ADRs are discussed in PRs. Others get related: / supersedes: / requires: links. Status can flip to Accepted or Rejected. The ADR index (docs/adr/index.json) is auto-regenerated.
3

Accept

Once Accepted, the ADR is immutable. Any revision happens via a new ADR that supersedes: the old one. This keeps decision history auditable β€” git log tells you when and why a given rule came in.
4

Supersede

Rare β€” but when a decision proves wrong, a new Accepted ADR supersedes it. The superseded ADR stays in the tree with status: Superseded-by: ADR-XXX. Examples: none yet (all 30 Accepted ADRs remain authoritative).

Metadata fields

Every ADR carries rich metadata in both its frontmatter and index.json:
FieldPurpose
idADR-001..ADR-035 β€” monotonic, gap-free
titleOne-line decision summary
statusProposed / Accepted / Rejected / Superseded
dateISO date of last status change
tagsFree-form (e.g., architecture, runtime, forward-compat)
affects_cratesList of crate names the decision constrains
affects_layersL0..L5 β€” which layers feel the effect
supersedesIDs this ADR replaces
superseded_byID that replaces this ADR
relatedSibling ADRs in the same design arc
requiresPrerequisite ADRs (this one makes no sense without them)
enablesDownstream ADRs this one unlocks

Gate 12 integration

Admission Gate 12 fails when a crate’s commit changes a public API surface without either (a) being purely additive under #[non_exhaustive] rules, or (b) referencing an Accepted ADR that authorizes the break. The ADR trail is how breaking changes earn the right to exist.

See also

Forward-compat invariants

The 8 patterns that keep most ADRs additive.

L0 decisions

Q1-Q13 β€” the foundation decisions that became ADRs 033, 034 + others.

12-gate admission

Gate 12 requires ADR alignment for breaking change.

ADR directory on GitHub

Browse the full ADR tree, index.json, and README.