Skip to content

Inspiration Features Matrix

Cross-reference of recurring TUI patterns across the inspiration set. The rightmost column captures the current take on whether the pattern is aspirational for KN-86 — adopt, 🟡 partial / adapt, 🔍 evaluate further, skip.

Symbols: = pattern present, = not present / not applicable, = framework (powers other entries), = historical archetype / precedent, = concept image (not a shipped product).

Column abbreviations in the wide UX table: PD PulseDeck · Gl Gloomberb · NW NetWatch · Go Golazo · Pk Perkins · BA BAE · Cw Cowsay · OT OpenTUI · Zk Zork · Vh Vehicle TUI Concept.

UX patterns (contemporary inspiration set)

Section titled “UX patterns (contemporary inspiration set)”
PatternPDGlNWGoPkBACwOTZkVhKN-86 aspirational?
Keyboard-first command model✅ Already foundational (31-key, TERM-context)
Single-key layout/focus cycling✅ Worth a dedicated key on cart surfaces
Mnemonic command bar (3–4 char codes)🟡 Strong fit with TERM key; pilot first
Numbered-tab top-level navigation✅ Phone numpad maps cleanly
Labeled-bracket bottom nav bar✅ Reference pattern for Row 24
Persistent top status strip (Row-0 style)✅ Reference pattern for Row 0
In-band keystroke legend (footer hints)✅ Pair with Row 24 nav-bar pattern
Explanation panel under focused row🟡 Adopt for settings-style surfaces
Master/detail two-pane layout✅ Adopt as a screen-design baseline
Dense multi-pane dashboard🟡 Useful for Bare Deck Terminal; cart-specific
Workspace-level tab strip (^1 / ^2)🔍 Park for now
Tiling window management❌ Single-cart focus; gridlock concept only
Plugin / extension architecture❌ Cart capability model is the equivalent
First-class theme system (multiple)🟡 Adapt as aesthetic modes (mono amber, not palette)
Live theme switching via one key🟡 If theme system happens, one-key cycle is right
Persistent session state✅ Already in Universal Deck State (ADR-0011)
Audio visualizers (spectrum / scope)✅ CIPHER-LINE is the natural home
Sparklines / heatmaps / Gantt✅ Box-drawing + braille make this cheap
Box-drawn map / spatial glyph🟡 Faction / dispatch geography cart surfaces
Sub-cell rendering (braille glyphs)✅ Sanction as escape hatch (own ADR)
In-app help overlay (?)✅ Strong runtime-internal candidate
Filter / search bar (/)🟡 Tiny grammar on Row 24 — list surfaces
Audition / commit split🟡 Cart preview before insert; mission preview
Undo (u)🟡 Worth in nEmacs / REPL; not universal
Graceful capability degradation✅ Promote to runtime doctrine
Compact-screen / too-small protection✅ Mirror for emulator below 80×25
Self-update affordance🟡 Already in update-system; lift UX presentation
Big-glyph headline identity object✅ Press Start 2P at native 12×24
Event timeline with glyph markers✅ Mission event log, dispatch history
Horizontal A-vs-B stat bars✅ Reputation / faction surfaces
Inline [ON]/[OFF] toggle status🟡 CP437 brackets handle this trivially
Strong visual metaphor as IA✓ (deck)✓ (terminal)✓ (scoreline)◆ (Empire)■ (dashboard)✅ Already committed (Deckline)
Fixed-envelope hardware-product UI✅ This is KN-86
ASCII speech-bubble / box-art callouts🟡 Sanction as a glyph primitive
Image → ASCII import🔍 Authoring tool, not runtime
Incident bundle / state-snapshot export◆ (save file)🔍 Park; share story v2
Flexbox layout on text grid🟡 NoshAPI flex primitive — author win
Tree-sitter / inline syntax highlighting🔍 nEmacs / REPL candidate
Diff component🔍 nEmacs commit affordance
Timeline animation API🟡 Compare to existing clip-system
Cross-language C-ABI core◆ (Z-machine)✅ NoshAPI already is this

Architectural / historical patterns (Zork-centric)

Section titled “Architectural / historical patterns (Zork-centric)”

The Zork stack contributes architectural patterns that don’t map cleanly to the UX-flavored rows above. Calling them out separately:

PatternZorkKN-86 aspirational?
Lisp-family authoring language◆ (MDL / Muddle)✅ Already adopted (ADR-0001, KEC Lisp)
Portable, memory-disciplined runtime◆ (Z-machine)✅ Adopted as a tree-walking interpreter (ADR-0004, Fe) — portable across desktop + Pi; the bytecode-VM form is deferred
AOT compile high-level → bytecode for distribution◐ Deferred — carts ship Lisp source in the .kn86 container today; AOT bytecode is parked (ADR-0006 / ADR-0004 2026-06-14 amendments)
Cartridge / box / “feelies” as part of the work✅ Already committed (ADR-0019 cart shell + sled + label)
Imperative text parser (verb-noun-prep-noun)🟡 Pair with TERM-key / nEmacs REPL; narrative-cart template
Universal meta-command verb set (SAVE/LOOK/INVENTORY)🟡 Promote to firmware-level deck-wide verbs
Atmospheric 2nd-person / present-tense / dry voice◆ (“…likely to be eaten by a grue”)✅ Tone reference for CIPHER voice style guide
Classification stamps on cart label (KIND/TONE/LEVEL)◆ (FORMAT/GENRE/DIFFICULTY)🟡 Three-stamp label pattern on cart sled
Disambiguation prompts on ambiguous parser input◆ (“which sword?”)🟡 If imperative parser ships, this is the bar
Persistent world / NPC state across sessions✅ Already in Universal Deck State + per-cart save (ADR-0011, ADR-0019)
  • Zork (and the Z-machine) is the architectural archetype — sparsely populated in the contemporary UX rows (it’s a 1980 parser game), but every cell it touches is a load-bearing structural decision KN-86 has already made (KEC Lisp, Fe VM, .kn86 container, cart shell). The lower table is where its real density shows.
  • PulseDeck is the densest “directly applicable” column — strong metaphor, theme system, visualizers, layout cycling, resilience patterns, persistent state. The closest north star for the deck identity.
  • NetWatch is the densest runtime UX doctrine column — numbered-tab navigation, graceful degradation, theme cycling, sparklines, “useful in 5 seconds.” Aligns tightly with the Bare Deck Terminal brief.
  • Gloomberb dominates the dense dashboard + command bar axis. Strongest single fit is the mnemonic command bar paired with TERM key.
  • Golazo owns master/detail + headline object. Worth lifting as a screen-design baseline.
  • Perkins is single-point but high-value: braille rendering and the ? help overlay.
  • BAE and Cowsay are philosophy / single-primitive notes.
  • OpenTUI is the framework reference — not a substrate candidate (see opentui.md for why), but its component inventory and flexbox approach are worth borrowing piecemeal.
  • Vehicle TUI Concept is the only entry that’s a fixed-envelope hardware-product UI (everything else lives inside a terminal emulator). Sparsely populated in the table as a whole, but every cell it touches is a Row 0 / Row 24 / chrome-discipline pattern KN-86 should treat as the reference. The Row-0 status strip, Row-24 bracketed nav bar, in-band keystroke legend, and explanation-panel-under-focused-row are the four borrowable patterns it adds that aren’t well-represented elsewhere.

In rough priority order:

  1. Cite Zork / Z-machine as prior art in ADR-0001 and ADR-0004 background sections — one paragraph each. Costs nothing; anchors the Lisp-authoring + bytecode-VM lineage explicitly (Zork).
  2. Universal ? help overlay as a runtime-internal feature (Perkins, with HELP precedent from Zork).
  3. Numbered-tab navigation on the Bare Deck Terminal, mapped to the phone numpad (NetWatch).
  4. Braille sub-cell rendering sanctioned as an escape hatch in character-set.md — possibly its own short ADR (Perkins).
  5. Graceful degradation elevated to a runtime doctrine, applied uniformly to cart-absent / coprocessor-absent / battery-low / microSD-absent cases (NetWatch, PulseDeck).
  6. Compact-screen protection for the desktop emulator — refuse to draw below the canonical grid (PulseDeck).
  7. Mnemonic command bar entered through TERM key — 3–4-char codes, in-band legend (Gloomberb).
  8. Big-glyph headline identity object as a screen-design pattern in screen-design-rules.md (Golazo).
  9. Audio visualizer on CIPHER-LINE as a Bare Deck SYS-tab affordance and an optional cart surface (PulseDeck).
  10. Master/detail two-pane layout as a sanctioned baseline alongside the Row 0 / 1–23 / 24 contract (Golazo).
  11. Theme system as aesthetic modes — not colors. Cycle key, persisted in nosh-config.toml (NetWatch, PulseDeck).
  12. CIPHER voice style guide cites Zork failure-state prose as the tone target (Zork).
  13. Imperative-parser narrative-cart authoring template — Zork-style verb-noun dispatch as a sanctioned cartridge-authoring kit on top of KEC Lisp (Zork). Scope question, not a near-term commit.
  14. Three-stamp cart label classification (CART KIND / TONE / STANDARD LEVEL) on the cart sled, callback to Infocom’s box stamps (Zork).
  15. Firmware-level universal verb setSAVE, LOOK, INVENTORY, SCORE accepted on the TERM line regardless of loaded cart (Zork).
  16. Row 24 nav-bar spec — bracketed-label nav row ([ HOME ] [ SYS ] [ MISSIONS ] [ TERM ]) with optional leading glyph, as the reference contract for what Row 24 looks like across surfaces (Vehicle TUI Concept).
  17. In-band keystroke legend pattern — when a surface is keystroke-driven, print the bindings in the surface, not behind a ? overlay (Vehicle TUI Concept).
  18. Explanation panel under focused-list-row — sub-3-row footprint, self-teaching settings surfaces (Vehicle TUI Concept).
  19. Pane header convention — pick :: NAME vs. ─[ NAME ]─ vs. ALL-CAPS centered, and commit. The inspiration set fragments here; KN-86 should pick one (Gloomberb favors :: NAME; Vehicle TUI uses centered-caps).

A second, complementary matrix oriented around feature axes the prompt called out (keyboard model, theme system, layout/panes, visualizers, plugin/extensibility, persistence), with one row per Batch-3 contemporary TUI app and a final column for the KN-86 aspirational verdict.

Reads orthogonally to the project-rows × pattern-cols table above: where that one tells you which projects exhibit a pattern, this one tells you what each Batch-3 project does on each feature axis.

ProjectKeyboard modelTheme systemLayout / panesVisualizersPlugin / extensibilityPersistenceKN-86 aspirational?
rs-pugKeyboard-driven; commands + nav keys5 JSON themes (dark, light, nord, gruvbox, mono) — human-editableMulti-pane library / queue / now-playingLua pluginsSQLite library✅ JSON-themes + Lua-as-desktop-tooling-extension; ❌ SQLite on device (per-cart save model differs)
audiumOne-key-per-action; all keys remappable15 themes + live preview + transparencyPlayer + library + LRC overlay— (LRC lyrics, not audio viz)Plain-JSON portable library✅ One-key ethos, live-preview theme picker, JSON portability; transparency is terminal-emulator-only
cliampWinamp-style controls; keyboard-firstPlayer chrome themedWinamp-tribute layoutReal spectrum + multiband EQLua plugins— (provider-list-driven, not local library focus)✅ Spectrum visualizer in-band; Lua-as-desktop-tooling; Winamp-homage commitment
AetherTuneFully remappable keybinds; ? overlay; S settings8 themes incl. CRT default + live previewStation browser + log + health + visualizerReal FFT 16-band @ ~94fps + CAVA gravity falloff; fallback simulator— (config-driven only)JSON (favorites, history, keybinds, themes)FFT pipeline is the CIPHER-LINE reference; CRT-default identity; remappable keybinds; graceful viz fallback
octoscopeNumber-key tabs (1–6) + tab/shift+tab + searchable lists7 themes incl. phosphor (CRT green) and amber (CRT amber) + live cycleTabbed auto-refresh + drill-in detail— (live “change pulse” border flash, not spectrum)— (config-driven only)Background fetch cache; rate-limit awareamber theme is direct lineage citation; tabbed-dashboard pattern for Bare Deck Terminal; change-pulse for live data arrival
l123Slash menu (/), : menu, 13-mode indicator, first-char input rule, full F-key workflow, Ctrl-Break universal abort, Alt-F4 undo, F1 context helpdos theme ships; green and amber CRT stretchThree-line control panel + grid + R3.4a WYSIWYG icon panelGraphs (F10 full-screen); Unicode bar + line; SVG/PNG saveMacros: {BRANCH}, {IF}, {LET}, \0 autoexec, Alt-F5 learn.xlsx round-trip; .WK3 read; macro learn-mode persistenceReference for the entire interaction model; mode indicator; first-char rule; F-key workflow; authenticity-contract discipline
4TRKMusic-workstation key layout (per-track step entry, etc.)Many themes + theme editor; CRT effects layerTracker step grid + synth panels + FX strip; dual screen modes (studio 640 / classic 320)Audio output is the device’s own output(DAW project format)✅ Theme editor pattern, dual-mode toggle (analog to ADR-0014 F1’s glyph treatment); deep CRT effects
  • AetherTune is the clearest “all six axes present, all done well” project. Strongest single Batch-3 reference for an end-to-end TUI runtime architecture.
  • l123 is off-the-charts on the keyboard-model axis and carries unique value on the macro-as-plugin axis (in a way the music players don’t).
  • octoscope is the strongest theme-axis reference because of the direct phosphor / amber CRT-theme naming lineage to KN-86’s color story.
  • rs-pug + cliamp are independent confirmations of “Lua as the extension language” for TUI apps — useful pattern for KN-86 desktop tooling, not for the on-device runtime.
  • audium’s JSON-portable-library + remappable-everything is the strongest single persistence + flexibility lesson.
  • 4TRK isn’t quite TUI (it’s a graphical music workstation), but it earns its row by being the strongest aesthetic-and-theming reference outside the TUI corpus.

Batch-3-derived patterns to promote (extends the Batch-1/2 promote list above)

Section titled “Batch-3-derived patterns to promote (extends the Batch-1/2 promote list above)”
  1. Real FFT visualizer pipeline for the CIPHER-LINE OLED, modeled on AetherTune (16-band, ~94 fps, CAVA-style gravity falloff, automatic sensitivity), driven by Pico-2 PSG output. (Cross-references promote-list item 9.)
  2. CRT boot + power-off animations as KN-86 identity branding, modeled on AetherTune.
  3. Slash-menu (TERM-key) universal command surface modeled on l123 — first-letter descent, Esc back, no chords. (Refines promote-list item 7 — l123 supersedes Gloomberb as the citation.)
  4. Live mode indicator in Row 0 or Row 24 — modeled on l123’s 13-mode display.
  5. First-character input rule for the TERM-line context-free input — modeled on l123.
  6. Authenticity contract for the KN-86 runtime, written in docs/software/runtime/ and backed by acceptance transcripts under kn86-emulator/tests/. Direct citation of l123’s discipline.
  7. Named-aesthetic-mode roster AMBER / AMBER / CIPHER with picker + editor on the SYS tab — AMBER cites octoscope’s amber CRT theme directly; mechanism cites AetherTune (live preview) + 4TRK (theme editor) + audium (15-themes order of magnitude).
  8. Live “change pulse” border flash on data arrival — modeled on octoscope. CIPHER tab border flashes when a new CIPHER fragment lands; mission-board border flashes when a new contract becomes available.
  9. Tabbed auto-refresh dashboard for the Bare Deck Terminal, modeled on octoscope + NetWatch.
  10. Image rendering technique documented in NoshAPI — halfblock--with-fg-bg-color per asciinator on the desktop emulator; shade-mode rendering on the device.
  11. Lua-as-desktop-tooling-extension-language for cart authoring helpers, emulator debug overlays, etc. Modeled on rs-pug + cliamp.
  12. Human-editable JSON / TOML / plaintext throughout for all user-facing persistence. No binary blobs where text suffices. Modeled on audium + AetherTune.
  13. src/ui/ module isolation from data sources behind a stable trait (AetherTune + l123). Engine-agnostic UI; UI-agnostic engine.

Batch 4 — feature-axis matrix (research references)

Section titled “Batch 4 — feature-axis matrix (research references)”

A third matrix oriented around the Batch 4 axes — the implementation-technique dimensions of the build. Each row is a Batch-4 project; columns are the axes the build brief recommends decisions on: rendering core / widgets / scriptability / interaction model / data fetching / aesthetic-effect / runtime pattern / KN-86 aspirational verdict.

Reads complementary to the Batch-3 matrix above: where that one captured user-facing UX axes, this one captures implementation-layer axes.

Column abbreviations: Render = rendering-core contribution; Widgets = widget-inventory contribution; Script = embedded-language / scripting; Interact = interaction-model lesson; Fetch = data-fetching / async / HTTP; Effect = signature aesthetic effect; Pattern = runtime-design-pattern reference.

ProjectRenderWidgetsScriptInteractFetchEffectPatternKN-86 aspirational?
termuiChannel events on termbox-goCatalog: BarChart, Gauge, Sparkline, Plot, Table, Tabs, Paragraph, List, Tree, braille CanvasGrid layout✅ Widget catalog → NoshAPI inventory
blessed-contrib+ Donut, LCD display, rolling log, world map, picture viewer; CAROUSEL layoutCarousel auto-rotationCarousel for Bare Deck Terminal idle state; LCD display for big-glyph identity
tuiboxUI → Screen → Box hierarchy; pure-ANSI single-header C; dirty-bit cacheMouse-driven, event-loopDirty Flag patternDirty-bit render cache as nOSh primitive; C-core fallback path
cl-termbox2Lisp ↔ C FFI bridgeLisp bindings to cell rendererFFI surface designStructural validation of ADR-0001 + ADR-0005
moptermbox-goTerse single-key bindings; filter-expression DSL on Row 24Row-shading✅ Filter-expression confirmation (with NetWatch); single-key ergonomics
nba-goNodeSubcommand+flag CLI design; compare-with-winner-highlightAPI fetch + parse + renderAsync data pipeline🟡 Compare/highlight as cart pattern; subcommand CLI for desktop tooling
worldmonitorWeb (Tauri 2)Command-bar verb model (fly LON DXB); situational-awareness dashboard500+ feeds, cross-stream correlation6-variants-from-one-codebase🟡 Command-bar verbs; local-AI-via-Ollama posture for desktop tooling
malCanonical 11-step Lisp build curriculum across 89 host languages; self-hostingTCO, macros, try/catch as language gates✅ Direct cite for ADR-0001 / ADR-0004 / ADR-0005; SDK-tutorial scaffold
BuildYourOwnLispC-specific Lisp implementation in <1000 lines + mpc parser combinators✅ Fallback path reference for Fe-replacement; mpc useful for any DSL parsing
xikiEmacs bufferRuby-backed expansion engineExpandable-command tree; live-menu interactionTree-as-navigation✅ REPL surface adopts Xiki-style expandable text as default interaction
EXWMEmacs + xelbElispKeyboard-driven WM; one environment; shared keymap; tiling + workspacesUniversal-verb-set commitment; keyboard-as-product doctrine
webmacsQt WebEnginePython customizationEmacs keybindings on non-text app; link hints; live docsBrowser-nativeLink-hint single-character labels on every actionable item
writeroom-modeEmacsElispFocus / zen / distraction-free modeHooks on enter/leave✅ Focus mode as v0.1 ship-list item
emacs-requestElisp callbacksAsync HTTP; pluggable backends (curl / pure); JSON/XML/text parsersService Locator✅ NoshAPI async-HTTP primitive shape
history.elEmacsElispNon-destructive nav history; doubly-linked list w/ sliding index; smart-skip staleLinked-list patternv0.1 runtime affordance; BACK/FORWARD in universal verb set
palletElisp / CaskManifest-as-source-of-truth🟡 Plugin-manifest pattern for desktop tooling only
BOOTSTRA.386DOS WIMP theme + configurable ANSI-art boot/flyby animationv0.1 boot animation aesthetic commitment
NES.css8-bit NES palette; Press Start 2P typography (validates ADR-0014)✅ Press Start 2P prior-art citation
no-more-secretsSneakers-style decryption reveal animationNoshAPI reveal-text primitive (reimplemented — GPL)
loopyWeb CanvasHand-drawn / playful aesthetic; animated causal-loop simulationSignal-flow-around-graph🟡 Playful-cart aesthetic exception; future causal-loop cart possibility
terrainPriority-queue erosion; Voronoi terrain; label placement🔍 Park for hypothetical map / exploration cart
Game Programming PatternsGame Loop, Update, Command, Observer, State, Dirty Flag, Object Pool, Service Locator, Subclass Sandbox, Type ObjectCite by name in runtime architecture spec
RoroC# / Roslyn macrosRPA macro recordingRecorded-action-replay🟡 Macro-record/replay v0.2+ REPL affordance
terminals-are-sexy🔍 Reference / appendix

Batch-4-derived patterns to promote (extends items 1-32 above)

Section titled “Batch-4-derived patterns to promote (extends items 1-32 above)”
  1. Carousel idle-state for the Bare Deck Terminal — auto-rotating tab carousel, configurable interval + disable in nosh-config.toml (blessed-contrib).
  2. NoshAPI widget catalog matching termui + blessed-contrib inventory: sparkline, gauge, plot, table, tabs, braille canvas, LCD display, rolling log, donut. Plus carousel as the layout primitive for auto-rotating views.
  3. UI → Screen → Box hierarchy with per-box dirty bit as the nOSh render-pipeline structure (tuibox). Aligns with Game Programming Patterns’ Dirty Flag.
  4. Mal as direct prior-art citation in ADR-0001 / ADR-0004 / ADR-0005 background sections (mal).
  5. Cl-termbox2 as structural validation reference for ADR-0001 + ADR-0005 — proof that the embedded-Lisp + C-cell-renderer + FFI bridge architecture composes into a working TUI (cl-termbox2).
  6. Universal verb set commitment — TERM-line verbs SAVE, LOOK, INVENTORY, SCORE, BACK, FORWARD are deck-wide commitments, available in every cart, not redefinable per cart (EXWM shared-keymap lesson). Refines item 15.
  7. Link-hint single-character labels on every actionable item on every surface; user types the label to act (webmacs).
  8. Xiki-style expandable command tree as the REPL’s default interaction model — typed verbs expand in place, results expand further on demand, navigation is tree traversal (xiki).
  9. Non-destructive navigation history with doubly-linked list + sliding index pointer; BACK/FORWARD traverse without losing entries; stale entries auto-skipped (history.el). v0.1 ship-list item.
  10. Focus / zen mode as a v0.1 ship-list item — single keystroke, hide chrome rows, narrow content area, center horizontally, dim (don’t silence) CIPHER-LINE (writeroom-mode).
  11. Async HTTP primitive in NoshAPI with emacs-request-shaped API (:on-success / :on-error callbacks, pluggable curl vs. pure-runtime backend) (emacs-request).
  12. Boot animation as v0.1 ship-list confirmed — AetherTune is the runtime mechanism reference; BOOTSTRA.386 is the aesthetic commitment reference. AMBER + Press Start 2P + CP437 ANSI-art flyby. Configurable speed, once_per_session, disable.
  13. NoshAPI reveal-text primitive for Sneakers-style decryption reveal animation (no-more-secrets, reimplemented — GPL prevents vendoring).
  14. Pallet-style plugin manifest for desktop tooling around KN-86 (cart-authoring helpers, emulator debug-overlay extensions). Hand-editable TOML, manifest-as-source-of-truth, one-directional sync (pallet).
  15. Filter-expression on Row 24 for list surfaces — small query DSL evaluated in the cart’s KEC Lisp scope (mop + NetWatch — two witnesses). Composes with item 4 (NetWatch filter DSL) by formalizing the syntax.
  16. Compare-with-winner-highlight pattern in ui-patterns.md for any A-vs-B view; intensity-delta-as-semantic on monochrome amber (nba-go).
  17. Game Programming Patterns cited by name in docs/software/runtime/ architecture writing — Game Loop, Update Method, Command, Observer, State, Dirty Flag, Object Pool, Service Locator, Subclass Sandbox, Type Object (Game Programming Patterns).
  18. Macro-record / Learn mode as v0.2+ REPL affordance (Roro RPA lineage + l123 Alt-F5 LEARN).

Batch 5 — keyboard / hardware-decision matrix

Section titled “Batch 5 — keyboard / hardware-decision matrix”

Batch 5 is a decision-recording batch rather than an exploration batch — the matrix below is correspondingly compact. Each row is a Batch-5 reference; the rightmost column captures whether it lands in the build path (prototype/), the archived knowledge layer (research/), or the aesthetic / shell reference layer (inspiration/).

ReferenceRoleBuild-path placementKN-86 disposition
Ferris Sweep — holykeebsThe decided keyboard — 34-key split, RP2040, hotswap, low-profile chocprototype/Build path. Order from holykeebs as soldered kit.
holykeebs Buyer’s GuideThe BOM checklist — configuration matrix decisions for the Sweep orderprototype/Decisions captured; checklist to confirm at order time.
GOLEM hubMaster custom-keyboard knowledge index + vintage-terminal-keyboard galleryresearch/🟡 Custom-build content archived; vintage-terminal gallery actively used for legend/typography
GOLEM plate manufacturingDXF/KLE pipeline + plate-material factsresearch/❌ Archived — Sweep ships with plates
GOLEM KMK firmware guideKMK + KB2040 walkthrough w/ NeoPixel diagnostic codesresearch/🟡 Not the firmware path (using QMK+Vial); NeoPixel-status-LED idea + workflow-UX contrast carry forward
KMK firmware repoThe KMK firmware project itself; limited life supportresearch/❌ Fallback reference only; QMK + Vial is the chosen firmware path
universal60plateFree downloadable 60% plate DXF — example artifactresearch/❌ Archived reference; KN-86 not building a 60% keyboard
Adamow cyberdeck STLTactical-cyberpunk silhouette STL referenceinspiration/✅ Shell aesthetic reference — combined with QRPπ template informs the Pelican bezel design
TechNIK cyberdeck STLAlternate-silhouette STL — different hinge / screen-mountinspiration/✅ Second-silhouette reference; triangulates the design space with Adamow
Stream Deck macropad STL (Dante)Auxiliary macropad form-factorinspiration/🔍 Optional v2+ accessory; outside the canonical deck scope

Batch-5-derived patterns to promote (extends items 1-50 above)

Section titled “Batch-5-derived patterns to promote (extends items 1-50 above)”
  1. Ferris Sweep as the keyboard — supersedes the ADR-0024 custom-31-key preferred path. Triggers spec PRs to align Canonical Hardware Specification + ADR-0024 (Ferris Sweep).
  2. 34-key Sweep + QMK layers ↔ 14-FN + 16-numpad + 1-TERM canonical-functions mapping — design work to scope. The phone-layout numpad cluster from ADR-0016 doesn’t survive split geometry literally; spirit needs translation. (Ferris Sweep.)
  3. Firmware = QMK + Vial on the holykeebs RP2040 (not KMK, not custom). (Sweep + KMK life-support caveat.)
  4. Single NeoPixel deck-status LED with documented amber-friendly color vocabulary as a small v0.1 hardware affordance (KMK NeoPixel diagnostic codes lineage, KN-86 vocabulary downstream).
  5. Pelican-1170 bezel design triangulated from Adamow + TechNIK + QRPπ — three reference points (one close-template, two broader-silhouette) inform the bezel insert design.
  6. GOLEM vintage-terminal-keyboard gallery as legend/typography reference alongside ADR-0022’s locked legend manifest — Reuters ‘85, Tatung ‘84, IBM 5155 Model F, Kaypro 10, Epson HX-20/40, DEC LK-201 (GOLEM gallery).
  7. Optional auxiliary macropad accessory for v2+ — 6-12 keys, USB HID, QMK firmware, key legends in Press Start 2P + CP437 to match the canonical deck typography (Dante macropad).

Batch 6 — ASCII effect grammar + Sweep hardware reinforcement

Section titled “Batch 6 — ASCII effect grammar + Sweep hardware reinforcement”

Two threads — the screen (ASCII rendering) and the board (Sweep case + keycaps).

SettingKN-86 defaultSource
numCols150 (carts at full-width use 80)react-video-ascii midpoint, sized for AMBER readability on the 80×25 grid
charModeshapereact-video-ascii default; preserves edge detail on monochrome amber
charsdefault 72-char rampreact-video-ascii verbatim
brightness1.0baseline; AMBER aesthetic mode sets absolute intensity
saturation0.0KN-86 is monochrome
bgOpacity0.3low; text-on-black look
cropFocuscenterdefault crop anchor
mouseEffect stylebrighten (trailLen=15, brightness=2.0, radius=0.08, duration=1.0)react-video-ascii defaults
clickEffect styleripple (speed=3.0, brightness=1.1, duration=1.0)react-video-ascii defaults
revealEffect stylerandom (duration=0.4)react-video-ascii defaults

The hotswap PCB on the Sweep PCB makes keycap swap a no-tools operation; the matrix records both options:

Keycap optionProsConsKN-86 disposition
MBK low-profile (canonical)Commercial supply via holykeebs; uniform visual surface; ships with the order; matches existing canonical commitmentFlat profile means every key feels the same; pinky-column keys see same cap shape as index-columnCanonical v0.1 commitment
Sculpted Choc (mugika9)Per-row contour improves ergonomics on the 34-key layout; reduces finger travel; better typing accuracy after muscle memory builds3D-print quality dependent (SLA strongly preferred); slightly busier visual surface; have to print + finish ourselves🟡 Documented alternative for operator post-build swap

Batch-6-derived patterns to promote (extends items 1-57)

Section titled “Batch-6-derived patterns to promote (extends items 1-57)”
  1. ASCII-effect grammar shipped in v0.1 — default ramp, charMode: shape, three event types (hover, click, reveal), NoshAPI primitives per the ASCII Effect Spec. (react-video-ascii + libcaca.)
  2. Unified (reveal ...) NoshAPI primitive — covers both per-cell character-flicker reveal (no-more-secrets) and ramp-by-position reveal (react-video-ascii) under one surface with a :style flag. Refines item 45 from Batch 4.
  3. ASCII rendering performance budget measured during hardware bring-up; expected 15-30 Hz full-screen on Pi Zero 2 W. Document the realistic cap. (libcaca CPU pipeline.)
  4. Sweep enclosure decision tracked — print Bubbleology’s v2 case unmodified, or merge it with the Pelican-1170 bezel as a single printed part per Sweep half. Deferred to bezel-design bring-up. (Bubbleology Sweep v2 case.)
  5. Keycap-swap path via hotswap PCB is sanctioned — MBK canonical for v0.1; operators swap to sculpted Choc (or anything Choc-compatible) post-build with no firmware or spec change required. (mugika9 sculpted Choc + Sweep hotswap.)
  6. Single project-wide ASCII visual language — every cart, every surface, every animation uses the same default ramp + charMode + interaction-event grammar unless explicitly overridden. (ASCII Effect Spec doctrine.)

Batch 8 — Deckline-core promote-to-spec matrix

Section titled “Batch 8 — Deckline-core promote-to-spec matrix”

The largest capture (49 production TUIs) yields the longest promote-to-spec list. Drawn from the two dedicated synthesis docs — ../synthesis-batch8.md §5 (the Deckline-core 10) and ../synthesis-batch8-architecture.md (library shortlist + A4 primitives + libuv) — plus the KN-90T Toneline buildable feature set. Canon throughout: 128×75 + 128×150 half-block per ADR-0027 (the superseded 80×25 references in pre-ratification entries are recast at the current grid). Each row cross-references its source project(s); the matrix below continues the running promote-item numbering from item 63.

Deckline-core (synthesis-batch8 §5) — UI catalog / single-color / ambient / LISP

Section titled “Deckline-core (synthesis-batch8 §5) — UI catalog / single-color / ambient / LISP”
#Promote-to-spec itemSource project(s)Lands in
64(draw-sparkline …) primitive — the logradar recipe (▁▂▃▄▅▆▇█ ramp, 24 buckets / 2-min rolling window, soft-cap at 3× non-zero mean, newest bucket bolded)logradar, cava, astrotermNoshAPI catalog (ADR-0005)
65(status-glyph …) primitive — distinct glyph per state (● ◐ ✖ ○), frame-cycle to animate; never a colored dotlogradar, BrogueCE, visidataNoshAPI catalog
66Table primitive — pinned header + scrolling body + frozen columns (f<n>) + bottom : command line + mode/counts status stripcsvlens, sc-im, visidata, sheetsuiNoshAPI catalog + ui-patterns.md
67Ambient / screensaver mode — idle-timer (reuse power-idle path) + scene roster + Deck-State (cipher_seed) seeding + (reveal :radial)/(unreveal :radial) lifecycle exit, under the 20 fps cap so idle lowers drawneo, astroterm, cbonsaiorchestration.md + a small ADR if it touches Universal Deck State
68(draw-framebuffer) as sugar over (half-block-set) — sprite-from-bytes blit into the 128×150 half-block canvas (cart-usable 128×146); Fe-side library, not a new FFI surfacebrowsh, php-gameboy, mapsciiADR-0027 half-block helper library
69Namespace NoshAPI by domain (cell/*, deck/*, mission/*, audio/*, cipher/*) rather than ~30 flat builtins — more discoverable, more stable across versionsmicro (namespaced Lua import)ADR-0005 revision
70Cart-facing “query language” = Fe expressions, not a bespoke DSL — every filter reduces to a predicate over a row: (filter (lambda (row) …) rows); skip the parser/AST entirelycsvlens, loglens-core, visidatalisp-paradigm.md
71Tree-browser widget = s-expression browserCAR enter / BACK out / CDR next / TAB collapse; one implementation serves reader-mode content and nEmacs structural editinghackernews-TUI, bookokrat, mcui-patterns.md + ADR-0008
72Single-color rule set — design as if color never existed, then add three orthogonal channels back (glyph=identity, inversion=selection/focus/hazard, density-ramp=magnitude) + three supporting channels (border-weight, leading-glyph column, frame-tick glyph-cycle)BrogueCE, logradar, durdrawscreen-design-rules.md
73Zoom-as-row-semantics — let the operator trade range against detail by changing what each row means (30/15/5/1 min, etc.), not by adding rows; a cross-surface density tool on the 75-row gridchronosui-patterns.md

Architecture (synthesis-batch8-architecture) — library shortlist + A4 + A5

Section titled “Architecture (synthesis-batch8-architecture) — library shortlist + A4 + A5”
#Promote-to-spec itemSource project(s)Lands in
74Adopt the cavacore core/render split by name — pure render-agnostic C core (mission board, economy, phase chain, Deck State, CIPHER, Fe VM) under thin swappable backends; the constrained Fe cell API is the cavacore seamcava (cavacore)runtime architecture spec (the boundary ADR-0027 defines)
75Borrow no TUI library beyond termbox2; own the implementation — the shortlist verdict: every higher-level library fights the bespoke-screen + constrained-FFI model, drags in C++/Rust/Node, or duplicates termbox2 + a thin Fe UI libtui-library-shortlist, inkconfirms ADR-0027 (no re-open)
76Optional internal “Lisp-native Ink” Fe UI library — borrow exactly three Ink patterns (box-composition layout combinators → integer cell rects; focus management consuming the pre-classified on-key events; component-level memoization to avoid re-running render lambdas). Never import React/yoga/a reconcilerink, ink-weboptional Fe UI library (convenience, not substrate)
77Row 74 action-bar spec modeled on ink-ui status-bar — inverse-bold key badges (inverse video is the one “second color” a monochrome display gets free); badge composition, hint-group spacing, overflow truncation at 128 cols. nOSh chrome, not cart-facingink-web (ink-ui)bare-deck-terminal.md + repl.md Row-74 advertisement
78(draw-keyboard …) primitive (PROPOSAL — warrants a future ADR) — renders the Ferris Sweep 34-key split + function-block legend on the 128×75 grid with :highlight/:pressed states (inversion, never a second hue); read-only chrome for in-band keymap discovery, SYS keyboard-test, tutorials. Legend referenced to ADR-0022/0031, not restatedtypeincdedicated ADR or scoped ADR-0005 amendment
79libuv = pattern-only, do not link — termbox2 already owns the loop; the networking half is unused, the realtime half is on the Pico 2, and a worker pool breaks Fe’s single-threaded arena. Take the single-loop/typed-event-sources pattern; hold a bounded worker pool in reservelibuvconfirms the existing tb_poll_event + frame-timer model

KN-90T Toneline (sister-product) — buildable feature set from the Batch 8 audio cluster

Section titled “KN-90T Toneline (sister-product) — buildable feature set from the Batch 8 audio cluster”

Promotes into the Toneline concept doc, not the KN-86 runtime, but logged here for cross-reference because the audio entries are shared corpus.

#Promote-to-spec itemSource project(s)Lands in
80The sequencer language IS KEC Lisp — phrase = list, song = list-of-lists, LAMBDA defines a reusable phrase, transforms are the standard list library (reverse/rotate/shuffle/repeat); terse line-style prompt and nEmacs s-expression are two front-ends over one representationlinekn90t-toneline.md §1
81Single-color audio visualization — eighth-block ▁▂▃▄▅▆▇█ spectrum (8× sub-cell vertical), cavacore DSP/render split, band-array exposed as a NoshAPI primitive for cart-drawn visualizers, peak-hold gravity fall-offcavakn90t-toneline.md §2
82Single-color UI component kit — piano strip (sounding note inverts), linear slider, rotary dial, waveform-with-playhead (time-domain complement to the spectrum)upiano, valveFM, asakkn90t-toneline.md §3
83Recording + shell scaffolding — mode-selector splash front door, record→monitor→save loop, numeric view-switching (17), one-line Row-0 transport bar, library-vs-queue separation, toggle-able queue panel + list-edit undo/redoasak, cmus, waveskn90t-toneline.md §4–§5
84LINK port = Ableton-Link-style shared-beat sync — derive all phrase timing from a shared beat/quantum so instances stay phase-locked; the blueprint for the fiction’s two-Tonelines-jamming LINK portlinekn90t-toneline.md §6

A companion typing-game cart concept (ghost-competitor race mode) also surfaced from typing-game-cli, paired with the (draw-keyboard) widget from typeinc (item 78) — parked as a cart-concept, not a near-term spec commit.