| name | verify-by-playing |
| description | The gameplay acceptance gate — prove interactive software works by PLAYING it with real input, not by green gates, passing tests, code inspection or screenshots of stills. Load this whenever a gameplay change is claimed done, before shipping or demoing any playable build, after integrating a character, controls, camera, level geometry, combat or any input path, and whenever a test suite or validator is green on interactive software. Also load it when writing acceptance checks for a game, so the checks exercise the shipped input boundary rather than the internals. Exists because every gameplay defect one project shipped — dead keyboard, sealed level, hijacked camera, unclimbable stair, non-slicing enemies — passed every green gate and was found by a human playing. |
Green gates cannot see whether the thing is playable
The record that justifies the rule
One project shipped, in sequence, past a fully green harness (capture green, validator 20/20,
selftest 15/15): a keyboard that did nothing, a level sealed by its own colliders, a camera
that hijacked the view seconds into play, a stair that could not be climbed, and enemies whose
signature death effect silently did not happen. Every one was found by the operator playing.
The common cause was always the same: acceptance ran a scripted path with the camera locked, so
nothing ever pressed a key, walked the route, or checked which camera was rendering. A judge
grades a frame; a validator grades artifacts; neither can see playability.
The gate — five proofs, all from REAL input
Run these against the live, running build — never an offscreen path, never a headless shortcut
that bypasses the input layer, never teleport() in place of walking.
- Input-liveness. Dispatch genuine key/button events through the platform's real input
path (browser: Playwright/CDP key events on the page; Unity: play-mode with driven
Input; a debug API that injects events as events is acceptable — one that sets
velocities directly is not). Assert the character actually moved, with positions. A safe
probe: bind nothing to an unused key and assert the app's input layer saw press and
release — that proves the path without moving the player.