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, 71 decisions deep.

  • 71decisionsat v0.107.0
  • 57acceptedthe engine is built this way
  • 71cite anotherthe record is a graph
  • 1supersededreplaced, never deleted

accepted

57 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-082Workflow envelope: single version marker `nika: v1` (supersedes K8s apiVersion form)
    2026-05-25 · L0 L0.5 · cites 7 others · supersedes ADR-021
  38. ADR-083L1 computer-use effect crates · cross-platform doctrine (macOS + Linux prio · Windows + all)
    2026-05-26 · L1 · cites 4 others
  39. ADR-084nika-catalog builtin set · reconciliation to spec 26 (42→26 stdlib collapse + json_merge cut)
    2026-05-27 · L0 · cites 7 others
  40. ADR-085spec/workflow.schema.json invoke.tool oneOf · interim hand-derived bridge to engine schemars codegen
    2026-05-27 · L0 · cites 7 others
  41. ADR-086builtin Rams sweep · nika:csv_to_json → nika:convert universal multi-format · less but better
    2026-05-27 · L0 · cites 7 others
  42. ADR-087nika:sleep + nika:wait_until → nika:wait · temporal-control Rams collapse
    2026-05-27 · L0 · cites 8 others
  43. ADR-088nika:cost + records + dag_info + threads → nika:inspect · introspection Rams collapse
    2026-05-27 · L0 · cites 9 others
  44. ADR-090Structural doctrine enforcement — gates project the SSOT
    2026-06-10 · L0 L0.5 L1 L2 L3 L4 L5 · cites 6 others
  45. 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
  46. ADR-093nika-infer-local HTTP server · tiny_http for the v1 sidecar endpoint
    2026-06-11 · L1.5 · cites 5 others
  47. 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
  48. 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
  49. ADR-096The agent-loop intelligence layer — routing, stall guard, compose, telemetry
    2026-06-12 · L2 L0 · cites 3 others
  50. ADR-097Parallel intra-turn tool dispatch — concurrent resolve, request-order fold
    2026-06-12 · L2 · cites 1 other
  51. ADR-099Durable-lite run resume — the trace IS the checkpoint
    2026-07-05 · L2 L4 · cites 3 others
  52. ADR-100Trace retention — bounded by default, never silently, never a pending gate
    2026-07-05 · L2 L4 · cites 2 others
  53. ADR-105nika:image_generate — the Media builtin rides a dedicated image plane
    2026-07-05 · L0 L1.5 L4 · cites 4 others
  54. ADR-107Admit nika-check-wasm — the static half of nika check, compiled to the browser
    2026-07-28 · L4 · cites 5 others
  55. ADR-108Split the spec-15 proof primitives out of nika-runtime into nika-proof (L0)
    2026-07-29 · L0 L3 · cites 3 others
  56. ADR-109Publish the composition proof receipt — what this engine may claim on spec 14
    2026-07-30 · L0 L3 L4 · cites 2 others
  57. ADR-110nika-cli size-cap member split: the host plane descends to nika-cli-host
    2026-07-31 · L4 · cites 3 others

proposed

12 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

superseded

1 decision

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

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 12 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.