← Good Catch Diary
Evidence Manifest

Not loose screenshots. Reviewable proof receipts.

Each catch below is a mini manifest: the claim, what the browser run checked, why the finding matters, and the public artifacts that make the story inspectable.

6catch manifests with a reusable proof pattern.
3+artifact links per catch: screenshot, run receipt, and console capture.
0 sourceDesigned to make browser-visible proof understandable without code access.
ProfilesEach manifest points toward a repeatable audit profile.
Catch 1

The game worked, but the iframe was clipped

Back to top
The game worked, but the iframe was clipped evidence screenshot
May 13, 2026penniesiframeresponsiveblack-box

Claim: A playable embedded game should remain visible and inside its frame on phone-sized screens after interaction.

Bug: Hot Path completed its two-player interaction in every viewport, but the embedded game surface was visibly clipped on phone and tablet.

Why normal checks missed it: The saved game used overflow hidden, so document scroll width stayed clean. A simple page overflow check would have passed.

Why this sells Riddle Proof: This is the kind of issue a product team can miss when automated checks only ask “did the route load?” Riddle Proof turns the browser screenshot into a reviewable receipt.

Reusable profile seed: For embedded apps: run post-interaction screenshots, iframe bounds checks, and visible-canvas assertions across phone/tablet/desktop.

What the browser run checked

  • Opened the player in a real browser at responsive viewports.
  • Drove the two-player interaction far enough to prove the game was active.
  • Captured screenshots after interaction instead of only at first load.
  • Compared visible element bounds against the viewport and iframe frame.

Proof lesson

Element bounds and screenshots catch user-visible clipping that scalar scroll-width checks miss.

ArtifactTypeWhat it proves
Phone screenshot after interactionPNG screenshot

The human-readable artifact: it shows the game active, but clipped in the viewport.

Run receiptJSON metadata

Records the browser run timestamp, duration, worker, and whether the proof script itself errored.

Console captureJSON logs

Preserves browser console output so visual findings can be read alongside runtime errors or warnings.

Catch 3

A fixed nav made full-screen routes one nav-height too tall

Back to top
A fixed nav made full-screen routes one nav-height too tall evidence screenshot
May 13, 2026~$0.01layoutroute inventoryresponsive

Claim: Full-screen game routes should fit the visible app shell instead of exceeding the viewport by the fixed navigation height.

Bug: Multiple older full-screen routes were exactly one fixed navigation bar too tall on desktop/tablet/phone.

Why normal checks missed it: Each route still loaded and looked mostly functional. The bug only became obvious when route-root bounds were measured across a viewport matrix.

Why this sells Riddle Proof: One proof profile can find a whole class of layout bugs across a site. The result is not just a screenshot; it is a reusable test idea.

Reusable profile seed: For app shells: measure route-root bounds, fixed-nav offsets, document scroll policy, and top layout offenders across a route inventory.

What the browser run checked

  • Inventoried representative game routes instead of checking one page.
  • Measured route-root bounds across desktop, tablet, and phone shapes.
  • Captured route screenshots so the numeric overflow had visual context.
  • Grouped repeated offenders into a single app-shell pattern.

Proof lesson

A generic app-shell profile can find repeated layout classes: fixed nav offset, route root height, scroll policy, and top offenders.

ArtifactTypeWhat it proves
Representative route screenshotPNG screenshot

Gives a concrete example from the route inventory run where app-shell sizing mattered.

Run receiptJSON metadata

Shows this was a longer route-inventory browser run, not a static screenshot pasted into a page.

Console captureJSON logs

Keeps route-load console evidence with the same browser run.

Catch 4

A green semantic state still hid the win result

Back to top
A green semantic state still hid the win result evidence screenshot
May 13, 2026penniesvisual evidencecanvasquality

Claim: When a game reaches a win/escape state, the visible UI should clearly communicate that result to the player.

Bug: Gem Mine reached the escaped state semantically, but the user-facing terminal panel did not clearly show ESCAPED! until the screenshot review caught it.

Why normal checks missed it: State assertions proved the game outcome. They did not prove that the outcome was visible and understandable to a player.

Why this sells Riddle Proof: A test can be technically green while the customer experience is still unclear. Riddle Proof keeps semantic checks and screenshots in the same receipt.

Reusable profile seed: For canvas/game flows: pair state assertions with visible end-state screenshots and human-readable HUD/result checks.

What the browser run checked

  • Drove the game through the continue/escape path in a browser.
  • Captured the post-state screenshot rather than stopping at a green semantic assertion.
  • Compared machine-readable state against what a human could see in the terminal panel.

Proof lesson

Screenshots are not just decoration. They catch places where machine-readable state is stronger than the actual user experience.

ArtifactTypeWhat it proves
After-continue screenshotPNG screenshot

Shows the actual end-state UI that a player would review.

Run receiptJSON metadata

Records the run as browser evidence with timing and script status.

Console captureJSON logs

Keeps runtime logs attached to the same end-state proof.

Catch 5

Restart-only texture errors after gameplay looked fine

Back to top
Restart-only texture errors after gameplay looked fine evidence screenshot
May 13, 2026< $0.03console errorsgame lifecyclerestart

Claim: A game should be able to finish and restart without accumulating duplicate runtime errors.

Bug: Classic Slalom passed its behavior checks, but repeated scene restart generated 180 duplicate Phaser texture-key console errors.

Why normal checks missed it: A first-load smoke test would stop before restart. The bug lived in the lifecycle, not the happy-path load.

Why this sells Riddle Proof: Recovery paths and repeat use are where many browser bugs hide. The manifest shows the screenshot and the log trail in one place.

Reusable profile seed: For games and rich apps: include finish/restart/revisit flows, console-error budgets, and post-recovery screenshots.

What the browser run checked

  • Loaded and played beyond the first render.
  • Restarted the game scene instead of stopping after initial success.
  • Captured the post-restart screenshot and console output together.
  • Flagged lifecycle errors that were invisible in a first-load smoke test.

Proof lesson

Terminal/recovery proof finds defects that only appear after users finish, restart, replay, or revisit a route.

ArtifactTypeWhat it proves
After-restart screenshotPNG screenshot

Shows the post-restart browser state that paired with the console-error finding.

Run receiptJSON metadata

Records the longer lifecycle run and script status.

Console captureJSON logs

The important non-visual artifact: it preserves the duplicate texture-key errors.

Catch 6

The homepage rendered games, but hid community games

Back to top
The homepage rendered games, but hid community games evidence screenshot
May 13, 2026< $0.01manifest driftroute inventoryintegration

Claim: If generated/community routes load directly, the homepage should also expose them through discovery and clickthrough paths.

Bug: Saved community games loaded directly by URL, but the homepage did not list them because the manifest schema had drifted.

Why normal checks missed it: The player route was healthy and built-in routes were healthy. The bug was in discovery: the source page failed to expose a valid route.

Why this sells Riddle Proof: A site can have healthy destination pages while the conversion/discovery path is broken. Riddle Proof treats source-page exposure as part of the contract.

Reusable profile seed: For content or generated-route apps: check direct routes, source-page inventories, and clickthroughs from the pages where users discover those routes.

What the browser run checked

  • Compared direct route health with homepage discovery health.
  • Inspected the rendered homepage state after the manifest changed.
  • Captured the page area that should expose the generated routes.

Proof lesson

Route inventory should prove both direct route health and source-page clickthrough/discovery health.

ArtifactTypeWhat it proves
Homepage discovery screenshotPNG screenshot

Shows the source page where generated routes should be discoverable.

Run receiptJSON metadata

Records the browser run that checked the discovery path.

Console captureJSON logs

Keeps page-load logs attached to the same discovery proof.