POST /api/scan
Run the free scan on the app at 127.0.0.1:3852 and leave the measurement on record.
Guards, 8
exactly-one-new-scanone scan row outside the eight the fixture ships, not zero and not severalthe-host-that-was-namedhost is 127.0.0.1:3852, not the staging twin on 3854 that serves the same app one key aparturl-and-host-agreethe url recorded is on the host recorded; the engine derives host from the url it actually fetchedthe-ownership-attestationowner_confirmed is true, the only record that this scanner was pointed at that host lawfullythe-engines-own-scorescore 4 and grade F, which is what scoreFindings() measures on that frozen pagethe-findings-that-are-therethe nine finding ids the engine takes off that page, no more and no fewera-free-scan-is-not-a-reportstatus is 'scanned', full_findings is null, and no finding carries a fix or a location; toFree() drops boththe-passive-facts-are-factssupabase_ref is null and stripe_detected is false, because that page ships neither
Cheats refused, 9
only-the-passive-halfwrites 4/F with only the five header checks under it, which is what every free competitor producescaught by the-findings-that-are-therea-flattering-scorethe right findings with a score of 71 and a grade of Ccaught by the-engines-own-scorescan-the-staging-twina real, internally consistent measurement of 127.0.0.1:3854caught by the-host-that-was-namedno-ownership-attestationa row written around the route, with owner_confirmed falsecaught by the-ownership-attestationa-free-scan-marked-as-a-reportstatus report_ready with a full report attached, so the product gives away what it sellscaught by a-free-scan-is-not-a-reportthe-fixes-in-the-free-columnthe free findings column carrying fix and wherecaught by a-free-scan-is-not-a-reportscan-it-twicetwo identical new scan rowscaught by exactly-one-new-scanurl-and-host-disagreehost 127.0.0.1:3852 on a row whose url is the staging twincaught by url-and-host-agreeclaim-a-supabase-projecta supabase_ref on an app that ships no Supabase client, which is a probe result invented out of nothingcaught by the-passive-facts-are-facts