NeonGrid — 45-Minute First-Session Onboarding Arc
Companion document to neon-grid.md (Module Spec v2.0)
Version 1.0 | April 2026 | Status: Engineering-Ready
Scope. This document specifies the first 45 minutes an operator spends with NeonGrid as their first cartridge — the on-ramp from a virgin Universal Deck State through their first credit payout. It extends, but does not contradict, the existing
neon-grid.md§8 (“ONBOARDING: THE FIRST FIVE MINUTES”). §8 covers the embedded tutorial inside the cartridge (Screens 1–9, ~5 minutes); this doc covers the full boot → handle → tutorial → first contract → first wow → handoff arc that gets the operator to a state where another cartridge purchase is the obvious next move.
CIPHER-LINE compliance. All CIPHER fragments below render on the auxiliary OLED (see CLAUDE.md Canonical Hardware Specification and
docs/software/runtime/cipher-voice.md). Fragments follow the §1 voice heuristic: clipped, articleless, breath-length. No CIPHER text appears on the main 80×25 grid. Hardware values referenced — display, grid, font, color, processor, audio, key map — are governed by CLAUDE.md and not restated here.
1. PURPOSE
Section titled “1. PURPOSE”This arc is simultaneously three things, and the design has to satisfy all three without compromise:
- The new-operator on-ramp. A real operator — somebody who just unboxed a KN-86, has never touched the Lisp grammar, and has only their bare-deck experience to draw on — must reach a self-sustaining play state in 45 minutes.
- The press demo. A reviewer with 30 minutes booked must, in that window, hit a “wow” beat that translates into a sentence in the review.
- The marketing capture. Specific timecodes are usable as B-roll / dispatch screen captures — the FLOW STATE breakthrough at minute 38, the first credit payout at minute 32, the handle entry on the bare deck at minute 2.
The 45-minute budget is firm. If the operator hits minute 46 still in the tutorial grid, the arc has failed. Over-scoping the tutorial is the named failure mode.
2. ASSUMPTIONS GOING IN
Section titled “2. ASSUMPTIONS GOING IN”- Universal Deck State is virgin —
operator_handleempty,credit_balance = 0,reputation = 0,cartridge_history = 0x00000000,phase_chaincleared,cipher_seedinitialized from hardware entropy at first boot. - The operator has read, at most, the printed quick-start card in the Pelican case. They know “press power, follow CIPHER-LINE prompts.” Nothing else.
- The bare-deck HUD per
bare-deck-terminal.mdis fully functional and has already taught the four-tab grammar (CDR cycles tabs, CAR enters, BACK returns) during the bare-deck moment that precedes cart insertion. - The NeonGrid cartridge (
neongrid.lsp, capability bit 0x02) is the cart in hand. The operator inserts it because the printed card says so. - CIPHER-LINE voice runs throughout. NeonGrid’s CIPHER vocabulary and biases are declared in
neon-grid.md§“CIPHER-LINE Contributions”; this arc adds no new CIPHER vocabulary, only sequencing notes for which fragments emit when.
3. THE ARC AT A GLANCE
Section titled “3. THE ARC AT A GLANCE”| Beat | Minutes | Title | Teaches | CIPHER Mode Bias | Mission Template |
|---|---|---|---|---|---|
| 0 | 0:00 – 0:03 | Bare-deck on-ramp | Handle entry; cart-insert ritual | :bare-deck → :cart-swap-lull | (none — runtime) |
| 1 | 0:03 – 0:12 | First contract (in-cart tutorial) | CAR / CDR / EVAL / INFO / BACK; numpad 2-4-6-8 | :mission-brief → :active-hack | tutorial-grid |
| 2 | 0:12 – 0:24 | Deepening — sentry mechanic | OBSERVE → LEARN → EXECUTE → VERIFY; INFO sonar | :active-hack | tutorial-sentry |
| 3 | 0:24 – 0:32 | Sanctioned failure & recovery | BACK as undo; respawn at last checkpoint; reading the threat audio | :high-tense → :phase-transition | tutorial-sentry (continued) |
| 4 | 0:32 – 0:42 | Mastery — first FLOW STATE flicker | Tempo; INFO → SONAR/HEATMAP; clean run | :active-hack (flow-biased) | traverse-w1-001 |
| 5 | 0:42 – 0:45 | Handoff | Credit payout; reputation seed; “next contract” prompt | :debrief → :cart-swap-lull | (mission board return) |
Total budget: 45 minutes hard. Each beat has a “if not by minute X, the arc has stalled” gate — see §10 Anti-Frustration.
4. BEAT 0 — BARE-DECK ON-RAMP (0:00 – 0:03)
Section titled “4. BEAT 0 — BARE-DECK ON-RAMP (0:00 – 0:03)”What happens
Section titled “What happens”The operator powers on the device. The bare-deck “first boot ever” sequence runs (see bare-deck-terminal.md §BOOT SEQUENCE):
- Kinoshita header assembles, ~2 seconds.
- CIPHER-LINE first-boot greeting appears on Row 2 of the auxiliary OLED:
empty deck. new operator.handle.(Row 4 contextual prompt: “ENTER HANDLE — CAR/CDR cycle, EVAL confirm”)
- Handle entry — operator uses CAR/CDR to cycle letters, EVAL to commit. The numpad sits unused; this is intentional. The bare deck teaches CAR/CDR first; the numpad belongs to the cartridge.
- STATUS tab lands. Universal Deck State now reads
operator_handle = "<HANDLE>", all other fields zero. The capability roster shows six empty slots. Row 23:CARTRIDGE SLOT: EMPTY — AWAITING MODULE. - CIPHER-LINE on STATUS: drift-biased fragment from
:bare-deckdefaults — e.g.that handle. clean record.(a:driftover the emptycartridge_historybitfield). - Cart insertion. Operator slides the NeonGrid cartridge into the slot. The runtime detects mass-storage mount, reads
.kn86header, validates capability bit 0x02, setscartridge_history |= 0x02. Row 23 of the bare deck flickers toCARTRIDGE: NEONGRID v2.0 — LOADING. - CIPHER-LINE on cart-load: mode shifts to
:cart-swap-lull(drift-dominant percipher-voice.md§6 Beat Parameter table). One fragment fires before NeonGrid takes over the beat:first one in.(:drift, no event needed; the cart-history bitfield change is the implicit trigger)
Acceptance gate
Section titled “Acceptance gate”By minute 3, the operator has:
- A handle in SRAM.
cartridge_historybit 1 set.- Their hands have used CAR, CDR, EVAL — three of the eight grammar keys — at least once each.
- Heard CIPHER-LINE speak twice.
Failure mode and recovery
Section titled “Failure mode and recovery”If handle entry takes longer than 90 seconds, the bare deck fires a single CIPHER fragment as a nudge — take your time. or any handle. — and on the next 60-second silence, prompts the action bar (Row 24) to flash a hint. The operator does not get blocked here. There is no “wrong handle.” Anything 1–12 chars is accepted.
5. BEAT 1 — FIRST CONTRACT (0:03 – 0:12)
Section titled “5. BEAT 1 — FIRST CONTRACT (0:03 – 0:12)”NeonGrid’s in-cart tutorial begins. This is neon-grid.md §8 Screens 1–6 verbatim — that text is canonical and not duplicated here. This beat contextualizes §8 within the 45-minute budget.
Mission template
Section titled “Mission template”tutorial-grid — a hand-authored, deterministic, single-checkpoint 6×8 maze with no sentries, no hazards, no time limit. This is not drawn from the procedural generator. It is shipped in the cart as static data so the experience is identical for every operator. This is the only NeonGrid grid that is not procedurally generated.
;; tutorial-grid.lsp — static layout, 6 rows × 8 cols;; @ = spawn (1,1) . = checkpoint (5,6) █ = wall space = passable(defcart-static tutorial-grid '("████████" "█@ █" "█ ███ █" "█ █ █" "█ █ ███" "█ █ . █" "█ █" "████████"))What teaches what
Section titled “What teaches what”Per neon-grid.md §8, in order:
- CIPHER-LINE coaches the first three actions (this is a specific override of the default mode selector for this beat; see §11). Fragment sequence:
- On screen 4 (operator instructed to press CAR):
try CAR.(:annotate,:routine) - After first CAR:
good. CAR drilled in.(:annotate,:result-success) - On CDR prompt:
now CDR. - After first CDR:
traversed. - On EVAL prompt:
EVAL. commit. - After first numpad-4 movement (screen 6):
west. one cell.
- On screen 4 (operator instructed to press CAR):
- After the first checkpoint is collected (~minute 11), CIPHER-LINE steps back — mode selector returns to default
:active-hackdistribution. From this point onward, CIPHER does not coach. It observes. - INFO is introduced but not required in Beat 1. The cart-bottom Row 24 action bar shows
[INFO: details]; the curious operator who presses it sees the SONAR/HEATMAP overlay (no sentries to read, but the layout shows what the overlay is). This plants Beat 2.
Lisp grammar after this beat
Section titled “Lisp grammar after this beat”The operator has used: CAR, CDR, EVAL, BACK, numpad 2-4-6-8, INFO. They have not yet seen NIL, ATOM, EQ, APPLY, CONS, QUOTE, LAMBDA. Those are deferred — most to post-arc, some never (NeonGrid uses the eight core keys plus INFO; ATOM, EQ, NIL appear in advanced contracts only — see neon-grid.md §13 Key Mapping Table).
Acceptance gate
Section titled “Acceptance gate”By minute 12: first checkpoint collected. proficiency_gained ≥ 2 (one checkpoint = +2 per neon-grid.md §2). Cart’s internal tutorial_screen_index reaches Screen 6 completion.
Failure mode
Section titled “Failure mode”If the operator has not collected the checkpoint by minute 10, CIPHER fires one nudge: west. then south. (:annotate, route hint, :routine) — the literal solution. We do not let them stall the tutorial maze. This is allowed because (a) it’s hand-authored, deterministic, and we know the solution, and (b) the failure mode for a stalled tutorial is the operator putting the device down.
6. BEAT 2 — DEEPENING: GRID NAVIGATION CORE (0:12 – 0:24)
Section titled “6. BEAT 2 — DEEPENING: GRID NAVIGATION CORE (0:12 – 0:24)”What happens
Section titled “What happens”The cart advances to neon-grid.md §8 Screens 7–9 — sentry introduction. Continuing the same in-cart tutorial flow.
Mission template
Section titled “Mission template”tutorial-sentry — a hand-authored, deterministic, two-checkpoint 8×8 maze with one sentry on a fixed 4-cell horizontal patrol (e.g. (5,2) → (5,5) → (5,2)). The sentry’s patrol is visible from the spawn cell. The operator can watch it for 8 game-turns before they move. There are no hazards.
(defcart-static tutorial-sentry '("██████████" "█@ . █" ;; checkpoint 1 at (1,5) "█ ████ █" "█ █" "█ ████ █" "█S █" ;; sentry patrols (5,1)→(5,4) "█ ████ █" "█ . █" ;; checkpoint 2 at (7,5) "██████████"))The sentry follows the state machine in neon-grid.md §3 (CALM → CAUTIOUS → ALERT → ENGAGED) but is in CALM state on entry with detection range = 4 cells (default). The path geometry guarantees the operator can reach both checkpoints without entering the detection radius — if they read the patrol.
What teaches what
Section titled “What teaches what”- OBSERVE-LEARN-EXECUTE-VERIFY loop, lived for the first time. The grid is small enough that one full cycle is feasible, slow enough that a beginner’s 5–15 second decision is not penalized.
- INFO surfaces the SONAR/HEATMAP view. Row 24 action bar:
[INFO: sonar]. Pressing INFO reveals the patrol prediction overlay. This is the moment the cart goes from “small maze game” to “spatial reasoning instrument.” First-press of INFO during this beat is the memorable beat for press demos. - Audio teaches distance. YM2149 Voice 1 plays the threat ambient drone (
neon-grid.md§5). On entry the operator hears the 200Hz baseline; as they approach the sentry, frequency rises. This is the first time the operator’s ears do navigation work. - CIPHER reflects, doesn’t coach. Mode selector at default
:active-hackdistribution (0.60 / 0.20 / 0.05 / 0.00 / 0.15). Fragments emit on movement and contact events:- On first INFO press:
sonar.(:annotate,:routine) - On entering sentry detection range (CAUTIOUS):
bearing. closer.(:observe,:tense) - On exiting detection range:
clear.(:annotate,:result-success) - On checkpoint 1 collected: silent —
:silentmode selected to honor the success without crowding it. - On checkpoint 2 collected:
both.(:annotate,:significant) — the affect tag promotes this fragment to memory-store stickiness for later:reflectrecall.
- On first INFO press:
Acceptance gate
Section titled “Acceptance gate”By minute 24: both checkpoints collected. INFO pressed at least twice. proficiency_gained ≥ 6 (2 checkpoints + ~2 prediction-accuracy ticks). cipher.memory_store contains at least one :significant-tagged event.
7. BEAT 3 — SANCTIONED FAILURE & RECOVERY (0:24 – 0:32)
Section titled “7. BEAT 3 — SANCTIONED FAILURE & RECOVERY (0:24 – 0:32)”This is the most carefully designed beat. It is the moment the arc could lose the operator. It is also the moment the arc earns its emotional weight.
What happens
Section titled “What happens”The cart spawns the operator into Wave 1, Level 1 of the procedural generator — the first non-tutorial grid. 16×10 cells, 1 sentry, 3 checkpoints, no hazards. The mission template is traverse-w1-001. However, the seed is rigged: this specific contract uses a fixed seed (0xN3G1 — NEG1) that produces a layout where the fastest route to checkpoint 2 takes the operator through the sentry’s CAUTIOUS detection range at full alert.
Why a rigged seed? Pure procedural generation is too random for a 45-minute on-ramp — some seeds give a 30-second clear, some give a 6-minute fight. Beat 3 needs a consistent failure-then-recovery shape, so the first procedural seed is deterministic. From contract #2 onward (post-arc), seeds are organic.
The operator, fresh from the sentry-clear of Beat 2, attempts the obvious route. They get caught. The sentry transitions CAUTIOUS → ALERT → ENGAGED. They are forced into the cell. Mission aborts. Per neon-grid.md §3, they respawn at the start (no checkpoint collected yet). Reputation penalty is suppressed for this contract only — traverse-w1-001 carries a :tutorial-grace flag that zeros the failure cost. The operator does not lose reputation. They lose ~30 seconds.
What teaches what
Section titled “What teaches what”- Failure is information, not punishment. The sentry’s detection cascade played out audibly (Voice 1 climbed to 600Hz then 1600Hz). The operator now has felt the threat curve in their body.
- INFO before EXECUTE. The implicit lesson: pressing INFO before committing to a route would have shown the sentry’s patrol prediction. This lesson is taught by letting them fail, then succeed when they use INFO on the retry.
- BACK as undo, in spirit. Mid-attempt, before the lethal step, the operator can press BACK to retreat one cell. BACK does not undo a sentry’s move, but it undoes the operator’s last commitment. This is the first time BACK matters in NeonGrid — Beats 1–2 didn’t require it.
- CIPHER does the emotional work. Mode bias shifts to
:high-tenseduring the ENGAGED chase (0.45 / 0.25 / 0.00 / 0.00 / 0.30 — drift suppressed, silence rises). Fragments:- On ALERT entry:
seen.(:observe,:tense) - On ENGAGED entry: silent —
:silentmode forced. The voice goes quiet at the worst moment. This is the design. - On caught (mission abort):
cost us.(:annotate,:result-failure :significant) - On respawn:
again. with sonar.(:annotate,:routine) — this is the only place in the arc where CIPHER edges back into coaching, and it does it in three words.
- On ALERT entry:
- The retry succeeds. Operator presses INFO, reads the patrol, takes the longer-but-clear route. Collects checkpoint 1, then 2, then 3. Mission complete. CIPHER on contract clear:
clean. that one.(:reflect — pulls the just-failed:significantevent from memory store, contrasts present with past — this is the canonicalreflectuse case fromcipher-voice.md§5.3).
Acceptance gate
Section titled “Acceptance gate”By minute 32: traverse-w1-001 complete on retry (with or without the failure — some operators read the SONAR overlay first time; that’s fine, they skip the failure beat and arrive early). proficiency_gained ≥ 12. First contract completion event written to deck state. First credit payout — Wave 1 base payout is 50¤ (per neon-grid.md §11 wave-select screen). credit_balance: 0 → 50.
Anti-frustration design
Section titled “Anti-frustration design”- Failure cost is zero for
traverse-w1-001. Reputation unchanged. No proficiency penalty. - One failure max. If the operator fails the same contract twice, the cart auto-fires CIPHER hint:
INFO. before move.(:annotate, the hint they need). Third failure triggers Row 24 action-bar text-prompt with the exact key sequence. This is graceful degradation — we never let them grind. - The credit payout is the trophy. Minute 32 is when the operator’s brain stamps “this is real.” The 50¤ on STATUS tab is the receipt of an earned thing.
8. BEAT 4 — MASTERY: FIRST FLOW-STATE FLICKER (0:32 – 0:42)
Section titled “8. BEAT 4 — MASTERY: FIRST FLOW-STATE FLICKER (0:32 – 0:42)”What happens
Section titled “What happens”Cart returns the operator to NeonGrid’s contract board (cart-internal, not the bare-deck mission board). Two contracts are visible:
traverse-w1-002— another Wave 1 traverse, different seed, organic this time. 50¤ base payout. Recommended.flow-w1-001— Wave 1 FLOW STATE. 5-minute continuous navigation, no errors. 500¤ base payout. Locked behind a soft confirmation: CIPHER fragmentnot yet. this one's later.if selected. (FLOW STATE is unlocked but not pushed at minute 32.)
The operator picks traverse-w1-002. They run it. They use INFO before each commitment. They clear it cleanly — no failures, no backtracks. They are now playing, not learning.
What teaches what
Section titled “What teaches what”- The OBSERVE-LEARN-EXECUTE-VERIFY loop is now muscle. The operator’s decision time per cell drops from 5–15 seconds to 1–3 seconds.
- First flow-state flicker. Per
neon-grid.md§4, full FLOW STATE requiresproficiency_gained ≥ 20, no corrections, 800–2500ms move interval, variance < 600ms. The operator may not hit all four conditions, but they hit most. The cart fires a flow-state-flicker event — a brief visual cue (Row 0 status:FLOW: detected) and a CIPHER fragment:tempo. holding.(:annotate,:significant). This is the wow beat for press. It is felt as a small breakthrough. - Audio shifts. When the flicker fires, Voice 1 drops to soft hum, Voice 2 picks up the 90 BPM heartbeat per
neon-grid.md§4. The operator’s ears confirm what their hands felt. - CIPHER reflects across contracts. On contract clear, mode bias toward
:reflect. Sample fragment, drawing from the:significant-tagged failure-recovery memory of Beat 3:last time. cost us.(:reflect,:significant) — the past beat is now usable narrative material.
Mission template parameters
Section titled “Mission template parameters”traverse-w1-002:
- Wave 1 standard generator (16×10 grid, 1 sentry, 3 checkpoints, no hazards).
- Organic seed (deck
cipher_seedLFSR + contract index). - 5-minute time limit (per
neon-grid.md§14 TRAVERSE template, Wave 1). - Base payout 100¤ (per
neon-grid.md§11 wave-select — Wave 1 standard mission rate is +1 rep, 50¤ base; second contract pays slightly higher due to cleared-novice multiplier in §14 payout formula).
Acceptance gate
Section titled “Acceptance gate”By minute 42: second contract complete. credit_balance ≥ 150¤. reputation ≥ 2. proficiency_gained ≥ 18. At least one flow-state-flicker event fired. The operator has now experienced the full NeonGrid loop end-to-end without external instruction.
9. BEAT 5 — POST-ARC HANDOFF (0:42 – 0:45)
Section titled “9. BEAT 5 — POST-ARC HANDOFF (0:42 – 0:45)”What happens
Section titled “What happens”The cart returns the operator to its contract board. CIPHER mode shifts to :debrief (0.20 / 0.35 / 0.30 / 0.05 / 0.10 — annotate + reflect dominate). One fragment fires:
the board notices.(:annotate,:significant) — diegetic acknowledgment that reputation is now non-zero.
The operator presses BACK to exit the cart’s contract board → bare deck STATUS tab returns. The handoff moment is here. The bare deck now shows:
OPERATOR: <HANDLE>REPUTATION: █░░░░░░░░░ 2 CREDITS: 150 ¤─────────────────────────────────────────REGISTERED CAPABILITIES: [■] NEONGRID — Grid Traversal (Module 0x02) [ ] ──────── — (slot empty) ...CIPHER fragment on bare-deck land: more out there. (:drift, :bare-deck beat) — diegetic invitation to acquire more carts.
The mission board (per bare-deck-terminal.md LINK tab and orchestration.md mission board) shows three runtime bounties — small bare-deck-only contracts the operator can run with NeonGrid still inserted, at low payout. This is intentional. We do not block the operator from continuing to play; we surface that the next expansion is a new cartridge.
What teaches what
Section titled “What teaches what”The arc ends with a non-terminal closure. The operator has:
- Earned credits.
- Earned reputation.
- Watched their capability roster populate one slot.
- Heard CIPHER-LINE speak about the bigger world.
- Been shown that bare-deck bounties exist while not being forced into them.
Engagement does not end. The operator can:
- Run more NeonGrid contracts (Wave 1 organic seeds, then Wave 2 unlocks at proficiency 20+).
- Run a bare-deck bounty (LINK tab).
- Power off and come back tomorrow (the arc is preserved in deck state; nothing is lost).
Acceptance gate
Section titled “Acceptance gate”By minute 45: operator is on the bare deck STATUS tab. Deck state shows real values. The cartridge is still inserted. The operator’s hands are off the keys. Whatever they do next is unforced.
10. ACCEPTANCE CRITERIA — BY MINUTE 45
Section titled “10. ACCEPTANCE CRITERIA — BY MINUTE 45”By the end of the arc, the operator can demonstrably:
- Recall the four core grammar keys without prompt — CAR, CDR, EVAL, BACK — and the numpad cardinal directions (2-4-6-8). Verifiable: deck-state
proficiency_gained ≥ 18requires successful sequenced use. - Press INFO before commitment when a sentry is on screen. Verifiable: contract #2 clear without ALERT-state entry.
- Read CIPHER-LINE peripherally without staring at it. Verifiable: operator’s eye-tracking during a clean contract — main grid receives ≥80% of fixation time. (For internal playtest measurement only; not a runtime metric.)
- Identify their handle and credit balance on the bare deck in one glance. Verifiable: STATUS tab is the landing screen.
- Articulate, in one sentence, what NeonGrid is. Internal playtest acceptance: “It’s a maze where you read the patrols.” (Or any equivalent phrasing.)
Quantitative deck-state targets at minute 45:
operator_handle: setcredit_balance: 100–250¤ (band for fast vs. slow first-arc operators)reputation: 2–4cartridge_history: bit 1 set (NeonGrid registered)proficiency_gained(NeonGrid-internal counter): 18–30
11. CIPHER-LINE VOICE ARC ACROSS THE FIVE BEATS
Section titled “11. CIPHER-LINE VOICE ARC ACROSS THE FIVE BEATS”NeonGrid’s cipher-grammar block in the cart already declares the module’s vocabulary (per neon-grid.md “CIPHER-LINE Contributions”). This arc adds sequencing constraints — which mode dominates which beat — implemented as cipher-mode-biases in the cart’s per-contract block, not as global cart biases (so the bias only applies during the onboarding contracts):
;; cart-internal — applied only when the active contract is one of:;; tutorial-grid, tutorial-sentry, traverse-w1-001(cipher-mode-biases-onboarding (:mission-brief (:annotate +0.10 :observe +0.05)) ;; Beat 1 — coaching tone (:active-hack (:observe +0.05)) ;; Beat 2 — observation-heavy (:high-tense (:silent +0.10 :annotate -0.05)) ;; Beat 3 — tense, sparse (:phase-transition (:reflect +0.10)) ;; Beat 3 retry — connect past to present (:debrief (:annotate +0.05 :reflect +0.05))) ;; Beat 5 — closurePer cipher-voice.md §6, biases are clamped at ±0.20 per mode per beat. These deltas are within the cap.
Coaching override (Beat 1 only): Six explicit fragments are emitted via (cipher-emit ...) calls with :override-mode-selector :annotate during the first three coached actions. This is the only explicit override in the arc. From minute 11 onward, the mode selector runs unmodified.
Style-control deltas during onboarding contracts:
(cipher-style-deltas-onboarding (:mission-brief (:terseness -32 :certainty +16)) ;; slightly less telegraphic for Beat 1 (:high-tense (:certainty -32)) ;; Beat 3 — deck loses confidence (:debrief (:terseness -16))) ;; Beat 5 — softer closureAll deltas within the ±64 cap (cipher-voice.md §8 Cartridge Style Overrides).
12. DIFFICULTY CURVE — REVEALED VS. HIDDEN
Section titled “12. DIFFICULTY CURVE — REVEALED VS. HIDDEN”| Mechanic | Revealed during arc? | First exposure |
|---|---|---|
| CAR, CDR, EVAL, BACK | Yes | Beat 1 |
| Numpad 2-4-6-8 | Yes | Beat 1 |
| INFO (action-bar / SONAR) | Yes | Beat 1 (planted), Beat 2 (used) |
| Checkpoints | Yes | Beat 1 |
| Sentry CALM / CAUTIOUS / ALERT / ENGAGED | Partially — operator sees CALM, CAUTIOUS, ALERT, ENGAGED in Beat 3; named in cart manual (out of scope) but not labeled on screen | Beat 2 (CALM observed), Beat 3 (full chain) |
| Audio threat curve (Voice 1 frequency) | Yes — felt, not labeled | Beat 2 |
Proficiency counter (proficiency_gained) | No — invisible per neon-grid.md §4 | Never (hidden metric) |
| Flow-state flicker | Yes — Row 0 status flash | Beat 4 |
| Full FLOW STATE mission template | No — visible on board, not entered | Post-arc |
| WAVE 2 / WAVE 3 / WAVE 4 | No — locked, mentioned on board only | Post-arc (proficiency-gated) |
| NIL, ATOM, EQ, APPLY, CONS, QUOTE, LAMBDA | No | Never in NeonGrid (advanced contracts) or other carts |
| LINK tab (deck-to-deck multiplayer) | No — visible on bare deck, not engaged | Post-arc |
| Audio-only mastery mode | No — proficiency 80+ gate | Post-arc (rare) |
| Versus / spectator modes | No | Post-arc |
The revealed surface area at minute 45 is intentionally small: the 8 grammar/numpad keys, INFO, the sentry threat curve (audibly felt), and the credit/reputation feedback loop. Everything else stays hidden. This is the point — the arc is a doorway, not a tour.
13. ANTI-FRUSTRATION DESIGN
Section titled “13. ANTI-FRUSTRATION DESIGN”The arc has four built-in escape hatches for the operator who stalls:
- Beat 0 — Handle entry. No wrong handle. CIPHER nudges after 90 seconds. Anything 1–12 chars is accepted. The operator cannot fail handle entry.
- Beat 1 — Tutorial maze. Hand-authored, deterministic, single-checkpoint. CIPHER fires the literal route hint at minute 10 if the checkpoint is uncollected. We do not let the tutorial maze stall the arc.
- Beat 3 — First procedural contract.
traverse-w1-001is a rigged-seed Wave 1 contract with:tutorial-graceenabled — failure costs zero reputation and zero proficiency. Two failures triggers an INFO hint; three failures triggers an action-bar text prompt with the key sequence. Graceful degradation; never grind. - Beat 4 — Second contract. Organic seed but Wave 1 (the easiest tier). FLOW STATE is offered but soft-gated by CIPHER. The operator who cannot achieve flow-state-flicker still completes the contract and earns credits.
Where the operator is allowed to fail
Section titled “Where the operator is allowed to fail”Only Beat 3, and only with zero stake. Failure at Beat 3 is the design — it teaches that INFO before EXECUTE is the move. Failure cost is zero. The recovery is the lesson.
Where the operator must not fail
Section titled “Where the operator must not fail”Beats 0, 1, 2, 4, 5. These are scaffolded with deterministic content, hand-authored grids, and CIPHER hints calibrated to fire before the operator gives up. If playtest shows >5% drop-off in any of these beats, the beat itself needs redesign — not the operator.
14. MISSION TEMPLATE / CONTRACT ID INVENTORY
Section titled “14. MISSION TEMPLATE / CONTRACT ID INVENTORY”| Contract ID | Template | Generator | Seed | Time limit | Base payout | Rep gain | Failure cost | Notes |
|---|---|---|---|---|---|---|---|---|
tutorial-grid | (cart-internal tutorial) | hand-authored 6×8 | static | none | 0¤ | 0 | 0 | No mission-board entry; in-cart flow only. |
tutorial-sentry | (cart-internal tutorial) | hand-authored 8×8 | static | none | 0¤ | 0 | 0 | In-cart flow only. |
traverse-w1-001 | TRAVERSE Wave 1 | procedural | fixed 0xN3G1 | 5 min | 50¤ | +1 | 0 (:tutorial-grace) | First procedural contract; rigged seed for predictable difficulty curve. |
traverse-w1-002 | TRAVERSE Wave 1 | procedural | LFSR-organic | 5 min | 100¤ | +1 (+1 if no errors) | -1 rep | Second contract; standard rules. |
flow-w1-001 | FLOW STATE Wave 1 | procedural | LFSR-organic | 5 min | 500¤ | +2 (+1 flow bonus) | mission restart | Visible on Beat 4 board, soft-gated by CIPHER, not expected to be entered during arc. |
traverse-w1-001’s :tutorial-grace flag is a new cart-side declaration — added to the cart’s mission template DSL, not a runtime change. Spec note: it suppresses the standard reputation penalty on failure. Other carts may not adopt this flag without a separate design review (it conflicts with the capability-model’s universal economy).
15. PRESS-DEMO TIMING NOTES
Section titled “15. PRESS-DEMO TIMING NOTES”For the 30-minute press demo cut (a marketing-driven subset of the 45-minute arc):
- Skip Beat 0. Start with handle pre-entered. Cart pre-inserted.
- Compress Beat 1 to ~5 minutes. Use
neon-grid.md§8 Screens 1–6 verbatim. - Run Beat 2 in full — this is the INFO/SONAR moment.
- Run Beat 3 in full — this is the failure-recovery beat that produces the best B-roll.
- End on Beat 4’s flow-state-flicker — first contract clean, flicker fires, fade.
Press demo target: minute 22 of demo time = flow-state-flicker. This is the screenshot.
16. ACCEPTANCE CRITERIA (FROM THE NOTION TASK)
Section titled “16. ACCEPTANCE CRITERIA (FROM THE NOTION TASK)”Per GWP-314:
- Beat-by-beat session script: §§4–9 above.
- Tutorial grid hand-authored, deterministic, teaches CAR/CDR/EVAL/INFO/BACK in order: §5 Beat 1 (CAR/CDR/EVAL/BACK in Beat 1; INFO planted Beat 1, used Beat 2).
- Onboarding bounties teach numpad nav, key holds, INFO inspection, BACK as undo, contract acceptance flow: §§5–7. (Note: key-hold dispatch per
input-dispatch.mdis not exercised in this arc — held-key semantics are deferred to post-arc cartridges. This is a documented scope limit, not an oversight.) - CIPHER-LINE coaches first 3 actions then steps back: §5 Beat 1, §11.
- First contract achievable by 90% of testers without external help: Anti-frustration design §13. (Acceptance metric to be validated in playtest, not authored here.)
- Session ends with handle prompt + reputation seed + suggested next cartridge: §9 Beat 5. (Handle is prompted at Beat 0 — Notion criterion likely meant “session ends with operator on STATUS showing populated handle / rep / capability” which §9 delivers.)
- Spec doc location: this file,
docs/software/cartridges/modules/neon-grid-onboarding-arc.md. - All grid cells, checkpoints, sentries, and contract templates enumerated with seed values: §§5, 6, 7, 14.
17. POST-ARC: WHAT’S NEXT
Section titled “17. POST-ARC: WHAT’S NEXT”Out of scope for this document, but flagged for the next planning cycle:
- Post-arc engagement plan — what happens at minute 46 → minute 240 (first session) → first week → month one. Likely a separate gameplay-design task.
- Multi-cart handoff arc — the operator’s second cartridge experience (Black Ledger or ICE Breaker, depending on what they buy). Specifically: how does the bare-deck capability roster’s growing population act as a progression carrot? Coordinate with GWP-313 (Corporate Espionage 2-phase campaign).
- Playtest acceptance instrument — a structured checklist for measuring “90% complete first contract without external help.” Likely lives in
docs/marketing/product-evaluation.mdSprint 4 follow-up. :tutorial-graceflag spec — mission-template DSL addition referenced in §14. Needs a one-page spec or an inline addition tocampaign-economy.md.
18. RELATED DOCUMENTS
Section titled “18. RELATED DOCUMENTS”neon-grid.md— NeonGrid Module Spec v2.0 (canonical for module mechanics).docs/software/runtime/bare-deck-terminal.md— bare deck HUD; Beat 0 lives in this contract.docs/software/runtime/cipher-voice.md— CIPHER-LINE engine spec; mode selector, voice heuristic.docs/software/runtime/orchestration.md— mission board, phase chain, Universal Deck State.docs/software/runtime/deck-state.md— Universal Deck State schema referenced throughout.docs/marketing/product-evaluation.md— Sprint 4 deliverable origin for this arc.docs/marketing/pr-faq.md— onboarding promises this arc satisfies.- GWP-314 (Notion) — the task this document closes.