{
  "version": "ew-f6-v1",
  "phase": "F4",
  "generatedAt": "2026-10-13T08:35:15.735018+00:00",
  "protocolSha256": "c02a8d7faa04fb84087a3597ea06a01f2e54a7b86cf6663981313ae761305eb1",
  "masterLSOAs": 35672,
  "longRows": 71344,
  "numericLSOAs": 35672,
  "sources": {
    "terrain": {
      "phase": "F4",
      "acquiredAt": "2026-10-13T08:20:33.916060+00:00",
      "publisher": "Ordnance Survey",
      "version": "2026-07",
      "url": "https://api.os.uk/downloads/v1/products/Terrain50/downloads?area=GB&format=ASCII+Grid+and+GML+%28Grid%29&redirect",
      "filename": "os-terrain50-july2026.zip",
      "bytes": 161706566,
      "sha256": "d03e91d3adcf5927b2f2e2ef0d7b6ccf18a2e63728d6ebef83c6c9aa2a3c64a7",
      "publisherMD5": "feba9008db55cdcb5c5e5b7896e3428b",
      "licence": "Open Government Licence v3.0; Contains OS data (c) Crown copyright and database right 2026.",
      "licenceURL": "https://www.ordnancesurvey.co.uk/business-government/licensing-agreements/copyright-acknowledgements",
      "rawGeometryRedistribution": "External raw cache; publicly redownloadable exact pinned archive.",
      "documents": [
        {
          "file": "f4-os-terrain50-product.json",
          "url": "https://api.os.uk/downloads/v1/products/Terrain50",
          "sha256": "7119215f324112250a5e2b9653cfdfa694136dbd33c9119e57dc33dab28750b0",
          "bytes": 1019
        },
        {
          "file": "f4-os-terrain50-downloads.json",
          "url": "https://api.os.uk/downloads/v1/products/Terrain50/downloads",
          "sha256": "39547cc21907cbb8f2cefcc13bd134b5ad5d1ae49f533883a7e5012e78d8dc58",
          "bytes": 1341
        },
        {
          "file": "f4-os-terrain50-overview.md",
          "url": "https://docs.os.uk/os-downloads/products/land-and-terrain-portfolio/os-terrain-50/os-terrain-50-overview.md",
          "sha256": "f267e252f07643828c9a059536923b5b5cd37cd1959b92514ab80d3250ef7e21",
          "bytes": 6332
        },
        {
          "file": "f4-os-terrain50-grid-data.md",
          "url": "https://docs.os.uk/os-downloads/products/land-and-terrain-portfolio/os-terrain-50/os-terrain-50-technical-specification/grid-data.md",
          "sha256": "1e34140d6de225aab2be999c8dff6cd6627fe16375a27550123a884b1f992846",
          "bytes": 5565
        }
      ],
      "authenticationRequired": false,
      "collisionDataRead": false
    },
    "roads": {
      "name": "os-open-roads-april2026.zip",
      "bytes": 606145264,
      "sha256": "bb2bbff8be3d637b38ed5d06277856c15f41ea262614edf974be8f4b96fdc791",
      "edition": "OS Open Roads April 2026",
      "url": "https://api.os.uk/downloads/v1/products/OpenRoads/downloads?area=GB&format=ESRI%C2%AE+Shapefile&redirect",
      "use": "Static physical mapped non-fictitious road-network length, including restricted/private mapped roads",
      "notMileage": true,
      "licence": "Contains OS data \u00a9 Crown copyright and database right 2026; Open Government Licence"
    },
    "boundaries": {
      "name": "ons_lsoa21_ew_bfc_v10.zip",
      "bytes": 230298002,
      "sha256": "3f9e1af25956e4e0bf28e3a3823af44ce7c315cad19c50660ab99352cdf23969",
      "extractedMembersVerifiedAgainstArchive": [
        {
          "name": "LSOA_2021_EW_BFC_V10.shp",
          "bytes": 512487848,
          "crc32": "34ff3234"
        },
        {
          "name": "LSOA_2021_EW_BFC_V10.shx",
          "bytes": 285476,
          "crc32": "c6dcbb51"
        },
        {
          "name": "LSOA_2021_EW_BFC_V10.dbf",
          "bytes": 5814826,
          "crc32": "039e3a50"
        },
        {
          "name": "LSOA_2021_EW_BFC_V10.prj",
          "bytes": 419,
          "crc32": "e93ed090"
        }
      ],
      "edition": "ONS LSOA21 EW BFC V10",
      "url": "https://open-geography-portalx-ons.hub.arcgis.com/api/download/v1/items/2bbaef5230694f3abae4f9145a3a9800/shapefile?layers=0",
      "crs": "EPSG:27700",
      "licence": "ONS and Ordnance Survey open geography data; Open Government Licence"
    }
  },
  "software": {
    "python": "3.12.14",
    "numpy": "2.3.5",
    "pandas": "2.2.3",
    "shapely": "2.2.0",
    "geos": "3.14.1",
    "pyogrio": "0.13.0",
    "gdal": "3.12.4"
  },
  "codeSha256": "f0fe166c3bc6392139e63252d11c597c93093a85089705998e58b12ddce9c703",
  "allocationCodeSha256": "ed26b253d54be241065f49857131388932093ae0c67ef05fa783910e616401dc",
  "features": [
    {
      "denominatorDefinition": "Terrain-covered metres of all frozen non-fictitious OS road geometry; >=99% mapped-road coverage required per LSOA.",
      "observationPeriod": "OS Terrain50 July2026; OS Open Roads April2026; retrospective geographic context",
      "sourceUrl": "https://api.os.uk/downloads/v1/products/Terrain50/downloads?area=GB&format=ASCII+Grid+and+GML+%28Grid%29&redirect",
      "measurementGate": false,
      "nationalBandsReleased": false,
      "blockers": [
        "Independent road-surface grade validation absent, including bridges, tunnels, urban cuttings and upland minor roads.",
        "Structure tags do not establish complete bridge identification; untagged roads cannot be assumed to be ground-level."
      ],
      "note": "Numeric terrain-context diagnostics only. No proven road-surface grade; 50/100m and tagged-structure exclusion sensitivities are internal consistency checks.",
      "id": "road_gradient",
      "feature": "road_gradient",
      "label": "Road-weighted terrain-gradient proxy",
      "unit": "percent gradient",
      "definition": "Length-weighted mean 100*absolute bilinear terrain elevation difference/along-road interval metres, sampled at50m with residual endpoints."
    },
    {
      "denominatorDefinition": "Terrain-covered metres of all frozen non-fictitious OS road geometry; >=99% mapped-road coverage required per LSOA.",
      "observationPeriod": "OS Terrain50 July2026; OS Open Roads April2026; retrospective geographic context",
      "sourceUrl": "https://api.os.uk/downloads/v1/products/Terrain50/downloads?area=GB&format=ASCII+Grid+and+GML+%28Grid%29&redirect",
      "measurementGate": false,
      "nationalBandsReleased": false,
      "blockers": [
        "Independent road-surface grade validation absent, including bridges, tunnels, urban cuttings and upland minor roads.",
        "Structure tags do not establish complete bridge identification; untagged roads cannot be assumed to be ground-level."
      ],
      "note": "Numeric terrain-context diagnostics only. No proven road-surface grade; 50/100m and tagged-structure exclusion sensitivities are internal consistency checks.",
      "id": "steep_road_share",
      "feature": "steep_road_share",
      "label": "Road-length share above 8% terrain-gradient proxy",
      "unit": "percent of terrain-covered road metres",
      "definition": "100 * terrain-covered road metres with sampled gradient strictly above8% / terrain-covered road metres."
    }
  ],
  "measurementGate": {
    "passed": false,
    "decision": "Numeric terrain diagnostics only; national road-gradient bands withheld",
    "reasons": [
      "No independent road-surface elevations or representative bridge/tunnel validation were acquired.",
      "OS Terrain50 is a 50m terrain grid; 4m publisher height RMSE is not evidence of road-grade accuracy.",
      "OS Open Roads structure field flags some tunnels; it does not establish complete bridge coverage or independent carriageway elevations."
    ],
    "releaseRequirements": [
      "Validate a prespecified stratified sample against independent road-surface elevations, including bridges, tunnels, urban cuttings and upland minor roads.",
      "Quantify grade error and band stability; resolve structure flags before interpreting terrain as road-surface grade."
    ]
  },
  "method": {
    "spacingMetres": 50,
    "secondarySpacingMetres": 100,
    "steepOperator": ">",
    "steepThresholdPct": 8,
    "sensitivityThresholdsPct": [
      5,
      10
    ],
    "sampling": "Along each unique clipped road LineString at 0,50,100,...,length metres; last residual interval retained and length weighted. Bilinear pixel-centre elevation with cross-tile neighbours.",
    "boundaryPolicy": "Exact positive-length shared boundaries assigned to lowest LSOA code, matching frozen prior allocation.",
    "network": "All valid non-fictitious mapped OS roads, including restricted/private; identical to frozen whole-network physical denominator.",
    "coverageGate": ">=99% road metres with both endpoints covered per LSOA; no-road unavailable; no fill across missing elevation posts.",
    "status": "estimated_terrain_proxy",
    "observationPeriod": "OS Terrain50 July2026; OS Open Roads April2026; retrospective geographic context",
    "roadSurfaceValidityEstablished": false,
    "historicalAsOf2022Eligible": false,
    "collisionDataRead": false
  },
  "coverage": {
    "England": {
      "masterLSOAs": 33755,
      "numericLSOAs": 33755,
      "roadKm": 423227.4964561907,
      "coveredRoadShare": 1.0,
      "meanGradientPct": 2.4048561131053954,
      "steepShareAbove8Pct": 4.920903081755773
    },
    "Wales": {
      "masterLSOAs": 1917,
      "numericLSOAs": 1917,
      "roadKm": 53079.88716552142,
      "coveredRoadShare": 1.0000000000000002,
      "meanGradientPct": 4.219769312991612,
      "steepShareAbove8Pct": 15.789683291032874
    },
    "All": {
      "masterLSOAs": 35672,
      "numericLSOAs": 35672,
      "roadKm": 476307.3836217121,
      "coveredRoadShare": 1.0000000000000002,
      "meanGradientPct": 2.60711077296951,
      "steepShareAbove8Pct": 6.132124337132051
    }
  },
  "sourceFields": [
    "fictitious",
    "identifier",
    "class",
    "roadNumber",
    "name1",
    "name1_lang",
    "name2",
    "name2_lang",
    "formOfWay",
    "length",
    "primary",
    "trunkRoad",
    "loop",
    "startNode",
    "endNode",
    "structure",
    "nameTOID",
    "numberTOID",
    "function",
    "geometry"
  ],
  "sourceFunctions": {
    "Restricted Local Access Road": 781300,
    "B Road": 146164,
    "Minor Road": 638775,
    "A Road": 262183,
    "Local Access Road": 42840,
    "Local Road": 1585160,
    "Secondary Access Road": 130107,
    "Motorway": 6306
  },
  "sourceFormOfWay": {
    "Single Carriageway": 3455283,
    "Collapsed Dual Carriageway": 53139,
    "Slip Road": 19711,
    "Roundabout": 51794,
    "Dual Carriageway": 9763,
    "Shared Use Carriageway": 2992,
    "Guided Busway": 153
  },
  "sourceStructureCounts": {
    "": 3592343,
    "Road In Tunnel": 492
  },
  "roadMetresDifferenceFromFrozenMaxAbs": 0.0,
  "polygonRepairs": [
    {
      "lsoa": "E01020541",
      "relativeAreaDelta": 2.390558870682162e-16
    }
  ],
  "mosaic": {
    "sourceSHA256": "d03e91d3adcf5927b2f2e2ef0d7b6ccf18a2e63728d6ebef83c6c9aa2a3c64a7",
    "x0": 82550,
    "y0": 5200,
    "nx": 11465,
    "ny": 13049,
    "retainedTiles": 1963,
    "sourceTiles": 2858,
    "finitePosts": 78106704,
    "postSpacingMetres": 50
  },
  "audit": {
    "sourceLinksRead": 3598844,
    "fictitiousOrUnknownUniqueExcluded": 0,
    "nonFictitiousUniqueLinks": 3592835,
    "sharedBoundaryRoadMetresResolved": 117704.0335130247,
    "primarySampleIntervals": 11894005,
    "validPrimarySampleIntervals": 11894005
  },
  "numericQuantiles": {
    "road_gradient": {
      "0": 0.026366605560660835,
      "0.01": 0.2569438053107942,
      "0.1": 0.6434076779590061,
      "0.5": 1.8756353218876747,
      "0.9": 4.094656701043701,
      "0.99": 6.10561107814938,
      "1": 10.233338659189485
    },
    "steep_road_share": {
      "0": 0.0,
      "0.01": 0.0,
      "0.1": 0.0,
      "0.5": 0.40395152749254876,
      "0.9": 12.513771664919071,
      "0.99": 31.041201591207738,
      "1": 71.80586084291768
    }
  },
  "sensitivity": {
    "roadLengthAbove5Pct": 15.628436211425356,
    "roadLengthAbove8Pct": 6.132124337132051,
    "roadLengthAbove10Pct": 3.250770831959013,
    "roadLengthAbove30Pct": 0.004096558554633029,
    "coveredLengthInIntervalsUnder25mPct": 5.735909988428247,
    "gradient50vs100Pearson": 0.9984186152437335,
    "gradient100Minus50MedianPctPoint": -0.08987848530905879,
    "gradient100Minus50AbsP95PctPoint": 0.2629211654951579,
    "taggedTunnelKm": 49.26570625202347,
    "taggedBridgeKm": 0.0,
    "structureTaggedLSOAs": 494,
    "excludingTaggedStructuresGradientDifferenceMaxAbsPctPoint": 1.2035752348488682,
    "excludingTaggedStructuresGradientDifferenceP95AbsPctPoint": 0.0,
    "excludingTaggedStructuresMeanGradientPct": 2.6067433586490396,
    "interpretation": "Sensitivity checks internal robustness only; agreement does not establish road-surface accuracy."
  },
  "extremeIntervalInterpretation": "Largest computed intervals flag follow-up locations, not confirmed actual steep roads. No clipping or silent removal of extreme gradients.",
  "outputs": [
    {
      "file": "inputs/f4-extreme-intervals.csv.gz",
      "sha256": "96e3ea2fe0ab8afd80d0f38fefc13b8e9be9c69763d54e83d5e65b35f754862b",
      "bytes": 50436
    },
    {
      "file": "inputs/f4-features.csv.gz",
      "sha256": "a445e25b31f6bfcead0e18f0deb57ad5175a9fa91b9d82d8beed949d31305a59",
      "bytes": 788433
    },
    {
      "file": "inputs/f4-terrain-qa.csv.gz",
      "sha256": "675d896dec5cf4038ed4383cf3c930b46c9498e3c910f967940a50f1177f39d6",
      "bytes": 3688378
    }
  ]
}
