Files
gijs_pong/.planning/phases/03-complete-experience/03-VALIDATION.md
2026-03-10 21:36:09 +01:00

5.1 KiB
Raw Blame History

phase, slug, status, nyquist_compliant, wave_0_complete, created
phase slug status nyquist_compliant wave_0_complete created
3 complete-experience draft false false 2026-03-10

Phase 3 — Validation Strategy

Per-phase validation contract for feedback sampling during execution.


Test Infrastructure

Property Value
Framework Manual gameplay testing (no automated framework — no test setup in scope)
Config file none — Wave 0 installs N/A
Quick run command Open index.html, click through Title → Mode Select → Game → Game Over
Full suite command Full playthrough: all modes (AI easy/medium/hard, 2P), all palettes, sound toggle, audio timing
Estimated runtime ~3-5 minutes

Sampling Rate

  • After every task commit: Run quick manual test (open index.html, navigate Title → Settings → Mode Select → Game → Game Over)
  • After every plan wave: Run full suite (all game modes, all palette switches, sound toggle, audio verification)
  • Before /gsd:verify-work: Full suite must complete with no errors; all screens render; keyboard nav works; audio plays correctly
  • Max feedback latency: ~5 minutes

Per-Task Verification Map

Task ID Plan Wave Requirement Test Type Automated Command File Exists Status
3-01-01 01 1 SCRN-01 manual/visual Open index.html → title screen renders with game name + neon branding manual pending
3-01-02 01 1 SCRN-02 manual/keyboard Press Enter on Play → mode select screen renders, arrow keys navigate manual pending
3-01-03 01 1 SCRN-03 manual From title, press Settings → settings screen renders with difficulty/sound/palette manual pending
3-01-04 01 1 SCRN-04 manual Play game to completion → game over screen shows winner + score + options manual pending
3-02-01 02 2 AUD-01 manual/audio Start game, rally ball → paddle hit sound plays each collision manual pending
3-02-02 02 2 AUD-02 manual/audio Ball bounces off wall → wall hit sound plays (distinct from paddle hit) manual pending
3-02-03 02 2 AUD-03 manual/audio Ball passes paddle → score sound plays (deep thud, distinct from others) manual pending
3-02-04 02 2 AUD-04 manual/console Page load → AudioContext.state = 'suspended'; first keydown → 'running' manual pending
3-02-05 02 2 AUD-05 manual Settings → Sound OFF → no audio plays; Sound ON → audio resumes manual pending

Status: pending · green · red · ⚠️ flaky


Wave 0 Requirements

None — existing infrastructure (Phase 2 game loop in index.html) covers all phase requirements. Phase 3 adds manual gameplay tests only. No dedicated test framework is in scope for v1.

Existing infrastructure covers all phase requirements.


Manual-Only Verifications

Behavior Requirement Why Manual Test Instructions
Title screen renders with neon game name and branding SCRN-01 Requires visual inspection of canvas rendering Open index.html, verify title displays with glow effect and arcade aesthetic
Mode select screen navigates with arrow keys SCRN-02 Requires keyboard input + visual verification Press Enter → verify mode select; use Up/Down arrows; verify highlight changes
Settings screen: difficulty/sound/palette changes apply SCRN-03 Requires keyboard interaction + visual/audio feedback Open Settings, change each option, verify game reflects changes
Game over screen shows score + winner + navigation SCRN-04 Requires completing a full game match Play to score limit, verify PLAYER X WINS NM format, Play Again returns to mode select, Main Menu returns to title
Paddle hit sound plays AUD-01 Requires audio device + active listening Start game, rally ball, listen for mid-range tone on paddle collision
Wall hit sound plays AUD-02 Requires audio device + active listening Bounce ball off top/bottom wall, listen for higher-pitch snap
Score sound plays AUD-03 Requires audio device + active listening Score a point, listen for low-frequency thud (distinct from paddle/wall)
Audio initializes only after first user interaction AUD-04 Requires console inspection + timing verification Open DevTools console, load page, audioContext.state should be 'suspended'; press any key, state should be 'running'
Sound toggle mutes/unmutes audio AUD-05 Requires interaction + audio device Toggle Sound OFF in settings → play game → no sounds; toggle ON → sounds return

Validation Sign-Off

  • All tasks have <automated> verify or Wave 0 dependencies
  • Sampling continuity: no 3 consecutive tasks without automated verify
  • Wave 0 covers all MISSING references
  • No watch-mode flags
  • Feedback latency < 5 minutes
  • nyquist_compliant: true set in frontmatter

Approval: pending