JAXILLMIND · Game 7 / 12
ODD ONE OUT
L4 · Analyze
Break it apart
Four things. One doesn't belong. Can you spot it?
Keep going — this game grows with you
- L4 Analyzefind the item that does not belong
- L4 Analyzefind the item that does not belong
- L5 Evaluatetwo items could each be the odd one — choose the stronger case
- L6 Createbuild a set of four where exactly one is odd, and name the rule
Starts at L4 · climbs to L6 — analyze, judge, and create, not just remember.
Streak 0
Best 0
❤️❤️❤️
Tap Start to play — spot the answer!
TTCF — capability · time bar · failure mode · detection
| Capability | TTC | Failure mode | Detection |
|---|---|---|---|
| node → complete PWA compile | 1000ms | LLM leaked into compile, or transform exceeds 1s (LAW 0 breach) | measured compile ms > 1000 → RED, HALT |
| every challenge + option renders from the deck | 50ms | a challenge or option is dropped, or a challenge has not exactly one correct answer | option buttons in DECK == options in node AND every challenge has exactly one correct=true |
| full offline play after first load | 50ms | SW precache drifts from emitted files — app breaks offline while looking deployed | targets ≡ sw.js PRECACHE ≡ files on disk (3-way, exact) |
| a wrong tap costs a life; three ends the run honestly | 50ms | lives never decrement → the game can't be lost, score is meaningless | app.js decrements lives on a wrong option and calls gameOver when lives reach 0 |
| best streak survives reload | 50ms | localStorage unavailable (private mode) throws and kills the game | every localStorage touch in app.js is inside try/catch |
| correct/wrong tones via WebAudio | 50ms | AudioContext constructed before a gesture → browser blocks it, first tone throws | app.js constructs AudioContext only inside the start-gesture handler, wrapped in try/catch |
Source: products/xml/games/odd-one-out.xml v0.6 · engine "choice" · compiled by gen-brain-game.mjs · gated by check-brain-game.mjs