The quality checklist
Every game on the shelf has to pass 29 checks. The checks run in a real browser on three screens: a phone held upright, a phone held sideways, and a desktop. They use real touches, key presses, mouse clicks and a gamepad. Each game gets fixed until it passes. Then a second, independent AI that never saw the work plays the game and has to sign off.
14games on the shelf
11passed every check
29checks per game
3screens: portrait, landscape, desktop
Scoreboard
| Game | Boot | Start | Desktop | Phone | Polish | Tools | Evidence | Checks | Status |
|---|---|---|---|---|---|---|---|---|---|
| Grave Lantern | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | 14/28 → 27/29 | Queued |
| Bone Tide | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 15/28 → 29/29 | Passed |
| Bridgewright | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 7/29 → 28/29 | Passed |
| Gloamkeep | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 7/29 → 28/29 | Passed |
| Archer Keep | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 13/28 → 28/29 | Passed |
| Fishy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 11/28 → 28/29 | Passed |
| PULSE | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 7/29 → 28/29 | Passed |
| Orbital Decay | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 7/29 → 28/29 | Passed |
| Tank Duel | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 7/29 → 24/25 | Passed |
| Phone Blackjack | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 6/29 → 25/25 | Passed |
| Zombie Breach | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 6/29 → 29/29 | Passed |
| Slice Party | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | 27/29 | — |
| Rocket Run | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 26/28 | Passed |
| Bubble Bay | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | 27/29 | — |
What each check means
Boot
- boot.load
- Loads and is ready on all three screens
- boot.errors
- Zero page and console errors
- boot.requests
- No broken files, nothing fetched from the internet
- boot.fill
- Fills the screen, page never scrolls
- boot.visible
- Something is actually drawn
- hook.contract
- Exposes its state so it can be tested
Start
- start.touch
- A tap starts it on a phone
- start.key
- Enter or Space starts it
- start.click
- A click starts it
- start.pad
- Gamepad A or Start starts it
Desktop
- keys.core
- The core moves work on the keyboard
- mouse.core
- Mouse actions work (when the game uses the mouse)
- pad.core
- The core moves work on a gamepad
- pause.key
- Esc pauses and resumes
- pause.pad
- Gamepad Start pauses and resumes
Phone
- touch.core
- The core moves work by touch, portrait and landscape
- touch.noscroll
- Playing never scrolls or zooms the page
- touch.targets
- Every button is at least 44 px
- touch.rotate
- Rotating the phone mid-game keeps it playable
- pause.touch
- An on-screen pause button
- pause.hidden
- Pauses itself when you leave the tab
Polish
- audio.unlock
- Has sound, unlocked by your first tap (iOS rule)
- perf.fps
- Runs at 30+ fps (50+ is the goal)
- site.back
- A way back to the arcade
- site.meta
- Phone-ready page setup (safe areas, title)
Tools
- tech.libs
- Current engine and library versions, no CDN
Evidence
- manifest
- Honest description and controls
- tests.acceptance
- Its own acceptance tests pass
- playtest
- An independent playtester signed off