NeuroReach: game-state and validation references
same packets through pure model + rendered game, compare behavior. Log the difficulty staircase too; higher score could just be easier targets
game references: docs/gardengrow.md and docs/reachcollect.md; patient-web/src/garden|reach/ for PlantGrowthModel and ReachModel; scenes for Welcome, Calibration, GameModeSelect, Garden, StarCatch, Summary and Pairing. The spec says pure Unity-era game logic/parsers were ported to TypeScript, with Vitest replacing NUnit for those contracts.
difficulty idea: raise the target slightly after 2–3 consecutive successes and lower it after a miss, aiming for a 70–80% success band. These are draft controller settings, not a measured optimal regimen. Keep the staircase state in the session record so a score is interpretable.

Sample report: Star Catcher summary and weekly chart.

Garden Grow and Star Catcher game-design cards.
bench tests listed: synthetic EEG with injected ERD; parser/store tests; artifact holds; latency from acquisition timestamp through WebSocket to React render. The p95 <250 ms target must include the actual web path and should be reported alongside processing-window context, not confused with a 20 Hz broadcast rate.
hardware gates: H1 signal/ERD checks, H2 calibration/classifier, H3 closed-loop latency, H4 full workflow. The source lists expected checks rather than their measured results.
review questions: how does game state react to stale data, artifacts, pause/rest and mode changes? Run identical packet sequences through the pure model and rendered game to distinguish a scoring issue from display/frame-timing behavior.
