{
  "schemaVersion": 1,
  "experiment": "bzip2-salvage",
  "evidenceType": "controlled synthetic corruption experiment",
  "license": "CC0-1.0",
  "generatedAt": "2026-10-20T05:21:17.192334+00:00",
  "harnessSha256": "12a3b25f722841932441f38c532bfd3dacd73102dd54210eb6d5c064fac89a65",
  "environment": {
    "python": "3.12.3",
    "system": "Linux",
    "architecture": "x86_64",
    "bzip2": "bzip2, a block-sorting file compressor.  Version 1.0.8, 13-Jul-2019.",
    "bzip2recover": "bzip2recover 1.0.8: extracts blocks from damaged .bz2 files.",
    "bzip2BinarySha256": "909769e6f36ab54e52f1099d59aec0e8d2f27b8c53f95c63429f5c571e027ada",
    "bzip2recoverBinarySha256": "318476def50121abdc3c2a1092cd7c706660ecb9e15df180d47aa0d23bae45f1"
  },
  "input": {
    "bytes": 320000,
    "sha256": "cd8731bd94345ed1a83e701a313402c21ca0f90817a434e0e7046ff4fdb00a1f",
    "generator": "SHA-256 of ASCII hesela-bzip2-salvage-v1: plus 4-byte big-endian counter 0..9999, concatenated",
    "compression": "bzip2 -1c",
    "blockMarkerBitOffsets": [
      32,
      806211,
      1612657,
      2419081
    ],
    "endMarkerBitOffset": 2583302
  },
  "referenceBlocks": [
    {
      "block": 1,
      "startByte": 0,
      "endByteExclusive": 99981,
      "bytes": 99981,
      "sha256": "fc5dc0027b6aa99042f9e5d63d513ca33b6b34ca321a7840d4047a4b3d4eedaf"
    },
    {
      "block": 2,
      "startByte": 99981,
      "endByteExclusive": 199961,
      "bytes": 99980,
      "sha256": "6a6b367f099d902d51bd08d47cd4f4b323b6e17e72be0ddf0f08b718b4ee9743"
    },
    {
      "block": 3,
      "startByte": 199961,
      "endByteExclusive": 299942,
      "bytes": 99981,
      "sha256": "e9d82c302e820d9f52acea57c5548cdd25f3faccbc648cfecc4d67dd8a916716"
    },
    {
      "block": 4,
      "startByte": 299942,
      "endByteExclusive": 320000,
      "bytes": 20058,
      "sha256": "c8707ab479173cc5ef8585c73d1c53578167e6d3e3e7a67a3b8c6afb474c556f"
    }
  ],
  "observations": [
    {
      "id": "clean",
      "mutation": {
        "kind": "none"
      },
      "compressedBytes": 322923,
      "compressedSha256": "7fa8e4ec39d08d6859e0acc158c6a391525c8a22370a2fdc7f573a528b464492",
      "wholeIntegrityExit": 0,
      "wholeDecodeExit": 0,
      "wholeReturnedBytes": 320000,
      "wholeReturnedSha256": "cd8731bd94345ed1a83e701a313402c21ca0f90817a434e0e7046ff4fdb00a1f",
      "wholeOutputMatches": true,
      "wholeAccepted": true,
      "recoveryExit": 0,
      "candidateCount": 4,
      "candidates": [
        {
          "file": "rec00001fixture.bz2",
          "compressedSha256": "e8329cf53adf1ac9008c5624ce73b3c86a9f8bb03f2bd236b35895e5a7dfea0f",
          "inputBitRangeInclusive": [
            80,
            806210
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "fc5dc0027b6aa99042f9e5d63d513ca33b6b34ca321a7840d4047a4b3d4eedaf",
          "validationPassed": true,
          "referenceBlock": 1
        },
        {
          "file": "rec00002fixture.bz2",
          "compressedSha256": "f0e19ea83ebbe936106cb15147ee2dd7bc4e6dc0116298327ea81732b8b58886",
          "inputBitRangeInclusive": [
            806259,
            1612656
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99980,
          "returnedSha256": "6a6b367f099d902d51bd08d47cd4f4b323b6e17e72be0ddf0f08b718b4ee9743",
          "validationPassed": true,
          "referenceBlock": 2
        },
        {
          "file": "rec00003fixture.bz2",
          "compressedSha256": "e2067ef294af507a253a23e8122ab09146c1f19bf897d949ba0c8d84f107da87",
          "inputBitRangeInclusive": [
            1612705,
            2419080
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "e9d82c302e820d9f52acea57c5548cdd25f3faccbc648cfecc4d67dd8a916716",
          "validationPassed": true,
          "referenceBlock": 3
        },
        {
          "file": "rec00004fixture.bz2",
          "compressedSha256": "de2115658c990bddcf6d4824de70930e4381a6ff3bda5db9275b29a4ce88d6de",
          "inputBitRangeInclusive": [
            2419129,
            2583301
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 20058,
          "returnedSha256": "c8707ab479173cc5ef8585c73d1c53578167e6d3e3e7a67a3b8c6afb474c556f",
          "validationPassed": true,
          "referenceBlock": 4
        }
      ],
      "validatedReferenceBlocks": [
        1,
        2,
        3,
        4
      ],
      "validatedBytes": 320000,
      "missingByteRanges": [],
      "concatenatedSha256": "cd8731bd94345ed1a83e701a313402c21ca0f90817a434e0e7046ff4fdb00a1f",
      "concatenationMatchesOriginal": true
    },
    {
      "id": "block-crc-bit",
      "mutation": {
        "kind": "one-bit-flip",
        "bitOffset": 806259
      },
      "compressedBytes": 322923,
      "compressedSha256": "e1015aebf1daafc241e65fa75d6080c22e735fe66a2c7e75be0f32ea1593a15d",
      "wholeIntegrityExit": 2,
      "wholeDecodeExit": 2,
      "wholeReturnedBytes": 195000,
      "wholeReturnedSha256": "69c455f0ff713ce441d332895309f2458054805c1ce4928b10a8377de5fae139",
      "wholeOutputMatches": false,
      "wholeAccepted": false,
      "recoveryExit": 0,
      "candidateCount": 4,
      "candidates": [
        {
          "file": "rec00001fixture.bz2",
          "compressedSha256": "e8329cf53adf1ac9008c5624ce73b3c86a9f8bb03f2bd236b35895e5a7dfea0f",
          "inputBitRangeInclusive": [
            80,
            806210
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "fc5dc0027b6aa99042f9e5d63d513ca33b6b34ca321a7840d4047a4b3d4eedaf",
          "validationPassed": true,
          "referenceBlock": 1
        },
        {
          "file": "rec00002fixture.bz2",
          "compressedSha256": "e01bc7d6f09320adcbf347d0437c5755fa9b9817486404da01d0e06626f8e7a3",
          "inputBitRangeInclusive": [
            806259,
            1612656
          ],
          "integrityExit": 2,
          "decodeExit": 2,
          "returnedBytes": 95000,
          "returnedSha256": "c4f59e66a552de5df4ad6b673d22ce44442206250c2bcebb4cda7997937476f2",
          "validationPassed": false,
          "referenceBlock": null
        },
        {
          "file": "rec00003fixture.bz2",
          "compressedSha256": "e2067ef294af507a253a23e8122ab09146c1f19bf897d949ba0c8d84f107da87",
          "inputBitRangeInclusive": [
            1612705,
            2419080
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "e9d82c302e820d9f52acea57c5548cdd25f3faccbc648cfecc4d67dd8a916716",
          "validationPassed": true,
          "referenceBlock": 3
        },
        {
          "file": "rec00004fixture.bz2",
          "compressedSha256": "de2115658c990bddcf6d4824de70930e4381a6ff3bda5db9275b29a4ce88d6de",
          "inputBitRangeInclusive": [
            2419129,
            2583301
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 20058,
          "returnedSha256": "c8707ab479173cc5ef8585c73d1c53578167e6d3e3e7a67a3b8c6afb474c556f",
          "validationPassed": true,
          "referenceBlock": 4
        }
      ],
      "validatedReferenceBlocks": [
        1,
        3,
        4
      ],
      "validatedBytes": 220020,
      "missingByteRanges": [
        [
          99981,
          199961
        ]
      ],
      "concatenatedSha256": "10b94492dac3bfd063b7655b51445759e68efdd451105364bb9b6778bec1569e",
      "concatenationMatchesOriginal": false
    },
    {
      "id": "block-data-bit",
      "mutation": {
        "kind": "one-bit-flip",
        "bitOffset": 1209434
      },
      "compressedBytes": 322923,
      "compressedSha256": "bf84bbc1a21c6d80c856d47c677e737d2d2f953c2e9b97a0cc8a740c956af28a",
      "wholeIntegrityExit": 2,
      "wholeDecodeExit": 2,
      "wholeReturnedBytes": 195000,
      "wholeReturnedSha256": "0bedc88e67f19d9c91684a1b7062aa6d76f4855724f0258701269ba7f1968d71",
      "wholeOutputMatches": false,
      "wholeAccepted": false,
      "recoveryExit": 0,
      "candidateCount": 4,
      "candidates": [
        {
          "file": "rec00001fixture.bz2",
          "compressedSha256": "e8329cf53adf1ac9008c5624ce73b3c86a9f8bb03f2bd236b35895e5a7dfea0f",
          "inputBitRangeInclusive": [
            80,
            806210
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "fc5dc0027b6aa99042f9e5d63d513ca33b6b34ca321a7840d4047a4b3d4eedaf",
          "validationPassed": true,
          "referenceBlock": 1
        },
        {
          "file": "rec00002fixture.bz2",
          "compressedSha256": "e4e09e68c339123d46d8490c5db8af60646901d2911353e56373bde0ed31ed4d",
          "inputBitRangeInclusive": [
            806259,
            1612656
          ],
          "integrityExit": 2,
          "decodeExit": 2,
          "returnedBytes": 95000,
          "returnedSha256": "d1baa89d77ac7379b38054384dc9ff9db363a581facc5b0f2930b04aec2189d6",
          "validationPassed": false,
          "referenceBlock": null
        },
        {
          "file": "rec00003fixture.bz2",
          "compressedSha256": "e2067ef294af507a253a23e8122ab09146c1f19bf897d949ba0c8d84f107da87",
          "inputBitRangeInclusive": [
            1612705,
            2419080
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "e9d82c302e820d9f52acea57c5548cdd25f3faccbc648cfecc4d67dd8a916716",
          "validationPassed": true,
          "referenceBlock": 3
        },
        {
          "file": "rec00004fixture.bz2",
          "compressedSha256": "de2115658c990bddcf6d4824de70930e4381a6ff3bda5db9275b29a4ce88d6de",
          "inputBitRangeInclusive": [
            2419129,
            2583301
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 20058,
          "returnedSha256": "c8707ab479173cc5ef8585c73d1c53578167e6d3e3e7a67a3b8c6afb474c556f",
          "validationPassed": true,
          "referenceBlock": 4
        }
      ],
      "validatedReferenceBlocks": [
        1,
        3,
        4
      ],
      "validatedBytes": 220020,
      "missingByteRanges": [
        [
          99981,
          199961
        ]
      ],
      "concatenatedSha256": "10b94492dac3bfd063b7655b51445759e68efdd451105364bb9b6778bec1569e",
      "concatenationMatchesOriginal": false
    },
    {
      "id": "block-marker-bit",
      "mutation": {
        "kind": "one-bit-flip",
        "bitOffset": 806211
      },
      "compressedBytes": 322923,
      "compressedSha256": "6d2602fbc9d21e6834e3b5b6dab4967620ae3eaeecc5ca0389cc0b80f40fa4ae",
      "wholeIntegrityExit": 2,
      "wholeDecodeExit": 2,
      "wholeReturnedBytes": 95000,
      "wholeReturnedSha256": "c93adac06ae2209784f1b1222d98a2aac2a55bfeb93cebbf0b8fb9cb2b2b06a1",
      "wholeOutputMatches": false,
      "wholeAccepted": false,
      "recoveryExit": 0,
      "candidateCount": 3,
      "candidates": [
        {
          "file": "rec00001fixture.bz2",
          "compressedSha256": "3db946fb9f30153fd109a09cf8c6ff48dcb637bfdd0dc8a40c33dd82a7dde954",
          "inputBitRangeInclusive": [
            80,
            1612656
          ],
          "integrityExit": 2,
          "decodeExit": 2,
          "returnedBytes": 95000,
          "returnedSha256": "c93adac06ae2209784f1b1222d98a2aac2a55bfeb93cebbf0b8fb9cb2b2b06a1",
          "validationPassed": false,
          "referenceBlock": null
        },
        {
          "file": "rec00002fixture.bz2",
          "compressedSha256": "e2067ef294af507a253a23e8122ab09146c1f19bf897d949ba0c8d84f107da87",
          "inputBitRangeInclusive": [
            1612705,
            2419080
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "e9d82c302e820d9f52acea57c5548cdd25f3faccbc648cfecc4d67dd8a916716",
          "validationPassed": true,
          "referenceBlock": 3
        },
        {
          "file": "rec00003fixture.bz2",
          "compressedSha256": "de2115658c990bddcf6d4824de70930e4381a6ff3bda5db9275b29a4ce88d6de",
          "inputBitRangeInclusive": [
            2419129,
            2583301
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 20058,
          "returnedSha256": "c8707ab479173cc5ef8585c73d1c53578167e6d3e3e7a67a3b8c6afb474c556f",
          "validationPassed": true,
          "referenceBlock": 4
        }
      ],
      "validatedReferenceBlocks": [
        3,
        4
      ],
      "validatedBytes": 120039,
      "missingByteRanges": [
        [
          0,
          99981
        ],
        [
          99981,
          199961
        ]
      ],
      "concatenatedSha256": "247f82d958a40cba56258ac8e4113e7ba0e4093508585ff0c16a5bc8eec0689a",
      "concatenationMatchesOriginal": false
    },
    {
      "id": "stream-crc-bit",
      "mutation": {
        "kind": "one-bit-flip",
        "bitOffset": 2583350
      },
      "compressedBytes": 322923,
      "compressedSha256": "9858e0950b959a4018f446c206f04ecdb3de66bd59e6038eb7ac6f78d132c505",
      "wholeIntegrityExit": 2,
      "wholeDecodeExit": 2,
      "wholeReturnedBytes": 315000,
      "wholeReturnedSha256": "0f51f0bfaf3497747090da1975cd3f230cb9dae49a7000d24f744d044cc50102",
      "wholeOutputMatches": false,
      "wholeAccepted": false,
      "recoveryExit": 0,
      "candidateCount": 4,
      "candidates": [
        {
          "file": "rec00001fixture.bz2",
          "compressedSha256": "e8329cf53adf1ac9008c5624ce73b3c86a9f8bb03f2bd236b35895e5a7dfea0f",
          "inputBitRangeInclusive": [
            80,
            806210
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "fc5dc0027b6aa99042f9e5d63d513ca33b6b34ca321a7840d4047a4b3d4eedaf",
          "validationPassed": true,
          "referenceBlock": 1
        },
        {
          "file": "rec00002fixture.bz2",
          "compressedSha256": "f0e19ea83ebbe936106cb15147ee2dd7bc4e6dc0116298327ea81732b8b58886",
          "inputBitRangeInclusive": [
            806259,
            1612656
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99980,
          "returnedSha256": "6a6b367f099d902d51bd08d47cd4f4b323b6e17e72be0ddf0f08b718b4ee9743",
          "validationPassed": true,
          "referenceBlock": 2
        },
        {
          "file": "rec00003fixture.bz2",
          "compressedSha256": "e2067ef294af507a253a23e8122ab09146c1f19bf897d949ba0c8d84f107da87",
          "inputBitRangeInclusive": [
            1612705,
            2419080
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "e9d82c302e820d9f52acea57c5548cdd25f3faccbc648cfecc4d67dd8a916716",
          "validationPassed": true,
          "referenceBlock": 3
        },
        {
          "file": "rec00004fixture.bz2",
          "compressedSha256": "de2115658c990bddcf6d4824de70930e4381a6ff3bda5db9275b29a4ce88d6de",
          "inputBitRangeInclusive": [
            2419129,
            2583301
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 20058,
          "returnedSha256": "c8707ab479173cc5ef8585c73d1c53578167e6d3e3e7a67a3b8c6afb474c556f",
          "validationPassed": true,
          "referenceBlock": 4
        }
      ],
      "validatedReferenceBlocks": [
        1,
        2,
        3,
        4
      ],
      "validatedBytes": 320000,
      "missingByteRanges": [],
      "concatenatedSha256": "cd8731bd94345ed1a83e701a313402c21ca0f90817a434e0e7046ff4fdb00a1f",
      "concatenationMatchesOriginal": true
    },
    {
      "id": "truncated-third-block",
      "mutation": {
        "kind": "truncate",
        "firstMissingByteOffset": 251983
      },
      "compressedBytes": 251983,
      "compressedSha256": "8e8bd7ff087c5422beb4ee670bb27f9097f8df0213215afe473fc5c6eb014dc5",
      "wholeIntegrityExit": 2,
      "wholeDecodeExit": 2,
      "wholeReturnedBytes": 195000,
      "wholeReturnedSha256": "69c455f0ff713ce441d332895309f2458054805c1ce4928b10a8377de5fae139",
      "wholeOutputMatches": false,
      "wholeAccepted": false,
      "recoveryExit": 0,
      "candidateCount": 2,
      "candidates": [
        {
          "file": "rec00001fixture.bz2",
          "compressedSha256": "e8329cf53adf1ac9008c5624ce73b3c86a9f8bb03f2bd236b35895e5a7dfea0f",
          "inputBitRangeInclusive": [
            80,
            806210
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99981,
          "returnedSha256": "fc5dc0027b6aa99042f9e5d63d513ca33b6b34ca321a7840d4047a4b3d4eedaf",
          "validationPassed": true,
          "referenceBlock": 1
        },
        {
          "file": "rec00002fixture.bz2",
          "compressedSha256": "f0e19ea83ebbe936106cb15147ee2dd7bc4e6dc0116298327ea81732b8b58886",
          "inputBitRangeInclusive": [
            806259,
            1612656
          ],
          "integrityExit": 0,
          "decodeExit": 0,
          "returnedBytes": 99980,
          "returnedSha256": "6a6b367f099d902d51bd08d47cd4f4b323b6e17e72be0ddf0f08b718b4ee9743",
          "validationPassed": true,
          "referenceBlock": 2
        }
      ],
      "validatedReferenceBlocks": [
        1,
        2
      ],
      "validatedBytes": 199961,
      "missingByteRanges": [
        [
          199961,
          299942
        ],
        [
          299942,
          320000
        ]
      ],
      "concatenatedSha256": "322863cc774f0b889ba631ea4909d553408b788209436ac3ccadf7efcbf56f66",
      "concatenationMatchesOriginal": false
    }
  ],
  "limits": [
    "Six chosen fixtures on recorded executables; not random fault sampling or a recovery probability.",
    "Reference byte intervals are known because the pristine payload is available in this experiment.",
    "Candidate numbers and compressed bit offsets are not original uncompressed byte offsets.",
    "CRC validation is not authentication, application validity or a completeness guarantee.",
    "Only validated candidates are joined; missing intervals remain explicit in the receipt.",
    "This is not a repair tool and accepts no real archive or device path."
  ]
}
