AGPL-3.0-or-later · forever.

the decisions

Why the engine is built this way.

Every architectural choice in the engine is written down before it is built, kept in the repo beside the code it binds, and never quietly rewritten: a decision that stops holding is superseded by a named successor, and both stay. This is that record, read at the release pin, 96 decisions deep.

  • 96decisionsat v0.118.7
  • 79acceptedthe engine is built this way
  • 91cite anotherthe record is a graph
  • 3supersededreplaced, never deleted

accepted

79 decisions

the decision holds · the engine is built this way

  1. ADR-001Diamond orphan branch rewrite instead of iterative refactor
    2026-04-13 · L0 L0.5 L1 L2 L3 L4 L5 · cites 9 others
  2. ADR-002Forever v0.x -- no v1.0 target
    2026-04-13 · cites 6 others
  3. ADR-00312-gate crate admission protocol
    2026-04-13 · L0 L0.5 L1 L2 L3 L4 L5 · cites 20 others
  4. ADR-004Context-window-sized crate architecture
    2026-04-13 · L0 L0.5 L1 L2 L3 L4 L5 · cites 13 others
  5. ADR-005Trait-based error hierarchy with NikaErrorCode and Box<dyn>
    2026-04-13 · L0 · cites 8 others
  6. ADR-006Layered architecture with kernel ISP atomic traits and trait_variant
    2026-04-13 · L0 L0.5 L1 L2 L3 L4 L5 · cites 25 others
  7. ADR-007Forward-compat invariants with non_exhaustive, new(), and pre-planted hooks
    2026-04-13 · L0 L0.5 · cites 19 others
  8. ADR-008TOML-driven catalog with build-time codegen and perfect-hash lookup
    2026-04-14 · L0 L4 · cites 3 others
  9. ADR-009ADR process and hook discipline (meta)
    2026-04-14 · cites 3 others
  10. ADR-010miette as the L4 diagnostic presentation layer
    2026-04-14 · L0 L4 · cites 5 others
  11. ADR-011cargo xtask as canonical automation surface
    2026-04-14 · cites 4 others
  12. ADR-012Typestate for nika-runtime workflow lifecycle
    2026-04-14 · L0.5 L2 · cites 6 others
  13. ADR-013Loom-based concurrency verification for L0.5 and L3
    2026-04-14 · L0.5 L3 · cites 3 others
  14. ADR-014Sealed kernel traits with explicit adapter registration
    2026-04-14 · L0.5 · cites 14 others
  15. ADR-015expect-test for inline snapshot assertions on rendered output
    2026-04-15 · L0 · cites 5 others
  16. ADR-016Cancellation model: future-drop primary, CancelCtx cooperative module
    2026-04-16 · L0.5 · cites 14 others
  17. ADR-017Streaming policy: bounded mpsc(32), ReceiverStream at kernel boundary
    2026-04-16 · L0.5 · cites 4 others
  18. ADR-018Runtime + sync primitives: single Tokio rt, parking_lot default
    2026-04-16 · L0.5 L1 L2 L3 · cites 6 others
  19. ADR-019Retry + timeout ownership: stratified by layer
    2026-04-16 · L0.5 L1 L2 · cites 4 others
  20. ADR-020WASM plugin boundary + Sandbox: trait stubs now, dual timeout later
    2026-04-16 · L0.5 · cites 12 others
  21. ADR-022Foundation crate layout v0.81: 14 crates, publish = false, 5 renames + extracts
    2026-04-16 · L0 L0.5 L4 · cites 11 others
  22. ADR-023File modularity discipline: 800 LOC warn / 1500 fail / 3000 fail-with-LOC-EXEMPT-allowlist
    2026-04-16 · L0 L0.5 L1 L2 L3 L4 L5 · cites 6 others
  23. ADR-024Adopt SOTA Rust patterns: bon Builder, Arc<str>, camino, sealed module, strum, public-api
    2026-04-16 · L0 L0.5 · cites 5 others
  24. ADR-025Per-crate semver via release-plz (publishable crates only)
    2026-04-16 · L5 · cites 3 others
  25. ADR-026workspace.toml single source of truth + auto-generated crate.md
    2026-04-16 · L0 L0.5 L1 L2 L3 L4 L5 · cites 4 others
  26. ADR-027Strict L0 sublayer tiers + max 3 sibling deps + cargo timings per-crate budget
    2026-04-16 · L0 L0.5 · cites 6 others
  27. ADR-028Forward-compat API-type reservation (amended — feature scheduling dropped)
    2026-04-16 · L0 L0.5 · cites 14 others
  28. ADR-029EmbeddingSpec value-type reservation (Cortex seed)
    2026-04-17 · L0 L0.5 · cites 4 others
  29. ADR-030MemoryFrameRef.trust reservation (Shield gate seed)
    2026-04-17 · L0 L0.5 · cites 8 others
  30. ADR-031RecallQuery.tenant reservation (multi-tenant keyspace seed)
    2026-04-17 · L0 L0.5 · cites 6 others
  31. ADR-032WasmPluginError OutOfFuel + Trap + PluginCallContext reservation
    2026-04-17 · L0.5 · cites 7 others
  32. ADR-033L0 foundational types: Cost, UUIDv7, TrustLevel, TokenUsage evolution
    2026-04-16 · L0 L0.5 · cites 11 others
  33. ADR-034L0.5 kernel traits expansion: 6 new traits scoped to v0.81+ additions
    2026-04-16 · L0.5 · cites 14 others
  34. ADR-035Telemetry seams: SpanGuard parent_span_id + SpanRef (OTel-ready)
    2026-04-17 · L0.5 · cites 5 others
  35. ADR-037Bottom-up diamond progression (no feature-milestone defer)
    2026-04-17 · L0 L0.5 L1 L2 L3 L4 L5 · cites 6 others
  36. ADR-038Admit nika-bm25 as the first L1 memory satellite (CRAFT-from-scratch BM25 scorer)
    2026-05-12 · L1 · cites 10 others
  37. ADR-083L1 computer-use effect crates · cross-platform doctrine (macOS + Linux prio · Windows + all)
    2026-05-26 · L1 · cites 4 others
  38. ADR-084nika-catalog builtin set · reconciliation to spec 26 (42→26 stdlib collapse + json_merge cut)
    2026-05-27 · L0 · cites 7 others
  39. ADR-085spec/workflow.schema.json invoke.tool oneOf · interim hand-derived bridge to engine schemars codegen
    2026-05-27 · L0 · cites 7 others
  40. ADR-086builtin Rams sweep · nika:csv_to_json → nika:convert universal multi-format · less but better
    2026-05-27 · L0 · cites 7 others
  41. ADR-087nika:sleep + nika:wait_until → nika:wait · temporal-control Rams collapse
    2026-05-27 · L0 · cites 8 others
  42. ADR-088nika:cost + records + dag_info + threads → nika:inspect · introspection Rams collapse
    2026-05-27 · L0 · cites 9 others
  43. ADR-090Structural doctrine enforcement — gates project the SSOT
    2026-06-10 · L0 L0.5 L1 L2 L3 L4 L5 · cites 6 others
  44. ADR-091Sovereign local inference · nika-infer-local · pure-Rust candle sidecar, OpenAI-compat reuse, no rig / no mistral.rs
    2026-06-11 · L1.5 · cites 6 others
  45. ADR-093nika-infer-local HTTP server · tiny_http for the v1 sidecar endpoint
    2026-06-11 · L1.5 · cites 5 others
  46. ADR-094nika-pck · content-addressed sharing — identity decentralized, discovery a forkable index, trust in the artifact
    2026-06-11 · L0 L1 L2 L4 · cites 4 others
  47. ADR-095exec verb security architecture · layered defense-in-depth (permits = declaration, 3 layers enforce)
    2026-06-12 · L0.5 L1 L2 L3 · cites 7 others
  48. ADR-096The agent-loop intelligence layer — routing, stall guard, compose, telemetry
    2026-06-12 · L2 L0 · cites 3 others
  49. ADR-097Parallel intra-turn tool dispatch — concurrent resolve, request-order fold
    2026-06-12 · L2 · cites 1 other
  50. ADR-099Durable-lite run resume — the trace IS the checkpoint
    2026-07-05 · L2 L4 · cites 3 others
  51. ADR-100Trace retention — bounded by default, never silently, never a pending gate
    2026-07-05 · L2 L4 · cites 2 others
  52. ADR-105nika:image_generate — the Media builtin rides a dedicated image plane
    2026-07-05 · L0 L1.5 L4 · cites 4 others
  53. ADR-107Admit nika-check-wasm — the static half of nika check, compiled to the browser
    2026-07-28 · L4 · cites 5 others
  54. ADR-108Split the spec-15 proof primitives out of nika-runtime into nika-proof (L0)
    2026-07-29 · L0 L3 · cites 3 others
  55. ADR-109Publish the composition proof receipt — what this engine may claim on spec 14
    2026-07-30 · L0 L3 L4 · cites 2 others
  56. ADR-110nika-cli size-cap member split: the host plane descends to nika-cli-host
    2026-07-31 · L4 · cites 4 others
  57. ADR-111Deliver the pause event outward — operator-configured CloudEvents webhook
    2026-08-06 · L0 L4
  58. ADR-113The envelope's identity moves onto `nika:` — the version slot dies, losslessly
    2026-08-13 · L0 L4 · cites 4 others · supersedes ADR-082
  59. ADR-114`nika-cadence` — the pure arming domain, at L0
    2026-08-15 · L0 L4 · cites 2 others
  60. ADR-115nika-check size-cap member split: the analysis substrate descends to nika-check-analyzer
    2026-08-18 · L0 · cites 4 others
  61. ADR-117admit nika serve network access behind explicit authority
    2026-08-21 · L3 L4 · cites 2 others · supersedes ADR-116
  62. ADR-118admit nika-arm as the shared ARM custody library
    2026-08-21 · L4 · cites 1 other
  63. ADR-119make remote job admission durable before transport
    2026-08-22 · L4 · cites 1 other
  64. ADR-120descend the shared service execution driver out of nika-runtime
    2026-08-23 · L3 L4
  65. ADR-121nika-runtime size-cap member split: the run's dataflow descends to nika-dataflow
    2026-08-25 · L0 L3 · cites 5 others
  66. ADR-122One access plan is the execution authority: resolved once, executed as resolved
    2026-09-03 · L1.5 L2 L3 L4 · cites 4 others
  67. ADR-123check answers four questions: VALID · ACCESS READY · CAPACITY FIT · RUN READY, and run refuses what check refuses
    2026-09-03 · L0 L3 L4 · cites 3 others
  68. ADR-124one typed oracle facade: the CLI verb, the MCP tool and the session read the same audit
    2026-09-03 · L4 · cites 4 others
  69. ADR-125the native session is a grounded host runtime over the installed engine, never a workflow
    2026-09-03 · L4 · cites 8 others
  70. ADR-126project changes from the session: one typed change set, preview == apply, consent outside the model
    2026-09-03 · L4 · cites 5 others
  71. ADR-127nika-runtime size-cap member split: the run's laws descend to nika-runtime-laws
    2026-09-03 · L3 · cites 8 others
  72. ADR-128The run's settlement is built once by the runtime and projected by every door
    2026-09-04 · L0 L3 L4 · cites 9 others
  73. ADR-129Run state and evidence state are distinct: the writer's lease, the INCOMPLETE exit, the resident's interrupted
    2026-09-04 · L3 L4 · cites 6 others
  74. ADR-130One vocabulary, one owner: the task-record twin dies, the resident's status projects the settlement, copied spellings are pinned
    2026-09-04 · L2 L3 L4 · cites 5 others
  75. ADR-131The resident's job door is public: admission by served name, digests as optional integrity assertions, the engine as the one producer
    2026-09-04 · L2 L4 · cites 4 others
  76. ADR-132Identity, idempotency and protocol: what a duplicate human action yields, and the resident's writer stamp
    2026-09-04 · L4 · cites 7 others
  77. ADR-133The session machine is portable: typed outcomes, proposal and gate identities, hosts that judge by identity
    2026-09-04 · L4
  78. ADR-134Trust is a rung, never a word: declared · discovered · observed on every access lane
    2026-09-04 · L0 L2 L3 L4
  79. ADR-135The public executable is born nika: one bin target with the public name, no packaging rename, no second executable
    2026-09-04 · L4 L5 · cites 2 others

proposed

13 decisions

written, not settled · cite it as a proposal, never as canon

  1. ADR-036MSRV policy: rust-toolchain.toml SSOT + N-2 stable cadence (stub)
    2026-04-17 · L0 L0.5 L1 L2 L3 L4 L5 · cites 4 others
  2. ADR-039Streaming MemoryRecall for lazy fusion · recall_stream()
    2026-05-12 · L0.5 L1 L2 · cites 10 others
  3. ADR-040Cargo feature matrix for nika-memory · zero-cost modularity
    2026-05-12 · L1 L2 · cites 15 others
  4. ADR-041Type-state lifecycle for nika-memory orchestrator
    2026-05-12 · L2 · cites 7 others
  5. ADR-042Autodesc MINIMAL/FULL split · forcing-function moat at W4
    2026-05-12 · L1 · cites 5 others
  6. ADR-078MemoryRecall &self satellite contract + &mut self orchestrator pool (Option D)
    2026-05-12 · L0.5 L1 L2 · cites 13 others
  7. ADR-079Capabilities<E: EffectSet> phantom-type kernel · compile-time effect refusal (Option C hybrid)
    2026-05-12 · L0.5 L1 L2 L4 · cites 10 others
  8. ADR-080MCP STDIO transport vulnerability-class sandbox canon · 5-layer mitigation (post phantom-CVE audit)
    2026-05-12 · L0.5 L2 L3 L4 · cites 9 others
  9. ADR-081L1 effect-crate guard contract · 7 security guards as forever crate-admission criteria
    2026-05-14 · L1 · cites 10 others
  10. ADR-092Make nika check a verifier, not a linter — the static-analysis ladder on a unified flow IR
    2026-06-11 · L0 · cites 5 others
  11. ADR-098Underspecified schemas fall back to native JSON mode + local validation
    2026-07-05 · L1.5 L2 · cites 1 other
  12. ADR-106nika add — the registry client verb (resolve · verify · install)
    2026-07-06 · L1 L4 · cites 3 others
  13. ADR-112Trace-as-dataset — OTel GenAI semconv now, input-capture before the SFT export
    2026-08-06 · L3 L4

superseded

3 decisions

another decision replaced it · the chain is named on the row

  1. ADR-021YAML envelope convention: apiVersion + kind + metadata + spec, multi-doc, 9 doc kinds
    2026-04-16 · L0 L0.5 · cites 6 others · superseded by ADR-082
  2. ADR-082Workflow envelope: single version marker `nika: v1` (supersedes K8s apiVersion form)
    2026-05-25 · L0 L0.5 · cites 9 others · superseded by ADR-113 · supersedes ADR-021
  3. ADR-116nika serve v0 was a local-only resident firer
    2026-08-19 · L0 L4 · cites 2 others · superseded by ADR-117

rejected

1 decision

considered and refused · the record keeps the reason

  1. ADR-089nika:json_diff jq-subsume feasibility · REJECTED · keep RFC-6902 Patch as canonical output format
    2026-05-27 · cites 5 others

read them whole

The bodies live in the engine repo

The 13 proposals above have no room of their own on purpose: a proposal published as an indexed page invites citation as though it were settled. They live in the repo until they are decided. The machine surfaces are served beside this one: index.json carries every cross-reference edge, verbatim at the pin, and bodies.json carries the settled decisions whole, lexed at the pin with each one's sha256 beside it.