test(02): VERIFICATION → gaps_found after live UAT (4 first-impression UX gaps)
User dev-server walkthrough surfaced 4 functional UX gaps beneath the verifier's
24/24 structural PASS:
G1 (blocking) — no global page CSS → white halo around #1a1a1a canvas
G2 (blocking) — no first-run prompt after Begin → player confused
(A Dark Room rule needs the canonical first-prompt)
G3 (high) — tile outlines too dim → grid reads as 'gray check block'
G4 (medium) — gate visual at canvas (880, 384) reads as stray rectangle
Phase 3 watercolor deferral preserved — every fix uses Phaser primitives or
one CSS file, not painted assets. STATE.md → status: gaps_found.
Next: /gsd-plan-phase 2 --gaps
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,10 +2,41 @@
|
||||
phase: 02-season-1-vertical-slice-soil
|
||||
verified: 2026-05-09T11:24:00Z
|
||||
verifier_run_at: 2026-05-09T11:24:00Z
|
||||
status: human_needed
|
||||
score: 24/24 must-haves structurally verified
|
||||
uat_run_at: 2026-05-09T15:50:00Z
|
||||
status: gaps_found
|
||||
score: 24/24 must-haves structurally verified; 4 first-impression UX gaps found in live UAT
|
||||
overrides_applied: 0
|
||||
re_verification: false
|
||||
gaps:
|
||||
- id: G1
|
||||
severity: blocking
|
||||
title: "No global page CSS — white halo around dark canvas"
|
||||
surface: "src/main.tsx, no src/index.css exists"
|
||||
evidence: "User screenshot 2026-05-09: 1024×768 dark canvas centered in a fully-white viewport. Canvas backgroundColor is #1a1a1a (game/main.ts:16); body has no styling, defaults to white. Visual tonal break is jarring on every page load."
|
||||
fix_shape: "Add src/index.css imported from main.tsx. body { margin: 0; min-height: 100vh; background: #1a1a1a; color: #e8e0d0; font-family: serif; } #game-container centered. ~15 lines."
|
||||
must_have_link: "ROADMAP SC1 — 'no UI clutter' implies tonal coherence between canvas and surrounding chrome, not 'untreated browser default white'."
|
||||
- id: G2
|
||||
severity: blocking
|
||||
title: "No first-run prompt after Begin — player has no idea what to do"
|
||||
surface: "src/App.tsx + the post-BeginScreen state"
|
||||
evidence: "User feedback 2026-05-09: 'I am very confused.' After dismissing Begin, the only persistent UI is a settings cog at bottom-right. SeedPicker is gated behind clicking a tile; JournalIcon is invisible until first harvest. A first-time player sees an empty 4×4 grid + a stray gray gate rectangle and nothing else. The 'A Dark Room rule' the bible cites means 'one prompt at a time, minimal but always present' — not 'zero UI'."
|
||||
fix_shape: "Tiny FirstRunHint component — single bible-voice line ('Click a tile to plant', or similar from ui-strings.yaml). Auto-dismisses on first plant. New `firstRunHintDismissed` flag in session-slice."
|
||||
must_have_link: "ROADMAP SC1 + GARD-01 — A Dark Room rule honored requires at minimum the canonical first-prompt; player must know what to do on frame one."
|
||||
- id: G3
|
||||
severity: high
|
||||
title: "Tile outlines too dim — 4×4 grid reads as 'gray check block'"
|
||||
surface: "src/render/garden/tile-renderer.ts"
|
||||
evidence: "User feedback: 'a confusing gray check block.' Tile outlines render with low contrast against the #1a1a1a canvas background; in the screenshot the 16 tiles read as faint suggestions rather than legible interactive surfaces. Hover state (if it exists) is similarly underexposed."
|
||||
fix_shape: "Brighten empty-tile outline color (~#3a3a40 → ~#5a5a60); add a clearer hover state (~#7a7a82 outline + slight fill alpha bump). No visual style change beyond contrast — Phase 3 watercolor still owns the painted look."
|
||||
must_have_link: "GARD-01 — 'Player can plant a seed into an unoccupied tile' presumes the player can SEE which tiles are unoccupied. Currently they cannot."
|
||||
- id: G4
|
||||
severity: medium
|
||||
title: "Gate visual stands alone with no surrounding context"
|
||||
surface: "src/render/garden/gate-renderer.ts"
|
||||
evidence: "User screenshot: gate at canvas (880, 384) appears as a stray gray rectangle floating to the right of the grid, with nothing connecting it to the garden. The bible's 'walled garden' framing requires the gate to read as part of a wall, not a free-floating element. Phase 3 paints the watercolor wall — this gap asks only for a faint structural primitive so the gate has visual context in Phase 2."
|
||||
fix_shape: "Add a faint vertical line/band in gate-renderer connecting top-to-bottom of the canvas at the gate's column (Phaser primitive — alpha ~0.15-0.20 against #1a1a1a). Phase 3 paints over without changing the structural intent."
|
||||
must_have_link: "Bible — 'walled garden at the fraying edge of a world.' AEST-07 only requires Begin-screen restraint, not no-context gate placement."
|
||||
per_req:
|
||||
per_req:
|
||||
CORE-02: PASS
|
||||
CORE-03: PASS
|
||||
@@ -56,10 +87,31 @@ human_verification:
|
||||
|
||||
**Phase Goal:** Player can launch the game, plant a seed, watch it grow, harvest a memory fragment authored in real Season 1 content, meet Lura at the gate, leave the tab for hours, and return to a letter-from-the-garden describing what bloomed — the entire core loop and content pipeline proven on Season 1 with no aesthetic polish required.
|
||||
|
||||
**Verified:** 2026-05-09T11:24:00Z
|
||||
**Status:** HUMAN_NEEDED — all 24 REQ-IDs structurally PASS; tone-quality items need human eyeballs before sign-off.
|
||||
**Verified:** 2026-05-09T11:24:00Z (automated) → 2026-05-09T15:50:00Z (live UAT update)
|
||||
**Status:** GAPS_FOUND — all 24 REQ-IDs structurally PASS, but live UAT surfaced 4 first-impression UX gaps that block phase sign-off.
|
||||
**Re-verification:** No — initial verification.
|
||||
**Overall verdict:** PHASE STRUCTURALLY COMPLETE — code passes every automated gate; tone review and live-loop verification are the remaining work.
|
||||
**Overall verdict:** PHASE STRUCTURALLY COMPLETE BUT NOT SHIPPABLE — code passes every automated gate, but a brand-new player launching the dev server cannot intuit the loop and the page reads as "broken UI" (white halo around dark canvas, no first-run prompt, dim tile outlines, isolated gate visual). Route through `/gsd-plan-phase 2 --gaps` to spec a small focused gap-closure plan before marking the phase complete.
|
||||
|
||||
---
|
||||
|
||||
## Gaps Found in Live UAT (2026-05-09T15:50:00Z)
|
||||
|
||||
The 5 plans + automated verifier all passed; human live-loop walkthrough on a fresh dev server surfaced first-impression UX gaps NOT visible in the test suite. See frontmatter `gaps:` for the structured list. Summary:
|
||||
|
||||
| Gap | Severity | What user sees | Fix shape (one-line) |
|
||||
|-----|----------|---------------|----------------------|
|
||||
| G1 | blocking | Dark canvas floats in a sea of white = visually broken on every page load | Add `src/index.css` with body bg `#1a1a1a`, import in `main.tsx` |
|
||||
| G2 | blocking | After dismissing Begin, no instruction visible — player confused | Add `FirstRunHint` overlay with one bible-voice line, auto-dismiss on first plant |
|
||||
| G3 | high | 4×4 grid reads as "gray check block" — outlines too dim against canvas | Brighten empty-tile outline + hover state contrast in `tile-renderer.ts` |
|
||||
| G4 | medium | Gate visual at canvas (880, 384) reads as stray gray rectangle | Add faint vertical wall primitive in `gate-renderer.ts` for Phase-2 context |
|
||||
|
||||
**Why the automated verifier missed all 4:** the 312 vitest cases pin behavioral correctness (state transitions, schema, determinism, save round-trip); the Playwright e2e drives the loop programmatically (it doesn't *look* at the screen). First-impression "what does a new player see?" is a category the test suite cannot cover. The HUMAN-UAT.md tone items capture the next layer (Lura's voice, letter cadence) — the gaps above are a layer beneath those, structurally simpler but visually load-bearing.
|
||||
|
||||
**Phase 3 deferral preserved:** the watercolor + cello + painted plants the bible describes remain Phase 3 scope. These gaps are minimum-viable functional UX (page-bg coherence, first-prompt presence, grid legibility, gate context) — every fix uses Phaser primitives or a single CSS file, no painted assets.
|
||||
|
||||
**Next:** `/gsd-plan-phase 2 --gaps` to create the gap-closure plan.
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user