{
  "schemaVersion": "1.1",
  "kind": "controlled-software-experiment",
  "script_sha256": "6d14eda105addb6b03d72cab8cf2f54c5f839a591e7ac6e6b8cff7bef1f83eb7",
  "generatedAt": "2026-10-18T11:12:31.665466+00:00",
  "environment": {
    "python": "3.12.3",
    "platform": "Linux-6.8.0-146-generic-x86_64-with-glibc2.39",
    "astropy": "8.0.2",
    "numpy": "2.3.4",
    "dependencies": {
      "astropy": "8.0.2",
      "numpy": "2.3.4",
      "pyerfa": "2.0.1.5",
      "astropy-iers-data": "0.2026.10.12.1.3.27",
      "packaging": "26.3",
      "PyYAML": "6.0.3"
    }
  },
  "fixture": {
    "pixels": [
      10,
      20,
      30,
      40
    ],
    "bitpix": 32,
    "bscale": 1,
    "bzero": 0,
    "header_bytes": 2880,
    "data_record_bytes": 2880,
    "compressed": false,
    "astronomical_observation": false
  },
  "statusCodes": {
    "0": "mismatch",
    "1": "valid",
    "2": "absent"
  },
  "cases": [
    {
      "id": "baseline",
      "label": "Unchanged image",
      "bytes": 5760,
      "sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "reference_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "byte_identical_to_reference": true,
      "expected_hdus": 1,
      "observed_hdus": 1,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [],
      "decoded_pixels": [
        [
          10,
          20,
          30,
          40
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 1,
          "checksum_code": 1,
          "datasum_card": "100",
          "checksum_card": "DFbUEEaSDEaSDEaS",
          "data_sha256": "fdaf28c800c80d2776612bf41f140215a921445385a1b85fc3332f9272beaa98",
          "raw_data_sum32": 100,
          "raw_hdu_sum32": 4294967295
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            1,
            1
          ],
          "after_data_access": [
            1,
            1
          ],
          "stored_pixels": [
            10,
            20,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "all_present_hdus_valid": true
    },
    {
      "id": "bit_flip",
      "label": "One data bit flipped",
      "bytes": 5760,
      "sha256": "ec74a218d3b0313457b412549b7fd336874b52e1d30f6d58f0d1d191cd15c071",
      "reference_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "byte_identical_to_reference": false,
      "expected_hdus": 1,
      "observed_hdus": 1,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [
        "Checksum verification failed for HDU ('PRIMARY', 1).",
        "Datasum verification failed for HDU ('PRIMARY', 1)."
      ],
      "decoded_pixels": [
        [
          11,
          20,
          30,
          40
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 0,
          "checksum_code": 0,
          "datasum_card": "100",
          "checksum_card": "DFbUEEaSDEaSDEaS",
          "data_sha256": "47d4653f601a6cfa1ca37dd43f606e96987233d5c10c45b099bab6d48136ed2f",
          "raw_data_sum32": 101,
          "raw_hdu_sum32": 1
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            0,
            0
          ],
          "after_data_access": [
            0,
            0
          ],
          "stored_pixels": [
            11,
            20,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "ec74a218d3b0313457b412549b7fd336874b52e1d30f6d58f0d1d191cd15c071",
      "all_present_hdus_valid": false
    },
    {
      "id": "padding_bit_flip",
      "label": "One padding bit flipped",
      "bytes": 5760,
      "sha256": "8ef7bc77cf9e60011d09f21fca071aaf4c5d0bb37bc28c44476b43b5e864b499",
      "reference_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "byte_identical_to_reference": false,
      "expected_hdus": 1,
      "observed_hdus": 1,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [
        "Checksum verification failed for HDU ('PRIMARY', 1).",
        "Datasum verification failed for HDU ('PRIMARY', 1)."
      ],
      "decoded_pixels": [
        [
          10,
          20,
          30,
          40
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 0,
          "checksum_code": 0,
          "datasum_card": "100",
          "checksum_card": "DFbUEEaSDEaSDEaS",
          "data_sha256": "aff4fe1e7e35c08d0839799a522f72d0dc26bbd6c86d959a02775d84e2b86986",
          "raw_data_sum32": 101,
          "raw_hdu_sum32": 1
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            0,
            0
          ],
          "after_data_access": [
            1,
            1
          ],
          "stored_pixels": [
            10,
            20,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "8ef7bc77cf9e60011d09f21fca071aaf4c5d0bb37bc28c44476b43b5e864b499",
      "all_present_hdus_valid": false
    },
    {
      "id": "word_swap",
      "label": "Two 32-bit pixels exchanged",
      "bytes": 5760,
      "sha256": "30ea3803b2c68b3caaa2a1c59dacf399584868b87e7a2b699438bf045bb25422",
      "reference_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "byte_identical_to_reference": false,
      "expected_hdus": 1,
      "observed_hdus": 1,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [],
      "decoded_pixels": [
        [
          20,
          10,
          30,
          40
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 1,
          "checksum_code": 1,
          "datasum_card": "100",
          "checksum_card": "DFbUEEaSDEaSDEaS",
          "data_sha256": "75ed506a21ef21558a1e3970f680e2ce41ae849ee8b75971675c6422f0858cf3",
          "raw_data_sum32": 100,
          "raw_hdu_sum32": 4294967295
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            1,
            1
          ],
          "after_data_access": [
            1,
            1
          ],
          "stored_pixels": [
            20,
            10,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "30ea3803b2c68b3caaa2a1c59dacf399584868b87e7a2b699438bf045bb25422",
      "all_present_hdus_valid": true
    },
    {
      "id": "scale_changed",
      "label": "BSCALE changed to 2",
      "bytes": 5760,
      "sha256": "d9ae95cb260076e619cadd31a31c99ae6dd7d7a93a58066418613c559cd40c5d",
      "reference_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "byte_identical_to_reference": false,
      "expected_hdus": 1,
      "observed_hdus": 1,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [
        "Checksum verification failed for HDU ('PRIMARY', 1)."
      ],
      "decoded_pixels": [
        [
          20.0,
          40.0,
          60.0,
          80.0
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 1,
          "checksum_code": 0,
          "datasum_card": "100",
          "checksum_card": "DFbUEEaSDEaSDEaS",
          "data_sha256": "fdaf28c800c80d2776612bf41f140215a921445385a1b85fc3332f9272beaa98",
          "raw_data_sum32": 100,
          "raw_hdu_sum32": 65536
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            1,
            0
          ],
          "after_data_access": [
            1,
            0
          ],
          "stored_pixels": [
            10,
            20,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "d9ae95cb260076e619cadd31a31c99ae6dd7d7a93a58066418613c559cd40c5d",
      "all_present_hdus_valid": false
    },
    {
      "id": "scale_resealed",
      "label": "Changed scale, sums regenerated",
      "bytes": 5760,
      "sha256": "60c19d094c9bc97c87671774ba71e200e860b727a66528091a6f6b3e942e9dd9",
      "reference_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "byte_identical_to_reference": false,
      "expected_hdus": 1,
      "observed_hdus": 1,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [],
      "decoded_pixels": [
        [
          20.0,
          40.0,
          60.0,
          80.0
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 1,
          "checksum_code": 1,
          "datasum_card": "100",
          "checksum_card": "DFaUEEaSDEaSDEaS",
          "data_sha256": "fdaf28c800c80d2776612bf41f140215a921445385a1b85fc3332f9272beaa98",
          "raw_data_sum32": 100,
          "raw_hdu_sum32": 4294967295
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            1,
            1
          ],
          "after_data_access": [
            1,
            1
          ],
          "stored_pixels": [
            10,
            20,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "60c19d094c9bc97c87671774ba71e200e860b727a66528091a6f6b3e942e9dd9",
      "all_present_hdus_valid": true
    },
    {
      "id": "keywords_absent",
      "label": "Both checksum cards removed",
      "bytes": 5760,
      "sha256": "44318d01c9d6e50d225c5bd63b7564d3100702f738c9795a68852575dd0bd9cd",
      "reference_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "byte_identical_to_reference": false,
      "expected_hdus": 1,
      "observed_hdus": 1,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [],
      "decoded_pixels": [
        [
          10,
          20,
          30,
          40
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 2,
          "checksum_code": 2,
          "datasum_card": null,
          "checksum_card": null,
          "data_sha256": "fdaf28c800c80d2776612bf41f140215a921445385a1b85fc3332f9272beaa98",
          "raw_data_sum32": 100,
          "raw_hdu_sum32": 1859797031
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            2,
            2
          ],
          "after_data_access": [
            2,
            2
          ],
          "stored_pixels": [
            10,
            20,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "44318d01c9d6e50d225c5bd63b7564d3100702f738c9795a68852575dd0bd9cd",
      "all_present_hdus_valid": false
    },
    {
      "id": "late_corruption",
      "label": "Only second HDU corrupted",
      "bytes": 11520,
      "sha256": "7432e386dfe68f488901153e61205a209f0aa611a6fbaf42ab2e409e0d3f4c00",
      "reference_sha256": "9001f2651b47a50d0f315ca95b16a12ea161e53c53cdb87fe633ffa031b41295",
      "byte_identical_to_reference": false,
      "expected_hdus": 2,
      "observed_hdus": 2,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [
        "Checksum verification failed for HDU ('SCI', 1).",
        "Datasum verification failed for HDU ('SCI', 1)."
      ],
      "decoded_pixels": [
        [
          10,
          20,
          30,
          40
        ],
        [
          11,
          20,
          30,
          40
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 1,
          "checksum_code": 1,
          "datasum_card": "100",
          "checksum_card": "DFbUEEaSDEaSDEaS",
          "data_sha256": "fdaf28c800c80d2776612bf41f140215a921445385a1b85fc3332f9272beaa98",
          "raw_data_sum32": 100,
          "raw_hdu_sum32": 4294967295
        },
        {
          "index": 1,
          "datasum_code": 0,
          "checksum_code": 0,
          "datasum_card": "100",
          "checksum_card": "LkVHNhTELhTELhTE",
          "data_sha256": "47d4653f601a6cfa1ca37dd43f606e96987233d5c10c45b099bab6d48136ed2f",
          "raw_data_sum32": 101,
          "raw_hdu_sum32": 1
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            1,
            1
          ],
          "after_data_access": [
            1,
            1
          ],
          "stored_pixels": [
            10,
            20,
            30,
            40
          ]
        },
        {
          "index": 1,
          "before_data_access": [
            0,
            0
          ],
          "after_data_access": [
            0,
            0
          ],
          "stored_pixels": [
            11,
            20,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "7432e386dfe68f488901153e61205a209f0aa611a6fbaf42ab2e409e0d3f4c00",
      "all_present_hdus_valid": false
    },
    {
      "id": "extension_removed",
      "label": "Whole second HDU removed",
      "bytes": 5760,
      "sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "reference_sha256": "9001f2651b47a50d0f315ca95b16a12ea161e53c53cdb87fe633ffa031b41295",
      "byte_identical_to_reference": false,
      "expected_hdus": 2,
      "observed_hdus": 1,
      "structure_verify": "returned_without_exception",
      "default_open": "returned",
      "default_warning_count": 0,
      "checksum_open": "returned",
      "checksum_warnings": [],
      "decoded_pixels": [
        [
          10,
          20,
          30,
          40
        ]
      ],
      "hdu_checks": [
        {
          "index": 0,
          "datasum_code": 1,
          "checksum_code": 1,
          "datasum_card": "100",
          "checksum_card": "DFbUEEaSDEaSDEaS",
          "data_sha256": "fdaf28c800c80d2776612bf41f140215a921445385a1b85fc3332f9272beaa98",
          "raw_data_sum32": 100,
          "raw_hdu_sum32": 4294967295
        }
      ],
      "read_state_checks": [
        {
          "index": 0,
          "before_data_access": [
            1,
            1
          ],
          "after_data_access": [
            1,
            1
          ],
          "stored_pixels": [
            10,
            20,
            30,
            40
          ]
        }
      ],
      "after_read_sha256": "4acbad64ed0005239b5009428b756d587c99214d20d3128f7cafec63abd49f50",
      "all_present_hdus_valid": true
    }
  ],
  "limits": [
    "Constructed images, not sampled corruption or astronomical observations.",
    "Astropy version-scoped behavior; CFITSIO is not executed.",
    "No compression, tables, remote storage, concurrent writes or power loss.",
    "Hashes compared with a separate generated reference, not proof of origin.",
    "The independent accumulator only accepts complete 32-bit words."
  ]
}
