JAXILLMIND
Simon Says
Game 1 / 12
Watch the lights. Repeat the beat. Grow your brain.
Keep going โ this game grows with you
- L1 Rememberwatch the sequence and repeat it exactly
- L4 Analyzethe machine replays the sequence with ONE pad changed โ find which step broke
- L5 Evaluatetwo candidate sequences are offered; choose the one that matches the rule you were shown, and say why
- L6 Createbuild a sequence of your own for the machine to repeat back
Starts at L1 ยท climbs to L6 โ analyze, judge, and create, not just remember.
Round โ
Best 0
Goal 20
Press Start โ watch the sequence, then repeat it. Keys 1โ4 work too.
TTCF โ every capability: time-to-capability bar + declared failure mode
| Capability | TTC bar | Failure mode | Detection | Repair |
|---|---|---|---|---|
| node โ complete PWA compile | 1000ms | LLM leaked into the compile path, or transform exceeds 1s (LAW 0 breach) | measured compile ms > 1000 โ gate RED, HALT | fix the generator; the node is innocent; never hand-write artifacts to route around it |
| four pads render from canon tokens | 50ms | pad missing, or pad hex drifts from the canon token value (style forked from source) | count of [data-pad] in HTML == pad entities in node AND every pad background hex in style.css == surface-schema token value | regenerate from node |
| full offline play after first load | 50ms | SW precache list drifts from emitted files โ app silently breaks offline while looking deployed | targets container โก sw.js PRECACHE array โก files on disk (3-way, exact) | regenerate from node |
| wrong pad or input timeout ends the run honestly | 50ms | timeout never fires โ the game hangs mid-round with no verdict | app.js contains inputTimeoutMs=5000 wiring and gameOver('timeout') + gameOver('wrong') call sites | regenerate from node |
| tones play via WebAudio | 50ms | AudioContext constructed before a user gesture โ browser blocks it, first playback throws, game dies silently | app.js constructs AudioContext ONLY inside the start-gesture handler, wrapped in try/catch (game must run silently if audio is denied) | regenerate from node |
| best round survives reload | 50ms | localStorage unavailable (private mode / embedded webview) throws and kills the game loop | every localStorage touch in app.js is inside try/catch with an in-memory fallback | regenerate from node |
Source: products/xml/simon-says.xml v0.7 ยท compiled by gen-simon-says.mjs ยท gated by check-simon-ttcf.mjs