Skip to content

KN-86 Inspiration Set

This folder is reference material, not engineering spec. The aim is to give every future spec / ADR / design conversation a shared corpus to point at — so “make it feel like X” lands with the same meaning across writers. Nothing here is a committed feature; promotion to a spec or ADR is a separate step.

The folder lives at the repo root (outside docs/) so it isn’t rendered by the Starlight sync (scripts/sync-from-docs.mjs) into the four-pillar reference site — but it is versioned in git and travels with the repo.

The set is organized in four groupings here in inspiration/ plus two sibling folders for build- and research-level references:

  • Batch 1 — TUI software references. UX patterns, layout discipline, resilience instincts.
  • Batch 2 — Hardware and aesthetic references. Physical devices, community moodboards, palette resources for KN-86’s visual identity, form factor, color story.
  • Batch 3 — TUI apps and retro software. The contemporary keyboard-driven music players, dashboards, and recreations that define KN-86’s UX bar, plus the foundational retro-software touchstones (VisiCalc, Civilization 1991, Gorillas QBASIC) that are the historical anchors.
  • Sister-product research — Design references for KN-9x products other than KN-86 (the KN-90S Statline, KN-90T Toneline, KN-92 Gridline).

Sibling folder ../prototype/ carries concrete build references — the TUI frameworks and libraries that are candidate tech-stack choices (Bubble Tea, Lip Gloss, termbox2, asciinator) plus the physical-build hardware references (QRPπ, Pelican 1170 print models, the Printables cyberdeck search).

Sibling folder ../research/ carries the Batch 4 implementation-technique references — TUI widget libraries (termui, blessed-contrib), minimalist C rendering cores (tuibox), the Lisp-to-terminal bridge (cl-termbox2), the “make a Lisp” blueprints (mal, BuildYourOwnLisp), Emacs-derived keyboard philosophy (EXWM, webmacs, xiki, history.el, writeroom-mode, emacs-request, pallet), retro effects (BOOTSTRA.386, NES.css, no-more-secrets, loopy), and runtime patterns (game-programming-patterns).

The three-folder split: inspiration tells you what the device should feel like; prototype tells you what to build it from; research tells you how to build the pieces in between (the rendering pipeline, the scripting layer, the keyboard model, the signature effects, the runtime patterns).

Batch 5 records a major hardware-path decision: the KN-86 will use a Ferris Sweep rather than a fully custom keyboard. See ../prototype/keyboard-decision.md for the decision and its rationale. The Batch 5 entries add the Sweep (../prototype/ferris-sweep.md) and the holykeebs Buyer’s Guide (../prototype/holykeebs-buyers-guide.md) to the build path; archive the custom-keyboard knowledge (GOLEM hub, plate manufacturing, KMK firmware, KMK guide, universal60plate) to research/ as background; and add three cyberdeck/macropad STL references to inspiration/ for shell aesthetic (Adamow cyberdeck, TechNIK cyberdeck, Stream Deck macropad).

Batch 6 introduces a fourth sibling folder, ../effect/ — visual-effect / rendering-technique references and KN-86-internal specs. The central deliverable is the KN-86 ASCII Effect Spec distilled from react-video-ascii’s prop matrix and libcaca’s engine reference. The four-folder split now reads inspiration (feel) / prototype (build) / research (how) / effect (visual-effect grammar). Batch 6 also adds two Ferris Sweep hardware reinforcements to prototype/ — a printable case for the Sweep v2 and an ergonomically sculpted Choc keycap set — confirming the Batch-5 keyboard decision with concrete supporting parts.

ProjectTechOne-lineFile
PulseDeckRust / RatatuiRetrowave terminal radio player with a cassette-deck UI.pulsedeck.md
GloomberbTypeScript / OpenTUIBloomberg-style finance terminal with a mnemonic command bar.gloomberb.md
NetWatchRustNetwork-forensics TUI with a nine-tab numbered dashboard.netwatch.md
GolazoGo / Charm stackLive football-match TUI built around a master/detail + headline-scoreline pattern.golazo.md
PerkinsGoBraille-character pixel-art editor with sub-cell resolution and a ? help overlay.perkins.md
BAEPythonMinimal two-column bash-alias editor — friction-removal as a feature.bae.md
Cowsay in C++C++Classic cowsay port — captured for the ASCII speech-bubble primitive only.cowsay-cpp.md
OpenTUIZig core + TS bindingsTUI framework (the substrate for Gloomberb and OpenCode), evaluated as a potential KN-86 foundation.opentui.md
ZorkMDL (Lisp) → Z-machine bytecodeThe 1980 Infocom interactive-fiction archetype — the historical precedent for Lisp-authored carts on a portable bytecode VM.zork.md
Vehicle TUI ConceptAnonymous community concept imageTUI applied to a fixed-envelope automotive infotainment screen — the closest visual analogue to KN-86’s own situation (a TUI that is the product UI).vehicle-tui-concept.md

Batch 2 — Hardware & aesthetic references (KN-86)

Section titled “Batch 2 — Hardware & aesthetic references (KN-86)”
ReferenceTypeOne-lineFile
Penkesu ComputerOpen-source hardwarePi Zero 2 W + 1280×400 ultrawide + 48-key ortholinear Kailh Choc handheld in a GBA-SP-hinged off-white clamshell.penkesu.md
The Cyberdeck CafeCommunity gallery / blogThe cyberdeck-builder scene’s de facto moodboard — neon-on-dark, rugged panels, “Surviving the Sprawl” lifestyle posts.cyberdeck-cafe.md
Casio Organizer RetrofitHackaday article / build1995 Casio SF-5580 retrofitted with a Pi Zero + 480×800 LCD + Pico-driven 82-key membrane. Function-key-as-domain idiom.casio-organizer-retrofit.md
OS ModelsPixel-art / palette referenceImgur album of animated OS-themed Python-TUI palette demos. Named palettes, ANSI grids, color-picker UIs, amber-on-black.os-models.md

Contemporary TUI applications worth studying for UX, plus the historical software anchors that established the keyboard-first idioms KN-86 inherits from. Pairs with the prototype-tech-stack candidates in ../prototype/.

ReferenceTechOne-lineFile
rs-pugRust / RatatuiYouTube/SoundCloud/local music player with Lua plugins, 5 JSON themes, SQLite storage, Smart Queue autoplay.rs-pug.md
audiumRust / RatatuiKeyboard-first music player; 15 themes with live preview + transparency, plain-JSON portable library, LRC lyrics overlay.audium.md
cliampGo / Bubble TeaWinamp-inspired terminal music player with real spectrum visualizer, parametric EQ, Lua plugins.cliamp.md
AetherTuneRust / RatatuiInternet radio TUI with real 16-band FFT visualizer (~94 fps), CRT boot/power-off animations, 8 themes including default CRT, fully remappable keybinds.aethertune.md
octoscopeGo / Bubble TeaTabbed auto-refreshing GitHub dashboard. 7 themes including phosphor and amber CRT — direct lineage for KN-86’s amber. Drill-in detail views, live “change pulse” border flashes.octoscope.md

Retro / historical software (UX touchstones — referenced not run)

Section titled “Retro / historical software (UX touchstones — referenced not run)”
ReferenceEraOne-lineFile
l123Modern (recreates 1993)Faithful Rust recreation of Lotus 1-2-3 R3.4a for DOS — slash menus, three-line control panel, 13 live modes, first-character input rule, F-key workflow, optional DOS/green/amber CRT themes, modern .xlsx engine underneath. Single strongest keyboard-first interaction-model reference in the entire corpus.l123.md
VisiCalc1979The original spreadsheet — keyboard-driven grid UI archetype.visicalc-archive.md
Sid Meier’s Civilization1991Dense 16-color DOS strategy UI — information-density discipline.civilization-1991.md
Gorillas QBASIC1990Bundled with MS-DOS QBASIC; chunky-DOS-game aesthetic + “source code shipped with the app” learnability model.gorillas-qbasic.md
ReferenceTypeOne-lineFile
4TRKCompact desktop music workstationTracker / groovebox music workstation — 8 drum + 3 flex tracks, tape FX, many themes + theme editor, dual screen modes (studio 640 / classic 320), deep CRT effects. Strongest single aesthetic match for KN-86’s Deckline identity.4trk.md
x0xb0x Synth KitDIY hardware synthTB-303 clone PCB kit by Ladyada (Limor Fried) — DIY-kit / open-hardware ethos and panel/PCB aesthetic lineage.x0xb0x.md

Batch 5 — Hardware build decision (cyberdeck STLs + macropad)

Section titled “Batch 5 — Hardware build decision (cyberdeck STLs + macropad)”

The Batch 5 aesthetic references — printable STL cyberdecks and a macropad — that inform the shell language the KN-86 enclosure should land in. The actual build-path decisions and the archived custom-keyboard knowledge live in ../prototype/ and ../research/ respectively.

ReferenceTypeOne-lineFile
My Cyberdeck (Adamow)Free Printables STLTactical-cyberpunk silhouette STL; reference for the KN-86 Pelican-1170 bezel insert aesthetic.cyberdeck-adamow.md
TechNIK Cyberdeck (Nik Reitmann)Free Printables STLAlternate-silhouette cyberdeck — different hinge geometry, different screen-mount; the second of two STL references that triangulate the KN-86 shell aesthetic.cyberdeck-technik.md
Stream Deck / Macro Keyboard (Dante)Free Printables STLAuxiliary macropad form-factor; optional v2+ accessory alongside the Ferris Sweep, bound to KN-86-application verbs.stream-deck-macropad.md

Batch 7 — Tactical sports sims + database UX archetype (2026-06-07)

Section titled “Batch 7 — Tactical sports sims + database UX archetype (2026-06-07)”

Three inspiration entries from Batch 7 (../synthesis.md §10): two tactical OODA-loop football sims that cluster with the existing Strat-O-Matic CFB as KN-90S Statline inputs, plus a 1988 menu-driven database tool that doubles as a candidate KN-9x “DM Sidearm” sister-product concept.

ReferenceEra / PublisherOne-lineFile
NFL Challenge1985 / Xor CorporationEarliest mature tactical OODA football sim. Menu-driven play-calling, text play-by-play + minimal X’s-and-O’s, editable plain-text rosters. Historical anchor of the tactical-sports-sim cluster.nfl-challenge.md
NFL Pro League Football1991 / Micro SportsRefined tactical OODA UX — formation grid × play menu call-sheet. Reads cleanly as a screen-design-rule reference.nfl-pro-league-1991.md
Dungeon Master’s Assistant Vol I1988 / SSI/TSRMenu-driven D&D-DM database tool — 1000+ encounters, 1300+ monsters, editable. UI archetype for KN-86 cart database surfaces (AUDIT, The Vault, Black Ledger). Also a candidate KN-9x “DM Sidearm” sister-product concept.dungeon-masters-assistant.md

Batch 8 — Deckline-core TUI corpus (2026-06-12)

Section titled “Batch 8 — Deckline-core TUI corpus (2026-06-12)”

The largest single capture: 49 production TUIs across inspiration/, research/, and effect/, distilled into two synthesis docs — ../synthesis-batch8.md (UI pattern catalog / single-color adaptation / ambient mode / LISP integration) and ../synthesis-batch8-architecture.md (library shortlist verdict + (draw-keyboard) / (draw-framebuffer) proposals + libuv pattern-only). The 36 inspiration/ entries are grouped by cluster below; the research/ and effect/ entries live in their sibling indexes (../research/index.md, ../effect/index.md). Canon throughout: 128×75 per ADR-0027.

ReferenceTechOne-lineFile
csvlensRustless-style CSV viewer — read-only table rendering + selection-mode cycling + frozen columns.csvlens.md
sc-imC / ncurses + LuaVim-modal spreadsheet with an embedded Lua interpreter driving the grid — the architecture anchor for “how a scripting language wires into a cell-grid app.”sc-im.md
sheetsuiRust / RatatuiConsole spreadsheet (sc-im-inspired) — the clean engine/UI split reference (ironcalc engine under a Ratatui front-end).sheetsui.md
VisiDataPythonThe fullest terminal tabular multitool — typed-column indicators, sheet-stack navigation, transformation pipeline.visidata.md
logradarRustMulti-source log-stream TUI — the corpus’s highest single-color value: Unicode-block sparklines + glyph status icons + a named-color-role (Mono) theme.logradar.md
ReferenceTechOne-lineFile
caps-logC++Terminal journaling on a calendar — the cleanest multi-panel calendar layout + six named border styles.caps-log.md
calcurePythonCalendar + task TUI — month-grid + task-panel split, icon-from-keyword convention.calcure.md
chronosGo / HuhVim calendar with a zoomable intraday time-grid — the batch’s density-control reference (zoom-as-row-semantics) + form-based event editing.chronos.md
clipseGo / Bubble TeaClipboard-manager TUI — the list + preview-pane + top-filter pattern and a clean JSON theme schema.clipse.md
mynavGoWorkspace/session navigator — two-panel navigator + live-preview launcher + breadcrumb hierarchy.mynav.md
mcflyRustNeural-ranked shell-history search — the full-screen ranked-result overlay (the command-palette pattern).mcfly.md
ReferenceTechOne-lineFile
hackernews-TUIRustTerminal Hacker News browser — the cleanest hierarchical drill-in/back-out nav + link-overlay reading.hackernews-tui.md
newsboatC++Terminal RSS/Atom reader — 3-level list→item→reader hierarchy, unread badges, filter-query language.newsboat.md
w3mCText-mode web browser + pager — HTML→text table/frame rendering in a constrained grid; inline-image protocol concept.w3m.md
browshGo / FirefoxText-mode browser rendering full web pages — the half-block pixel-rendering reference (brightness per half-cell).browsh.md
bookokratRustTerminal EPUB/PDF/DJVU reader — split library/TOC + reader layout, TOC-tree navigation, zen/focus mode.bookokrat.md
ReferenceTechOne-lineFile
microGo / LuaModern terminal editor — strongest reference for the context-sensitive bottom key-hint bar + a clean namespaced Lua plugin layer.micro.md
Microsoft EditRustDOS-Editor homage — the dropdown-menu-bar / dialog system AND a from-scratch immediate-mode framebuffer TUI on a plain C ABI.microsoft-edit.md
makiCMinimal modal editor — the NAV/INS mode toggle and an explicitly battery-conscious design thesis.maki.md
ninoCTiny kilo-lineage editor — a minimal-C core that grew tabs/splits/file-explorer without losing the kilo shape.nino.md
orbitonGoConfig-free VT100-limited editor — hard terminal-capability constraints, a “portal” cross-file cut/paste primitive, a built-in mini-game.orbiton.md
durdrawPythonASCII/ANSI/Unicode art and animation editor — the strongest model for a KN-86 cart-art authoring tool (canvas + ░▒▓█ palette + frame timeline).durdraw.md
ReferenceTechOne-lineFile
Brogue: Community EditionCMinimalist ASCII roguelike — the single most valuable single-color reference in the corpus (glyph/inversion/shading grammar).brogue-ce.md
PHP Terminal GameBoy EmulatorPHPFull GameBoy emulator rendering to a terminal — direct proof-of-concept for KN-86’s “the terminal runs a real handheld game” premise.php-gameboy.md
Midnight CommanderC / ncursesThe canonical dual-panel file manager — the reference for KN-86’s F-key bar (Row 74) and dual-panel layout.mc.md
desktop-tuiRustA TUI “desktop environment” with overlapping windows + taskbar — window-management reference for single-color chrome.desktop-tui.md
tvtermC++ / Turbo VisionTerminal-emulator-in-terminal — the canonical retro windowed-TUI framework study.tvterm.md
maze-tuiRustMaze build/solve visualizer — box-drawing wall-style catalog + step/speed animation controls.maze-tui.md
ReferenceTechOne-lineFile
lineC++ / Lua-LPegCLI MIDI sequencer + live-coding pattern language — the LISP-integration apex (a line phrase maps one-to-one onto a Fe s-expression); primary Toneline sequencer reference.line.md
strudelJavaScript (TidalCycles port)Browser live-coding pattern language — patterns are pure functions of cycle-time; the shipping proof that “the sequencer language IS KEC Lisp.” Combinator-algebra companion to line’s entry grammar. (2026-07-11 addendum; AGPLv3, paradigm-only.)strudel.md
cmusCConsole music player — numeric view-switching, compact status bar, library/queue separation.cmus.md
upianoPython / TextualA playable piano keyboard in the terminal — the Toneline piano/keyboard widget + slider components reference.upiano.md
wavesGoTUI music player — F-key multi-view switching, library hierarchy, queue + undo/redo.waves.md
asakRustCross-platform audio recorder/player — mode-selector splash, waveform-with-playhead, live-monitor recording workflow.asak.md
valveFMGoVintage FM internet-radio TUI — the tune-dial / tuner UI metaphor for audio controls.valvefm.md
ReferenceTechOne-lineFile
TypeincPython / ncursesTyping-speed game whose signature affordance is an on-screen keyboard widget mirroring the physical keys — the A4 (draw-keyboard) source.typeinc.md
typing-game-cliNodeTyping game with a race-against-a-fast-robot mode — the ghost-competitor mechanic + a KN-86 typing-game cart concept.typing-game-cli.md

Batch 9 — Retro economy / corruption sim (2026-07-01)

Section titled “Batch 9 — Retro economy / corruption sim (2026-07-01)”

A single deep-dive capture anchoring the KN-86 market-sim cart: a genuine 1988 Antic stock-market sim whose corruption / influence layer (bribes → letters of introduction → insider tips, plus a hackable Grand Jury exposure meter) maps natively onto the deck’s world. Sourced from the game’s own ENTRE.DOC.

ReferenceEra / PublisherOne-lineFile
Entrepreneur Jungle1988 / Antic (William Austin)Billion-dollar stock-market sim whose real hook is an influence/corruption economy — bribes, insider tips, and a Grand Jury exposure meter you can hack away. Design anchor for the KN-86 corporate-corruption market-sim cart.entrepreneur-jungle.md

Batch 10: Gameplay-mechanics mining (2026-07-16)

Section titled “Batch 10: Gameplay-mechanics mining (2026-07-16)”

The first capture aimed squarely at gameplay: 21 titles from 1970 to 1988, mined for the patterns, mechanics, and concepts to carry into the KN-86 minigames and carts. Earlier batches asked what the device should feel like; this one asks what each genre already worked out that a Lisp cart can reuse. The set runs from the first timesharing sims and conversational bots (PDP-10, PLATO) through the play-by-mail and BASIC-listing era to the mature Infocom and UK text-adventure scene. Each entry records what the title is, how it works (from primary sources where they survive: manuals, source listings, oral histories, an RFC), the concept-level mechanic to reuse, and a light note on KN-86 fit. The cross-cutting “which mechanic goes in which cart” pass is a follow-on; per-entry applicability is kept deliberately shallow.

Four threads run strongest through the set: a machine-voice lineage for CIPHER (Ecala, PARRY, Cyborg), a hacking-sim bullseye for the deck’s intrusion fantasy (System 15000, Dunnet), authoring-engine precedents for the cart model (Wander, PAW), and economy loops for the market carts (Star Trader, Drug Wars, alongside the Batch 9 Entrepreneur Jungle). Several entries cross-link to Zork and to runtime docs and ADRs already in the tree.

Applicability: each mechanic above is folded into the relevant existing cart spec under a “Batch 10 mechanics to fold in” section (module specs).

ReferenceYear / PlatformMineable ideaFile
Ecala1971-73 / PDP-10Early ELIZA-descendant chatbot that prods the user to disclose more; a small keyword-and-canned-line conversational voice.ecala.md
PARRY1972 / PDP-10A conversational voice driven by hidden numeric affect (anger, fear, mistrust) that shapes and escalates its replies.parry.md
Cyborg1981 / Apple IIA machine co-narrator speaking in first-person plural, turning parser limits into in-fiction dialogue. Direct CIPHER precedent.cyborg-berlyn.md
ReferenceYear / PlatformMineable ideaFile
Star Trader1974 / BASIC (PCC)The founding dynamic-price, multi-node trading economy: local supply/demand pricing, arbitrage, and bounded haggling.star-trader.md
Drug Wars1984 / MS-DOSThe canonical turn-limited arbitrage loop under a hard day cap, with a compounding loan-shark debt clock. Origin of the Dopewars lineage.drug-wars.md
ReferenceYear / PlatformMineable ideaFile
System 150001984 / ZX Spectrum, C64The first hacking sim: a fictional network cracked node by node, each system yielding the next one’s credentials, under a police trace.system-15000.md
Dunnet1982; Emacs 1992An adventure embedded in the editor whose second act is a “you are inside the network” hacking world with a simulated Unix shell.dunnet.md
Mission: Mainframe1987 / DOSAn office highrise as a 30-floor randomly generated grid, where an encounter resolves six ways and only one of them is combat, and the win condition is carrying a fact back out.mission-mainframe.md
ReferenceYear / PlatformMineable ideaFile
The Pollution Game / King1970 / DEC BASICA pollution-vs-growth feedback economy under a fixed term, where the tempting cash move slowly poisons renewable income; several distinct fail states.pollution-game.md
Nuclear Destruction1970 / play-by-mailA computer refereeing every player’s secret orders and resolving them simultaneously; latency-tolerant batched turns.nuclear-destruction.md
Baseball1971 / PDP-10The manager framing (call the play, the machine resolves and narrates) plus an opposed-probability contest as a reusable “two rated actors face off” primitive.daglow-baseball.md
Trek-801977 / Sol-20Real-time tactical grid combat with a coarse-plus-detailed dual map and a fixed power budget split across drives, sensors, weapons, and shields.trek80.md
Hidden Agenda1988 / Mac, DOSA consequence-driven faction simulation run through a dossier-and-interview UI, with delayed systemic outcomes and a retrospective verdict ending.hidden-agenda.md
ReferenceYear / PlatformMineable ideaFile
Wander1974 / mainframeArguably the first adventure authoring engine: one interpreter, many worlds held as separate data files, hot-swappable at load.wander.md
PAW (Professional Adventure Writer)1986 / ZX SpectrumA full IF authoring kit from tables, flags, a vocabulary database, and a parser. A precedent for the cart grammar plus SDK.paw-adventure-writer.md
Moria (PLATO)1975 / PLATOOne shared, persistent, procedurally generated dungeon many players inhabit at once; first-person wireframe, cooperation built into the loop.moria-plato.md

Interactive-fiction craft & adversarial UI

Section titled “Interactive-fiction craft & adversarial UI”
ReferenceYear / PlatformMineable ideaFile
Brand X / Philosopher’s Quest1979 / Cambridge mainframeHard deterministic puzzle IF where each fatal trap teaches one rule, and a tight carry limit forces commitment.brand-x.md
Local Call for Death1979 / TRS-80Story-forward IF where conversation is the core verb and a “prove it” endgame is decoupled from an obvious whodunit.local-call-for-death.md
Corruption1988 / Magnetic ScrollsA corporate-crime whodunit on a real-time clock (one move is one minute), scheduled NPCs, and evidence collection that reverses a frame.corruption.md
Border Zone1987 / InfocomA real-time clock layered onto a turn parser (the world advances while you type), with player-tunable pace and rotating perspectives.border-zone.md
The Prisoner1980 / Apple IIThe interface as adversary: a game that fakes its own crash and weaponizes the operator’s trust in the system; a secret you must not leak.the-prisoner.md
Bureaucracy1987 / InfocomA hidden blood-pressure meter driven by player friction, with frustration built as an intentional anti-usability system.bureaucracy.md

Batch 11: Peer-product authoring platform (2026-07-23)

Section titled “Batch 11: Peer-product authoring platform (2026-07-23)”

A single deep capture of how the closest peer product lets other people make software for it. Earlier batches studied what the KN-86 should feel like and what its carts should do; this one studies the developer-facing half of the product, using the one company that has shipped and iterated that problem for four years on comparable hardware. Two tracks in one entry: Panic’s Lua/C SDK (project layout, pdc, the .pdx bundle, the single playdate.update() loop, opt-in CoreLibs, the API surface, the 75/25 Catalog terms) and Pulp, their browser click-and-place editor whose games ship as a small interpreter plus a table of objects it walks. Both map closely onto our own cart stack (ADR-0005, ADR-0006, kn86cart, the ui/ kit). The Pulp Audio Runtime is the shipped precedent for making the tracker workbench’s output usable from a cart.

ReferenceTechOne-lineFile
Playdate SDK + PulpLua 5.4 + C; Pulp is browser JSThe peer product’s authoring platform, both tracks: a Lua/C SDK compiled by pdc into a .pdx, and a click-and-place browser editor whose 25×15-tile games run as an interpreter walking a JSON object table. Direct structural comparison to our cart stack. (SDK License 1.0, paradigm-only.)playdate-sdk-pulp.md

Batch 12: The Ahl BASIC corpus + the cart-mapping pass (2026-07-25)

Section titled “Batch 12: The Ahl BASIC corpus + the cart-mapping pass (2026-07-25)”

Three David Ahl / Creative Computing anthologies read end to end (28 games and 2 design essays), mined from the printed listings and sample runs rather than from secondary descriptions. The corpus matters because its constraints match the deck’s: keyboard-only, single-screen, monochrome-teletype games with no graphics, built in very little memory, where every mechanic had to earn its place in text alone.

This batch also delivers the pass Batch 10 deferred. Batch 10 closed by noting that “the cross-cutting which mechanic goes in which cart pass is a follow-on”; ../synthesis-basic-games.md is that pass, run across all 17 cartridges plus the concept carts rather than the launch four. Every mapping was checked against the actual cart spec before being recorded, which killed or narrowed roughly half of them; the rejections are kept in the synthesis §6 because they save the next pass from re-proposing them. See that doc for the Batch 11 synthesis.

ReferenceYearMineable ideaFile
BASIC Computer Games197817 games: the hidden-target search family across four feedback fidelities; a shot budget derived from the search space (Depth Charge’s log2); a whole galaxy as one packed integer (Super Star Trek); the economy ancestors (Hammurabi, Stock Market); the generative trio (Amazing’s spanning-tree maze carve, Life’s in-place simultaneous update, Poetry’s slot grammar); a provably optimal opponent (Nim).basic-computer-games.md
More BASIC Computer Games19796 games: a fifth and higher feedback fidelity (Blackbox’s symbolic three-outcome ray, computed from local three-cell adjacency); the moving-target hunt with a shadowing defender (Convoy); a living map whose hazards kill both sides (Seabattle); instrument quality as a resource (depth-gated sonar fog).more-basic-computer-games.md
Big Computer Games19845 games + the two adventure-design essays: an IF data model (rooms as a graph, objects as location-tagged records where a sentinel means “nowhere yet,” dependency-chain puzzles) and a fairness specification derived from player behavior. Plus one dial wired to several consequences and deliberately fuzzy instruments (Trucker), spatial arbitrage (Star Merchant), and a deterministic resource race (Survival).big-computer-games.md

Four threads run strongest: Poetry’s group cycle as the passage-level generator Null’s headline mechanic is missing; Blackbox as an untimed chosen-plaintext oracle for Cipher Garden; the adventure essays as the first source to give the long-open narrative-cart template question a size and a build order; and Trucker’s fuzzy instruments as the single cheapest change in the corpus. The synthesis also records the spec conflicts and gaps the checking pass turned up.

Applicability: Josh assigned the corpus to destinations himself in the kn86-inspo workbench. The result is two documents: cart-inspiration-map.md (every cartridge, first-party program, and sister product with its assigned sources) and unplaced.md (what is still to place, the non-cart surfaces, and what was dropped). Each destination doc also carries its own Inspirations section, and each entry here carries a Serves: line, so the link reads from either end.

References in this folder that target a KN-9x sister product, not KN-86 itself. Captured here because the inspiration folder is the right home for not-yet-spec design references regardless of which product they target — when each sister product gets scoped, the relevant entries should be linked from its concept doc.

ReferenceTarget productOne-lineFile
Strat-O-Matic CFBKN-90S StatlineSports-sim dense-data-table UI — the closest contemporary digital analogue to what the Statline’s fantasy-sports management UX needs to be.strat-o-matic-college-football.md
NFL Challenge + NFL Pro League Football (also Batch 7 entries above)KN-90S StatlineTactical OODA-loop sports-sim cluster — completes the trio of Statline UX references.nfl-challenge.md + nfl-pro-league-1991.md
Dungeon Master’s Assistant Vol I (also Batch 7 entry above)Candidate KN-9x “DM Sidearm” concept (no concept doc yet)Tabletop RPG DM database sidearm — a portable rugged single-purpose tool that runs all night without distraction.dungeon-masters-assistant.md

Cross-cutting reference:

  • features-matrix.md — every recurring pattern as a row, every Batch 1 project as a column, with a “KN-86 aspirational?” verdict on the right. Batch 2 and sister-product references are aesthetic/hardware moodboard material rather than TUI-feature patterns, so they are referenced from the visual-identity brief below rather than from the matrix.

The set splits in two. Zork (and the Z-machine) is the architectural north — the 1980 precedent for everything KN-86 is doing structurally: a Lisp dialect for authoring, a portable and memory-disciplined runtime (KN-86 realizes this as a tree-walking interpreter; the AOT-bytecode half is deferred), a cartridge artifact carrying the work, and a taut text voice that is the UI. The other eight are contemporary UX reference — what good TUI craft looks like in 2025–2026, what patterns recur, what the bar is for keyboard-first, theme-aware, resilient terminal interfaces.

Reading across the contemporary eight, a few patterns keep showing up — these are what should define the KN-86 Deckline identity at the surface:

  1. Keyboard-first command model. All eight commit to keys over menus. KN-86 is already there by hardware constraint (31 physical keys, no pointer), but the framing — every surface is a keymap, the keymap is discoverable in-band — is the doctrine to commit to.
  2. Multiple focus / layout modes. PulseDeck cycles three layouts on one key. NetWatch tabs by digit. Golazo swaps focus with Tab. KN-86 should pick a small, fixed set of modes per surface and a single key to cycle them — not freeform window management.
  3. First-class theme system. PulseDeck (6) and NetWatch (7) both make themes a named, cyclable, persistent setting. KN-86 is monochrome amber, so this becomes “aesthetic modes” rather than “color themes” — glyph treatment, CIPHER-LINE animation profile, scanline/ghost overlay — but the mechanism (a registry, a cycle key, a persisted choice in nosh-config.toml) transfers.
  4. Visualizers + sparklines as inline primitives. PulseDeck’s spectrum/scope, NetWatch’s sparkline/heatmap/Gantt rows, Golazo’s stat bars. None of them are separate “graph mode” — they live inside the data view. CIPHER-LINE is KN-86’s natural home for the heavier visualizers; the main 80×25 grid can carry sparklines and stat bars with box-drawing + braille.
  5. Resilience / graceful degradation as doctrine, not feature. NetWatch surfaces capability tiers in-band and never crashes. PulseDeck buffers, fades, undoes, and refuses to draw on a too-small terminal. KN-86 has analogous states (no cart, no microSD, coprocessor offline, low battery, emulator window too small) — they should be handled with the same posture: show what you have, label what you don’t.
  6. Persistent session state. PulseDeck, NetWatch, Gloomberb, BAE — all of them survive a restart. KN-86 already has Universal Deck State (ADR-0011); the inspiration set reinforces that scope (handle / credits / reputation / cartridge history / phase chain) is exactly right.
  7. Plugin / extensibility story. Gloomberb is the heavy example; OpenTUI is the substrate. KN-86 has the capability-cartridge model, which fills the same niche through different mechanics — but the vocabulary (pane / tab / command / status-widget / data-provider) is useful for sharpening the Bare Deck Terminal brief.

Eighteen projects closest in spirit to where KN-86 should land. The first is historical and architectural; the rest are split between contemporary UX (Batches 1 + 3), physical-build prototype (Batch 3 hardware refs + Batch 5 keyboard decision + Batch 6 case/keycaps reinforcement), implementation-technique research (Batch 4 + Batch 5 archived custom-keyboard knowledge), and visual-effect grammar (Batch 6).

  1. Zork (and the Z-machine) (Batch 1) — the deepest single architectural resonance. Lisp-authored carts on a portable, memory-disciplined runtime; pure-text experience on a fixed-grid terminal; cartridge / box / feelies as part of the work; second-person, present-tense, taut prose voice. KN-86’s KEC Lisp + Fe interpreter + cart-shell + CIPHER stack is the Z-machine pattern, four decades on — though KN-86 tree-walks Lisp source rather than compiling to bytecode (the AOT-bytecode half is deferred; see ADR-0004 amendment). Cite explicitly in ADR-0001 and ADR-0004 background sections.
  2. l123 (Batch 3) — the single strongest keyboard-first interaction-model reference in the entire corpus. Slash menus, three-line control panel, 13-mode indicator, first-character input rule, F-key verb workflow, F1 context help (824 pages shipped in the binary), authenticity contract backed by 232 acceptance transcripts, optional DOS/green/amber CRT themes, strict layered Rust architecture. Read end-to-end before touching KN-86’s runtime interaction model.
  3. AetherTune (Batch 3) — the single strongest runtime-architecture reference of the contemporary apps. Real 16-band FFT visualizer pipeline at ~94 fps (CAVA-inspired), CRT boot + power-off identity animations, 8 themes, fully remappable keybindings, graceful capability degradation (simulated visualizer when audio capture absent), clean src/ui/ module split. The CIPHER-LINE visualizer should be modeled on this pipeline.
  4. 4TRK (Batch 3)strongest single aesthetic match for KN-86’s Deckline identity. Compact desktop music workstation, dual screen modes (studio 640 / classic 320), many themes + theme editor, deep CRT effects, tape-emulation FX. Read the screenshots, then read them again.
  5. PulseDeck (Batch 1) — the deck identity, the theme registry, the audition/commit split, the visualizers, the resilience instincts. Borrow most heavily here for the cassette-deck visual lineage.
  6. NetWatch (Batch 1) — the numbered-tab dashboard, the graceful-degradation doctrine, the sparkline-everywhere aesthetic, the live-cycle-and-persist theme model. The Bare Deck Terminal should feel like NetWatch’s Dashboard tab, in amber.
  7. Gloomberb (Batch 1) — the dense multi-pane discipline and the mnemonic command bar. The TERM key should feel like Gloomberb’s Ctrl+P.
  8. QRPπ (Batch 3, ../prototype/)the single closest physical-build reference. All-in-one weatherproof digital-mode radio deck in a Pelican 1170 case with three 3D-printed inserts (bottom keyboard, top panel, screen bezel), unmodified shell, ortholinear keyboard, display in the lid. KN-86’s hardware build structure should follow this almost line-for-line.
  9. mal — Make a Lisp (Batch 4, ../research/)the canonical blueprint for building a small embedded Lisp. 11 steps, 89 host-language implementations, the lingua-franca curriculum for “implement a Lisp in language X.” Direct prior-art citation for ADR-0001 / ADR-0004 / ADR-0005. The scaffold for KN-86’s cart-authoring tutorial.
  10. EXWM + webmacs (Batch 4, ../research/) — the strongest contemporary statements of the “keyboard-driven everything, one environment” philosophy. EXWM at the WM level, webmacs at the per-application level. The north star for the universal-verb-set + nEmacs REPL surface (ADR-0016).
  11. termui + blessed-contrib (Batch 4, ../research/)the widget-catalog reference. Sparkline, gauge, plot, table, tabs, braille canvas, carousel, LCD display, rolling log, donut. The inventory NoshAPI should expose to cart Lisp as drawing primitives. The carousel idea (auto-rotating dashboard views) is the standout single takeaway — pilot for the Bare Deck Terminal idle state.
  12. BOOTSTRA.386 (Batch 4, ../research/) — the aesthetic + boot-animation identity reference. DOS WIMP re-skin + configurable ANSI-art boot/flyby animation. Direct cite for the v0.1 KN-86 boot animation in AMBER + Press Start 2P + CP437, with configurable speed and repeat behavior in nosh-config.toml.
  13. Ferris Sweep — holykeebs (Batch 5, ../prototype/)the keyboard. 34-key split, RP2040 controller, hotswap sockets + diodes, low-profile choc spacing, MBK low-profile keycaps. Replaces the custom 31-key keyboard plan from ADR-0024. Order from holykeebs as a soldered kit per the Buyer’s Guide BOM checklist.
  14. holykeebs Buyer’s Guide (Batch 5, ../prototype/)the BOM. The configuration matrix turned into the actual order checklist (build tier, controller, sockets, switches, pointing device vs OLED constraint, plates, case).
  15. GOLEM (Batch 5, ../research/)the custom-keyboard knowledge base (archived as background per the Sweep decision) and the vintage-terminal-keyboard gallery (actively used as KN-86 keycap-legend / TUI typography reference). Reuters ‘85, Tatung ‘84, IBM 5155 Model F, Kaypro 10, Epson HX-20/40, DEC LK-201.
  16. Adamow + TechNIK cyberdecks (Batch 5, ./)the shell aesthetic. Two free Printables STL cyberdecks that triangulate the tactical-cyberpunk silhouette family the KN-86 Pelican-1170 bezel inserts should land in.
  17. react-video-ascii + libcaca (Batch 6, ../effect/)the ASCII visual language. react-video-ascii is the interaction-grammar north star (its prop matrix distills into the project-wide ASCII Effect Spec); libcaca is the on-device engine reference. The whole TUI shares one ASCII grammar defined here.
  18. Ferris Sweep v2 Case + Sculpted Choc keycaps (Batch 6, ../prototype/)the case + the touch. Bubbleology’s printable Sweep v2 case is the actionable enclosure for the chosen keyboard; mugika9’s sculpted Choc caps are the documented ergonomic alternative to canonical MBK. Both reinforce the Batch-5 Sweep decision with concrete supporting parts.

Tertiary but specific:

  • Golazo (Batch 1) for master/detail + headline-glyph identity object — a screen-design rule.
  • Perkins (Batch 1) for braille sub-cell rendering and the ? overlay — a primitive and a runtime feature.
  • OpenTUI (Batch 1) as the reference component inventory, not as a substrate.
  • Vehicle TUI Concept (Batch 1) for the Row 0 + Row 24 + bottom-bracketed-nav pattern realized at fixed-envelope hardware scale — the closest visual analogue to what KN-86 itself is.
  • octoscope (Batch 3) for the direct amber CRT theme lineage citation and the tabbed-dashboard reference architecture.
  • VisiCalc (Batch 3) as the historical anchor of the keyboard-first-grid lineage that runs VisiCalc → Lotus → l123 → KN-86.
  • Penkesu Computer (Batch 2) and Casio Organizer Retrofit (Batch 2) for hardware silhouette / function-key-as-domain validation.
  • tuibox (Batch 4) for the dirty-bit render-cache pattern and the C-core alternative path.
  • cl-termbox2 (Batch 4) as the proof-of-concept bridge from embedded Lisp to a real terminal — structural validation for ADR-0001 + ADR-0005.
  • xiki + history.el (Batch 4) for the expandable-tree-with-non-destructive-history REPL interaction model.
  • no-more-secrets (Batch 4) as the signature text-reveal transition effect — the third signature animation alongside the boot animation and CRT power-off.
  • Game Programming Patterns (Batch 4) — the runtime-pattern reference (Game Loop, Update Method, Command, Observer, State, Dirty Flag, Object Pool, Service Locator).
  • Stream Deck macropad (Dante) (Batch 5) — optional v2+ auxiliary input module bound to KN-86-application verbs; not part of the canonical v0.1 deck.
  • KMK firmware (Batch 5) — firmware fallback reference; KN-86 uses QMK + Vial on the Sweep’s RP2040 instead, but two specific KMK ideas (drag-drop CircuitPython workflow UX, NeoPixel diagnostic color codes) carry forward.

KN-86 visual identity brief (Batch 2 synthesis)

Section titled “KN-86 visual identity brief (Batch 2 synthesis)”

Distilled from the five hardware / aesthetic references. Not a spec — a directional brief for the visual identity, color story, form factor, typography, and data-density discipline KN-86 should ship behind. Where a value is already canonical (per the Canonical Hardware Specification), the brief reinforces rather than restates.

Screen aspect ratio and layout proportions

Section titled “Screen aspect ratio and layout proportions”
  • Canonical: primary display is 1024×600 (~1.71:1), 80×25 text grid, 12×24 physical cells. Locked.
  • Direction (not a re-spec): the Penkesu Computer (1280×400, 3.2:1) is much more extreme than KN-86’s panel, but its existence validates the deck-style genre — most of the action happens horizontally, not vertically. Read every KN-86 screen layout as “spend the budget across, not down.” Long status strips on Row 0 and Row 24. Side-by-side master/detail in Rows 1–23. Wide stat-bar pairs. The Penkesu is the layout-discipline citation; the 1024×600 panel is the actual target. See penkesu.md.
  • CIPHER-LINE OLED (256×64 auxiliary, per Canonical Hardware Specification) is the truly ultrawide surface (4:1) — the Penkesu lesson applies hardest here.
  • Canonical default: amber #E6A020 on black #000000. Locked. Monochrome on the primary display.
  • Genre lineage: amber is inside the canonical cyberdeck palette family alongside cyan and magenta — see cyberdeck-cafe.md. When someone asks “why monochrome amber?”, the answer is “because it’s one of the colors the scene runs on,” and the Cyberdeck Cafe gallery is the evidence. Direct visual confirmation: os-models-3.png in os-models.md is essentially what KN-86 looks like.
  • Aesthetic-mode direction (not a v0.1 commitment): when KN-86 ships named aesthetic modes (the patterns from pulsedeck.md, netwatch.md, os-models.md), candidate roster, scoped tight:
    • AMBER — the canonical default (#E6A020 / #000000).
    • AMBER — warmer, more saturated red-orange shift; warm-mode reference is os-models-1.png.
    • CIPHER — slightly desaturated mid-luma amber for sustained reading sessions.
  • Aesthetic-mode mechanism: named, cyclable, persisted in nosh-config.toml. Adopt the OS Models “named palette as the unit” framing. Picker UI lives on the Bare Deck Terminal SYS tab, modeled on os-models-4.png (six-row two-column with a save row).
  • Aesthetic mode is not just color. On a monochrome device, “mode” means glyph treatment (Press Start 2P at 1×2 vs. native 12×24, ADR-0014 F1), box-art density, CIPHER-LINE animation profile, scanline / ghost overlay strength. See pulsedeck.md.
  • Tactical-cyberpunk side, not domestic-DIY side. Pelican-1170 shell + 3D-printed inset panels reads as member of the cyberdeck community and lands in the tactical/utilitarian lineage. Penkesu’s off-white “pencil case” is the other legitimate retro-handheld lineage; KN-86 is the tactical sibling, deliberately. Worth being explicit about which side of the line we sit on in marketing.
  • The silhouette is the affordance. Per the Casio organizer retrofit: the external shape should communicate the device before the screen does. The 14-function-key + 16-key phone-layout numpad + TERM key layout (Canonical Hardware Spec) is a retro-organizer / dispatch-deck silhouette, not a generic keyboard.
  • Photograph lived-in, not staged. Both the Cyberdeck Cafe lifestyle posts and the Casio retrofit’s photo style point at the same thing — KN-86 marketing images should look like the device is owned, not vacuum-cleaned. Coffee rings, desk patina, hand grease. This is a directive for marketing-plan.md and pr-faq.md.
  • Canonical: Press Start 2P + CP437 box-drawing, 8×8 bitmap source, 12×24 physical cell. Locked. (ADR-0014, ADR-0014 F1 for the native 12×24 glyph table.)
  • Genre fit: the retro pixel-font commitment is part of the cyberdeck genre’s vocabulary — every device in the Cyberdeck Cafe gallery that has a screen renders monospace pixel-fonts as the default. The choice reads as in-genre.
  • Function-key-as-domain typography (from the Casio retrofit): keycap legends carry the domain vocabulary (CALENDAR, SCHEDULE, …). KN-86’s keycap legend manifest is locked in ADR-0022; the retrofit confirms the idiom works and is recognizable to the audience.
  • The stat-sheet is a sanctioned cart-UI mode. Any KN-86 cart whose job is to be a stat sheet — faction standings, mission logs, dispatch tallies, reputation ledgers — should look like one without apology or decorative panes. Worth promoting to a first-class cart-authoring pattern in ui-patterns.md.
  • Three rules: (1) box-drawing borders, (2) monospace alignment, (3) color / intensity delta carries meaning, not vibe.
  • 80×25 is exactly the right size for tables in this idiom. The grid does the work a spreadsheet does on a PC.
  • (Note: the Strat-O-Matic entry in this folder is research for the KN-90S Statline, not KN-86 — but the data-density discipline above is the general lesson worth carrying over to KN-86 from a TUI craft perspective.)

The aesthetic / hardware direction above lines up directly with several already-noted Batch 1 patterns. The pairs to ship together:

Batch 1 patternBatch 2 evidence
Theme-as-aesthetic-modes (pulsedeck.md, netwatch.md)Named palettes (os-models.md); AMBER / AMBER / CIPHER roster from the brief above
Bare Deck Terminal “useful in 5 seconds” + SYS tab (netwatch.md)SYS-tab aesthetic-mode picker UI modeled on os-models-4.png
CIPHER voice style (zork.md failure-state prose)“Surviving the Sprawl” lifestyle voice (cyberdeck-cafe.md) — two reference corpora for the CIPHER tone target
Row 0 + Row 24 chrome contract (vehicle-tui-concept.md)Horizontal-density discipline (penkesu.md) — spend the budget across
Function-key-as-domain (already canonical; ADR-0016)Casio retrofit as the historical idiom citation

A tight reading of the brief, restricted to what’s plausibly v0.1:

  1. AMBER aesthetic mode only. Don’t ship AMBER / CIPHER yet — but architect the runtime to accept named modes from nosh-config.toml (no hardcoded palette constants outside the mode registry).
  2. Stat-sheet UI pattern documented in ui-patterns.md with three rules + worked example.
  3. Horizontal-density discipline added to screen-design-rules.md as “Layout proportions” — “spend the budget across, not down.”
  4. Marketing brief separate PR. The photographic direction (lived-in, not staged) belongs in marketing-plan.md / pr-faq.md, not engineering docs.

Unified Deckline brief (Batch 3 synthesis)

Section titled “Unified Deckline brief (Batch 3 synthesis)”

Two consolidated recommendations distilled from Batches 1, 2, and 3 together — one for the software north star, one for the hardware prototype path. Not a spec — a directional brief intended to be promoted into ADRs and runtime specs in follow-up PRs.

Application framework: Bubble Tea + Lip Gloss (Charm stack). Go runtime, Elm-style architecture (Model / Init / Update / View), cell-based renderer with diff, integrated keyboard + mouse + focus handling, adaptive/downsampled color so the same code renders correctly on the desktop emulator (true-color terminal) and on the device (Pi Zero 2 W framebuffer VT). Composable child models for the Bare Deck Terminal tabs, mission board, cart-content panes. Fallback path: termbox2 if Go integration costs prove too high or if we want to merge the application binary into the existing kn86-emulator/ C11 codebase.

Interaction model: l123 is the reference.

  • Slash-menu (/ or TERM-key) as the universal command surface — first-letter descent, Esc back, no chords. (l123)
  • Three-line control panel mapping onto KN-86’s Row 0 / Row 24 chrome contract, with the addition of a live mode indicator (READY / EDIT / MENU / WAIT / etc.) in Row 0 or Row 24. (l123)
  • First-character input rule — the first character typed in a context-free input decides what the entry is (verb → English imperative parser, Zork-style; expression → REPL; address → navigation hint). (l123 + Zork)
  • F-key workflow where every function key is a verb. KN-86’s 14-FN + TERM hardware is already this; l123 is the contemporary reference for how to design it well.
  • One key per action ethos. Every meaningful action is a single keypress; chords are reserved for power-user features. (audium)
  • Universal Ctrl-Break-equivalent abort. One key, any mode, back to READY.

Theme system: named aesthetic modes, persisted in nosh-config.toml, picker + editor on the SYS tab.

  • Roster sketch: AMBER (default — the canonical #E6A020 on #000000), AMBER (warmer red-orange shift), CIPHER (mid-luma desaturated for sustained reading). Architecture accepts arbitrary additions; v0.1 ships AMBER only. (Batch-2 visual-identity brief + OS Models)
  • Picker pattern modeled on AetherTune’s t cycler with live preview (AetherTune) and the 4TRK / OS Models color-picker UI for the editor.
  • CRT-theme lineage directly cited from octoscope’s phosphor and amber themes — KN-86’s AMBER mode is in the same naming family by intent, not by accident.
  • Aesthetic mode means more than color on a monochrome device — glyph treatment (ADR-0014 F1’s 12×24 native vs 8×8 scaled), CIPHER-LINE animation profile, scanline / phosphor-bleed overlay strength. (4TRK’s deep CRT-effects layer is the reference.)

Real-time visualizer pipeline: AetherTune’s 16-band FFT at ~94 fps, with CAVA-style gravity fall-off and automatic sensitivity — but driven by PSG output from the Pico 2 coprocessor (ADR-0017), not by system audio loopback. The CIPHER-LINE OLED is the natural home. Secondary visualizer surfaces (sparklines, A-vs-B stat bars) inside the main 80×25 grid use box-drawing + braille per PulseDeck / Perkins / NetWatch. Cross-link to cliamp for the in-band-not-modal placement discipline.

Tabbed dashboard layout for the Bare Deck Terminal: octoscope and NetWatch are the dual reference. Number-key-addressable tabs (15 for STATUS / CIPHER / LAMBDA / LINK / SYS, matching the phone-numpad input model), drill-in detail views from list items, live “change pulse” border flashes on new data arrival (octoscope), capability-tier badge in chrome for graceful degradation (NetWatch).

Plugin / extensibility story. KN-86 cartridges are not plugins — they’re capability modules (ADR-0001). But the contemporary references (rs-pug, cliamp) converge on Lua as the desktop-tooling extension language. Adopt Lua for desktop tooling around KN-86 (cart authoring helpers, emulator debug-overlay extensions, F12-style panel plugins) — not for the on-device runtime.

Persistence: human-editable text formats throughout (audium). nosh-config.toml for config; JSON for portable exports; plaintext for log/history; per-cart save files on the SD card (already specified in ADR-0019); Universal Deck State on the device microSD (already specified in ADR-0011). No binary blobs where a text format suffices.

Image rendering: asciinator’s halfblock--with-fg-bg-color technique for the desktop emulator; shade-mode rendering against the amber palette on the device (monochrome). NoshAPI primitive: (draw-image path :mode 'shade).

Reference architecture: AetherTune’s src/ui/ split + l123’s strict layered Rust workspace. KN-86’s runtime should isolate ui/ from data sources behind a stable trait (NoshAPI is already this for cart Lisp; the application should follow the same discipline internally). Engine-agnostic UI; UI-agnostic engine.

Chassis: Pelican 1170 Protector Case (Canonical Hardware Spec — locked). The closest single existing build is QRPπ — read that entry end-to-end before committing any further bezel work.

Inserts: three to five custom 3D-printed inset panels seated on Pelican foam, case unmodified. Pattern from QRPπ:

  • Bottom: 31-key key plate insert (custom — KN-86’s phone-layout numpad + 14-FN + TERM)
  • Lid: primary display bezel (1024×600 Elecrow IPS panel)
  • Body: CIPHER-LINE OLED bezel (256×64 SSD1322, mounted above the keyboard)
  • Body: cartridge-slot retainer (SD-card-in-sled per ADR-0019)
  • Top/side: port cutout panel (power, programming, optional aux)

Print material: PETG preferred over PLA for travel resilience, per community consensus across pelican-1170-prints.md references. Material remains TBD per Canonical Hardware Spec until bring-up validation.

Parametric starting point: the Printables “Pelican Case 1170 Insert Template — Parametric” (../prototype/pelican-1170-prints.md). Fork it and override the component cutouts rather than authoring from a blank file.

Pelican foam carries the internal volume. Pi Zero 2 W, Pico 2 coprocessor, the battery pack (3× 18650 on a Waveshare UPS Module 3S per ADR-0038), internal USB hub bridge for the SD-card-as-USB-mass-storage cartridge interface (ADR-0019), cabling. Printed inserts carry only the user-visible surfaces.

Keyboard: custom 31-key mechanical PCB per ADR-0018, Kailh Choc v1 switches + MBK keycaps, Adafruit KB2040 controller (ADR-0024) running QMK. Penkesu Computer validates the small-form ortholinear Choc + MBK pairing at handheld scale.

Silhouette identity: tactical-cyberpunk, not domestic-DIY. The Cyberdeck Cafe + QRPπ + Printables cyberdeck gallery converge on the same posture — visible fasteners, integrated antenna stubs (if applicable), rugged panel surfaces, deliberate exposure of hardware. KN-86 belongs in this lineage. (Penkesu’s off-white “pencil case” aesthetic is the other legitimate retro-handheld lineage — KN-86 deliberately doesn’t go there.)

Open-hardware / DIY ethos as a downstream commitment (x0xb0x). By v1.0 or shortly after: published BOM, buildable-from-instructions documentation, sled openable for SD-card service, system image flashable from a standard SD card, no special tooling required.

A tight reading of the brief, restricted to what’s plausibly v0.1:

  1. Application stack: Bubble Tea + Lip Gloss; one Bubble Tea binary running on the device VT and the desktop emulator equivalently.
  2. AMBER aesthetic mode only, but the runtime accepts named modes from nosh-config.toml — no hardcoded palette constants outside the mode registry.
  3. Slash-menu (TERM key) entered universal verb dispatch, with the meta-command verb set (SAVE, LOOK, INVENTORY, SCORE) from the Batch-1 Zork synthesis.
  4. Mode indicator in Row 0 or Row 24.
  5. Stat-sheet UI pattern documented in docs/software/cartridges/authoring/ui-patterns.md with three rules + worked example.
  6. Horizontal-density discipline added to docs/software/cartridges/authoring/screen-design-rules.md — “spend the budget across, not down.”
  7. ? universal help overlay as a runtime-internal affordance (Perkins).
  8. Numbered-tab navigation on the Bare Deck Terminal mapped to the phone numpad (NetWatch + octoscope).
  9. CIPHER-LINE PSG visualizer modeled on AetherTune’s FFT pipeline.
  10. CRT boot + power-off animations as identity branding (AetherTune).
  11. Hardware prototype: QRPπ-derived insert structure seated in Pelican 1170 foam, three printed panels at minimum, no case modification.
  12. Authenticity contract for the runtime, written in docs/software/runtime/ and backed by acceptance transcripts under runtime/tests/ (l123’s discipline applied to KN-86).

The Batch-3 synthesis above committed to Bubble Tea + Lip Gloss as the application stack, AetherTune’s FFT pipeline as the visualizer reference, and QRPπ as the hardware build template. Batch 4 extends those commitments with the how-to-build-it layer — the rendering core’s design pattern, the embedded scripting layer’s structure, the interaction model’s keyboard discipline, the signature aesthetic effects, and the runtime patterns that compose the whole.

1. Rendering core — confirmed: Bubble Tea + Lip Gloss; widgets from termui / blessed-contrib inventory

Section titled “1. Rendering core — confirmed: Bubble Tea + Lip Gloss; widgets from termui / blessed-contrib inventory”

The Batch-3 recommendation stands: Bubble Tea + Lip Gloss as the primary stack (Go, Elm architecture, cell-based render-with-diff). Batch 4 strengthens the recommendation by providing two specific alternatives and a widget inventory:

  • Compared to a C core (tuibox + termbox2 + KEC Lisp bindings via cl-termbox2 pattern): the C path is real and viable, particularly because cl-termbox2 demonstrates the Lisp-to-terminal bridge works end-to-end. But the C path requires hand-rolling widgets, hand-rolling event dispatch, hand-rolling theming, hand-rolling color downsampling. Bubble Tea + Lip Gloss ships all of that. The C path stays in the doc as the fallback for if Go integration costs prove too high, with tuibox’s UI→Screen→Box dirty-bit render cache as the structural model.
  • Compared to widget libraries (termui, blessed-contrib): termui is Go, blessed-contrib is Node. Neither is the right substrate — Bubble Tea + Lip Gloss is more modern and more actively developed. But the widget inventories of both are exactly the right reference for what NoshAPI (ADR-0005) should expose to cart Lisp.

Widgets to adopt (in NoshAPI surface design, sourced from termui + blessed-contrib catalog):

WidgetSourceUse case
Sparklinetermui + blessed-contribBattery curve in Row 0, reputation history in cart surfaces, FFT band history on CIPHER-LINE
Gaugetermui + blessed-contribMission progress, cart resource bars, battery
Braille canvastermuiSub-cell rendering escape hatch (cf. Perkins precedent)
Tabletermui + Lip GlossStat-sheet UI pattern (per the Batch-2 data-density discipline)
TabstermuiBare Deck Terminal tab strip
Plot (line/scatter)termuiCart-content time-series surfaces
LCD displayblessed-contribBig-glyph headline identity object (cf. Golazo)
Rolling log viewerblessed-contribMission event log, dispatch transmissions, CIPHER history
Carousel (standout)blessed-contribBare Deck Terminal idle-state auto-rotation through STATUS / CIPHER / LAMBDA / LINK / SYS tabs

The carousel is the standout single takeaway: a Bare Deck Terminal that idles into a slow auto-rotation across its tabs gives the device an ambient information-radiator quality. Pilot it. Make it configurable in nosh-config.toml (rotate-interval, rotate-disable). Compose with octoscope’s live “change pulse” border flash on data arrival — the carousel rotates, the change-pulse interrupts and flashes when something needs attention.

2. Scriptability — embedded Lisp config/macro layer

Section titled “2. Scriptability — embedded Lisp config/macro layer”

The Batch-3 brief committed to KEC Lisp as the cart-authoring language (ADR-0001 / ADR-0004). Batch 4 confirms and extends:

  • Pedagogy reference: mal. The 11-step structure is the right scaffold for the KN-86 cart-authoring tutorial. Cite mal directly in the ADR-0001 / ADR-0004 / ADR-0005 prior-art sections.
  • C-implementation reference: BuildYourOwnLisp. The fallback path if Fe ever proves wrong-fit. The mpc parser-combinator library is also worth knowing about independent of the Lisp decision.
  • Structural validation: cl-termbox2. Proof-of-concept that a small embedded Lisp + cell-based terminal renderer + FFI between them composes into a working TUI. KN-86 Fe + NoshAPI + nOSh is the same shape with different specific libraries. Strong direct cite for ADR-0001 / ADR-0005.
  • Plugin manifest: pallet-style. Hand-editable text file (TOML), declarative, version-pinned, manifest-as-source-of-truth (one-directional sync). For the desktop tooling around KN-86 — cart-authoring helpers, emulator debug-overlay extensions — not for the on-device runtime.
  • Data fetching: emacs-request-style. Async HTTP from inside the Lisp scripting layer. Callback shape (:on-success / :on-error), pluggable backend (system curl vs. built-in pure-runtime client), built-in JSON parser, headers and cookies extensible. NoshAPI surface design candidate.
  • Macro recording / Learn mode (l123’s Alt-F5 LEARN + Roro’s RPA lineage). Worth scoping as a v0.2+ REPL affordance — record a sequence of TERM-line verbs, name the macro, replay as a single verb.

3. Interaction model — keyboard-first, expandable, navigable, focusable

Section titled “3. Interaction model — keyboard-first, expandable, navigable, focusable”

Building on l123’s slash-menu model from the Batch-3 synthesis, Batch 4 adds:

  • The keyboard-first philosophy from EXWM and webmacs. Codify: every action a user could conceivably want has a keyboard path. There is no “well, it’s faster with the mouse” backstop. No mouse, ever. Worth a quality-bar doctrine note.
  • Universal verb set commitment. TERM-line verbs (SAVE, LOOK, INVENTORY, SCORE, plus BACK / FORWARD from the navigation history) are deck-wide commitments, available in every cart, not redefinable per cart. EXWM’s shared-namespace lesson, applied to KN-86. Refines promote-list item 15.
  • Expandable-command surface from xiki. The REPL surface (per ADR-0016) should support typing a verb and expanding its output in place, with nested expansions navigable by tree traversal. Promote: Xiki-style expandable text as the REPL’s default interaction.
  • Link-hint navigation from webmacs. Every actionable item on every surface gets a single-character label; the user types the label to act on the item. Promote.
  • Non-destructive navigation history from history.el. Doubly-linked-list with sliding index pointer; BACK and FORWARD traverse without losing entries; killed-buffer-equivalent stale entries skipped. Promote: this is a v0.1 runtime affordance.
  • Focus / zen mode from writeroom-mode. Single keystroke; hides Row 0 and Row 24; narrows content area to a configurable column count; centers horizontally; CIPHER-LINE dims (doesn’t silence). Promote: v0.1 ship list addition.
  • Filter-expression on lists from mop. A tiny query DSL on Row 24 (e.g., phase:active, rep:>50), evaluated in the cart’s KEC Lisp scope. Composes with the existing NetWatch filter-DSL promote item — same destination, two independent witnesses.

4. Aesthetics & polish — themes + boot animation + reveal effect

Section titled “4. Aesthetics & polish — themes + boot animation + reveal effect”

Building on the Batch-3 aesthetic-mode brief (AMBER / AMBER / CIPHER):

  • DOS/CRT aesthetic precedent from BOOTSTRA.386 + NES.css. Both commit to a constrained period-correct palette and stay there. KN-86’s AMBER mode is in the same family of “the constraint is the brand.” Cite both as visual-identity prior art.
  • Boot animation is now a confirmed v0.1 ship-list item. AetherTune is the runtime mechanism reference; BOOTSTRA.386 is the aesthetic commitment reference. Implementation: ANSI-art flyby in AMBER + Press Start 2P + CP437; configurable speed, once_per_session, disable in nosh-config.toml.
  • Reveal animation (no-more-secrets). The Sneakers-style decryption reveal — characters flickering down to their final value column-by-column. Sanctioned as a NoshAPI primitive (canonical contract at software/api-reference/grammars/reveal-styles.md per ADR-0033): (reveal surface :style :char-flicker :duration 1.0 :rate 30 :trail 8). (Earlier inspiration-tier name was (reveal-text …) — superseded by the unified (reveal :style …) surface.) Natural use cases: CIPHER fragment arrival on the OLED; mission contract acceptance on the primary display; a built-in DECRYPT verb response style. Reimplement from first principles — no-more-secrets is GPL, can’t vendor.
  • Hand-drawn / playful exception (loopy). Sanctioned aesthetic mode for deliberately playful carts (a notepad cart, a sketchbook, a systems-thinking cart). Park as an exception to the primary aesthetic, not a default.

5. Runtime patterns — Game Programming Patterns applied

Section titled “5. Runtime patterns — Game Programming Patterns applied”

From game-programming-patterns, the patterns to apply directly to the KN-86 nOSh runtime:

  • Game Loop — decoupled update + render, fixed timestep. Textbook reference for the nOSh main loop.
  • Update Method — each entity / cart / chrome region gets a tick callback. Trivially applies.
  • Command — TERM-line verbs as Command objects (queued, undoable, replayable). Composes with the universal-verb-set commitment + the navigation history.
  • Observer — state changes notify listeners. Cart state → chrome updates; battery → Row 0; new CIPHER fragment → OLED ticker.
  • State — finite-state machines. The cart phase chain (orchestration) is already this pattern; codify explicitly.
  • Dirty Flag — per-region change tracking; only repaint dirty regions. Directly applicable and aligns with tuibox’s per-box dirty bit.
  • Object Pool — reuse fixed allocations. Matches KEC Lisp’s arena discipline.
  • Service Locator — decoupled service access. NoshAPI is exactly this for cart Lisp.
  • Subclass Sandbox — cart authors get a sandboxed API surface; the runtime owns the dangerous parts. NoshAPI’s whole shape.

Cite Nystrom’s patterns by name in the runtime architecture spec.

Composing the Batch-3 and Batch-4 ship-list items:

  1. Application stack: Bubble Tea + Lip Gloss; one binary across device + emulator
  2. AMBER aesthetic mode only at v0.1, but the runtime accepts named modes from nosh-config.toml
  3. Slash-menu / TERM-key universal verb dispatch, with the universal verb set: SAVE, LOOK, INVENTORY, SCORE, BACK, FORWARD (cf. EXWM/webmacs/history.el lineage)
  4. Mode indicator in Row 0 or Row 24 (l123)
  5. Stat-sheet UI pattern in ui-patterns.md
  6. Horizontal-density discipline in screen-design-rules.md
  7. ? universal help overlay (Perkins + webmacs live-docs)
  8. Numbered-tab navigation on the Bare Deck Terminal (NetWatch + octoscope)
  9. CIPHER-LINE PSG visualizer modeled on AetherTune’s FFT pipeline
  10. CRT boot animation as identity branding (AetherTune mechanism + BOOTSTRA.386 aesthetic commitment)
  11. Hardware: QRPπ-derived insert structure in Pelican 1170
  12. Authenticity contract with acceptance transcripts (l123 discipline)
  13. Carousel idle-state for the Bare Deck Terminal (blessed-contrib)
  14. Non-destructive navigation history (history.el)
  15. Focus / zen mode (writeroom-mode)
  16. Reveal animation primitive in NoshAPI (no-more-secrets, reimplemented)
  17. Universal verb set + link-hint single-character labels on every actionable surface (webmacs)
  18. Filter-expression on Row 24 for list surfaces (mop + NetWatch — two witnesses)
  19. Xiki-style expandable REPL (xiki)
  20. Game Programming Patterns cited by name in the runtime architecture spec

KN-86 hardware build brief v5 (Batch 5 synthesis)

Section titled “KN-86 hardware build brief v5 (Batch 5 synthesis)”

Batch 5 is, structurally, smaller than Batches 1–4 — it records one major decision and the supporting evidence around it. But the decision is load-bearing for the entire hardware bring-up.

The KN-86 will use a Ferris Sweep, ordered from holykeebs, with these specific configuration choices:

  • 34-key split layout (replaces canonical-spec 31 keys; the 14-FN / 16-numpad / 1-TERM canonical functions remap onto 34 keys + QMK layers, scoping work TBD)
  • RP2040 controllers (holykeebs default; matches KN-86’s broader RP-family commitment per ADR-0017)
  • Hotswap sockets + diodes (current PCB revision; defers the switch family commitment within Kailh Choc v1)
  • Low-profile (5mm) controller socket headersnot 7.5mm machine headers; the 2.5mm height delta matters in the Pelican-1170 internal volume budget
  • Choc 18×17mm key spacing (matches Kailh Choc v1 + MBK keycap commitment)
  • MBK low-profile keycaps (already canonical)
  • 128×32 OLED on one half for layer/WPM/mode display
  • Optional trackpoint on the other half (open question — pointing device and OLED share one location per half; deferred to order time)
  • 3D-printed case color-matched to the Pelican-1170 cyberdeck enclosure aesthetic

Order target: holykeebs soldered kit tier (SMD pre-populated; switch + plate + case assembly remains ours). See ../prototype/keyboard-decision.md for the full decision and ../prototype/holykeebs-buyers-guide.md for the BOM checklist.

This decision changes two values in the canonical hardware spec / ADR-0024: key count (31 → 34) and PCB path (custom preferred → Sweep decided). Follow-up spec PR aligns Canonical Hardware Spec and ADR-0024 to this decision.

2. Custom-build knowledge is archived, not actioned

Section titled “2. Custom-build knowledge is archived, not actioned”

The custom-keyboard research from this batch and prior work moves to background-knowledge status in ../research/:

  • GOLEM hub — the master custom-keyboard knowledge index; its custom-build content is archived as fallback, its vintage-terminal-keyboard gallery (Reuters ‘85, Tatung ‘84, IBM 5155 Model F, Kaypro 10, Epson HX-20/40, DEC LK-201) is actively used as KN-86 keycap-legend / TUI typography aesthetic reference
  • GOLEM plate manufacturing — DXF/KLE tooling pipeline, plate-material rankings (FR4 / steel / acrylic / aluminum / brass / PLA), 14×14mm switch cutout + 1.5mm plate thickness facts. Archived; Sweep ships with plates.
  • KMK firmware and the GOLEM KMK guide — firmware fallback only; KN-86 uses QMK + Vial. Two specific KMK ideas survive forward: the drag-drop CircuitPython workflow as a UX-target contrast, and the NeoPixel diagnostic color codes as a deck-status LED idea worth scoping for KN-86 hardware.
  • universal60plate — a single concrete example of a downloadable plate DXF; reference artifact only.

Reasoning consolidated from keyboard-decision.md:

  • KMK is on limited life support as of 2026 — its repo states “no longer actively maintained / limited life support”
  • QMK is the dominant ecosystem for the Sweep family — community keymaps, layer idioms, tap-dance/combo conventions
  • Vial provides GUI-editable keymaps layered over QMK — simplifies the 31-canonical-functions → 34-key + layers mapping work without rebuilding firmware on each iteration

The KMK drag-drop iteration UX is still the bar to clear for documenting the KN-86 owner’s firmware-flash experience. Vial closes most of that gap for keymap iteration; cold-flash UX needs careful documentation.

The KN-86 shell aesthetic draws from three Batch-5 references plus the existing Batch-3 QRPπ template:

  • QRPπ (Batch 3) — the structural template: Pelican 1170 + three 3D-printed inserts + unmodified shell
  • Adamow’s cyberdeck STL (Batch 5)silhouette reference; tactical-cyberpunk family, visible fasteners, matte finish
  • TechNIK’s cyberdeck STL (Batch 5)alternate-silhouette reference; different hinge/screen-mount approach; the second witness that triangulates the design space
  • Sweep 3D-printed case (Batch 5)inner housing; color-matched to the Pelican enclosure

Optional v2+ accessory: Stream Deck macropad (Dante) — small auxiliary 6-12 key slab bound to KN-86 verbs.

5. Aesthetic thread: vintage terminals as KN-86 legend/typography reference

Section titled “5. Aesthetic thread: vintage terminals as KN-86 legend/typography reference”

GOLEM’s gallery of vintage terminal/portable keyboards (Reuters 1985, Tatung 1984, IBM 5155 Model F, Kaypro 10, Epson HX-20, Epson HX-40, DEC LK-201) is directly relevant to KN-86’s keycap legends and on-screen TUI typography. The vocabulary of period-correct fonts (Univers, Helvetica, condensed sans-serifs, custom domain typefaces) and the keycap-legend printing methods (silkscreen, dye-sublimation, double-shot) of this era are the prior art for ADR-0022’s locked KN-86 legend manifest.

Ties back to:

The KN-86 Deckline identity sits squarely in this multi-decade lineage.

Per keyboard-decision.md:

  • Key-mapping layer design — how the 31 canonical KN-86 functions (14-FN + 16-numpad + 1-TERM) map onto the Sweep’s 34 keys + QMK layers. Phone-layout numpad cluster from ADR-0016 doesn’t survive split geometry literally; the spirit needs translation.
  • Pointing device commitment — trackpoint vs. TPS43 touchpad vs. Pimoroni trackball vs. none. Hotswap PCB defers the decision.
  • Top-plate aesthetic — slim low-profile is the direction; specific material (FR4, PC, aluminum) and color TBD.
  • Sweep-as-input + Pelican-as-chassis bezel design — keyplate cutout dimensions, depth tolerance, retention strategy. Own bring-up task.

Two follow-up changes to canonical documentation:

  1. Canonical Hardware Specification (kinoshita/CLAUDE.md) — update the Keys row to “34 physical keys (Ferris Sweep split layout, 17 per half), with the canonical 14-FN / 16-numpad / 1-TERM functions distributed across the 34 keys plus QMK layers.” Cite keyboard-decision.md.
  2. ADR-0024 — record the keyboard-PCB-path decision change (custom preferred → Sweep decided; custom moves to background-knowledge). Add Batch-5 citation. Update the controller commitment from “Adafruit KB2040 / Sea-Picro fallback” to “holykeebs RP2040 (per Sweep order).”

These PRs are separate from this Batch-5 reference PR — that’s the right discipline: Batch 5 records the decision in the inspiration corpus; spec PRs align the canonical docs to it.

Batch 6 has two pillars: the screen (ASCII rendering) and the board (Ferris Sweep case + keycaps). Both are smaller in scope than Batches 1–4 but land concrete deliverables — one a project-wide spec, one a hardware-reinforcement pair confirming the Batch-5 decision.

1. The screen — ASCII rendering as a first-class KN-86 capability

Section titled “1. The screen — ASCII rendering as a first-class KN-86 capability”

The central Batch-6 deliverable is the project-wide KN-86 ASCII Effect Spec at effect/ascii-effects.md. It distills react-video-ascii’s prop matrix into the KN-86’s interaction grammar and points at libcaca as the on-device engine reference.

The KN-86 commits to a single project-wide ASCII visual language, codified in the spec:

  • Default character ramp — verbatim from react-video-ascii’s 72-character ramp: `.',-_:!;|\"~+^lr`\/L`>t<v=Tz?icf1{sIxY*jJno}CZyVwmSXRqM$O%#9&NW0Q@
  • Default rendering modecharMode: shape (glyph-silhouette matching, not pure luminance)
  • Default densitynumCols: 150 (between react-video-ascii’s project default of 250 and the KN-86 80-column grid), with carts rendering full-width using 80 instead
  • Three interaction event types:
    • :hover:brighten — the focus cell + a trailing wake brighten relative to baseline (defaults: trailLen=15, brightness=2.0, radius=0.08, duration=1.0)
    • :click:ripple — a brightness ring radiates outward from the commit cell (defaults: speed=3.0, brightness=1.1, duration=1.0)
    • :reveal:random — load-time reveal in random cell order (defaults: type=random, duration=0.4)

Engine: libcaca-shaped pipeline on-device (CPU-only, well-tested, no GPU dependency). The same algorithmic shape composes with asciinator’s halfblock- technique (Batch 3) and no-more-secrets’s decryption-reveal (Batch 4) under a unified (reveal ...) NoshAPI primitive.

Promote items added (extending the matrix’s items 1-57):

  • 58. ASCII-effect grammar shipped in v0.1 — default ramp, charMode: shape, three event types, NoshAPI primitives per the spec
  • 59. (reveal ...) NoshAPI primitive unifies the per-cell character-flicker reveal (no-more-secrets) and the ramp-by-position reveal (react-video-ascii) under one surface with a :style flag
  • 60. ASCII rendering performance budget on the Pi Zero 2 W to be measured during hardware bring-up; expect 15-30 Hz for full-screen renders. Documented in the spec’s open-questions section.

2. The board — Ferris Sweep case + keycaps

Section titled “2. The board — Ferris Sweep case + keycaps”

Batch 6 confirms the Batch-5 keyboard decision (Ferris Sweep over custom) with two concrete reinforcing parts:

  • Ferris Sweep v2 Case (Bubbleology) — free Printables STL, dimensionally specific to the Sweep v2 PCB. Alternative to the holykeebs supplied case — the path if we print our own (likely, since we’re already printing Pelican-1170 inset bezels) or want a custom color/finish coordination with the Pelican shell.
  • Kailh Choc Ergonomic Sculpted Keycaps (mugika9) — free Printables STL, sculpted Choc-spaced caps. Documented alternative to MBK (canonical commitment); operator can swap post-build via the hotswap PCB without changing the order.

The canonical commitments stand:

  • Sweep PCB: ordered from holykeebs per the Buyer’s Guide BOM checklist
  • Sweep case: holykeebs-supplied OR our own Bubbleology print, color-matched to the Pelican shell
  • Keycaps: MBK low-profile (canonical); sculpted Choc as documented alternative

Promote items added:

  • 61. Sweep enclosure decision tracked: print Bubbleology’s v2 case unmodified, or merge it with the Pelican-1170 bezel as a single printed part per half. Decision deferred to bezel-design bring-up.
  • 62. Keycap-swap path via hotswap PCB is sanctioned: MBK is canonical for v0.1; operators can swap to sculpted Choc (or anything Choc-compatible) post-build without firmware or spec change.

The Batch-6 pillars compose with prior synthesis at three specific places:

  • ASCII rendering composes with the boot animation (BOOTSTRA.386 + AetherTune): the boot animation can hand off into the first interactive frame via reveal:diagonal from the new spec.
  • ASCII rendering composes with the CIPHER-LINE OLED visualizer (AetherTune): the OLED gains a (draw-ascii ...) primitive alongside the FFT visualizer surface — cart-driven imagery + system-driven audio visualization, same display surface.
  • Sweep hardware reinforcements compose with the Pelican-1170 bezel design (QRPπ template + Adamow + TechNIK cyberdeck STLs): Bubbleology’s Sweep cases nest inside the Pelican on a printed registration feature on the bezel; the whole assembly reads as one coherent design.

Most screenshots are in place — see screenshots/README.md for the current inventory and any items still outstanding. The per-project markdown files embed the images directly. The prototype-folder shots live at ../prototype/screenshots/; the research-folder shots at ../research/screenshots/.

  • Cite it. When writing a spec or ADR, link to the relevant project file rather than re-justifying a pattern from scratch.
  • Extend it. When another TUI catches the eye, add a file in the same shape and update the matrix.
  • Promote from it. When a pattern earns a real spec, link back from that spec to the inspiration file so the lineage is traceable.
  • Don’t render it. The folder is intentionally outside docs/ and outside the Starlight build. If a pattern needs to reach the rendered reference site, it does so via an ADR or runtime spec — not by moving these files.