{
  "schemaVersion": 1,
  "evidenceFile": "results.json",
  "sourceFile": "sources.json",
  "claims": [
    {
      "id": "resume-preserves-sparse-stale-sector",
      "claim": "After documented sparse-output preconditions are violated, a later non-sparse resume can finish the map while a previously finished range still contains stale destination bytes.",
      "evidenceType": "measured constructed counterexample plus source synthesis",
      "caseIds": ["sparse-reused-bad-data", "resume-sparse-reused", "sparse-fresh-healthy", "reused-bad-data"],
      "sourceLocations": ["doc/ddrescue.texi: --sparse", "rescuebook.cc: Rescuebook::copy_block"],
      "scope": "GNU 1.30, regular-file destination, sector and copy-buffer size 512 bytes; not a claim of universal corruption or a new bug."
    },
    {
      "id": "equal-aggregate-different-ranges",
      "claim": "An approximate generated map can have the same finished-byte total as the original map while identifying different sectors as finished.",
      "evidenceType": "measured constructed counterexample",
      "caseIds": ["reused-bad-data", "generated-reused-bad-data"],
      "sourceLocations": ["doc/ddrescue.texi: Generate mode", "genbook.cc: Genbook::check_block"],
      "scope": "Both totals are 3584/4096 bytes; the zero sector and stale-data sector exchange unfinished/finished status."
    },
    {
      "id": "image-hash-not-acquisition-history",
      "claim": "Identical output bytes and hashes can accompany complete and incomplete acquisition maps.",
      "evidenceType": "measured constructed counterexample",
      "caseIds": ["fresh-bad-zero", "fresh-healthy"],
      "sourceLocations": ["doc/ddrescue.texi: Introduction and Mapfile structure"],
      "scope": "No hash collision. A trusted source digest can support byte equality but does not prove historical read success."
    },
    {
      "id": "normal-exit-vs-range-completion",
      "claim": "A normal ddrescue exit and a successful limited-domain map check can coexist with an unfinished sector outside the checked domain.",
      "evidenceType": "measured constructed counterexample plus documented command semantics",
      "caseIds": ["fresh-bad-data", "fresh-bad-zero", "reused-bad-data", "sparse-reused-bad-data"],
      "sourceLocations": ["doc/ddrescue.texi: exit status", "doc/ddrescue.texi: --done-status"],
      "scope": "The partial checks select only bytes [0,512); the complete test domain is [0,4096)."
    },
    {
      "id": "map-not-image-integrity-check",
      "claim": "Modifying the image after completion does not change a done-status result based on the unmodified map.",
      "evidenceType": "measured negative control",
      "caseIds": ["fresh-healthy", "modified-after-completion"],
      "sourceLocations": ["ddrescuelog.cc: done-status map evaluation"],
      "scope": "Image changed by the harness, not spontaneous corruption; preserve image-map association separately."
    }
  ]
}
