{
  "version": "riddle-proof.profile-result.v1",
  "profile_name": "riddle-site-v443-good-catch-warning-hygiene",
  "runner": "riddle",
  "status": "passed",
  "baseline_policy": "invariant_only",
  "route": {
    "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
    "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
    "expected_path": "/proof/good-catches/evidence/",
    "matched": true,
    "http_status": 200
  },
  "artifacts": {
    "screenshots": [
      "riddle-site-v443-good-catch-warning-hygiene-desktop",
      "riddle-site-v443-good-catch-warning-hygiene-phone",
      "riddle-site-v443-good-catch-warning-hygiene-ipad-mini",
      "riddle-site-v443-good-catch-warning-hygiene-ipad"
    ],
    "console": "console.json",
    "proof_json": "proof.json",
    "dom_summary": "dom-summary.json",
    "riddle_artifacts": [
      {
        "name": "proof.json",
        "url": "https://cdn.riddledc.com/scripts/job_1a70de27/proof.json.json",
        "source": "artifacts"
      },
      {
        "name": "console.json",
        "url": "https://cdn.riddledc.com/scripts/job_1a70de27/console.json.json",
        "source": "artifacts"
      },
      {
        "name": "dom-summary.json",
        "url": "https://cdn.riddledc.com/scripts/job_1a70de27/dom-summary.json.json",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v443-good-catch-warning-hygiene-desktop.png",
        "url": "https://cdn.riddledc.com/scripts/job_1a70de27/riddle-site-v443-good-catch-warning-hygiene-desktop.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v443-good-catch-warning-hygiene-phone.png",
        "url": "https://cdn.riddledc.com/scripts/job_1a70de27/riddle-site-v443-good-catch-warning-hygiene-phone.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v443-good-catch-warning-hygiene-ipad-mini.png",
        "url": "https://cdn.riddledc.com/scripts/job_1a70de27/riddle-site-v443-good-catch-warning-hygiene-ipad-mini.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v443-good-catch-warning-hygiene-ipad.png",
        "url": "https://cdn.riddledc.com/scripts/job_1a70de27/riddle-site-v443-good-catch-warning-hygiene-ipad.png",
        "source": "artifacts"
      }
    ]
  },
  "checks": [
    {
      "type": "route_loaded",
      "label": "route_loaded",
      "status": "passed",
      "evidence": {
        "expected_path": "/proof/good-catches/evidence/",
        "observed_paths": [
          "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "/s/ps_34ea19d4/proof/good-catches/evidence/"
        ],
        "http_statuses": [
          200,
          200,
          200,
          200
        ]
      }
    },
    {
      "type": "selector_visible",
      "label": "selector_visible",
      "status": "passed",
      "evidence": {
        "selector": ".manifest-stack",
        "visible_counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "selector_count_at_least",
      "label": "selector_count_at_least",
      "status": "passed",
      "evidence": {
        "selector": ".manifest-card",
        "min_count": 36,
        "counts": [
          36,
          36,
          36,
          36
        ]
      }
    },
    {
      "type": "selector_text_visible",
      "label": "selector_text_visible",
      "status": "passed",
      "evidence": {
        "selector": ".manifest-stack",
        "text": "Profile Mode docs lagged behind proof primitives",
        "pattern": null,
        "viewports": [
          {
            "viewport": "desktop",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "phone",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "ipad-mini",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "ipad",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          }
        ]
      }
    },
    {
      "type": "selector_text_visible",
      "label": "selector_text_visible",
      "status": "passed",
      "evidence": {
        "selector": ".manifest-stack",
        "text": "job_bb0aa65a",
        "pattern": null,
        "viewports": [
          {
            "viewport": "desktop",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "phone",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "ipad-mini",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "ipad",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          }
        ]
      }
    },
    {
      "type": "selector_text_visible",
      "label": "selector_text_visible",
      "status": "passed",
      "evidence": {
        "selector": ".manifest-stack",
        "text": "job_22ee6a7c",
        "pattern": null,
        "viewports": [
          {
            "viewport": "desktop",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "phone",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "ipad-mini",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          },
          {
            "viewport": "ipad",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ]
          }
        ]
      }
    },
    {
      "type": "no_horizontal_overflow",
      "label": "no_horizontal_overflow",
      "status": "passed",
      "evidence": {
        "max_overflow_px": 1,
        "overflow_px": [
          0,
          0,
          0,
          0
        ],
        "bounds_overflow_px": [
          0,
          0,
          0,
          0
        ],
        "overflow_offender_counts": [
          0,
          0,
          0,
          0
        ],
        "viewports": [
          "desktop",
          "phone",
          "ipad-mini",
          "ipad"
        ]
      }
    },
    {
      "type": "no_fatal_console_errors",
      "label": "no_fatal_console_errors",
      "status": "passed",
      "evidence": {
        "console_fatal_count": 0,
        "page_error_count": 0,
        "total_console_fatal_count": 0,
        "total_page_error_count": 0,
        "allowed_console_fatal_count": 0,
        "explicitly_allowed_console_fatal_count": 0,
        "allowed_expected_network_mock_console_count": 0,
        "allowed_expected_network_mock_console_events": [],
        "allowed_page_error_count": 0,
        "allowed_console_texts": [],
        "allowed_console_patterns": [],
        "allowed_page_error_texts": [],
        "allowed_page_error_patterns": []
      }
    },
    {
      "type": "no_console_warnings",
      "label": "no_console_warnings",
      "status": "passed",
      "evidence": {
        "console_warning_count": 0,
        "total_console_warning_count": 0,
        "allowed_console_warning_count": 0,
        "allowed_console_texts": [],
        "allowed_console_patterns": [],
        "unallowed_console_warning_samples": [],
        "allowed_console_warning_samples": []
      }
    }
  ],
  "summary": "riddle-site-v443-good-catch-warning-hygiene passed 9 check(s) across 4 viewport(s) (desktop, phone, ipad-mini, ipad).",
  "captured_at": "2026-05-16T23:47:12.301Z",
  "evidence": {
    "version": "riddle-proof.profile-evidence.v1",
    "profile_name": "riddle-site-v443-good-catch-warning-hygiene",
    "target_url": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
    "baseline_policy": "invariant_only",
    "captured_at": "2026-05-16T23:47:12.301Z",
    "viewports": [
      {
        "name": "desktop",
        "width": 1280,
        "height": 900,
        "url": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
        "route": {
          "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
          "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "expected_path": "/proof/good-catches/evidence/",
          "matched": true,
          "http_status": 200
        },
        "title": "Evidence Manifest - Good Catch Diary | Riddle",
        "body_text_length": 89709,
        "body_text_sample": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Sign Up Log In ← 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. 36 catch manifests with a reusable proof pattern. 3+ artifact links per catch: screenshot, run receipt, and console capture. 0 source Designed to make browser-visible proof understandable without code access. Profiles Each manifest points toward a repeatable audit profile. Table of contents ALSO THE SALES PITCH Catch 1 Profile Mode docs lagged behind proof primitives This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Catch 2 llms.txt hid the raw proof bundle This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Catch 3 Proof example bundle drifted behind the agent-proof contract This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Catch 4 Agent Guide omitted the proof loop This is an agent-surface catch on Riddle itself: the docs were healthy as browser API docs, but proof found the missing bridge to the productized evidence loop agents should reuse. Catch 5 Riddle had no llms.txt agent index This is an agent-discovery catch: the public docs were individually healthy, but browser proof found that agents had no compact starting point for the product surface. Catch 6 Sitemap hid public Riddle routes from crawlers This is a machine-consumable discovery catch: the product looked fine to humans, but browser proof found that crawler and agent discovery was stale. Catch 7 Robots blocked agent markdown docs This is an agent-surface catch: the human docs existed, but crawler policy still discouraged the machine-readable versions that agents should consume. Catch 8 Builder saved link said home page This is a semantic UI contract catch: the product could save and open the game, but the browser proof caught that the call to action named the wrong destination. Catch 9 Playground Batch curl hid async mode This is a generated-command contract catch: Riddle Proof found that the UI worked but the integration command taught a subtly wrong async API call. Catch 10 Playground async results hid the job receipt This is a receipt-traceability catch: the artifact UI looked successful but omitted the identifier users, support, and agents need to connect the result back to a durable Riddle proof bundle. Catch 11 Billing Stripe hydration failed invisibly This is a screenshot-is-not-enough catch: the UI looked healthy after recovery, but the browser still recorded a React hydration failure that would be easy to miss in manual review. Catch 12 Playground Script failed jobs looked neutral This is an async artifact-status catch: the product preserved partial evidence but hid the terminal failure semantics users and support need. Catch 13 Dashboard terminal jobs leaked raw service statuses This is a practical dashboard-audit catch: every row existed and the page was clean, but the product leaked backend vocabulary where users needed clear terminal-state meaning. Catch 14 Playground Script assumed artifacts_url This is an async-contract catch: the UI looked ready to run, but a valid response shape left users polling a malformed URL instead of seeing the artifact they requested. Catch 15 Playground timeout hid the artifact reason This is an artifact-trust catch: the proof showed the product kept a useful receipt but hid the reason the receipt mattered, making timeout triage weaker than the underlying Riddle evidence. Catch 16 Dashboard balance failure looked like zero credits This is a support-quality catch: the page looked healthy enough to trust, but the balance widget silently converted a backend failure into an apparent zero-credit account. Catch 17 Auto-recharge disable hid the backend error This is a billing-support catch: the account state stayed safe, but the UI hid the backend reason a user or support person would need to understand the failed settings change. Catch 18 Playground hid structured workflow errors This is a support-facing API-tool catch: the workflow failure was handled, but the UI hid the reason a user or support person would need to debug the request. Catch 19 Payment-method setup hid the backend error This is a practical checkout/settings catch: the workflow failed safely, but the product hid the backend reason a user or support team would need. Catch 20 Handled API-key revoke failure still logged as fatal This catch is useful because the user-visible fallback was already correct. Riddle Proof still found the hidden app-level error that would make browser evidence noisy and mask real regressions later. Catch 21 A structured API-key error crashed the dashboard This is a strong authenticated-product catch: the request was right and the API failure was realistic, but the UI crashed because it rendered an object as a React child. Catch 22 Auto-recharge stayed on after a failed save This is a settings-integrity catch: a route and error toast can both be green while the UI lies about whether the account setting was actually saved. Catch 23 A failed dashboard job looked queued This is a product-quality dashboard catch: the page was alive and authenticated, but the business meaning of a failed browser job was wrong. Catch 24 Authenticated nav overflowed on billing This shows why browser proof should stay on after the business flow succeeds: the workflow was green, but the authenticated product shell was visibly broken. Catch 25 A malformed login token opened the builder This is the kind of auth-boundary bug that looks fine in the browser until the proof asks whether the privileged UI opened from a valid token or just a friendly HTTP shape. Catch 26 Logout worked, until the delayed build came back The browser proof makes race conditions reproducible: not by reading code, but by controlling timing and checking what the user sees after the stale response lands. Catch 27 Canceling save still leaked the draft This is the perfect “visually green, semantically wrong” catch: the browser reached the right page, but the network receipt proved the app submitted stale user data. Catch 28 A rainbow flag was saved as a broken emoji This is a crisp example of why proof receipts should include network payload evidence: the page looked fine, but the saved data was corrupt. Catch 29 The player ignored its own layout metadata The route was technically healthy, but the user experience was broken. Riddle Proof turns that embedded-layout nuance into a concrete receipt. Catch 30 A manifest row rendered a broken saved game This is a real product-integrity check: the page can look routable while the underlying artifact is gone. Riddle Proof verifies the browser can actually reach the thing users need. Catch 31 The game worked, but the iframe was clipped 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. Catch 32 The link worked in production, but escaped mounted preview Preview-only route bugs are expensive because reviewers click previews, not production. Riddle Proof checks the same artifact a PR reviewer sees. Catch 33 A fixed nav made full-screen routes one nav-height too tall 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. Catch 34 A green semantic state still hid the win result A test can be technically green while the customer experience is still unclear. Riddle Proof keeps semantic checks and screenshots in the same receipt. Catch 35 Restart-only textur",
        "scroll_width": 1280,
        "client_width": 1280,
        "overflow_px": 0,
        "bounds_overflow_px": 0,
        "overflow_offenders": [],
        "selectors": {
          ".manifest-stack": {
            "count": 1,
            "visible_count": 1
          },
          ".manifest-card": {
            "count": 36,
            "visible_count": 36
          }
        },
        "frames": {},
        "text_sequences": {
          ".manifest-stack": {
            "count": 1,
            "visible_count": 1,
            "texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ],
            "visible_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ],
            "match_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so agents can reuse audit/proof profiles without rediscovering the primitives from dogfood notes. Bug: The public Riddle Proof docs explained profile text semantics, but they did not document the Profile Mode primitives that recent real proof runs were using: network mocks, repeated and delayed responses, request-body receipts, setup actions, and iframe checks. Why normal checks missed it: The docs page loaded cleanly, the existing Profile Text Semantics section was visible, the raw markdown route returned 200, overflow stayed at 0px, and fatal console evidence was clean. The drift was semantic: the rendered and machine-consumable docs had not caught up with the reusable proof contract. Why this sells Riddle Proof: This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Reusable profile seed: For proof-product docs: prove rendered docs, raw markdown body terms, viewport layout, fatal-console health, and public proof-story promotion together so the human and agent surfaces stay aligned. What the browser run checked Loaded /docs/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the existing Profile Text Semantics section remained visible while Profile Mode and the newer profile primitives were missing. Fetched /docs/riddle-proof/markdown.md and asserted the raw markdown carried Profile Mode, network_mocks, repeat_responses, delay_ms, request_body_contains, setup_actions, frame_text_visible, and frame_url_equals. Re-ran the same rendered and markdown contract on static Preview and production after adding the Profile Mode section. Proof lesson The proof surface itself needs proof. When a package adds or relies on reusable audit primitives, public rendered docs and raw agent-facing markdown should be tested as product contracts. ARTIFACT TYPE WHAT IT PROVES Failing Profile Mode docs screenshot → PNG screenshot Shows the production Riddle Proof docs before the Profile Mode section existed, while the same run checked rendered and markdown terms. Failing Profile Mode receipt job_bb0aa65a → JSON metadata Records that the page was otherwise healthy while rendered docs and raw markdown missed the Profile Mode contract. Failing Profile Mode console capture → JSON logs Shows the initial failure was not browser runtime noise; the public docs contract itself was incomplete. Static Preview receipt job_88ad03aa → JSON metadata Shows the updated Profile Mode docs and markdown contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate docs with the Profile Mode section present. Final production receipt job_22ee6a7c → JSON metadata Shows the fixed production docs passed all 14 checks across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows the fixed public Riddle Proof docs with Profile Mode live in production. Catch 2 llms.txt hid the raw proof bundle Back to top May 16, 2026 < $0.01 Riddle site llms.txt proof receipts Claim: Riddle llms.txt should link agents directly to the raw proof example bundle, not only to the human proof example page. Bug: The public llms.txt agent index linked to the human proof example page, but it did not link directly to the raw machine-consumable proof bundle that agents should ingest. Why normal checks missed it: The file itself returned 200 text/plain, the human proof example page returned 200, the raw JSON bundle returned 200 application/json, overflow stayed at 0px, and fatal console evidence was clean. The missing contract was discovery: agents had to infer the raw proof receipt from the human page. Why this sells Riddle Proof: This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Reusable profile seed: For llms.txt and agent indexes: prove the file route, raw linked bodies, neighboring human review page, viewport layout, fatal-console health, and direct links to machine-consumable artifacts together. What the browser run checked Loaded /llms.txt across desktop, phone, iPad Mini, and iPad. Fetched /llms.txt and asserted it contained proof receipts, the Evidence Manifest, the proof example page, and the raw proof bundle URL. Fetched /examples/riddle-proof/ and asserted the human review page still showed Proof Bundle Example, Raw bundle, and Bring your agent; Riddle brings the proof. Fetched /examples/riddle-proof/docs-live-proof-bundle.json and asserted the raw JSON carried riddle-proof.example-bundle.v1, proof receipts, agent-proof, publicArtifactUrls, and the product promise. Re-ran the same contract on static Preview and production after adding the raw bundle link and static llms guard. Proof lesson Agent indexes should point to raw receipts, not only review pages. If a product publishes machine-consumable proof artifacts, the compact discovery surface needs to expose them directly. ARTIFACT TYPE WHAT IT PROVES Failing llms.txt screenshot → PNG screenshot Shows the production llms.txt page while the same proof run checked that the raw proof bundle URL was missing from the agent index. Failing llms.txt receipt job_a5d4383b → JSON metadata Records that llms.txt, the proof example page, and the raw proof bundle were healthy while the raw bundle link was absent from the agent index. Failing llms.txt console capture → JSON logs Shows the initial failure was not browser runtime noise; the discovery contract itself was incomplete. Static Preview receipt job_df22fbc2 → JSON metadata Shows the updated llms.txt and raw bundle contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate llms.txt with the Raw proof bundle JSON link present. Final production receipt job_ceafae1b → JSON metadata Shows the fixed production llms.txt passed the proof-bundle discovery contract across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows production llms.txt after the raw proof bundle link shipped. Catch 3 Proof example bundle drifted behind the agent-proof contract Back to top May 16, 2026 < $0.01 Riddle site proof receipts agent-proof Claim: Riddle public proof examples should keep the rendered review page, artifact links, and raw agent-facing proof bundle aligned with the current proof-loop contract. Bug: The public proof example page rendered cleanly and linked to healthy artifacts, but the raw JSON bundle that agents consume was stale and did not carry proof receipts, the Bring your agent; Riddle brings the proof promise, or the agent-proof contract. Why normal checks missed it: The human page looked trustworthy: the route loaded, the proof example status was passed, all seven artifact links were healthy, overflow was 0px, and fatal console evidence was clean. The drift lived in the machine-consumable proof contract behind the page. Why this sells Riddle Proof: This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Reusable profile seed: For public proof examples: prove rendered status, artifact link quality, raw JSON body terms, viewport layout, and fatal-console health together so human and agent surfaces cannot drift independently. What the browser run checked Loaded /examples/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the proof example page "
            ],
            "visible_match_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so agents can reuse audit/proof profiles without rediscovering the primitives from dogfood notes. Bug: The public Riddle Proof docs explained profile text semantics, but they did not document the Profile Mode primitives that recent real proof runs were using: network mocks, repeated and delayed responses, request-body receipts, setup actions, and iframe checks. Why normal checks missed it: The docs page loaded cleanly, the existing Profile Text Semantics section was visible, the raw markdown route returned 200, overflow stayed at 0px, and fatal console evidence was clean. The drift was semantic: the rendered and machine-consumable docs had not caught up with the reusable proof contract. Why this sells Riddle Proof: This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Reusable profile seed: For proof-product docs: prove rendered docs, raw markdown body terms, viewport layout, fatal-console health, and public proof-story promotion together so the human and agent surfaces stay aligned. What the browser run checked Loaded /docs/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the existing Profile Text Semantics section remained visible while Profile Mode and the newer profile primitives were missing. Fetched /docs/riddle-proof/markdown.md and asserted the raw markdown carried Profile Mode, network_mocks, repeat_responses, delay_ms, request_body_contains, setup_actions, frame_text_visible, and frame_url_equals. Re-ran the same rendered and markdown contract on static Preview and production after adding the Profile Mode section. Proof lesson The proof surface itself needs proof. When a package adds or relies on reusable audit primitives, public rendered docs and raw agent-facing markdown should be tested as product contracts. ARTIFACT TYPE WHAT IT PROVES Failing Profile Mode docs screenshot → PNG screenshot Shows the production Riddle Proof docs before the Profile Mode section existed, while the same run checked rendered and markdown terms. Failing Profile Mode receipt job_bb0aa65a → JSON metadata Records that the page was otherwise healthy while rendered docs and raw markdown missed the Profile Mode contract. Failing Profile Mode console capture → JSON logs Shows the initial failure was not browser runtime noise; the public docs contract itself was incomplete. Static Preview receipt job_88ad03aa → JSON metadata Shows the updated Profile Mode docs and markdown contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate docs with the Profile Mode section present. Final production receipt job_22ee6a7c → JSON metadata Shows the fixed production docs passed all 14 checks across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows the fixed public Riddle Proof docs with Profile Mode live in production. Catch 2 llms.txt hid the raw proof bundle Back to top May 16, 2026 < $0.01 Riddle site llms.txt proof receipts Claim: Riddle llms.txt should link agents directly to the raw proof example bundle, not only to the human proof example page. Bug: The public llms.txt agent index linked to the human proof example page, but it did not link directly to the raw machine-consumable proof bundle that agents should ingest. Why normal checks missed it: The file itself returned 200 text/plain, the human proof example page returned 200, the raw JSON bundle returned 200 application/json, overflow stayed at 0px, and fatal console evidence was clean. The missing contract was discovery: agents had to infer the raw proof receipt from the human page. Why this sells Riddle Proof: This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Reusable profile seed: For llms.txt and agent indexes: prove the file route, raw linked bodies, neighboring human review page, viewport layout, fatal-console health, and direct links to machine-consumable artifacts together. What the browser run checked Loaded /llms.txt across desktop, phone, iPad Mini, and iPad. Fetched /llms.txt and asserted it contained proof receipts, the Evidence Manifest, the proof example page, and the raw proof bundle URL. Fetched /examples/riddle-proof/ and asserted the human review page still showed Proof Bundle Example, Raw bundle, and Bring your agent; Riddle brings the proof. Fetched /examples/riddle-proof/docs-live-proof-bundle.json and asserted the raw JSON carried riddle-proof.example-bundle.v1, proof receipts, agent-proof, publicArtifactUrls, and the product promise. Re-ran the same contract on static Preview and production after adding the raw bundle link and static llms guard. Proof lesson Agent indexes should point to raw receipts, not only review pages. If a product publishes machine-consumable proof artifacts, the compact discovery surface needs to expose them directly. ARTIFACT TYPE WHAT IT PROVES Failing llms.txt screenshot → PNG screenshot Shows the production llms.txt page while the same proof run checked that the raw proof bundle URL was missing from the agent index. Failing llms.txt receipt job_a5d4383b → JSON metadata Records that llms.txt, the proof example page, and the raw proof bundle were healthy while the raw bundle link was absent from the agent index. Failing llms.txt console capture → JSON logs Shows the initial failure was not browser runtime noise; the discovery contract itself was incomplete. Static Preview receipt job_df22fbc2 → JSON metadata Shows the updated llms.txt and raw bundle contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate llms.txt with the Raw proof bundle JSON link present. Final production receipt job_ceafae1b → JSON metadata Shows the fixed production llms.txt passed the proof-bundle discovery contract across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows production llms.txt after the raw proof bundle link shipped. Catch 3 Proof example bundle drifted behind the agent-proof contract Back to top May 16, 2026 < $0.01 Riddle site proof receipts agent-proof Claim: Riddle public proof examples should keep the rendered review page, artifact links, and raw agent-facing proof bundle aligned with the current proof-loop contract. Bug: The public proof example page rendered cleanly and linked to healthy artifacts, but the raw JSON bundle that agents consume was stale and did not carry proof receipts, the Bring your agent; Riddle brings the proof promise, or the agent-proof contract. Why normal checks missed it: The human page looked trustworthy: the route loaded, the proof example status was passed, all seven artifact links were healthy, overflow was 0px, and fatal console evidence was clean. The drift lived in the machine-consumable proof contract behind the page. Why this sells Riddle Proof: This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Reusable profile seed: For public proof examples: prove rendered status, artifact link quality, raw JSON body terms, viewport layout, and fatal-console health together so human and agent surfaces cannot drift independently. What the browser run checked Loaded /examples/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the proof example page "
            ]
          }
        },
        "text_matches": {},
        "http_statuses": {},
        "link_statuses": {},
        "setup_action_results": [],
        "screenshot_label": "riddle-site-v443-good-catch-warning-hygiene-desktop"
      },
      {
        "name": "phone",
        "width": 390,
        "height": 844,
        "url": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
        "route": {
          "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
          "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "expected_path": "/proof/good-catches/evidence/",
          "matched": true,
          "http_status": 200
        },
        "title": "Evidence Manifest - Good Catch Diary | Riddle",
        "body_text_length": 88611,
        "body_text_sample": "Skip to main content Riddle ← 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. 36 catch manifests with a reusable proof pattern. 3+ artifact links per catch: screenshot, run receipt, and console capture. 0 source Designed to make browser-visible proof understandable without code access. Profiles Each manifest points toward a repeatable audit profile. Table of contents ALSO THE SALES PITCH Catch 1 Profile Mode docs lagged behind proof primitives This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Catch 2 llms.txt hid the raw proof bundle This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Catch 3 Proof example bundle drifted behind the agent-proof contract This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Catch 4 Agent Guide omitted the proof loop This is an agent-surface catch on Riddle itself: the docs were healthy as browser API docs, but proof found the missing bridge to the productized evidence loop agents should reuse. Catch 5 Riddle had no llms.txt agent index This is an agent-discovery catch: the public docs were individually healthy, but browser proof found that agents had no compact starting point for the product surface. Catch 6 Sitemap hid public Riddle routes from crawlers This is a machine-consumable discovery catch: the product looked fine to humans, but browser proof found that crawler and agent discovery was stale. Catch 7 Robots blocked agent markdown docs This is an agent-surface catch: the human docs existed, but crawler policy still discouraged the machine-readable versions that agents should consume. Catch 8 Builder saved link said home page This is a semantic UI contract catch: the product could save and open the game, but the browser proof caught that the call to action named the wrong destination. Catch 9 Playground Batch curl hid async mode This is a generated-command contract catch: Riddle Proof found that the UI worked but the integration command taught a subtly wrong async API call. Catch 10 Playground async results hid the job receipt This is a receipt-traceability catch: the artifact UI looked successful but omitted the identifier users, support, and agents need to connect the result back to a durable Riddle proof bundle. Catch 11 Billing Stripe hydration failed invisibly This is a screenshot-is-not-enough catch: the UI looked healthy after recovery, but the browser still recorded a React hydration failure that would be easy to miss in manual review. Catch 12 Playground Script failed jobs looked neutral This is an async artifact-status catch: the product preserved partial evidence but hid the terminal failure semantics users and support need. Catch 13 Dashboard terminal jobs leaked raw service statuses This is a practical dashboard-audit catch: every row existed and the page was clean, but the product leaked backend vocabulary where users needed clear terminal-state meaning. Catch 14 Playground Script assumed artifacts_url This is an async-contract catch: the UI looked ready to run, but a valid response shape left users polling a malformed URL instead of seeing the artifact they requested. Catch 15 Playground timeout hid the artifact reason This is an artifact-trust catch: the proof showed the product kept a useful receipt but hid the reason the receipt mattered, making timeout triage weaker than the underlying Riddle evidence. Catch 16 Dashboard balance failure looked like zero credits This is a support-quality catch: the page looked healthy enough to trust, but the balance widget silently converted a backend failure into an apparent zero-credit account. Catch 17 Auto-recharge disable hid the backend error This is a billing-support catch: the account state stayed safe, but the UI hid the backend reason a user or support person would need to understand the failed settings change. Catch 18 Playground hid structured workflow errors This is a support-facing API-tool catch: the workflow failure was handled, but the UI hid the reason a user or support person would need to debug the request. Catch 19 Payment-method setup hid the backend error This is a practical checkout/settings catch: the workflow failed safely, but the product hid the backend reason a user or support team would need. Catch 20 Handled API-key revoke failure still logged as fatal This catch is useful because the user-visible fallback was already correct. Riddle Proof still found the hidden app-level error that would make browser evidence noisy and mask real regressions later. Catch 21 A structured API-key error crashed the dashboard This is a strong authenticated-product catch: the request was right and the API failure was realistic, but the UI crashed because it rendered an object as a React child. Catch 22 Auto-recharge stayed on after a failed save This is a settings-integrity catch: a route and error toast can both be green while the UI lies about whether the account setting was actually saved. Catch 23 A failed dashboard job looked queued This is a product-quality dashboard catch: the page was alive and authenticated, but the business meaning of a failed browser job was wrong. Catch 24 Authenticated nav overflowed on billing This shows why browser proof should stay on after the business flow succeeds: the workflow was green, but the authenticated product shell was visibly broken. Catch 25 A malformed login token opened the builder This is the kind of auth-boundary bug that looks fine in the browser until the proof asks whether the privileged UI opened from a valid token or just a friendly HTTP shape. Catch 26 Logout worked, until the delayed build came back The browser proof makes race conditions reproducible: not by reading code, but by controlling timing and checking what the user sees after the stale response lands. Catch 27 Canceling save still leaked the draft This is the perfect “visually green, semantically wrong” catch: the browser reached the right page, but the network receipt proved the app submitted stale user data. Catch 28 A rainbow flag was saved as a broken emoji This is a crisp example of why proof receipts should include network payload evidence: the page looked fine, but the saved data was corrupt. Catch 29 The player ignored its own layout metadata The route was technically healthy, but the user experience was broken. Riddle Proof turns that embedded-layout nuance into a concrete receipt. Catch 30 A manifest row rendered a broken saved game This is a real product-integrity check: the page can look routable while the underlying artifact is gone. Riddle Proof verifies the browser can actually reach the thing users need. Catch 31 The game worked, but the iframe was clipped 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. Catch 32 The link worked in production, but escaped mounted preview Preview-only route bugs are expensive because reviewers click previews, not production. Riddle Proof checks the same artifact a PR reviewer sees. Catch 33 A fixed nav made full-screen routes one nav-height too tall 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. Catch 34 A green semantic state still hid the win result A test can be technically green while the customer experience is still unclear. Riddle Proof keeps semantic checks and screenshots in the same receipt. Catch 35 Restart-only texture errors after gameplay looked fine Recovery paths and",
        "scroll_width": 390,
        "client_width": 390,
        "overflow_px": 0,
        "bounds_overflow_px": 0,
        "overflow_offenders": [],
        "selectors": {
          ".manifest-stack": {
            "count": 1,
            "visible_count": 1
          },
          ".manifest-card": {
            "count": 36,
            "visible_count": 36
          }
        },
        "frames": {},
        "text_sequences": {
          ".manifest-stack": {
            "count": 1,
            "visible_count": 1,
            "texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ],
            "visible_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ],
            "match_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so agents can reuse audit/proof profiles without rediscovering the primitives from dogfood notes. Bug: The public Riddle Proof docs explained profile text semantics, but they did not document the Profile Mode primitives that recent real proof runs were using: network mocks, repeated and delayed responses, request-body receipts, setup actions, and iframe checks. Why normal checks missed it: The docs page loaded cleanly, the existing Profile Text Semantics section was visible, the raw markdown route returned 200, overflow stayed at 0px, and fatal console evidence was clean. The drift was semantic: the rendered and machine-consumable docs had not caught up with the reusable proof contract. Why this sells Riddle Proof: This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Reusable profile seed: For proof-product docs: prove rendered docs, raw markdown body terms, viewport layout, fatal-console health, and public proof-story promotion together so the human and agent surfaces stay aligned. What the browser run checked Loaded /docs/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the existing Profile Text Semantics section remained visible while Profile Mode and the newer profile primitives were missing. Fetched /docs/riddle-proof/markdown.md and asserted the raw markdown carried Profile Mode, network_mocks, repeat_responses, delay_ms, request_body_contains, setup_actions, frame_text_visible, and frame_url_equals. Re-ran the same rendered and markdown contract on static Preview and production after adding the Profile Mode section. Proof lesson The proof surface itself needs proof. When a package adds or relies on reusable audit primitives, public rendered docs and raw agent-facing markdown should be tested as product contracts. Failing Profile Mode docs screenshot → PNG screenshot Shows the production Riddle Proof docs before the Profile Mode section existed, while the same run checked rendered and markdown terms. Failing Profile Mode receipt job_bb0aa65a → JSON metadata Records that the page was otherwise healthy while rendered docs and raw markdown missed the Profile Mode contract. Failing Profile Mode console capture → JSON logs Shows the initial failure was not browser runtime noise; the public docs contract itself was incomplete. Static Preview receipt job_88ad03aa → JSON metadata Shows the updated Profile Mode docs and markdown contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate docs with the Profile Mode section present. Final production receipt job_22ee6a7c → JSON metadata Shows the fixed production docs passed all 14 checks across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows the fixed public Riddle Proof docs with Profile Mode live in production. Catch 2 llms.txt hid the raw proof bundle Back to top May 16, 2026 < $0.01 Riddle site llms.txt proof receipts Claim: Riddle llms.txt should link agents directly to the raw proof example bundle, not only to the human proof example page. Bug: The public llms.txt agent index linked to the human proof example page, but it did not link directly to the raw machine-consumable proof bundle that agents should ingest. Why normal checks missed it: The file itself returned 200 text/plain, the human proof example page returned 200, the raw JSON bundle returned 200 application/json, overflow stayed at 0px, and fatal console evidence was clean. The missing contract was discovery: agents had to infer the raw proof receipt from the human page. Why this sells Riddle Proof: This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Reusable profile seed: For llms.txt and agent indexes: prove the file route, raw linked bodies, neighboring human review page, viewport layout, fatal-console health, and direct links to machine-consumable artifacts together. What the browser run checked Loaded /llms.txt across desktop, phone, iPad Mini, and iPad. Fetched /llms.txt and asserted it contained proof receipts, the Evidence Manifest, the proof example page, and the raw proof bundle URL. Fetched /examples/riddle-proof/ and asserted the human review page still showed Proof Bundle Example, Raw bundle, and Bring your agent; Riddle brings the proof. Fetched /examples/riddle-proof/docs-live-proof-bundle.json and asserted the raw JSON carried riddle-proof.example-bundle.v1, proof receipts, agent-proof, publicArtifactUrls, and the product promise. Re-ran the same contract on static Preview and production after adding the raw bundle link and static llms guard. Proof lesson Agent indexes should point to raw receipts, not only review pages. If a product publishes machine-consumable proof artifacts, the compact discovery surface needs to expose them directly. Failing llms.txt screenshot → PNG screenshot Shows the production llms.txt page while the same proof run checked that the raw proof bundle URL was missing from the agent index. Failing llms.txt receipt job_a5d4383b → JSON metadata Records that llms.txt, the proof example page, and the raw proof bundle were healthy while the raw bundle link was absent from the agent index. Failing llms.txt console capture → JSON logs Shows the initial failure was not browser runtime noise; the discovery contract itself was incomplete. Static Preview receipt job_df22fbc2 → JSON metadata Shows the updated llms.txt and raw bundle contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate llms.txt with the Raw proof bundle JSON link present. Final production receipt job_ceafae1b → JSON metadata Shows the fixed production llms.txt passed the proof-bundle discovery contract across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows production llms.txt after the raw proof bundle link shipped. Catch 3 Proof example bundle drifted behind the agent-proof contract Back to top May 16, 2026 < $0.01 Riddle site proof receipts agent-proof Claim: Riddle public proof examples should keep the rendered review page, artifact links, and raw agent-facing proof bundle aligned with the current proof-loop contract. Bug: The public proof example page rendered cleanly and linked to healthy artifacts, but the raw JSON bundle that agents consume was stale and did not carry proof receipts, the Bring your agent; Riddle brings the proof promise, or the agent-proof contract. Why normal checks missed it: The human page looked trustworthy: the route loaded, the proof example status was passed, all seven artifact links were healthy, overflow was 0px, and fatal console evidence was clean. The drift lived in the machine-consumable proof contract behind the page. Why this sells Riddle Proof: This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Reusable profile seed: For public proof examples: prove rendered status, artifact link quality, raw JSON body terms, viewport layout, and fatal-console health together so human and agent surfaces cannot drift independently. What the browser run checked Loaded /examples/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the proof example page rendered Proof Bundle Example, passed, live-url, and Raw b"
            ],
            "visible_match_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so agents can reuse audit/proof profiles without rediscovering the primitives from dogfood notes. Bug: The public Riddle Proof docs explained profile text semantics, but they did not document the Profile Mode primitives that recent real proof runs were using: network mocks, repeated and delayed responses, request-body receipts, setup actions, and iframe checks. Why normal checks missed it: The docs page loaded cleanly, the existing Profile Text Semantics section was visible, the raw markdown route returned 200, overflow stayed at 0px, and fatal console evidence was clean. The drift was semantic: the rendered and machine-consumable docs had not caught up with the reusable proof contract. Why this sells Riddle Proof: This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Reusable profile seed: For proof-product docs: prove rendered docs, raw markdown body terms, viewport layout, fatal-console health, and public proof-story promotion together so the human and agent surfaces stay aligned. What the browser run checked Loaded /docs/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the existing Profile Text Semantics section remained visible while Profile Mode and the newer profile primitives were missing. Fetched /docs/riddle-proof/markdown.md and asserted the raw markdown carried Profile Mode, network_mocks, repeat_responses, delay_ms, request_body_contains, setup_actions, frame_text_visible, and frame_url_equals. Re-ran the same rendered and markdown contract on static Preview and production after adding the Profile Mode section. Proof lesson The proof surface itself needs proof. When a package adds or relies on reusable audit primitives, public rendered docs and raw agent-facing markdown should be tested as product contracts. Failing Profile Mode docs screenshot → PNG screenshot Shows the production Riddle Proof docs before the Profile Mode section existed, while the same run checked rendered and markdown terms. Failing Profile Mode receipt job_bb0aa65a → JSON metadata Records that the page was otherwise healthy while rendered docs and raw markdown missed the Profile Mode contract. Failing Profile Mode console capture → JSON logs Shows the initial failure was not browser runtime noise; the public docs contract itself was incomplete. Static Preview receipt job_88ad03aa → JSON metadata Shows the updated Profile Mode docs and markdown contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate docs with the Profile Mode section present. Final production receipt job_22ee6a7c → JSON metadata Shows the fixed production docs passed all 14 checks across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows the fixed public Riddle Proof docs with Profile Mode live in production. Catch 2 llms.txt hid the raw proof bundle Back to top May 16, 2026 < $0.01 Riddle site llms.txt proof receipts Claim: Riddle llms.txt should link agents directly to the raw proof example bundle, not only to the human proof example page. Bug: The public llms.txt agent index linked to the human proof example page, but it did not link directly to the raw machine-consumable proof bundle that agents should ingest. Why normal checks missed it: The file itself returned 200 text/plain, the human proof example page returned 200, the raw JSON bundle returned 200 application/json, overflow stayed at 0px, and fatal console evidence was clean. The missing contract was discovery: agents had to infer the raw proof receipt from the human page. Why this sells Riddle Proof: This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Reusable profile seed: For llms.txt and agent indexes: prove the file route, raw linked bodies, neighboring human review page, viewport layout, fatal-console health, and direct links to machine-consumable artifacts together. What the browser run checked Loaded /llms.txt across desktop, phone, iPad Mini, and iPad. Fetched /llms.txt and asserted it contained proof receipts, the Evidence Manifest, the proof example page, and the raw proof bundle URL. Fetched /examples/riddle-proof/ and asserted the human review page still showed Proof Bundle Example, Raw bundle, and Bring your agent; Riddle brings the proof. Fetched /examples/riddle-proof/docs-live-proof-bundle.json and asserted the raw JSON carried riddle-proof.example-bundle.v1, proof receipts, agent-proof, publicArtifactUrls, and the product promise. Re-ran the same contract on static Preview and production after adding the raw bundle link and static llms guard. Proof lesson Agent indexes should point to raw receipts, not only review pages. If a product publishes machine-consumable proof artifacts, the compact discovery surface needs to expose them directly. Failing llms.txt screenshot → PNG screenshot Shows the production llms.txt page while the same proof run checked that the raw proof bundle URL was missing from the agent index. Failing llms.txt receipt job_a5d4383b → JSON metadata Records that llms.txt, the proof example page, and the raw proof bundle were healthy while the raw bundle link was absent from the agent index. Failing llms.txt console capture → JSON logs Shows the initial failure was not browser runtime noise; the discovery contract itself was incomplete. Static Preview receipt job_df22fbc2 → JSON metadata Shows the updated llms.txt and raw bundle contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate llms.txt with the Raw proof bundle JSON link present. Final production receipt job_ceafae1b → JSON metadata Shows the fixed production llms.txt passed the proof-bundle discovery contract across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows production llms.txt after the raw proof bundle link shipped. Catch 3 Proof example bundle drifted behind the agent-proof contract Back to top May 16, 2026 < $0.01 Riddle site proof receipts agent-proof Claim: Riddle public proof examples should keep the rendered review page, artifact links, and raw agent-facing proof bundle aligned with the current proof-loop contract. Bug: The public proof example page rendered cleanly and linked to healthy artifacts, but the raw JSON bundle that agents consume was stale and did not carry proof receipts, the Bring your agent; Riddle brings the proof promise, or the agent-proof contract. Why normal checks missed it: The human page looked trustworthy: the route loaded, the proof example status was passed, all seven artifact links were healthy, overflow was 0px, and fatal console evidence was clean. The drift lived in the machine-consumable proof contract behind the page. Why this sells Riddle Proof: This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Reusable profile seed: For public proof examples: prove rendered status, artifact link quality, raw JSON body terms, viewport layout, and fatal-console health together so human and agent surfaces cannot drift independently. What the browser run checked Loaded /examples/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the proof example page rendered Proof Bundle Example, passed, live-url, and Raw b"
            ]
          }
        },
        "text_matches": {},
        "http_statuses": {},
        "link_statuses": {},
        "setup_action_results": [],
        "screenshot_label": "riddle-site-v443-good-catch-warning-hygiene-phone"
      },
      {
        "name": "ipad-mini",
        "width": 768,
        "height": 1024,
        "url": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
        "route": {
          "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
          "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "expected_path": "/proof/good-catches/evidence/",
          "matched": true,
          "http_status": 200
        },
        "title": "Evidence Manifest - Good Catch Diary | Riddle",
        "body_text_length": 88611,
        "body_text_sample": "Skip to main content Riddle ← 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. 36 catch manifests with a reusable proof pattern. 3+ artifact links per catch: screenshot, run receipt, and console capture. 0 source Designed to make browser-visible proof understandable without code access. Profiles Each manifest points toward a repeatable audit profile. Table of contents ALSO THE SALES PITCH Catch 1 Profile Mode docs lagged behind proof primitives This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Catch 2 llms.txt hid the raw proof bundle This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Catch 3 Proof example bundle drifted behind the agent-proof contract This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Catch 4 Agent Guide omitted the proof loop This is an agent-surface catch on Riddle itself: the docs were healthy as browser API docs, but proof found the missing bridge to the productized evidence loop agents should reuse. Catch 5 Riddle had no llms.txt agent index This is an agent-discovery catch: the public docs were individually healthy, but browser proof found that agents had no compact starting point for the product surface. Catch 6 Sitemap hid public Riddle routes from crawlers This is a machine-consumable discovery catch: the product looked fine to humans, but browser proof found that crawler and agent discovery was stale. Catch 7 Robots blocked agent markdown docs This is an agent-surface catch: the human docs existed, but crawler policy still discouraged the machine-readable versions that agents should consume. Catch 8 Builder saved link said home page This is a semantic UI contract catch: the product could save and open the game, but the browser proof caught that the call to action named the wrong destination. Catch 9 Playground Batch curl hid async mode This is a generated-command contract catch: Riddle Proof found that the UI worked but the integration command taught a subtly wrong async API call. Catch 10 Playground async results hid the job receipt This is a receipt-traceability catch: the artifact UI looked successful but omitted the identifier users, support, and agents need to connect the result back to a durable Riddle proof bundle. Catch 11 Billing Stripe hydration failed invisibly This is a screenshot-is-not-enough catch: the UI looked healthy after recovery, but the browser still recorded a React hydration failure that would be easy to miss in manual review. Catch 12 Playground Script failed jobs looked neutral This is an async artifact-status catch: the product preserved partial evidence but hid the terminal failure semantics users and support need. Catch 13 Dashboard terminal jobs leaked raw service statuses This is a practical dashboard-audit catch: every row existed and the page was clean, but the product leaked backend vocabulary where users needed clear terminal-state meaning. Catch 14 Playground Script assumed artifacts_url This is an async-contract catch: the UI looked ready to run, but a valid response shape left users polling a malformed URL instead of seeing the artifact they requested. Catch 15 Playground timeout hid the artifact reason This is an artifact-trust catch: the proof showed the product kept a useful receipt but hid the reason the receipt mattered, making timeout triage weaker than the underlying Riddle evidence. Catch 16 Dashboard balance failure looked like zero credits This is a support-quality catch: the page looked healthy enough to trust, but the balance widget silently converted a backend failure into an apparent zero-credit account. Catch 17 Auto-recharge disable hid the backend error This is a billing-support catch: the account state stayed safe, but the UI hid the backend reason a user or support person would need to understand the failed settings change. Catch 18 Playground hid structured workflow errors This is a support-facing API-tool catch: the workflow failure was handled, but the UI hid the reason a user or support person would need to debug the request. Catch 19 Payment-method setup hid the backend error This is a practical checkout/settings catch: the workflow failed safely, but the product hid the backend reason a user or support team would need. Catch 20 Handled API-key revoke failure still logged as fatal This catch is useful because the user-visible fallback was already correct. Riddle Proof still found the hidden app-level error that would make browser evidence noisy and mask real regressions later. Catch 21 A structured API-key error crashed the dashboard This is a strong authenticated-product catch: the request was right and the API failure was realistic, but the UI crashed because it rendered an object as a React child. Catch 22 Auto-recharge stayed on after a failed save This is a settings-integrity catch: a route and error toast can both be green while the UI lies about whether the account setting was actually saved. Catch 23 A failed dashboard job looked queued This is a product-quality dashboard catch: the page was alive and authenticated, but the business meaning of a failed browser job was wrong. Catch 24 Authenticated nav overflowed on billing This shows why browser proof should stay on after the business flow succeeds: the workflow was green, but the authenticated product shell was visibly broken. Catch 25 A malformed login token opened the builder This is the kind of auth-boundary bug that looks fine in the browser until the proof asks whether the privileged UI opened from a valid token or just a friendly HTTP shape. Catch 26 Logout worked, until the delayed build came back The browser proof makes race conditions reproducible: not by reading code, but by controlling timing and checking what the user sees after the stale response lands. Catch 27 Canceling save still leaked the draft This is the perfect “visually green, semantically wrong” catch: the browser reached the right page, but the network receipt proved the app submitted stale user data. Catch 28 A rainbow flag was saved as a broken emoji This is a crisp example of why proof receipts should include network payload evidence: the page looked fine, but the saved data was corrupt. Catch 29 The player ignored its own layout metadata The route was technically healthy, but the user experience was broken. Riddle Proof turns that embedded-layout nuance into a concrete receipt. Catch 30 A manifest row rendered a broken saved game This is a real product-integrity check: the page can look routable while the underlying artifact is gone. Riddle Proof verifies the browser can actually reach the thing users need. Catch 31 The game worked, but the iframe was clipped 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. Catch 32 The link worked in production, but escaped mounted preview Preview-only route bugs are expensive because reviewers click previews, not production. Riddle Proof checks the same artifact a PR reviewer sees. Catch 33 A fixed nav made full-screen routes one nav-height too tall 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. Catch 34 A green semantic state still hid the win result A test can be technically green while the customer experience is still unclear. Riddle Proof keeps semantic checks and screenshots in the same receipt. Catch 35 Restart-only texture errors after gameplay looked fine Recovery paths and",
        "scroll_width": 768,
        "client_width": 768,
        "overflow_px": 0,
        "bounds_overflow_px": 0,
        "overflow_offenders": [],
        "selectors": {
          ".manifest-stack": {
            "count": 1,
            "visible_count": 1
          },
          ".manifest-card": {
            "count": 36,
            "visible_count": 36
          }
        },
        "frames": {},
        "text_sequences": {
          ".manifest-stack": {
            "count": 1,
            "visible_count": 1,
            "texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ],
            "visible_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ],
            "match_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so agents can reuse audit/proof profiles without rediscovering the primitives from dogfood notes. Bug: The public Riddle Proof docs explained profile text semantics, but they did not document the Profile Mode primitives that recent real proof runs were using: network mocks, repeated and delayed responses, request-body receipts, setup actions, and iframe checks. Why normal checks missed it: The docs page loaded cleanly, the existing Profile Text Semantics section was visible, the raw markdown route returned 200, overflow stayed at 0px, and fatal console evidence was clean. The drift was semantic: the rendered and machine-consumable docs had not caught up with the reusable proof contract. Why this sells Riddle Proof: This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Reusable profile seed: For proof-product docs: prove rendered docs, raw markdown body terms, viewport layout, fatal-console health, and public proof-story promotion together so the human and agent surfaces stay aligned. What the browser run checked Loaded /docs/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the existing Profile Text Semantics section remained visible while Profile Mode and the newer profile primitives were missing. Fetched /docs/riddle-proof/markdown.md and asserted the raw markdown carried Profile Mode, network_mocks, repeat_responses, delay_ms, request_body_contains, setup_actions, frame_text_visible, and frame_url_equals. Re-ran the same rendered and markdown contract on static Preview and production after adding the Profile Mode section. Proof lesson The proof surface itself needs proof. When a package adds or relies on reusable audit primitives, public rendered docs and raw agent-facing markdown should be tested as product contracts. Failing Profile Mode docs screenshot → PNG screenshot Shows the production Riddle Proof docs before the Profile Mode section existed, while the same run checked rendered and markdown terms. Failing Profile Mode receipt job_bb0aa65a → JSON metadata Records that the page was otherwise healthy while rendered docs and raw markdown missed the Profile Mode contract. Failing Profile Mode console capture → JSON logs Shows the initial failure was not browser runtime noise; the public docs contract itself was incomplete. Static Preview receipt job_88ad03aa → JSON metadata Shows the updated Profile Mode docs and markdown contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate docs with the Profile Mode section present. Final production receipt job_22ee6a7c → JSON metadata Shows the fixed production docs passed all 14 checks across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows the fixed public Riddle Proof docs with Profile Mode live in production. Catch 2 llms.txt hid the raw proof bundle Back to top May 16, 2026 < $0.01 Riddle site llms.txt proof receipts Claim: Riddle llms.txt should link agents directly to the raw proof example bundle, not only to the human proof example page. Bug: The public llms.txt agent index linked to the human proof example page, but it did not link directly to the raw machine-consumable proof bundle that agents should ingest. Why normal checks missed it: The file itself returned 200 text/plain, the human proof example page returned 200, the raw JSON bundle returned 200 application/json, overflow stayed at 0px, and fatal console evidence was clean. The missing contract was discovery: agents had to infer the raw proof receipt from the human page. Why this sells Riddle Proof: This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Reusable profile seed: For llms.txt and agent indexes: prove the file route, raw linked bodies, neighboring human review page, viewport layout, fatal-console health, and direct links to machine-consumable artifacts together. What the browser run checked Loaded /llms.txt across desktop, phone, iPad Mini, and iPad. Fetched /llms.txt and asserted it contained proof receipts, the Evidence Manifest, the proof example page, and the raw proof bundle URL. Fetched /examples/riddle-proof/ and asserted the human review page still showed Proof Bundle Example, Raw bundle, and Bring your agent; Riddle brings the proof. Fetched /examples/riddle-proof/docs-live-proof-bundle.json and asserted the raw JSON carried riddle-proof.example-bundle.v1, proof receipts, agent-proof, publicArtifactUrls, and the product promise. Re-ran the same contract on static Preview and production after adding the raw bundle link and static llms guard. Proof lesson Agent indexes should point to raw receipts, not only review pages. If a product publishes machine-consumable proof artifacts, the compact discovery surface needs to expose them directly. Failing llms.txt screenshot → PNG screenshot Shows the production llms.txt page while the same proof run checked that the raw proof bundle URL was missing from the agent index. Failing llms.txt receipt job_a5d4383b → JSON metadata Records that llms.txt, the proof example page, and the raw proof bundle were healthy while the raw bundle link was absent from the agent index. Failing llms.txt console capture → JSON logs Shows the initial failure was not browser runtime noise; the discovery contract itself was incomplete. Static Preview receipt job_df22fbc2 → JSON metadata Shows the updated llms.txt and raw bundle contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate llms.txt with the Raw proof bundle JSON link present. Final production receipt job_ceafae1b → JSON metadata Shows the fixed production llms.txt passed the proof-bundle discovery contract across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows production llms.txt after the raw proof bundle link shipped. Catch 3 Proof example bundle drifted behind the agent-proof contract Back to top May 16, 2026 < $0.01 Riddle site proof receipts agent-proof Claim: Riddle public proof examples should keep the rendered review page, artifact links, and raw agent-facing proof bundle aligned with the current proof-loop contract. Bug: The public proof example page rendered cleanly and linked to healthy artifacts, but the raw JSON bundle that agents consume was stale and did not carry proof receipts, the Bring your agent; Riddle brings the proof promise, or the agent-proof contract. Why normal checks missed it: The human page looked trustworthy: the route loaded, the proof example status was passed, all seven artifact links were healthy, overflow was 0px, and fatal console evidence was clean. The drift lived in the machine-consumable proof contract behind the page. Why this sells Riddle Proof: This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Reusable profile seed: For public proof examples: prove rendered status, artifact link quality, raw JSON body terms, viewport layout, and fatal-console health together so human and agent surfaces cannot drift independently. What the browser run checked Loaded /examples/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the proof example page rendered Proof Bundle Example, passed, live-url, and Raw b"
            ],
            "visible_match_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so agents can reuse audit/proof profiles without rediscovering the primitives from dogfood notes. Bug: The public Riddle Proof docs explained profile text semantics, but they did not document the Profile Mode primitives that recent real proof runs were using: network mocks, repeated and delayed responses, request-body receipts, setup actions, and iframe checks. Why normal checks missed it: The docs page loaded cleanly, the existing Profile Text Semantics section was visible, the raw markdown route returned 200, overflow stayed at 0px, and fatal console evidence was clean. The drift was semantic: the rendered and machine-consumable docs had not caught up with the reusable proof contract. Why this sells Riddle Proof: This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Reusable profile seed: For proof-product docs: prove rendered docs, raw markdown body terms, viewport layout, fatal-console health, and public proof-story promotion together so the human and agent surfaces stay aligned. What the browser run checked Loaded /docs/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the existing Profile Text Semantics section remained visible while Profile Mode and the newer profile primitives were missing. Fetched /docs/riddle-proof/markdown.md and asserted the raw markdown carried Profile Mode, network_mocks, repeat_responses, delay_ms, request_body_contains, setup_actions, frame_text_visible, and frame_url_equals. Re-ran the same rendered and markdown contract on static Preview and production after adding the Profile Mode section. Proof lesson The proof surface itself needs proof. When a package adds or relies on reusable audit primitives, public rendered docs and raw agent-facing markdown should be tested as product contracts. Failing Profile Mode docs screenshot → PNG screenshot Shows the production Riddle Proof docs before the Profile Mode section existed, while the same run checked rendered and markdown terms. Failing Profile Mode receipt job_bb0aa65a → JSON metadata Records that the page was otherwise healthy while rendered docs and raw markdown missed the Profile Mode contract. Failing Profile Mode console capture → JSON logs Shows the initial failure was not browser runtime noise; the public docs contract itself was incomplete. Static Preview receipt job_88ad03aa → JSON metadata Shows the updated Profile Mode docs and markdown contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate docs with the Profile Mode section present. Final production receipt job_22ee6a7c → JSON metadata Shows the fixed production docs passed all 14 checks across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows the fixed public Riddle Proof docs with Profile Mode live in production. Catch 2 llms.txt hid the raw proof bundle Back to top May 16, 2026 < $0.01 Riddle site llms.txt proof receipts Claim: Riddle llms.txt should link agents directly to the raw proof example bundle, not only to the human proof example page. Bug: The public llms.txt agent index linked to the human proof example page, but it did not link directly to the raw machine-consumable proof bundle that agents should ingest. Why normal checks missed it: The file itself returned 200 text/plain, the human proof example page returned 200, the raw JSON bundle returned 200 application/json, overflow stayed at 0px, and fatal console evidence was clean. The missing contract was discovery: agents had to infer the raw proof receipt from the human page. Why this sells Riddle Proof: This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Reusable profile seed: For llms.txt and agent indexes: prove the file route, raw linked bodies, neighboring human review page, viewport layout, fatal-console health, and direct links to machine-consumable artifacts together. What the browser run checked Loaded /llms.txt across desktop, phone, iPad Mini, and iPad. Fetched /llms.txt and asserted it contained proof receipts, the Evidence Manifest, the proof example page, and the raw proof bundle URL. Fetched /examples/riddle-proof/ and asserted the human review page still showed Proof Bundle Example, Raw bundle, and Bring your agent; Riddle brings the proof. Fetched /examples/riddle-proof/docs-live-proof-bundle.json and asserted the raw JSON carried riddle-proof.example-bundle.v1, proof receipts, agent-proof, publicArtifactUrls, and the product promise. Re-ran the same contract on static Preview and production after adding the raw bundle link and static llms guard. Proof lesson Agent indexes should point to raw receipts, not only review pages. If a product publishes machine-consumable proof artifacts, the compact discovery surface needs to expose them directly. Failing llms.txt screenshot → PNG screenshot Shows the production llms.txt page while the same proof run checked that the raw proof bundle URL was missing from the agent index. Failing llms.txt receipt job_a5d4383b → JSON metadata Records that llms.txt, the proof example page, and the raw proof bundle were healthy while the raw bundle link was absent from the agent index. Failing llms.txt console capture → JSON logs Shows the initial failure was not browser runtime noise; the discovery contract itself was incomplete. Static Preview receipt job_df22fbc2 → JSON metadata Shows the updated llms.txt and raw bundle contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate llms.txt with the Raw proof bundle JSON link present. Final production receipt job_ceafae1b → JSON metadata Shows the fixed production llms.txt passed the proof-bundle discovery contract across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows production llms.txt after the raw proof bundle link shipped. Catch 3 Proof example bundle drifted behind the agent-proof contract Back to top May 16, 2026 < $0.01 Riddle site proof receipts agent-proof Claim: Riddle public proof examples should keep the rendered review page, artifact links, and raw agent-facing proof bundle aligned with the current proof-loop contract. Bug: The public proof example page rendered cleanly and linked to healthy artifacts, but the raw JSON bundle that agents consume was stale and did not carry proof receipts, the Bring your agent; Riddle brings the proof promise, or the agent-proof contract. Why normal checks missed it: The human page looked trustworthy: the route loaded, the proof example status was passed, all seven artifact links were healthy, overflow was 0px, and fatal console evidence was clean. The drift lived in the machine-consumable proof contract behind the page. Why this sells Riddle Proof: This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Reusable profile seed: For public proof examples: prove rendered status, artifact link quality, raw JSON body terms, viewport layout, and fatal-console health together so human and agent surfaces cannot drift independently. What the browser run checked Loaded /examples/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the proof example page rendered Proof Bundle Example, passed, live-url, and Raw b"
            ]
          }
        },
        "text_matches": {},
        "http_statuses": {},
        "link_statuses": {},
        "setup_action_results": [],
        "screenshot_label": "riddle-site-v443-good-catch-warning-hygiene-ipad-mini"
      },
      {
        "name": "ipad",
        "width": 820,
        "height": 1180,
        "url": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
        "route": {
          "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
          "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "expected_path": "/proof/good-catches/evidence/",
          "matched": true,
          "http_status": 200
        },
        "title": "Evidence Manifest - Good Catch Diary | Riddle",
        "body_text_length": 88611,
        "body_text_sample": "Skip to main content Riddle ← 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. 36 catch manifests with a reusable proof pattern. 3+ artifact links per catch: screenshot, run receipt, and console capture. 0 source Designed to make browser-visible proof understandable without code access. Profiles Each manifest points toward a repeatable audit profile. Table of contents ALSO THE SALES PITCH Catch 1 Profile Mode docs lagged behind proof primitives This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Catch 2 llms.txt hid the raw proof bundle This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Catch 3 Proof example bundle drifted behind the agent-proof contract This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Catch 4 Agent Guide omitted the proof loop This is an agent-surface catch on Riddle itself: the docs were healthy as browser API docs, but proof found the missing bridge to the productized evidence loop agents should reuse. Catch 5 Riddle had no llms.txt agent index This is an agent-discovery catch: the public docs were individually healthy, but browser proof found that agents had no compact starting point for the product surface. Catch 6 Sitemap hid public Riddle routes from crawlers This is a machine-consumable discovery catch: the product looked fine to humans, but browser proof found that crawler and agent discovery was stale. Catch 7 Robots blocked agent markdown docs This is an agent-surface catch: the human docs existed, but crawler policy still discouraged the machine-readable versions that agents should consume. Catch 8 Builder saved link said home page This is a semantic UI contract catch: the product could save and open the game, but the browser proof caught that the call to action named the wrong destination. Catch 9 Playground Batch curl hid async mode This is a generated-command contract catch: Riddle Proof found that the UI worked but the integration command taught a subtly wrong async API call. Catch 10 Playground async results hid the job receipt This is a receipt-traceability catch: the artifact UI looked successful but omitted the identifier users, support, and agents need to connect the result back to a durable Riddle proof bundle. Catch 11 Billing Stripe hydration failed invisibly This is a screenshot-is-not-enough catch: the UI looked healthy after recovery, but the browser still recorded a React hydration failure that would be easy to miss in manual review. Catch 12 Playground Script failed jobs looked neutral This is an async artifact-status catch: the product preserved partial evidence but hid the terminal failure semantics users and support need. Catch 13 Dashboard terminal jobs leaked raw service statuses This is a practical dashboard-audit catch: every row existed and the page was clean, but the product leaked backend vocabulary where users needed clear terminal-state meaning. Catch 14 Playground Script assumed artifacts_url This is an async-contract catch: the UI looked ready to run, but a valid response shape left users polling a malformed URL instead of seeing the artifact they requested. Catch 15 Playground timeout hid the artifact reason This is an artifact-trust catch: the proof showed the product kept a useful receipt but hid the reason the receipt mattered, making timeout triage weaker than the underlying Riddle evidence. Catch 16 Dashboard balance failure looked like zero credits This is a support-quality catch: the page looked healthy enough to trust, but the balance widget silently converted a backend failure into an apparent zero-credit account. Catch 17 Auto-recharge disable hid the backend error This is a billing-support catch: the account state stayed safe, but the UI hid the backend reason a user or support person would need to understand the failed settings change. Catch 18 Playground hid structured workflow errors This is a support-facing API-tool catch: the workflow failure was handled, but the UI hid the reason a user or support person would need to debug the request. Catch 19 Payment-method setup hid the backend error This is a practical checkout/settings catch: the workflow failed safely, but the product hid the backend reason a user or support team would need. Catch 20 Handled API-key revoke failure still logged as fatal This catch is useful because the user-visible fallback was already correct. Riddle Proof still found the hidden app-level error that would make browser evidence noisy and mask real regressions later. Catch 21 A structured API-key error crashed the dashboard This is a strong authenticated-product catch: the request was right and the API failure was realistic, but the UI crashed because it rendered an object as a React child. Catch 22 Auto-recharge stayed on after a failed save This is a settings-integrity catch: a route and error toast can both be green while the UI lies about whether the account setting was actually saved. Catch 23 A failed dashboard job looked queued This is a product-quality dashboard catch: the page was alive and authenticated, but the business meaning of a failed browser job was wrong. Catch 24 Authenticated nav overflowed on billing This shows why browser proof should stay on after the business flow succeeds: the workflow was green, but the authenticated product shell was visibly broken. Catch 25 A malformed login token opened the builder This is the kind of auth-boundary bug that looks fine in the browser until the proof asks whether the privileged UI opened from a valid token or just a friendly HTTP shape. Catch 26 Logout worked, until the delayed build came back The browser proof makes race conditions reproducible: not by reading code, but by controlling timing and checking what the user sees after the stale response lands. Catch 27 Canceling save still leaked the draft This is the perfect “visually green, semantically wrong” catch: the browser reached the right page, but the network receipt proved the app submitted stale user data. Catch 28 A rainbow flag was saved as a broken emoji This is a crisp example of why proof receipts should include network payload evidence: the page looked fine, but the saved data was corrupt. Catch 29 The player ignored its own layout metadata The route was technically healthy, but the user experience was broken. Riddle Proof turns that embedded-layout nuance into a concrete receipt. Catch 30 A manifest row rendered a broken saved game This is a real product-integrity check: the page can look routable while the underlying artifact is gone. Riddle Proof verifies the browser can actually reach the thing users need. Catch 31 The game worked, but the iframe was clipped 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. Catch 32 The link worked in production, but escaped mounted preview Preview-only route bugs are expensive because reviewers click previews, not production. Riddle Proof checks the same artifact a PR reviewer sees. Catch 33 A fixed nav made full-screen routes one nav-height too tall 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. Catch 34 A green semantic state still hid the win result A test can be technically green while the customer experience is still unclear. Riddle Proof keeps semantic checks and screenshots in the same receipt. Catch 35 Restart-only texture errors after gameplay looked fine Recovery paths and",
        "scroll_width": 820,
        "client_width": 820,
        "overflow_px": 0,
        "bounds_overflow_px": 0,
        "overflow_offenders": [],
        "selectors": {
          ".manifest-stack": {
            "count": 1,
            "visible_count": 1
          },
          ".manifest-card": {
            "count": 36,
            "visible_count": 36
          }
        },
        "frames": {},
        "text_sequences": {
          ".manifest-stack": {
            "count": 1,
            "visible_count": 1,
            "texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ],
            "visible_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so"
            ],
            "match_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so agents can reuse audit/proof profiles without rediscovering the primitives from dogfood notes. Bug: The public Riddle Proof docs explained profile text semantics, but they did not document the Profile Mode primitives that recent real proof runs were using: network mocks, repeated and delayed responses, request-body receipts, setup actions, and iframe checks. Why normal checks missed it: The docs page loaded cleanly, the existing Profile Text Semantics section was visible, the raw markdown route returned 200, overflow stayed at 0px, and fatal console evidence was clean. The drift was semantic: the rendered and machine-consumable docs had not caught up with the reusable proof contract. Why this sells Riddle Proof: This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Reusable profile seed: For proof-product docs: prove rendered docs, raw markdown body terms, viewport layout, fatal-console health, and public proof-story promotion together so the human and agent surfaces stay aligned. What the browser run checked Loaded /docs/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the existing Profile Text Semantics section remained visible while Profile Mode and the newer profile primitives were missing. Fetched /docs/riddle-proof/markdown.md and asserted the raw markdown carried Profile Mode, network_mocks, repeat_responses, delay_ms, request_body_contains, setup_actions, frame_text_visible, and frame_url_equals. Re-ran the same rendered and markdown contract on static Preview and production after adding the Profile Mode section. Proof lesson The proof surface itself needs proof. When a package adds or relies on reusable audit primitives, public rendered docs and raw agent-facing markdown should be tested as product contracts. Failing Profile Mode docs screenshot → PNG screenshot Shows the production Riddle Proof docs before the Profile Mode section existed, while the same run checked rendered and markdown terms. Failing Profile Mode receipt job_bb0aa65a → JSON metadata Records that the page was otherwise healthy while rendered docs and raw markdown missed the Profile Mode contract. Failing Profile Mode console capture → JSON logs Shows the initial failure was not browser runtime noise; the public docs contract itself was incomplete. Static Preview receipt job_88ad03aa → JSON metadata Shows the updated Profile Mode docs and markdown contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate docs with the Profile Mode section present. Final production receipt job_22ee6a7c → JSON metadata Shows the fixed production docs passed all 14 checks across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows the fixed public Riddle Proof docs with Profile Mode live in production. Catch 2 llms.txt hid the raw proof bundle Back to top May 16, 2026 < $0.01 Riddle site llms.txt proof receipts Claim: Riddle llms.txt should link agents directly to the raw proof example bundle, not only to the human proof example page. Bug: The public llms.txt agent index linked to the human proof example page, but it did not link directly to the raw machine-consumable proof bundle that agents should ingest. Why normal checks missed it: The file itself returned 200 text/plain, the human proof example page returned 200, the raw JSON bundle returned 200 application/json, overflow stayed at 0px, and fatal console evidence was clean. The missing contract was discovery: agents had to infer the raw proof receipt from the human page. Why this sells Riddle Proof: This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Reusable profile seed: For llms.txt and agent indexes: prove the file route, raw linked bodies, neighboring human review page, viewport layout, fatal-console health, and direct links to machine-consumable artifacts together. What the browser run checked Loaded /llms.txt across desktop, phone, iPad Mini, and iPad. Fetched /llms.txt and asserted it contained proof receipts, the Evidence Manifest, the proof example page, and the raw proof bundle URL. Fetched /examples/riddle-proof/ and asserted the human review page still showed Proof Bundle Example, Raw bundle, and Bring your agent; Riddle brings the proof. Fetched /examples/riddle-proof/docs-live-proof-bundle.json and asserted the raw JSON carried riddle-proof.example-bundle.v1, proof receipts, agent-proof, publicArtifactUrls, and the product promise. Re-ran the same contract on static Preview and production after adding the raw bundle link and static llms guard. Proof lesson Agent indexes should point to raw receipts, not only review pages. If a product publishes machine-consumable proof artifacts, the compact discovery surface needs to expose them directly. Failing llms.txt screenshot → PNG screenshot Shows the production llms.txt page while the same proof run checked that the raw proof bundle URL was missing from the agent index. Failing llms.txt receipt job_a5d4383b → JSON metadata Records that llms.txt, the proof example page, and the raw proof bundle were healthy while the raw bundle link was absent from the agent index. Failing llms.txt console capture → JSON logs Shows the initial failure was not browser runtime noise; the discovery contract itself was incomplete. Static Preview receipt job_df22fbc2 → JSON metadata Shows the updated llms.txt and raw bundle contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate llms.txt with the Raw proof bundle JSON link present. Final production receipt job_ceafae1b → JSON metadata Shows the fixed production llms.txt passed the proof-bundle discovery contract across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows production llms.txt after the raw proof bundle link shipped. Catch 3 Proof example bundle drifted behind the agent-proof contract Back to top May 16, 2026 < $0.01 Riddle site proof receipts agent-proof Claim: Riddle public proof examples should keep the rendered review page, artifact links, and raw agent-facing proof bundle aligned with the current proof-loop contract. Bug: The public proof example page rendered cleanly and linked to healthy artifacts, but the raw JSON bundle that agents consume was stale and did not carry proof receipts, the Bring your agent; Riddle brings the proof promise, or the agent-proof contract. Why normal checks missed it: The human page looked trustworthy: the route loaded, the proof example status was passed, all seven artifact links were healthy, overflow was 0px, and fatal console evidence was clean. The drift lived in the machine-consumable proof contract behind the page. Why this sells Riddle Proof: This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Reusable profile seed: For public proof examples: prove rendered status, artifact link quality, raw JSON body terms, viewport layout, and fatal-console health together so human and agent surfaces cannot drift independently. What the browser run checked Loaded /examples/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the proof example page rendered Proof Bundle Example, passed, live-url, and Raw b"
            ],
            "visible_match_texts": [
              "Catch 1 Profile Mode docs lagged behind proof primitives Back to top May 16, 2026 < $0.01 Riddle site Riddle Proof Profile Mode Claim: Riddle Proof docs should expose the Profile Mode contract in both rendered and machine-consumable docs so agents can reuse audit/proof profiles without rediscovering the primitives from dogfood notes. Bug: The public Riddle Proof docs explained profile text semantics, but they did not document the Profile Mode primitives that recent real proof runs were using: network mocks, repeated and delayed responses, request-body receipts, setup actions, and iframe checks. Why normal checks missed it: The docs page loaded cleanly, the existing Profile Text Semantics section was visible, the raw markdown route returned 200, overflow stayed at 0px, and fatal console evidence was clean. The drift was semantic: the rendered and machine-consumable docs had not caught up with the reusable proof contract. Why this sells Riddle Proof: This is a self-audit catch: Riddle Proof found that Riddle Proof docs had fallen behind the exact reusable profile primitives being used for real audits. Reusable profile seed: For proof-product docs: prove rendered docs, raw markdown body terms, viewport layout, fatal-console health, and public proof-story promotion together so the human and agent surfaces stay aligned. What the browser run checked Loaded /docs/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the existing Profile Text Semantics section remained visible while Profile Mode and the newer profile primitives were missing. Fetched /docs/riddle-proof/markdown.md and asserted the raw markdown carried Profile Mode, network_mocks, repeat_responses, delay_ms, request_body_contains, setup_actions, frame_text_visible, and frame_url_equals. Re-ran the same rendered and markdown contract on static Preview and production after adding the Profile Mode section. Proof lesson The proof surface itself needs proof. When a package adds or relies on reusable audit primitives, public rendered docs and raw agent-facing markdown should be tested as product contracts. Failing Profile Mode docs screenshot → PNG screenshot Shows the production Riddle Proof docs before the Profile Mode section existed, while the same run checked rendered and markdown terms. Failing Profile Mode receipt job_bb0aa65a → JSON metadata Records that the page was otherwise healthy while rendered docs and raw markdown missed the Profile Mode contract. Failing Profile Mode console capture → JSON logs Shows the initial failure was not browser runtime noise; the public docs contract itself was incomplete. Static Preview receipt job_88ad03aa → JSON metadata Shows the updated Profile Mode docs and markdown contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate docs with the Profile Mode section present. Final production receipt job_22ee6a7c → JSON metadata Shows the fixed production docs passed all 14 checks across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows the fixed public Riddle Proof docs with Profile Mode live in production. Catch 2 llms.txt hid the raw proof bundle Back to top May 16, 2026 < $0.01 Riddle site llms.txt proof receipts Claim: Riddle llms.txt should link agents directly to the raw proof example bundle, not only to the human proof example page. Bug: The public llms.txt agent index linked to the human proof example page, but it did not link directly to the raw machine-consumable proof bundle that agents should ingest. Why normal checks missed it: The file itself returned 200 text/plain, the human proof example page returned 200, the raw JSON bundle returned 200 application/json, overflow stayed at 0px, and fatal console evidence was clean. The missing contract was discovery: agents had to infer the raw proof receipt from the human page. Why this sells Riddle Proof: This is an agent-discovery catch: the machine-consumable proof receipt was public and healthy, but the compact agent entrypoint hid it. Reusable profile seed: For llms.txt and agent indexes: prove the file route, raw linked bodies, neighboring human review page, viewport layout, fatal-console health, and direct links to machine-consumable artifacts together. What the browser run checked Loaded /llms.txt across desktop, phone, iPad Mini, and iPad. Fetched /llms.txt and asserted it contained proof receipts, the Evidence Manifest, the proof example page, and the raw proof bundle URL. Fetched /examples/riddle-proof/ and asserted the human review page still showed Proof Bundle Example, Raw bundle, and Bring your agent; Riddle brings the proof. Fetched /examples/riddle-proof/docs-live-proof-bundle.json and asserted the raw JSON carried riddle-proof.example-bundle.v1, proof receipts, agent-proof, publicArtifactUrls, and the product promise. Re-ran the same contract on static Preview and production after adding the raw bundle link and static llms guard. Proof lesson Agent indexes should point to raw receipts, not only review pages. If a product publishes machine-consumable proof artifacts, the compact discovery surface needs to expose them directly. Failing llms.txt screenshot → PNG screenshot Shows the production llms.txt page while the same proof run checked that the raw proof bundle URL was missing from the agent index. Failing llms.txt receipt job_a5d4383b → JSON metadata Records that llms.txt, the proof example page, and the raw proof bundle were healthy while the raw bundle link was absent from the agent index. Failing llms.txt console capture → JSON logs Shows the initial failure was not browser runtime noise; the discovery contract itself was incomplete. Static Preview receipt job_df22fbc2 → JSON metadata Shows the updated llms.txt and raw bundle contract passed on static Preview before production deploy. Static Preview screenshot → PNG screenshot Shows the deploy candidate llms.txt with the Raw proof bundle JSON link present. Final production receipt job_ceafae1b → JSON metadata Shows the fixed production llms.txt passed the proof-bundle discovery contract across desktop, phone, iPad Mini, and iPad. Final production console capture → JSON logs Shows the final production proof had no fatal console or page errors. Final production screenshot → PNG screenshot Shows production llms.txt after the raw proof bundle link shipped. Catch 3 Proof example bundle drifted behind the agent-proof contract Back to top May 16, 2026 < $0.01 Riddle site proof receipts agent-proof Claim: Riddle public proof examples should keep the rendered review page, artifact links, and raw agent-facing proof bundle aligned with the current proof-loop contract. Bug: The public proof example page rendered cleanly and linked to healthy artifacts, but the raw JSON bundle that agents consume was stale and did not carry proof receipts, the Bring your agent; Riddle brings the proof promise, or the agent-proof contract. Why normal checks missed it: The human page looked trustworthy: the route loaded, the proof example status was passed, all seven artifact links were healthy, overflow was 0px, and fatal console evidence was clean. The drift lived in the machine-consumable proof contract behind the page. Why this sells Riddle Proof: This is a machine-consumable proof-surface catch: the public page looked healthy, but Riddle Proof found the raw agent-facing bundle had drifted behind the product contract. Reusable profile seed: For public proof examples: prove rendered status, artifact link quality, raw JSON body terms, viewport layout, and fatal-console health together so human and agent surfaces cannot drift independently. What the browser run checked Loaded /examples/riddle-proof/ across desktop, phone, iPad Mini, and iPad. Asserted the proof example page rendered Proof Bundle Example, passed, live-url, and Raw b"
            ]
          }
        },
        "text_matches": {},
        "http_statuses": {},
        "link_statuses": {},
        "setup_action_results": [],
        "screenshot_label": "riddle-site-v443-good-catch-warning-hygiene-ipad"
      }
    ],
    "console": {
      "events": [],
      "fatal_count": 0
    },
    "page_errors": [],
    "dialogs": [],
    "network_mocks": [],
    "dom_summary": {
      "expected_viewport_count": 4,
      "viewport_count": 4,
      "partial": false,
      "routes": [
        {
          "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
          "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "expected_path": "/proof/good-catches/evidence/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
          "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "expected_path": "/proof/good-catches/evidence/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
          "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "expected_path": "/proof/good-catches/evidence/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://preview.riddledc.com/s/ps_34ea19d4/proof/good-catches/evidence/",
          "observed": "/s/ps_34ea19d4/proof/good-catches/evidence/",
          "expected_path": "/proof/good-catches/evidence/",
          "matched": true,
          "http_status": 200
        }
      ],
      "titles": [
        "Evidence Manifest - Good Catch Diary | Riddle",
        "Evidence Manifest - Good Catch Diary | Riddle",
        "Evidence Manifest - Good Catch Diary | Riddle",
        "Evidence Manifest - Good Catch Diary | Riddle"
      ],
      "overflow_px": [
        0,
        0,
        0,
        0
      ],
      "bounds_overflow_px": [
        0,
        0,
        0,
        0
      ],
      "overflow_offender_counts": [
        0,
        0,
        0,
        0
      ],
      "frames": [
        {
          "viewport": "desktop",
          "selectors": []
        },
        {
          "viewport": "phone",
          "selectors": []
        },
        {
          "viewport": "ipad-mini",
          "selectors": []
        },
        {
          "viewport": "ipad",
          "selectors": []
        }
      ],
      "http_status": [],
      "link_status": [],
      "route_inventory": [],
      "network_mock_count": 0,
      "network_mock_hit_count": 0,
      "dialog_count": 0,
      "dialog_accept_count": 0,
      "dialog_dismiss_count": 0
    }
  },
  "riddle": {
    "job_id": "job_1a70de27",
    "status": "completed",
    "terminal": true
  }
}
