promptdojo_

The claim check — nothing ships with an open row — step 8 of 8

Checkpoint

One last thing before we move on. Same surface as a write step — but the lesson doesn't complete until this passes.

Checkpoint: the whole pipeline against the live hero copy — extract, verify, and resolve. Thursday is here and the copy ships TODAY, so anything without a source gets struck from the copy rather than shipped on faith. Write claim_check(copy, sources) that:

  1. Extracts claims from the lowercased copy with r"\d+(?:\.\d+)?|\blightest\b|\bfree\b" (in match order).
  2. Looks each claim up in sources. A truthy value verifies the row: print "<claim>: verified (<source>)". A missing or None entry: print "<claim>: OPEN — struck" and collect it.
  3. Prints "struck: <claims joined by ', '>".
  4. Prints "revised decision: SHIP (<n> claims, all closed)" where n counts the claims that survived.

Expected output:

890: verified (spec-sheet-v4.pdf)
free: verified (shipping-policy-2026.md)
75: verified (shipping-policy-2026.md)
4.8: OPEN — struck
lightest: OPEN — struck
struck: 4.8, lightest
revised decision: SHIP (3 claims, all closed)

full-screen editor opens — close anytime to keep reading.