Deck Hub — operator state, loadout & Lambda slots
First-party on-device program #2 (ADR-0042). Status: Stub — design pending.
Charter stub. Deck Hub is canonical per ADR-0042; this doc is a placeholder until the full design lands. See the program roster.
Identity
Section titled “Identity”The operator’s “character screen” as a terminal utility: Universal Deck State (handle, credits, reputation, cartridge history), loadout, and Lambda-slot management (ADR-0040 §loadout). Also the Blank Slate Deck surface — what a freshly-provisioned deck with no progress shows.
Scope (intended)
Section titled “Scope (intended)”- Read out Universal Deck State (UDS) — handle, credits, reputation, cartridge-history bits.
- Present and manage the Lambda-slot loadout (full-swap semantics + coupled time↔exposure swap cost per ADR-0040).
- Serve as the onboarding / empty-state surface (“Blank Slate Deck”).
Interfaces
Section titled “Interfaces”- Launched via
(launch-app :deck-hub …)(NoshAPI Tier 1, ADR-0005). Draws on the cartridge/content rows per the canonical grid (Row 0 / Row 74 firmware-owned). Authored in KEC Lisp; source underruntime/programs/deck-hub/. - Reads UDS via the deck-state accessors; UDS is read-only to player code — Deck Hub displays it, it does not forge it (ADR-0040 three-tier state model). Loadout changes route through the sanctioned swap path, not raw UDS writes.
Open questions
Section titled “Open questions”- Where does loadout/Lambda-slot management sit relative to ADR-0029’s opaque
(load-capability …)boundary? (ADR-0040 companion spec §16 reconciliation item.) - Is “Blank Slate Deck” a distinct mode or simply Deck Hub’s empty state?
- Does Deck Hub own the swap-cost confirmation UX, or does the screen router?
References
Section titled “References”- ADR-0040 — DeckRunner state model + Lambda slots.
../runtime/orchestration.md— Universal Deck State.../runtime/deck-state.md— UDS fields and persistence.