{
  "version": "ew-v4",
  "checkedAt": "2026-10-12",
  "scope": "Data and offline reproducibility acceptance before publication; deployment-specific build and HTTP results recorded in the source release note.",
  "dataTests": {
    "status": "passed",
    "tests": 30,
    "suites": [
      "ew-deciles.test.py",
      "ew-expansion.test.py",
      "ew-e4-e7.test.py",
      "ew-e8.test.py"
    ]
  },
  "cleanReproduction": {
    "status": "passed",
    "networkUsed": false,
    "cleanExtraction": true,
    "priorFilesVerified": 181,
    "bundles": [
      {
        "file": "reproduce-ew-v1.zip",
        "sha256": "df4b6e4a4d51ae0aac761bc420d3de5e26b62c4522504ddb79d8e692347a48b3",
        "verified": true
      },
      {
        "file": "reproduce-ew-v2-e1-e3.zip",
        "sha256": "e3a88b281cf338c1479ad0c127a8ef7f5bab702b5ee7a7b6651bd15d8af10c85",
        "verified": true
      },
      {
        "file": "reproduce-ew-v3-e4-e7.zip",
        "sha256": "77f969396b32078fd96c58358019adf46d06c92e197af4f3dd9ade9510c15bba",
        "verified": true
      }
    ],
    "releases": [
      {
        "version": "v1",
        "outputsVerified": 40,
        "manifestSha256": "856a8ccd2609ace09aa94ce55697f86f48baab9a7a7bc5c8e3bf9b7acd2c5c41",
        "allOutputHashesMatch": true,
        "manifestMatches": true
      },
      {
        "version": "v2",
        "outputsVerified": 28,
        "manifestSha256": "fb711deef2aaa7534eae689932a08d1297928459d8721108575ddf8feb6fa801",
        "allOutputHashesMatch": true,
        "manifestMatches": true
      },
      {
        "version": "v3",
        "outputsVerified": 33,
        "manifestSha256": "aa9d9cac1900a71b9ef76f9057428fc6c6042f36d95bd6f1f6d8b834edf73636",
        "allOutputHashesMatch": true,
        "manifestMatches": true
      },
      {
        "version": "v4",
        "outputsVerified": 20,
        "manifestSha256": "f56448b4efaffce765cfbaaf4e50fa64fb7ad294c7fcf6368cf31f9d31fe84a6",
        "allOutputHashesMatch": true,
        "manifestMatches": true
      }
    ],
    "totalRebuiltOutputs": 121,
    "scope": "Numerical registry rebuilt from frozen source members and spatial aggregates; original bulk source extraction is a separate workflow."
  },
  "lookupAndServerRender": {
    "status": "passed",
    "tests": 2,
    "checks": [
      "Country, region, rurality and exact LSOA search preserve source indices and stored bands",
      "Server-rendered feature dates, diagnostic labels, search controls and every displayed download target",
      "Explorer payload excludes unused distribution tables; values and cutoffs retained for all four versions"
    ]
  },
  "browserInteractions": {
    "status": "not_performed",
    "checks": [
      "desktop navigation",
      "mobile navigation",
      "map click",
      "interactive lookup and search"
    ],
    "reason": "Managed environment has no supported control-browser capability; server rendering and lookup-function tests are separate."
  },
  "scientificBoundaries": {
    "accidentModelsFitted": false,
    "riskIndicesValidated": false,
    "insurerClaimsTested": false
  },
  "testCode": [
    {
      "file": "tests/ew-deciles.test.py",
      "sha256": "3c853dd03cc7096c0d9bc370476716e7b81e81ebaa0e9434a3d16db65869b682"
    },
    {
      "file": "tests/ew-expansion.test.py",
      "sha256": "18066b0ab6f8a24388eb3735826d668d1746e6fac5e8b9948548c619551cfd1f"
    },
    {
      "file": "tests/ew-e4-e7.test.py",
      "sha256": "6ddfc37b8fca8d68d3d6fad86bf6b9ae5df29b5d6d614d92d6189471d12b82a7"
    },
    {
      "file": "tests/ew-e8.test.py",
      "sha256": "3f209e86e4eb31625bd2f555002510b4b7a1398d8d7676ce459c94ab5ccde86b"
    },
    {
      "file": "tests/ew-e8-ui.test.mjs",
      "sha256": "f42a1ac87cea2e5af3b82af1c62b697095e43cf71ef9e0e09643ca5c0e029ecb"
    }
  ]
}
