Deterministic exploration
Each game/viewport pair receives a derived seed recorded beside its input log. The policy discovers visible buttons, links, focusable elements, and canvases, then mixes element clicks, canvas grid clicks, keyboard input (arrows, WASD, Space, Enter, Escape, and 1–9), and waits.
Deterministic opener
Before random exploration begins, each game is driven through an ordered menu-confirm sequence — by default K, Enter, Space, then Z, with per-game overrides — stopping at the first key that changes the frame. Keyboard-gated title screens would otherwise depend on the random policy stumbling onto the right key, and read as unresponsive when it did not.
State-change heuristic, and its floor
After every input epoch a downscaled frame is reduced to a 16×10 difference hash. Six identical hashes during a diverse active-input sequence that includes a click raises a candidate. A dead-end is claimed only when at least three distinct visual transitions were driven first; below that the harness has not demonstrated it can play the game, so the observation is filed as an informational coverage gap against this driver rather than as a defect in the build.
Responsiveness sampling
A harness-owned requestAnimationFrame loop is installed before any page script, and main-thread evaluate latency is timed from outside the browser throughout each pass. Frame hashing runs entirely outside the page, so measurement does not compete with the game for the main thread. Absolute numbers are machine-dependent and never reported alone: a finding is raised only where a build separates from the corpus median for the same viewport on a robust median/MAD test, past an absolute floor of ~30 FPS and an absolute minimum gap, so a uniformly fast corpus yields nothing and a uniformly loaded machine does not flag every game.
Measuring the measurer
Frame timings are only as good as the host that took them. The harness samples the machine's own load through the sweep, and when the host is competing for CPU it says so at the top of this report, marks every timing-based finding heuristic, and scopes the caveat to those findings alone — runtime errors, failed resources and layout geometry do not depend on how busy the machine was.
Real touch on mobile
The mobile pass drives the browser touchscreen — genuine touch events — rather than synthetic mouse clicks in a phone-sized window, so builds that bind touch or gate on pointer type are exercised the way a phone would exercise them.
Browser diagnostics
The harness records console errors and warnings, page errors, window errors, uncaught promise rejections, and failed requests from before navigation. Duplicate identical diagnostics are grouped without suppressing their observed count. Autoplay-blocked audio and rejected pointer-lock are consequences of headless playback without a genuine user gesture, so they are recorded verbatim as informational environment diagnostics and kept out of the defect tally rather than being allowed to crowd out real findings.
Mobile and persistence probes
The mobile pass measures document overflow and rendered control/canvas geometry at 375×812. When localStorage is populated, the page reloads and byte-level snapshot digests are compared. Product intent is labeled unknown because this is a black-box run.
Evidence handling
PNG frames remain in each game’s frames/ directory. This report embeds reduced JPEG thumbnails without cropping, while every thumbnail links to the corresponding full relative frame without requiring JavaScript. Reproduction steps are generated directly from the timestamped input log.
Boundaries
This sweep does not assert design intent, completion-path coverage, accessibility conformance, cross-browser parity, network behavior, or exhaustive game-state coverage. A clean result means no defect was observed in the recorded time box. Explicit load-error text on the page is a definitive critical load failure. A run the driver never managed to advance is not: a build that renders correctly but resists this input policy, or repaints too slowly for the sampler, produces the same signal, so it is reported as an informational coverage gap and the responsiveness pass is left to carry the real evidence.