Sprint 4 Design Enrichment Index — 2026-04-27
Worktree: /Users/jschairb-gwp/src/kinoshita/.claude/worktrees/infallible-wilson-3f7fff
Branch: claude/infallible-wilson-3f7fff
Wave 1 per-task summary (already merged in PR #155)
Section titled “Wave 1 per-task summary (already merged in PR #155)”| GWP-N | Title | Pack | Notion appended | Depth | Open questions |
|---|---|---|---|---|---|
| GWP-247 | lfsr-shuffle Lisp primitive | gwp-247-design.md | yes | Light | 0 |
| GWP-266 | display/audio/coprocessor-bridge runtime docs | gwp-266-design.md | yes | Light | 1 |
| GWP-171 | PCM voice barks (deferred) | gwp-171-design.md | yes | Triage (stays deferred) | 3 |
| GWP-246 | Display-helper stdlib primitives | gwp-246-design.md | yes | Medium | 3 |
| GWP-283 | Concept library: 15 candidate cyberpunk cartridges | gwp-283-design.md | yes | Heavy (Gameplay Designer) | 4 |
Wave 1 open questions: 11.
Wave 2 per-task summary (this branch)
Section titled “Wave 2 per-task summary (this branch)”| GWP-N | Title | Pack | Notion appended | Depth | Open questions |
|---|---|---|---|---|---|
| GWP-261 | Doc sweep: orchestration.md post-ADR-0017/0019/0001 | gwp-261-design.md | yes | Light | 0 |
| GWP-173 | In-game music system beyond PSG SFX (deferred) | gwp-173-design.md | yes | Triage (stays deferred) | 3 |
| GWP-163 | Post-v0.1 deferred work catalog (meta-task) | gwp-163-design.md | yes | Light (meta) | 3 |
| GWP-265 | T9 ranker explain telemetry to F11 dev overlay | gwp-265-design.md | yes | Light | 0 |
| GWP-236 | F11 in —help + harmonize empty-state placeholders | gwp-236-design.md | yes | Light | 2 |
| GWP-114 | Implement emulator update simulation | gwp-114-design.md | yes | Light + scope realign | 4 |
| GWP-233 | Fe arena scaling experiments + ADR amendment | gwp-233-design.md | yes | Medium | 3 |
| GWP-256 | publisher_splash hook + sample lambda | gwp-256-design.md | yes | Medium (Gameplay Designer) | 5 |
| GWP-263 | Native 12×24 font cut (ADR-0014 F1) | gwp-263-design.md | yes | Medium (largest in batch) | 5 |
| GWP-264 | Attract clip pipeline + 4 launch-cart clips | gwp-264-design.md | yes | Medium (pipeline + content) | 5 |
Wave 2 open questions: 30 (see Wave 2 consolidated section below). Sprint 4 cumulative open questions: 41 (Wave 1: 11 + Wave 2: 30).
Consolidated open questions for Josh
Section titled “Consolidated open questions for Josh”From GWP-266 (audio path scope)
Section titled “From GWP-266 (audio path scope)”- Pi-side ALSA path: does the Pi retain any ALSA / PulseAudio surface for future PCM-voice-bark work (GWP-171), or does all audio leave via UART → Pico → I2S → MAX98357A? Pins one paragraph in
audio-pipeline.md.
From GWP-171 (deferral confirmation)
Section titled “From GWP-171 (deferral confirmation)”- Confirm defer. Recommendation: leave GWP-171 in Planning/Backlog until ADR-0017 audio path is measured + CIPHER-LINE OLED is playtested + spec is rewritten for I2S/MAX98357A. Confirm or override.
- Stale-spec disposition. Leave
docs/software/runtime/pcm-voice-bark.mdin place with a “needs ADR-0017 rewrite” banner, or move todocs/_archive/? Recommendation: leave in place with banner. - v0.1 launch-cart bark dependency. Does any v0.1 launch cart depend on PCM barks? Current design bibles do not assume bark playback — confirm.
From GWP-246 (display-helper specifics)
Section titled “From GWP-246 (display-helper specifics)”- Progress-bar unfilled glyph: middle dot
·(recommended) or space? level > max_levelfor threat-bar: silent clamp (recommended) or raise:invalid-level?- Title asymmetric padding tolerance: accept up to 1-char asymmetry (recommended) or always truncate to symmetric?
From GWP-283 (cart expansion strategy)
Section titled “From GWP-283 (cart expansion strategy)”- Are we sprinting expansion carts post-launch at all? This pack assumes “yes, eventually.” If “ship 17 launch carts and stop,” GWP-283 is a research artifact and needs no further action.
- GARGOYLE and BLACK SUN cuts — confirm or override. Both are good fiction; my read is wrong-device.
- CLONESHOP-as-infrastructure reframe — commit other carts (CARRION, HOSTILE TAKEOVER, ICE BREAKER) to assume CLONESHOP exists?
- TACHIKOMA scope. Most paradigm-faithful in the bunch + most expensive to author. Worth a focused exploration session before its slot is fixed?
Wave 2 consolidated open questions for Josh
Section titled “Wave 2 consolidated open questions for Josh”From GWP-261 (orchestration doc sweep)
Section titled “From GWP-261 (orchestration doc sweep)”None — task AC is well-bounded; cited ADRs are all Accepted with their own Documentation Updates checklists ticked.
From GWP-173 (in-game music — stays deferred)
Section titled “From GWP-173 (in-game music — stays deferred)”- Confirm: defer this one. Recommendation: leave in Planning/Backlog until gate fires (ADR-0017 audio measured + CIPHER playtested + spec authored from scratch).
- PSG-only music option as separate task? If Josh wants ambient PSG music to ship pre-Pico-bring-up, file as new work — the “beyond PSG SFX” framing of GWP-173 rules out the PSG-only path by definition.
- Does any v0.1 launch cart depend on music? Current design bibles describe SFX cues only — confirm.
From GWP-163 (deferred catalog meta)
Section titled “From GWP-163 (deferred catalog meta)”- Confirm GWP-163 stays in Planning, not dispatched. Recommendation: leave as-is; 2026-04-25 reconciliation is current.
- Mirror to
docs/_meta/deferred-work-catalog.md? Recommendation: NO until demand. Notion view is canonical. - Trigger for next audit: v0.1 ship (when GWP-152 closes) recommended; sooner if Josh prefers.
From GWP-265 (T9 explain telemetry)
Section titled “From GWP-265 (T9 explain telemetry)”None — task well-bounded; ADR-0009 + ADR-0016 stable.
From GWP-236 (F11 polish)
Section titled “From GWP-236 (F11 polish)”- Bundle with GWP-265? Both touch F11 overlay; one PR with separate commits saves review overhead. Recommendation: bundle in single dispatch.
- NOKIA empty-state phrasing:
(no nemacs session)(recommended for diagnostic specificity) vs flat(none).
From GWP-114 (emulator update simulation — scope realign)
Section titled “From GWP-114 (emulator update simulation — scope realign)”- Confirm scope realign to ADR-0011 header-only. Recommendation: yes; file GWP-114-B sibling for migration test harness.
- Flag name preference:
--validate-fw(recommended; accurate) vs--simulate-update(preserves original verb). - GWP-144 status check: is the
tools/kn86fw/header parser shipped + C-callable? If no, GWP-114 is blocked. - File GWP-114-B (deck-state migration test harness) now or defer until v0.1 deck-state schema starts evolving?
From GWP-233 (Fe arena scaling)
Section titled “From GWP-233 (Fe arena scaling)”- ADR amendment target: ADR-0004 (recommended; canonical arena home) vs ADR-0005 (per task body — wrong home for arena-size decision) vs new ADR-0023 (overkill).
- Black Ledger scope: scale-up to 4×8×50 if measurement supports vs freeze scaled-back. Driven by data.
- New-default landing zone: stay 256 KB / bump 512 KB / bump 1 MB. Headroom-vs-future-proofing tradeoff.
From GWP-256 (publisher_splash hook — Gameplay Designer take)
Section titled “From GWP-256 (publisher_splash hook — Gameplay Designer take)”- Sample-cart choice: Zaibatsu splash for ICE Breaker (recommended; exercises full PSG + animation envelope) vs simpler Edgeware splash for less-load-bearing cart.
- No-splash-cart behavior: skip entirely (recommended; preserves “absence is meaningful” framing for Setec Astronomy contrast) vs UNKNOWN PUBLISHER placeholder vs per-cart flag.
publisher-splashprimitive in ADR-0005? Recommend amending with new “Lifecycle hooks” subsection covering this + future hooks.- Splash-skip key: SYS (recommended; right-index resting; conventional system-control) vs ENT vs any-key.
- Time-budget enforcement: frame-count, wall-clock, or both? Recommendation: BOTH (whichever fires first).
From GWP-263 (12×24 font cut, biggest engineering task in batch)
Section titled “From GWP-263 (12×24 font cut, biggest engineering task in batch)”- TTF cut vs custom face: Press Start 2P 12×24 TTF cut for v0.1 (recommended) vs KN-86 custom face (later refinement task; 2-3 weeks).
- Descender behavior (Q J p q y g): subtle 2-pixel descenders on lowercase (recommended) vs stay above-baseline like 8×8 source.
- Box-drawing stroke weight: 1 px (matches 8×8 baseline) vs 2 px (heavier, more legible). Black Ledger tables are worst-case test.
- A/B sweep granularity: home + 1 gameplay × 4 carts (minimum) vs wider (multiple screens, debug overlay, attract clips).
- Build-flag default after merge: flip to native in this PR if A/B passes (recommended) vs land with legacy default + flip in follow-on. Risk-tolerance call.
From GWP-264 (attract clip pipeline + 4 clips)
Section titled “From GWP-264 (attract clip pipeline + 4 clips)”- Cart-author UX: standalone
tools/make_clip.pyPython (recommended for v0.1) vs Lisp-side authoring primitive. - Storyboard authoring ownership: Gameplay Design agent authors all 4 launch-cart clips (recommended) vs Josh writes inline.
- Idle-trigger duration default: 30s (recommended) vs 60s (less eager) vs 15s (more eager).
- Cart-side vs runtime-default clip resolution: always prefer cart-side (recommended; carts ship own attract content) vs cycle bare-deck reel + cart clips together.
- Audio fade-out at loop point: hard rule (encoder enforces silence in last 30 frames) vs soft guideline + warning (recommended) vs auto-fade (complexity).
Recommended Sprint 4 dispatch waves (Wave 1 + Wave 2 combined, 15 candidates)
Section titled “Recommended Sprint 4 dispatch waves (Wave 1 + Wave 2 combined, 15 candidates)”Dispatch Wave A — small, independent, low-risk (5 tasks, all parallel)
Section titled “Dispatch Wave A — small, independent, low-risk (5 tasks, all parallel)”- GWP-247 (Wave 1 — lfsr-shuffle) — single C engineer, additive, TDD warm-up.
- GWP-266 (Wave 1 — runtime docs) — single doc agent, pure docs.
- GWP-261 (Wave 2 — orchestration doc sweep) — single doc agent, pure docs, ~2 hours.
- GWP-265 (Wave 2 — T9 explain telemetry) — single C engineer, ~half day, additive instrumentation.
- GWP-236 (Wave 2 — F11 polish + cli) — single C engineer, ~30 min, trivial. Bundle with GWP-265 in one dispatch (same surface).
These five can dispatch on a single SM call, in parallel, isolated worktrees. QA gates each PR independently. Total: ~1.5–2 engineering days across 4 agents.
Dispatch Wave B — medium tasks, mostly parallel (4 tasks)
Section titled “Dispatch Wave B — medium tasks, mostly parallel (4 tasks)”- GWP-246 (Wave 1 — display helpers) — single C engineer, ~2 days, well-specified.
- GWP-256 (Wave 2 — publisher_splash hook) — C engineer + Gameplay Design consult, ~1 day. Note: confirm Gameplay Design availability for storyboard review on the Zaibatsu sample.
- GWP-114 (Wave 2 — emulator update simulation) — single C engineer, ~half day. BLOCKED on GWP-144 status check; verify before dispatch.
- GWP-233 (Wave 2 — Fe arena scaling) — single C engineer, ~1.5 days, includes empirical measurement + ADR amendment.
These four can run in parallel (no inter-dependencies); only GWP-114 has an external block. Total: ~5 engineering days across 4 agents.
Dispatch Wave C — large tasks (2 tasks; consider sequential if resourcing limited)
Section titled “Dispatch Wave C — large tasks (2 tasks; consider sequential if resourcing limited)”- GWP-263 (Wave 2 — 12×24 font cut, ADR-0014 F1) — C engineer + Josh art-direction consult at 2 checkpoints, 1.5–3 days depending on art-iteration loops. Largest task in the batch.
- GWP-264 (Wave 2 — attract clip pipeline + 4 clips) — C+Python engineer + Gameplay Design consult on storyboards, ~2 days. Light dep on GWP-263: if GWP-263 lands first, clips capture against new font; if not, against 8×8-scaled and may need re-capture later. Not blocker, ordering preference.
Recommended: dispatch GWP-263 first (or in parallel if storyboards are independent of font), then GWP-264.
NOT dispatched (deferred or non-engineering)
Section titled “NOT dispatched (deferred or non-engineering)”- GWP-171 (Wave 1 — PCM voice barks) — stays deferred. Re-visit when ADR-0017 audio path measured + CIPHER OLED playtested + spec rewritten.
- GWP-173 (Wave 2 — in-game music) — stays deferred. Same gate as GWP-171 + spec needs to be authored from scratch.
- GWP-163 (Wave 2 — deferred catalog meta) — stays open as canonical anchor; not sprintable; next audit at v0.1 ship.
- GWP-283 (Wave 1 — concept library) — research artifact. The design pack itself is the deliverable; nothing to dispatch unless Josh wants the cart-expansion roadmap formally committed to a future sprint.
Headline for Sprint 4 (combined waves)
Section titled “Headline for Sprint 4 (combined waves)”11 dispatchable engineering tasks across 3 dispatch waves (A: 5 small parallel; B: 4 medium parallel; C: 2 large with one ordering preference). 4 tasks are non-engineering (3 stay deferred with explicit gates; 1 is a strategy doc).
Resourcing call to make: if Sprint 4 capacity is ~1 engineer + 1 doc agent + part-time Gameplay Design consult, dispatch Wave A + GWP-256 from Wave B in week 1, the rest of Wave B in week 2, Wave C in week 3. If capacity is higher, all three waves can run concurrently with different agents claiming each. GWP-114 is gated on GWP-144 status; check before claiming.
Process notes
Section titled “Process notes”Wave 1 (now in main, PR #155)
Section titled “Wave 1 (now in main, PR #155)”- All 5 per-task
.mdfiles plus this index were committed and pushed per task, no batched WIP. Pattern verified working — worktree-isolation glitch did not recur. - Notion appends used the documented
PATCH /v1/blocks/{page_id}/childrenflow with Python-built payloads. All 5 returned HTTP 200 — Notion bodies updated cleanly. - Notion task statuses NOT changed per the brief’s hard rule.
Wave 2 (this branch)
Section titled “Wave 2 (this branch)”- All 10 per-task
.mdfiles committed and pushed per task onclaude/infallible-wilson-3f7fff, no batched WIP. The commit-and-push checkpoint pattern from Wave 1 was reused without incident. - Notion appends used the same Python
PATCHflow; all 10 returned HTTP 200. - Notion task statuses NOT changed per the brief’s hard rule.
- 3 tasks (GWP-114, GWP-233, GWP-261) carry scope-realignment notes because their task bodies referenced ADRs / values that had drifted (ADR-0003 archived → ADR-0011; arena 32 KB → already 256 KB; orchestration.md flash-layout post-ADR-0019). Realignment recommendations are in each pack’s “Open Questions” section.