{
  "product": "Launch-Day QA",
  "price_usd": 12,
  "prepared_by": "Conatus AI",
  "date": "2026-08-21",
  "target": "https://our-story-crossword.jahnclawdmonet.workers.dev/",
  "target_note": "Our own live $12 product, used as a real sample.",
  "flow": {
    "start": "Landing page",
    "end": "Reach the checkout step after the free puzzle preview"
  },
  "environments": [
    { "name": "desktop", "browser": "Google Chrome 151 (headless)", "viewport": "1280x832", "dpr": 2 },
    { "name": "mobile", "browser": "Google Chrome 151 (headless)", "viewport": "390x844", "dpr": 2, "ua": "iOS Safari" }
  ],
  "summary": { "total": 3, "blocker": 0, "major": 1, "minor": 2 },
  "findings": [
    {
      "id": 1,
      "title": "Free-preview puzzle grid is clipped on the right at phone widths",
      "severity": "major",
      "environment": "mobile 390px",
      "steps": [
        "Open the site on a phone-width viewport (about 430 px or narrower).",
        "Fill the gift form with 10 answers and both consent checkboxes, then tap 'Create free preview'.",
        "When 'Status: Preview Ready' appears, look at the right edge of the puzzle grid."
      ],
      "observed": "The generated grid is about 442 px wide, but the preview card is 374 px wide inside a 390 px viewport. The grid neither scales down nor scrolls, and the surrounding card clips the overflow. The right-hand across entries (numbers 3, 7 and 8 in this run) are cut off at the card edge, and the page does not scroll horizontally, so those cells cannot be brought into view.",
      "expected": "On a phone the full grid is visible, either scaled to fit the card or made horizontally scrollable, so the buyer can see the whole puzzle the preview promises before deciding to pay.",
      "evidence": ["launch-day-qa-sample-report.pdf#finding-01"]
    },
    {
      "id": 2,
      "title": "Checkout logs 'Lemon.js failed to load'; the checkout script URL returns a redirect",
      "severity": "minor",
      "environment": "desktop and mobile",
      "steps": [
        "Complete the form and generate the free preview.",
        "Tap 'Continue to $12 checkout'.",
        "Watch the browser console and the network panel."
      ],
      "observed": "The console records 'Lemon.js failed to load' on every attempt, on both viewports. The checkout script is requested from app.lemonsqueezy.com/js/lemon.js, which answers HTTP 301 (a redirect). Checkout still completes: the button routes to a hosted Lemon Squeezy checkout that loads with HTTP 200, so payment is reachable. The error is non-blocking but fires on every run.",
      "expected": "No load error in the console. Reference the script at its canonical address (assets.lemonsqueezy.com/lemon.js) so it loads without a redirect, and clear the failure log.",
      "note": "The 'failed to load' line was captured on the test network and should be confirmed in a live buyer session. The 301 on the script URL is independent of network and is reproducible.",
      "evidence": ["launch-day-qa-sample-report.pdf#finding-02"]
    },
    {
      "id": 3,
      "title": "Default favicon returns 404; no icon is set in the page head",
      "severity": "minor",
      "environment": "site-wide",
      "steps": [
        "Load the landing page and watch the console.",
        "Request the default icon path directly: GET /favicon.ico."
      ],
      "observed": "The document head contains no icon link, so the browser requests /favicon.ico by default, which returns HTTP 404. This appears as a 'Failed to load resource: 404' console message on load, and no icon shows in the browser tab.",
      "expected": "Add an icon link in the head pointing at an SVG or ICO that returns HTTP 200, so the tab carries the brand mark and the console stays clean on load.",
      "evidence": ["launch-day-qa-sample-report.pdf#finding-03"]
    }
  ],
  "out_of_scope": [
    "security or vulnerability scanning",
    "auth bypass",
    "load testing",
    "destructive writes",
    "personal-data access",
    "fixing the issues"
  ]
}
