Skip to content

Architecture Decision Records

ADRs capture the context, options considered, decision, and consequences for one architectural choice. Once accepted, an ADR is immutable — superseding changes are made by adding a new ADR and marking the prior one Superseded by ADR-NNNN.

#TitleStatusScope
0042First-Party On-Device Programs — the canonical thirteenAcceptedDeckRunner content tier, nOSh runtime, NoshAPI
0041Consolidate the product repos into a single kn-86 monorepoAccepted (supersedes ADR-0039)Repo topology, monorepo, build, CI
0040DeckRunner — the named engine layerAcceptednOSh runtime, engine layer, player-facing FFI
0039Repository topology — split the monorepo into seven focused reposSuperseded by ADR-0041Repo topology, build, packaging
0038Power subsystem — Waveshare UPS Module 3S (3× 18650)Accepted (supersedes TP4056 + PowerBoost + bare LiPo)Hardware, BOM, power, primary display supply
0037KEC Lisp — the named language standard (Fe kernel + core + stdlib + cart grammar)AcceptedKEC Lisp, cart authoring, runtime, FFI
0036KN-86 native framebuffer renderer (supersedes termbox2 display layer)AcceptedDisplay, framebuffer, nOSh runtime, cart FFI
0035Trackpoint cart-FFI surface — v0.1 cursor + event APIAccepted (supersedes ADR-0032 §5)Cart FFI, input, nOSh runtime
0034Aesthetic mode mechanism — AMBER / WHITE / GREEN phosphor schemesAcceptedDisplay, nOSh runtime, deck-state persistence
0033Reveal NoshAPI primitive — project-wide ASCII visual languageAcceptedNoshAPI, display, cart FFI, grammars
0032Sweep peripheral commitment — 2× trackpoint + LIS3DH I²C re-pinningAccepted (supersedes ADR-0031 §3/§6/§7)Hardware, keyboard firmware, BOM
0031Ferris Sweep keyboard adoption (34-key split, supersedes custom 31-key path)AcceptedHardware, keyboard firmware, input dispatch
0030Runtime-tier launch baselines (System tier + TERMINAL / GRID / AUDIT / SONAR)AcceptednOSh runtime, Capability Registry, launch carts
0029The Mission RunnerAcceptednOSh runtime, mission orchestration, phase chain
0028Mission Control & the Capability RegistryAccepted (amended 2026-05-05 per ADR-0030)nOSh runtime, mission generation, cart format
0027termbox2 as the primary display + input layer (spike-gated)Accepted (display layer superseded by ADR-0036; authoring shape retained)Display, input, nOSh runtime, cart FFI
0026Pin Pi OS base release to Debian Trixie (13)AcceptedSystem image, deployment
0025SDL2 → SDL3 migrationAcceptedEmulator, system image, build pipeline
0024Keyboard MCU selection — RP2040-class (Adafruit KB2040)Accepted (§3 pin map superseded by ADR-0031)Hardware, keyboard firmware, BOM
0023Accelerometer integration for ambient CRT glitches (LIS3DH on keyboard MCU)AcceptedHardware, keyboard firmware, nOSh runtime
0022Keyboard layout finalization (legends, shifts, multi-tap)Accepted (§2 numpad, §4 bottom row, §7 delete binding superseded by ADR-0031)Hardware, keyboard firmware, input dispatch
0021Legacy Terminal mode (system-image escape hatch)AcceptednOSh runtime, kiosk, system image
0020Update model across three surfaces (system image, coprocessor, cartridges)AcceptedDeployment, coprocessor, cartridges
0019Cartridge storage and form factor (SD-card sled)AcceptedHardware, BOM, cart format, capability model
0018Custom mechanical keyboard build for 30-key inputAccepted (§3 preferred PCB path superseded by ADR-0031)Hardware, BOM, input construction model
0017Realtime I/O coprocessor (Pico 2 / RP2350)Approved (cart-bus partially superseded by ADR-0019)Hardware, Pico firmware, BOM, runtime envelope
0016nEmacs + REPL + input model (post-CIPHER-LINE)Approved (amended by ADR-0031 — phone-shape framing relaxed)nEmacs, REPL, input, cart FFI, keypad layout
0015CIPHER-LINE auxiliary OLED displayApprovedHardware, Cipher voice, NoshAPI, Universal Deck State
0014Display profile redesign (12×24 / 960×600)Accepted (superseded by ADR-0027 on ratification)Display, framebuffer, font
0013Cartridge physical format (shell + pinout)Superseded by ADR-0019Hardware, BOM, fiction
0012Lisp handler slot table wideningDraftRuntime, cartridge authoring
0011Pi Zero 2 W system image update systemDraftnOSh runtime, deployment
0010ICE Breaker Lisp re-expression (reference)AcceptedReference implementation
0009Token prediction v1 ranking modelAccepted (extended by ADR-0016)nEmacs editor
0008nEmacs structural editor UXPartially superseded by ADR-0016On-device authoring
0007Lisp-scripted mission FFI & contract modelAcceptedMissions, runtime
0006Cartridge format v2.0Accepted (amended 2026-04-24)Cart format, tooling
0005NoshAPI FFI surface enumeration (54 prims)Accepted (amended 2026-04-24)Runtime, cartridge authoring
0004Bytecode VM selection (Fe)AcceptedRuntime
0002Player-facing Lisp — REPL, nEmacs, scripted missionsAccepted (slip canceled by ADR-0016)UX, runtime
0001Embedded Lisp as cartridge scripting layerAccepted & ShippedRuntime, cartridges

Documents kept for history, not on the active decision path. The archived source files were removed from the repo; recover them from git history if needed.

#TitleReason for archive
0003nOSh runtime update mechanism (Pico 2)Pico / RP2350 target dropped. Pi Zero 2 W is the sole hardware target; see ADR-0011.

ADRs are numbered monotonically. Drafts and spike outputs are assigned their final ADR number before landing on main. Numbers are never reused; an archived ADR keeps its number.