LIVING SURVEY — measurements are reviewed continuously as new data and local evidence arrive. Seen a sign, a gate, or a better name? Submit an update no account needed · photos welcome via GitHub

← survey home · UK climbs · US climbs · Swiss climbs · Austrian climbs · French climbs · NZ climbs · Norwegian climbs

The rules register

How a page is made is set out on the methodology page.

Every rule this survey has coded — 519 of them in force, 73 more written and being swept over pages measured before they existed. The table is generated from the same file the pipeline validates, so it cannot drift from what the code actually does. A rule is named by what it catches; the date is when it was coded; the counts are the pages it has been run against.

Finding the road

Which roads get considered at all, and which are not public roads, too short, or already published.

RuleAddedPages namedCode
Each finished run records its yield in the registry so the yield gate has references2026-09-06regions.yaml
USGS registrations checked against the bucket footprint before discovery2026-09-07scripts/audit_usgs_footprint.py
Legacy-named (pre-2018) bucket projects that name the state but are not registered get a…2026-09-07scripts/audit_usgs_footprint.py
Every region declares recognition sources or a dated waiver2026-09-07regions.yaml
Discovery clips the road network to the registry's optional `bbox` and refuses a coarse…2026-09-08src/ukclimb/cli.py
A hunt page's extent must lie on inventory segments carrying ITS name2026-09-08594 pagesscripts/state_inventory_usa.py
The steepest 25 m window itself must sit on a listed public road2026-09-08scripts/state_inventory_usa.py
A page's road must be maintained by a public authority2026-09-08126 pagesscripts/ny_lhi_surface.py
A run selects a coarse-steepness BAND of the discovery seeds explicitly…2026-09-106 candidatesscripts/select_seed_band.py
Seed notes name the coarse surface the run actually scanned (Terrain 50 / 3DEP 10 m /…2026-09-10src/ukclimb/discovery.py
Discovery's coarse terrain model comes from the region registry (`coarse:` or the section…2026-09-10src/ukclimb/regions.py
Extend over inventory-hunt seeds loads the track class (D25)2026-09-10scripts/multibox/extend_shards.sh
Preflight FAILS (not skips) a nation outside the uk/us sections unless its registry block…2026-09-10src/ukclimb/campaign.py
One elevation-provider dispatcher reads the registry's `provider:`2026-09-10src/ukclimb/elevation/providers.py
The road audit never aborts a run on one entry2026-09-10src/ukclimb/cli.py
SwissTLM3D 2m Weg is a narrow ROAD class (farm/forest/alp lanes), 1m Weg the path class2026-09-10src/ukclimb/roadauthority.py
Two live pages whose ladders are identical (same length, gain and every window maximum)…2026-09-1128 pagesscripts/audit_duplicate_ladders.py
Seed_hunt_ways never uses an inventory name that is only a road number (GIP '233',…2026-09-134 pagesscripts/seed_hunt_ways.py
Two published pages whose lines overlap >= 0.95 with their two 25 m windows COINCIDING…2026-09-148 pages; 61 pagesscripts/audit_published_pairs.py
A COG-grid provider (BEV) never takes the catalogue's newest DSM release blindly2026-09-15src/ukclimb/elevation/cog_grid.py
Adopt_hunt_wave --only accepts a file (the driver passes <run>/adopt.txt, one…2026-09-16scripts/adopt_hunt_wave.py
Scripts/adopt_hunt_wave.py takes its --section choices and per-section wiring from the…2026-09-16scripts/adopt_hunt_wave.py
The regional-coverage gate judges only the ground a run was asked to cover2026-09-16scripts/audit_regional_coverage.py
The seams between region_run.sh and the scripts it calls are tested OFFLINE, before a…2026-09-16tests/unit/test_region_run_handoffs.py
France's elevation is IGN LiDAR HD MNT (sol) + MNS (surface) at the NATIVE 0.50 m,…2026-09-16src/ukclimb/elevation/cog_grid.py
Before the French national run, a driver step builds every col in climbs/fr-passes-*.yaml…2026-09-1623 routesscripts/build_named_pass_routes.py
Three seams the handoff contract test found before they cost a box-hour2026-09-16scripts/multibox/adopt_set.py
IGN's MNT is genuinely -9999 along the outer pixel column of some LiDAR HD dalles where…2026-09-16src/ukclimb/elevation/cog_grid.py
Before any block (shakedown) run, the complete driver runs a small block of ~50 roads (5–8…2026-09-16docs/NEW-REGION.md
A block already measured is given an improved named-passes step by a COLS WAVE, never by…2026-09-16scripts/multibox/region_run.sh
The named-pass walk follows the col's WHOLE approach ref set2026-09-16scripts/build_named_pass_routes.py
The batch-side protected-page flag (ukclimb.protected.note_protected_suppression) judges…2026-09-16src/ukclimb/protected.py
Scripts/review_pack.py resolves its run-dir inputs by the names region_run.sh writes…2026-09-16scripts/review_pack.py
Before launching N blocks, check on the laptop that every block bbox contains a…2026-09-17scripts/multibox/region_run.sh
Col name over road name2026-09-17src/ukclimb/passnames.py
The regional-coverage gate reads discover's coarse-candidates.csv2026-09-17scripts/audit_regional_coverage.py
A cols wave whose named-passes step builds NO routes stops there, saying so, and its…2026-09-17scripts/multibox/region_run.sh
The corpus-dedupe + published-pairs audits are re-run against the corpus THE ADOPTING BOX…2026-09-17scripts/multibox/corpus_stamp.py
Head_adopt.sh's pull and check exclude head-pull.log and head-check.log2026-09-17scripts/multibox/head_adopt.sh
The named-pass walk's length cap is a per-region / per-list setting, not a constant2026-09-17scripts/build_named_pass_routes.py
A cols-wave run (NAMED_PASSES_ONLY=1) must carry that mode through a RESUME on the head2026-09-17scripts/multibox/region_run.sh
A retirement ledger row's `region` falls back to the page's SECTION, never to the literal…2026-09-17scripts/multibox/retire_list.py
A step's "did it STOP?" test and the line it quotes read only THIS attempt's part of the…2026-09-17scripts/multibox/region_run.sh
CODED 2026-09-202026-09-20src/ukclimb/passnames.py
A small or rehearsal square is cut round ONE col, so the massif-wide `known_roads:` rows2026-09-20scripts/multibox/preflight_inputs.py
Two roads one col name2026-09-20955 climbs; 127 pagessrc/ukclimb/passnames.py
The prep gate (mc_coverage.py / coverage.decide_coverage) honours a massif config's…2026-09-22scripts/audit_regional_coverage.py
Fleet_watch.py's `ssh_probe` runs the remote one-liner from the ssh login directory…2026-09-22scripts/multibox/fleet_watch.py
Massif Central head fault (box 1, 2026-09-22)2026-09-224 pagesscripts/multibox/box_setup.sh
On the Massif Central (2026-09-22) every block spent 4-5.75 h in extend-dedupe fetching…2026-09-22src/ukclimb/elevation/ign_rate_limit.py
Coverage revisit ledger2026-09-24climbs/coverage-revisits.yaml
Fleet_watch.py measured progress by finished page docs only, so a French block spent its…2026-09-24scripts/multibox/fleet_watch.py
Corsica (2026-09-25)2026-09-25scripts/multibox/massif_prep/bands.py
DONE (2026-09-26, fr-so-rehearsal on the head box, run driver…2026-09-26scripts/multibox/extend_shards.sh
A flat massif with no buildable col (no pass-list row with `climb_origin`…2026-09-261 candidatesscripts/multibox/massif_prep/rehearsal_search.py
FIXED 2026-09-282026-09-28scripts/build_named_pass_routes.py
A third fault found reviewing the west-coast cities re-adoption (docs/RESUME.md §0t), in…2026-09-29scripts/multibox/adopt_set.py
A sixth fault found live on the box (Council Crest, Portland, 2026-09-29)2026-09-29scripts/multibox/adopt_set.py
A fifth fault found re-checking la-hills before its second rebatch (docs/RESUME.md §0t)2026-09-29scripts/build_named_pass_routes.py
Root cause of west-coast-cities-region-table-map-ranking-faults's "no surface rows at…2026-09-29265 pagesscripts/multibox/region_run.sh
FIXED, 2026-09-29 (found live on the France head)2026-09-29scripts/multibox/region_run.sh
FIXED, 2026-09-29 (found live on the France head: a ROAD_SEED seam re-measure of Route du…2026-09-29src/ukclimb/elevation/cog_grid.py
Three presentation faults found the morning after the west-coast-cities deploy (release…2026-09-29262 rows; 268 climbs; 122 rowssrc/ukclimb/regions.py
A country run is cut into blocks by `ukclimb campaign cut-blocks --region <key> --boxes…2026-10-02699 pagessrc/ukclimb/blockcut.py
A region run with no climbs/<section>-passes-*.yaml ledgers a hold-class intervention on…2026-10-03scripts/pass_list_candidates.py
A listed pass whose hand-traced line lies entirely on public authority links (NVDB Fv450,…2026-10-055 rowssrc/ukclimb/roadcheck.py
The track class (ukclimb.trackclass) is wired for the Norway/NVDB chips run only2026-10-05scripts/audits/track_class_sweep.py
Provider newest edition check2026-10-072,191 pagessrc/ukclimb/elevation/cog_grid.py
A cached STAC catalogue index must never hide a newer edition (2026-10-07, swisstopo…2026-10-07619 pagessrc/ukclimb/elevation/stac.py
Utah, 2026-10-102026-10-10scripts/multibox/region_run.sh
Other us regions private land2026-10-11src/ukclimb/landownership.py
Hardening item "seams", 2026-10-112026-10-11scripts/multibox/preflight_inputs.py
FIXED (2026-10-13, same re-fold)2026-10-133,879 pagessrc/ukclimb/ocl.py
Recognition rows keyed by section2026-10-131 rowssrc/ukclimb/recognition.py
FIXED (2026-10-13, us-nc-smokies1 exit-test re-fold after the NCDOT owner-type ruling)2026-10-133,891 rowsscripts/multibox/region_run.sh
NOTE ONLY - no code changed (the fix is a new pair class, not a threshold)2026-10-13scripts/audit_corpus_dedupe.py
A provider whose whole-tile prefix is ABSENT from B2 is an inventory ERROR only when the…2026-10-14src/ukclimb/banked_tiles.py
An input bank keyed by AREA (fetched for a bbox, not the whole world) declares the window…2026-10-14761 pagessrc/ukclimb/input_coverage.py
A verifier that writes temp files per manifest row must name them per CALL, not per row…2026-10-15scripts/verify_crop_bank_provider.py
PyYAML safe_load keeps the LAST value of a repeated mapping key and says nothing2026-10-15src/ukclimb/strictyaml.py
Three small gaps from the rulings audit2026-10-21tests/test_rulings_audit_group_a.py
BR-G32026-10-2118 pagessrc/ukclimb/elevation/cog_grid.py
Privately maintained North Carolina roads kept out of the rankings2026-10-263,093 pages; 48 pages; 3 pagesscripts/lift_review_by_authority.py
Scripts/aerial_card.py cannot draw OS Open Roads ("os-open-roads needs its own loader")…2026-10-29scripts/aerial_card.py
The cross-state 3DEP candidate set (usa-cross-state-newest-project) misses two cases…2026-10-29the
Every docs/NEW-REGION.md step is enforced by a script, gate, test or recorded artefact…2026-10-31region_run.sh
A state road-inventory decoder must not read a road as publicly maintained when its own…2026-10-315 pagesscripts/state_inventory_usa.py
Us bare road ref forms authority name 2611012026-11-01src/ukclimb/passnames.py
A national named-passes run (no --bbox) builds only the REGION's own cols2026-11-02scripts/build_named_pass_routes.py
Scripts/aerial_card.py --authority-region usa-wv fails with KeyError 'WV' in roadauthority2026-11-04src/ukclimb/roadauthority.py
Head campaign config not pulled 2611042026-11-04scripts/multibox/campaign_config_dump.py
A head_adopt re-run after a STOP pulled the banked run dir with a plain rclone copy2026-11-04scripts/multibox/head_adopt.sh
A new measuring box is checked for the three environment seams usa-wv G4 hit one at a time2026-11-05scripts/multibox/preflight_inputs.py
Preflight_inputs._is_national treats a run launched with --block (which passes a bbox) as…2026-11-05scripts/multibox/preflight_inputs.py
Usa-va G4 edge review (Fable, 2026-11-08)2026-11-08scripts/multibox/head_adopt.sh
Climbs/recognition.yaml no_page rows are not filtered by any reader, so a placeholder…2026-11-08src/ukclimb/recognition.py
Owed work that bites one region had no route to the run it would hit2026-11-09docs/NEW-REGION.md
A new US state reached the deploy with no buildings or water extracts2026-11-09docs/NEW-REGION.md
A coarse-grid cell (usa10m) that USGS re-published after an earlier run banked it differs…2026-11-10scripts/bank_coarse_tiles.py
Discover sanity check (b) judges ways SCANNED (the `scanned N ways >= 30 m` log line)…2026-11-10311 candidatesscripts/multibox/discover_sanity.py

Drawing the line

Where the measured line runs, and where the climb starts and ends.

RuleAddedPages namedCode
An adopted page whose maximum sits STRONG off the inventory centreline, or with >=3 prism…2026-09-063 pages; 63 pagesscripts/multibox/adopt_set.py
A candidate held in the 0.5–0.8 inventory-coverage band (D28-B) is not dropped2026-09-08711 candidatesscripts/build_inventory_extent_trim.py
A measurement line that jogs off the road inside the steepest window is held (adopt_set)…2026-09-0832 pages; 33 pagesscripts/audit_route_kink.py
An OSM driveway, service way, track or path that joins the route within 15 m of the…2026-09-09152 pages; 23 routes; 520 routesscripts/audit_driveway_at_window.py
The steepest 25 m window must sit ON the inventory line2026-09-094,242 pagesscripts/state_inventory_usa.py
Pre-adoption holds for line-offset STRONG / prism-absent / bench-offset are re-lined to…2026-09-09scripts/resite_inventory_usa.py
A steepest window followed by >= 200 m of <= 2 % road is a route that runs past its crest2026-09-11322 pages; 201 pageshump_buckets.py
A hunt-extent hold (route runs past the run the road authority names as the page's road)…2026-09-11345 pagesscripts/extent_continuation.py
A door row whose 25 m window sits >= 5 m off the road authority's centreline AND whose…2026-09-1163 pagesscripts/multibox/adopt_set.py
Every long box stage runs under a watchdog that reports docs, rate, workers, memory, disk…2026-09-11scripts/multibox/stage_watch.sh
A door row whose route runs >= 50 m past the road authority's network to its end…2026-09-112,437 pagesscripts/multibox/adopt_set.py
The famous long Tyrolean roads exist in wave 3 only as hunt fragments that clear no door…2026-09-126 pages; 12 routes; 11 rowsclimbs/recognition.yaml
A route whose last 40 m turn through a sharp dog-leg (>= 60 degrees over 20 m) and end at…2026-09-1316,296 pages; 763 pages; 563 routesscripts/audit_dogleg_tail.py
A steepest 25 m window that sits within ~60 m of a hairpin (>= 80 degrees over 20 m) AND…2026-09-1316,296 pagesscripts/audit_hairpin_at_maximum.py
A chips row is joined to a page only when its route length matches the page's length_m…2026-09-154 pages; 2 pages; 33 pagesscripts/multibox/chain_rules.py
The US line-offset sweep resolves a 3DEP tile directory to its PRIMARY state before any…2026-09-159 pagesscripts/audit_line_offset_usa.py
The redraw's band gate is 6 m2026-09-15118 pages; 62 pages; 41 pagesscripts/resite_authority.py
A page whose road is under 200 m once the extent is trimmed to the crest is retired2026-09-1524 pages; 22 rows; 533 pagesscripts/multibox/chain_rules.py
14 UK pages still carried the 61-point decimated route of the 2026-08-30 restoration…2026-09-15scripts/route_doctor.py
The BD TOPO chips buffer is 10 m (was 20 m provisional)2026-09-16src/ukclimb/roadauthority.py
A named-pass row (the col step's door) is exempt from the lane-extent exclusions in…2026-09-16scripts/multibox/adopt_set.py
A page whose steep part is a driveway is cut where the PUBLIC ROAD ENDS, not at a bend2026-09-18ways_along.py
A re-line proposed by the cross-section is not a published number until the page is…2026-09-1811 pagesdocs/audits/wales-pointcloud-pack-260918.md
Valley crossing extent2026-09-21213 pages; 25 climbs; 47 climbsscripts/valley_crossing_scan.py
DONE (build path, 2026-09-25)2026-09-2521 rowsscripts/multibox/massif_prep/seed_resolve.py
DONE (found on the Provence prep chain, 2026-09-25)2026-09-25scripts/multibox/massif_prep/mc_tour_membership.py
Every page the route doctor's `leading_descent` check has ever flagged (Massif Central,…2026-10-0118 pages; 0 routesscripts/trim_leading_descent.py
Corridor-crop2026-10-03src/ukclimb/elevation/tile_bank.py
Every reader or editor of climbs/<sec>-editorial.yaml (and known-road rows) handles…2026-10-121 rowssrc/ukclimb/editorial_rows.py
CALIBRATION OWED2026-10-1320 pages; 3,905 pagessrc/ukclimb/hairpininside.py
North Carolina runs (registry `gate_rule: entrance-100m` on usa-nc)2026-10-14761 pages; 7 pagessrc/ukclimb/gaterule.py
Verdict `extent:trim-to-last-inventoried-metre` is recorded on six us-nc-smokies1 pages…2026-10-15scripts/build_inventory_extent_trim.py
Batch_autok.sh counted a chunk entry done only if out/<entry slug>/<slug>.json existed2026-10-15scripts/multibox/batch_autok.sh
Scripts/multibox/trim_remeasure.sh (via hunt_extent_rebatch) re-measures from the plan's…2026-10-15scripts/build_inventory_extent_trim.py
A max25 window offset of exactly 15.0 m is owned by neither hold class2026-10-17scripts/multibox/adopt_set.py
Pages whose chips row has max25_offset_m exactly 15.0 (the cap) are newly held2026-10-21docs/audits/window-offset-15m-saturated-261019.md
Protected end stub trim remeasure 2610222026-10-225 pagesbuild_remeasure_plan.py
The 15.0 max-window-offset hold must ignore readings whose chips row has max25_cov_frac…2026-10-23NONE
Generic line offset roadauthority 2610272026-10-27scripts/audit_line_offset_usa.py
Audit_mask_parity subtracts a note's source offset (e.g. kept 168-1004) from a published…2026-10-27the
Access end named tail calibration 2610282026-10-2836 pagessrc/ukclimb/accessend.py
Roadauthority.max_window_arc_ratio returns empty (two-lines) when the stretch ends…2026-10-28src/ukclimb/roadauthority.py
BR-A12 latent breach (Fable review, P2 ruling batch 2026-10-28)2026-10-28scripts/multibox/adopt_set.py
NC eye pass 2026-10-28 (measured)2026-10-28src/ukclimb/lineoffset.py
When retro inventory-extent-guard-261028 lands (authority starts/stops partway along the…2026-10-28src/ukclimb/lineoffset.py
Line on carriageway class 2610282026-10-28docs/BINDING-RULES.md
NC eye pass 2026-10-282026-10-28scripts/multibox/trim_remeasure.sh
Scripts/extent_continuation.py (F28) cannot run for nz2026-10-29scripts/extent_continuation.py
Scripts/audit_hairpin_inside.py --line-geometry (the merged F6/F9 detector incl. the…2026-10-29scripts/audit_hairpin_inside.py
Us-passes-utah Little Cottonwood Canyon top (Alta), slug little-cottonwood-alta2026-10-29climbs/us-passes-utah.yaml
Scripts/multibox/trim_remeasure.sh consumes only the build_inventory_extent_trim plan…2026-10-29scripts/multibox/trim_remeasure.sh
One-time residue of the ch run-6 public-continuation re-evaluation (retro…2026-10-30527 routesscripts/multibox/remeasure_fold.py
Climbs/review-flags.yaml keys each flag by span_m in the page's own chainage, and…2026-10-30scripts/multibox/remeasure_fold.py
A fold or continuation plan never extends a page past a RULED trim end (2026-09-15…2026-10-3113 pagesclimbs/ruled-trims.yaml
A route whose chips request window is not inside the banked WVDOH snapshot bbox (+0.01…2026-11-02src/ukclimb/wvdoh_lrs.py
An authority snapshot is banked with a margin past the run area, and preflight refuses…2026-11-02src/ukclimb/wvdoh_lrs.py
The run-area margin rule (BR-G20; wvdoh-snapshot-edge-routes-261102,…2026-11-05scripts/multibox/preflight_inputs.py

Measuring

Turning the line and the terrain model into a ladder of window maxima.

RuleAddedPages namedCode
A route geojson in lon/lat (declared EPSG:4326 or plainly degrees) is projected with the…2026-09-10src/ukclimb/batch.py
Nearest OSM junction node (road-only option) to the 25 m window, memory-lean2026-09-11scripts/audit_junction_at_window.py
Re-run chips.py over uk/us/ch/at so every published page's chips row carries…2026-09-16scripts/chips.py
Scripts/chips.py writes an explicit route_length_m column (the sampled line's length in…2026-09-16scripts/chips.py
A col a published page is named after must have a row in the region's pass list, or no…2026-09-17climbs/fr-passes-alps.yaml
On the Jura blocks (2026-09-24, 12:16Z diagnostic on fr-ju2)2026-09-24scripts/multibox/extend_shards.sh
PARTIALLY DONE, 2026-09-29 (coordinator follow-up: region_run.sh --block — what the…2026-09-29scripts/multibox/nation_batch.sh
A chips.py re-run over roadauthority.chips_for_route(authority='usa-inventory') must…2026-09-30state_inventory_usa.py
The not-public-at-window check (ukclimb.notpublicwindow: OSM own-way tags a-c, authority…2026-10-02scripts/audit_not_public_at_window.py
Edition re-measure 2026-10-07 (us)2026-10-0711 pagessrc/ukclimb/elevation/usa.py
Usa newest project selection2026-10-0738 pages; 26 pages; 11 pagessrc/ukclimb/elevation/usa.py
Audit_not_public_at_window.py --authority bdtopo must honour --gpkg (repeatable / comma…2026-10-20scripts/audit_not_public_at_window.py
The provenance.prior_doc stamp records prior_window_m (the kept published stretch the…2026-10-21src/ukclimb/analysis/carried.py
Restricted window listing apply to existing2026-10-21src/ukclimb/roadauthority.py
Uk restricted majority unflagged 2610212026-10-21scripts/chips.py
US aerial checks looked at the right place2026-10-26612 pages; 140 pages; 44 pagesscripts/aerial_crops.py
Build_named_pass_routes.py --apply sets a non-empty named-pass-routes dir aside (<run…2026-11-03scripts/build_named_pass_routes.py

Checking the measurement

Everything that asks whether the terrain under the line is really the road surface.

RuleAddedPages namedCode
An overhead power line crossing inside the steepest 25 m window is reported with the raw…2026-09-088,216 pagesscripts/audit_power_crossings.py
The terrarium (coarse second surface) detector accepts every registered US CRS, not a…2026-09-08scripts/audit_terrarium_divergence.py
Lateral stability is a registered detector ('all') and a band-chain step2026-09-10src/ukclimb/campaign.py
A steepest window whose samples run within ~2 m of building footprints on both sides (a…2026-09-11scripts/audit_building_canyon.py
Hump advisory2026-09-112,270 pagestexture.ADVISORY;
A page whose 25 m maximum is a spike2026-09-1131 pagesscripts/audit_spike_at_maximum.py
Audit_spike_at_maximum's 'not sustained' test uses the 100 m gradient of the windows…2026-09-1112 pagesscripts/audit_spike_at_maximum.py
A 25 m window whose nearest road-authority segment carries a structure attribute…2026-09-11chips.py
Nation_batch.sh cuts the batch extract with w/highway w/railway w/waterway w/bridge…2026-09-11scripts/multibox/nation_batch.sh
Suppress_windows_over_mask re-sites a maximum whose current placement intersects the mask…2026-09-11src/ukclimb/analysis/quality.py
The inside of every reported window must look like a road2026-09-11655 pages; 1,940 pagessrc/ukclimb/analysis/texture.py
A detector whose OSM extract is absent must STOP the chain, not report 'classes {}'2026-09-122,928 pagesscripts/audit_driveway_at_window.py
Two different 'unresolved' signals, only one retires (review session, 2026-09-12)2026-09-122 pagestexture_apply
Batch._bridge_tunnel_ranges masks a span where the ROUTE ITSELF runs on an OSM…2026-09-135 routes; 12 pagessrc/ukclimb/batch.py
A page is a building CANYON when canyon_frac >= 0.6 at the 6 m band…2026-09-1524 pages; 43 rowsscripts/audit_building_canyon.py
Adopt_set.py resolves its detector CSVs once (detector_dir)2026-09-16scripts/multibox/adopt_set.py
Wire IGN LiDAR HD's classified point cloud as the French prism (road-bed existence) and…2026-09-16src/ukclimb/elevation/ign_pointcloud.py
Scripts/audit_lateral_stability.py recomputes the raw profile at each sideways offset and…2026-09-16197 pages; 139 pagesscripts/audit_lateral_stability.py
A named-pass walk crosses a short UNNUMBERED gap2026-09-16scripts/build_named_pass_routes.py
Window MINIMA get the same artefact suppression as maxima2026-09-19src/ukclimb/analysis/quality.py
NOT YET FIXED2026-09-206,058 routes; 954 pages; 2,954 pagessrc/ukclimb/passnames.py
An error row is not an answer2026-09-2041 rows; 129 routes; 30 pagesscripts/nation_road_prism.py
The prism step says how many routes it will cross-section, and why it uses one reader,…2026-09-20187 routes; 6 routesscripts/multibox/nation_batch.sh
A published figure that today's harness would not produce is a defect, whatever the…2026-09-20379 pages; 5 pages; 512 pagesscripts/reproduce_published.py
Unmapped bridge span2026-09-20541 pages; 2 pages; 218 pagessrc/ukclimb/analysis/quality.py
Carried artefact verdicts2026-09-214,394 pages; 73 pagessrc/ukclimb/analysis/carried.py
Remeasure carries way lists2026-09-2117,358 pages; 55 pages; 17,358 routessrc/ukclimb/analysis/carried.py
Remeasure fold the fallers2026-09-21169 pagesscripts/multibox/remeasure_fold.py
DONE2026-09-24src/ukclimb/elevation/base.py
DEFECT (Provence box fr-pr7, 2026-09-25 09:49Z; Corsica fr-co2, 2026-09-25 02:10Z before…2026-09-25scripts/multibox/fleet_watch.py
DONE (2026-09-26, head runs fr-pr-ventoux2 + fr-no-summits)2026-09-26scripts/build_named_pass_routes.py
QUEUED (2026-09-27 ~09:40Z, the sud-ouest deploy preflight)2026-09-27src/ukclimb/analysis/quality.py
Norway readiness B4 (2026-10-02)2026-10-02src/ukclimb/regions.py
Tunnel rule live sweep2026-10-0223,117 pages; 108 pages; 200 pagessrc/ukclimb/tunnels.py
Every sweep-shaped check reports how many pages it EXAMINED and refuses at zero…2026-10-05tests/unit/test_detectors_report_examined.py
The Norway surface chain cannot tell a rock or grass track from a gravel road, so the…2026-10-05613 pagessrc/ukclimb/trackclass.py
The texture hump mask removed smooth 31-35 % ramps (not spikes) on all three ch pages of…2026-10-17quality_summary.texture_windows.windows_masked
Route doctor structure and measured line2026-10-20src/ukclimb/routeworld.py
The analysis-config digest covers only the kwargs of 13 functions, not the…2026-10-21NONE
BR-A62026-10-21src/ukclimb/analysis/carried.py
Known gap in the structure carry (Fable review 2026-10-21)2026-10-21src/ukclimb/analysis/carried.py
Src/ukclimb/aerialcrop.py check_not_blank passes flat or textured FILL tiles (NAIP…2026-10-21src/ukclimb/aerialcrop.py
Hump gravel ramp class2026-10-2125,301 pagessrc/ukclimb/humpmask.py
Scripts/audit_mask_parity.py also compares quality_summary.excluded_ranges_m2026-10-21scripts/audit_mask_parity.py
Audit_mask_parity2026-10-21scripts/audit_mask_parity.py
Three gate/plan faults found by the remeasure-261021-r2 run, fixed together2026-10-21scripts/verify_rebatch.py
Carry keeps published mask edges 2610222026-10-22src/ukclimb/analysis/carried.py
Eye38 new lost texture mask rerun 2610222026-10-225 pagesscripts/build_remeasure_plan.py
Batch mask release section 2610232026-10-23src/ukclimb/batch.py
Detectors region run wiring 2610272026-10-27scripts/multibox/region_run.sh
Nc detector flags eye pass 2610272026-10-2747 pagesclimbs/road-review-verdicts.yaml
Gate detectors:battery run on the nz live sweep reports (2026-10-28) lists…2026-10-28src/ukclimb/detector_no_source.py
NC eye pass 2026-10-282026-10-28src/ukclimb/accessend.py
BR-G20 resume half2026-11-02scripts/multibox/region_run.sh
G4 shakedown head path 2611042026-11-04scripts/multibox/region_run.sh
The NEW-REGION G4 shakedown never exercised two paths the national run takes2026-11-05scripts/multibox/region_run.sh
Usa-va b06 STOP 12026-11-08src/ukclimb/tile_bank.py
Usa-va b06 STOP 22026-11-08scripts/multibox/stage_gates.py

Ruling

What a measurement earns: a ranked page, a page held for a person's ruling, or a withdrawal.

RuleAddedPages namedCode
Hand-picked pages (curated origin or human-decision ledger) clear the founding door2026-09-06src/ukclimb/doors.py
The route doctor gates adoption, not only deploy2026-09-06ukclimb.campaign
A re-run of the adopter never re-places an already-adopted page2026-09-0837 pagesscripts/adopt_hunt_wave.py
The route doctor refuses a scan that loaded 0 pages (wrong --corpus path) instead of…2026-09-088,216 pagesscripts/route_doctor.py
Every adopted US page gets its surface chip row (surface/invcov/unpaved_pct from the…2026-09-083,449 rows; 1 rows; 2,085 pagesscripts/multibox/chips_to_editorial.py
A US page whose surface no inventory, OSM tag or LHI listing records carries an ESTIMATE…2026-09-09scripts/surface_estimate_prototype.py
A YAML list merged from several directories rewrites every relative `route:` path to the…2026-09-10scripts/merge_yaml_lists.py
A route with >= 500 m of endpoint gain at >= 5 % overall clears the sustained-climb door2026-09-1077,618 routes; 17 pagessrc/ukclimb/doors.py
The aerial pass is part of the pipeline, not a human-only step2026-09-11scripts/aerial_card.py
Roadauthority.chip_from_fracs needs a recorded surface under KNOWN_MIN_FRAC (0.5) of the…2026-09-11608 rowsscripts/refresh_surface_from_spans.py
A page whose 25 m maximum is >= 34.8 % (the Baldwin Street mark; Ffordd Pen Llech reads…2026-09-1140 pagesscripts/multibox/adopt_set.py
In the Alpine sections (registry steep_unpaved_list_pct on switzerland and austria) a…2026-09-11129 pagesscripts/multibox/chips_to_editorial.py
A climb page in an inventory-backed section states the road authority's surface on the…2026-09-11src/ukclimb/roadauthority.py
A verdict row may carry length_m / run / applies_to2026-09-11src/ukclimb/verdicts.py
Texture_apply (and any chain apply) decides ranked vs below-door with doors_csv any_door,…2026-09-12scripts/multibox/texture_apply.py
Adopt_set2026-09-13401 pagesscripts/multibox/adopt_set.py
A page whose line follows the mapped road along almost its whole length and leaves it…2026-09-15118 pagesscripts/resite_authority.py
The 200 m minimum is a door on the ROAD, not only on a trim2026-09-15536 pages; 533 pages; 15,576 pagesscripts/multibox/chain_rules.py
Region_run.sh passes --staging $R to adopt_hunt_wave, aliases batch-<region> -> batch,…2026-09-16scripts/multibox/region_run.sh
A massif runs as BLOCKS of one driver, never as a hand-assembled fleet chain2026-09-16scripts/multibox/region_run.sh
Region_run.sh's verdict compares deduped entries with batch docs + FAIL lines and logs a…2026-09-16scripts/multibox/region_run.sh
France's road authority is IGN BD TOPO® `troncon_de_route` (Licence Ouverte / Etalab 2.0)…2026-09-16src/ukclimb/roadauthority.py
Rue-de-la-feigne-2 and impasse-des-joncs stay unmeasured2026-09-16scratchpad/reports/ign-edge-nodata.md
A texture, hump or structure suppression that would MOVE the headline 25 m maximum of a…2026-09-16src/ukclimb/protected.py
A staged page missing FILES is held on its own with the class "incomplete docs2026-09-1765 routesscripts/adopt_hunt_wave.py
The batch-side protected-page flag judges record-class on the resolved headline only2026-09-17src/ukclimb/protected.py
The adoption step consults climbs/road-review-verdicts.yaml before it applies any hold…2026-09-17192 rows; 15,560 pagessrc/ukclimb/verdicts.py
The col-name override reads only the COL PART of a page's name2026-09-18src/ukclimb/passnames.py
A page held because "the line may not be on the road" is not held for ever2026-09-1820 pagesclimbs/road-review-verdicts.yaml
Evidence-quality letter is evidence quality2026-09-19src/ukclimb/site.py
A human verdict row may name the line it ruled on (`geometry_sha`)2026-09-19src/ukclimb/verdicts.py
The date in an adopted page's ledger note is the day it was adopted2026-09-201,840 rows; 160 rowsscripts/adopt_hunt_wave.py
An EMPTY adopt list is a STOP in adopt_hunt_wave (it is what catches an adopter placing 0…2026-09-2023 routesscripts/multibox/adopt_set.py
A page can be retired on the laptop AFTER the box adopted it, and `pull_run.py` had no…2026-09-204 pagesscripts/multibox/pull_run.py
A page NAMED as a settled col of the section's pass lists is a col page and clears the…2026-09-20scripts/route_doctor.py
A suppression verdict that flips when the same line is resampled under a metre is not…2026-09-20998 pages; 12 pagessrc/ukclimb/analysis/quality.py
The first Massif Central cols-wave adoption exited 12026-09-22scripts/multibox/head_adopt.sh
DONE2026-09-22scripts/multibox/chain_rules.py
Parallel to carriageway2026-09-24scripts/multibox/adopt_set.py
QUEUED (2026-09-25, Provence fr-pr8)2026-09-25scripts/multibox/adopt_set.py
IGN LiDAR HD dalles from survey block FE (@24LHDFE, 2025-10-15, north-west rehearsal…2026-09-25src/ukclimb/elevation/sampler.py
Record class triage tool2026-09-25scripts/audits/record_class_triage.py
QUEUED (2026-09-26 ~23:30Z, the nord-est record-class triage)2026-09-26scripts/multibox/adopt_set.py
QUEUED (2026-09-27, the sud-ouest pull)2026-09-27scripts/multibox/adopt_set.py
Fault (2026-09-28, the France deploy, docs/RESUME.md §0s)2026-09-28scripts/multibox/pull_run.py
Grass track not a road2026-09-29scripts/multibox/adopt_set.py
Named pass confidence u hold2026-09-2950 pagesscripts/multibox/adopt_set.py
Scripts/multibox/adopt_set.py now loads det/not-public-at-window.csv (STRONG rows only,…2026-09-29scripts/multibox/adopt_set.py
17 pages (mostly NY) that already had a full-coverage, real published surface…2026-09-30Not
Record class heavy obstruction listed2026-10-010 pages; 91 pagessrc/ukclimb/protected.py
Three of the 22 listed Norwegian passes have no page2026-10-04docs/audits/norway-review-261004.md
NVDB private/forestry (P/S) links carry no Vegdekke object, so their surface read unknown…2026-10-056,169 rowssrc/ukclimb/roadauthority.py
SwissTLM3D carries Z and a per-feature creation date, but its Z is draped on the same…2026-10-061 rowsscripts/audit_road_newer_than_survey.py
D27 lift door check2026-10-0687 pages; 0 pages; 460 rowssrc/ukclimb/doorcheck.py
Adoption verdict semantics and campaign gate mismatch2026-10-0889 rows; 108 rows; 41 rowssrc/ukclimb/campaign.py
Birth naming ignores verdict founding record class protection2026-10-08220 pages; 332 pages; 112 pagessrc/ukclimb/naming.py
Entry door parsed from free text2026-10-08src/ukclimb/doors.py
Verdict rows bind no geometry2026-10-08343 rows; 224 rowssrc/ukclimb/verdicts.py
Struck or retired never live2026-10-0923,721 pages; 2 pages; 4 pagesscripts/deploy_gates.py
Utah, 2026-10-112026-10-11173 pages; 182 pages; 30 climbsscripts/multibox/region_run.sh
An authority sample whose surface is UNKNOWN (an NCDOT Road Characteristics SrfcType…2026-10-13507 rows; 0 rowssrc/ukclimb/roadauthority.py
Nc owner 98 99 unknown listed2026-10-13scripts/state_inventory_usa.py
A page protected ONLY by the record-class mark whose steepest 25 m window has NO ROAD…2026-10-1315 rowsscripts/multibox/adopt_set.py
Record class cards are budgeted2026-10-13scripts/multibox/region_run.sh
An editorial row's `unpaved_pct` is the gravel share of the KNOWN samples only (chips…2026-10-133,886 rowsscripts/multibox/chips_to_editorial.py
The record-class-listed release (retro record-class-listed-verdict-wins) has no door-less…2026-10-15scripts/multibox/adopt_set.py
A settled human `ok:record-class-listed-unranked` verdict (BR-C2) places its page LISTED,…2026-10-15scripts/multibox/adopt_set.py
A record-class review card must show the page's adoption doors (doors.csv any_door + door…2026-10-15scripts/record_class_pack.py
A person's surface ruling (Street View) was not expressible2026-10-15src/ukclimb/surfaceoverride.py
Below the region's steep_unpaved_list_pct an unpaved steepest 25 m window is a surface…2026-10-15src/ukclimb/eyepass.py
Scripts/multibox/retire_list.py apply() drops the retired slugs' editorial rows by…2026-10-17scripts/multibox/retire_list.py
The not-public-at-window detector must NOT hold a page whose window way carries OSM…2026-10-19scripts/audit_not_public_at_window.py
Access end separator apply to existing2026-10-2185 rowssrc/ukclimb/accessend.py
Chips targeted 382 no surface 2610212026-10-21382 rowsscripts/chips.py
Scripts/multibox/remeasure_table.py classify names a class by the rule that fired…2026-10-21scripts/multibox/remeasure_table.py
Climbs/road-review-verdicts.yaml rows that resolve to no live page (92 of 218 on…2026-10-21tests/unit/test_verdict_rows_bound.py
Nightly checks alarm on a stalled step instead of hanging2026-10-22nightly_invariants.sh
Surface spans follow ruled cut 2610232026-10-23scripts/remeasure_fold.py
Page notes are written for visitors, not as working notes2026-10-2414 pages-editorial.yaml
A page that enters a top 20 is looked at, new or not2026-10-25scripts/deploy_gates.py
A listed page's Access line no longer ends in a stray fragment2026-10-2793 pages; 0 pagessrc/ukclimb/reviewflags.py
A gate note says which access tag the gate carries2026-10-27src/ukclimb/d27.py
A NEW page that a human verdict protects (verdict family rank, e.g. review_confirmed) and…2026-10-27scripts/multibox/adopt_set.py
Every page in a top 20 has had two looks2026-10-277 pagesscripts/aerial_crops.py
P3 lane B (F4) found2026-10-28scripts/audit_access_end.py
AGENTS rule 14, from the P3 lane B access-end eye pass (117 NC cards, 2026-10-28)2026-10-28src/ukclimb/accessend.py
P3 lane B calibration eye pass 2026-10-282026-10-28src/ukclimb/accessend.py
Accessend.SYSTEM_PREFIXES ("SR","NC","US","I") is NC-shaped2026-10-28src/ukclimb/accessend.py
Battery access end and created pass 2610282026-10-28scripts/multibox/detectors_battery.sh
F24 measurement 2026-10-282026-10-28src/ukclimb/lineoffset.py
NC eye pass 2026-10-28 (peaceful-view-drive held)2026-10-28scripts/audit_survey_vintage_created.py
Survey newer road standing hold 2611012026-11-01src/ukclimb/surveynewer.py
Head_adopt.sh run through launch.sh (the documented NEW-REGION G8 command) must find its…2026-11-03scripts/multibox/launch.sh
Adopt_set passes the doors row's state (usa-wv, a region key, not a site section) to…2026-11-04scripts/multibox/adopt_set.py
Scripts/audits/record_class_triage.py projected every max-25 m window to lon/lat from a…2026-11-04scripts/audits/record_class_triage.py
Autok_sched's monotonic peak-RSS estimate (6.5-6.7 GB per worker) held the 16-vCPU / 32…2026-11-05scripts/multibox
RESUME and eta records must quote the POST-EDITORIAL ranked/listed count, not the…2026-11-05docs/RESUME.md
No tool takes one page out of a failed adopt2026-11-08scripts/multibox/head_adopt.sh
Usa-va b06 (zero pages adopted) stopped at gate-adoption with adopted_list unset on…2026-11-08scripts/multibox/stage_gates.py
The relay holds a hand-copied tree, so a new B2 prefix failed the mirror for two runs2026-11-09e2_mirror_status.py
All 10 usa-va head logs said VERDICT FAILED for report-only gates2026-11-09scripts/multibox/region_run.sh

Publishing

The pages, the files, the links and the published record of every decision.

RuleAddedPages namedCode
Filled dots are pages coloured by the 25 m gradient2026-09-07src/ukclimb/site.py
The deduped yaml carries the final -N slugs BEFORE the road audit (split_spatial.py…2026-09-08scripts/split_spatial.py
Slugs fold letters with diacritics to their base letter (kahakō, ŷ…) instead of dropping…2026-09-0819 pagessrc/ukclimb/analysis/profile.py
Every tool that retires, holds or adopts a route stamps ONE reason code from…2026-09-098,996 pagessrc/ukclimb/decisions.py
A deploy that changes the page counts also cuts a new dated decisions release (pages…2026-09-10scripts/refresh_decisions_release.sh
Deploy refuses above 95,000 static files and warns above 80,000 (Workers cap 100,000;…2026-09-10scripts/deploy.sh
The site builds the sections it is configured for and REFUSES an unknown one2026-09-10src/ukclimb/site.py
Whole-set slugs are written into the deduped list (split_spatial --write-back) BEFORE the…2026-09-1064 pagesscripts/multibox/extend_shards.sh
Every climb page carries a <title> of the form "<name>, <place>2026-09-1110,067 pagessrc/ukclimb/site.py
Surface_spans labels an UNMATCHED sample (no authority segment within the buffer) 'none'…2026-09-11523 pagessrc/ukclimb/roadauthority.py
Retired-page redirects are served by web/worker.js from the build's redirects.json…2026-09-13src/ukclimb/site.py
Methodology how a page is made2026-09-15src/ukclimb/site.py
Batch_autok.sh accounts for every entry of every chunk as a doc or a FAIL line before it…2026-09-16scripts/multibox/batch_autok.sh
A named-pass col is built from whatever OSM gives it2026-09-1650 routesscripts/build_named_pass_routes.py
A `named-pass` row that coincides with a published page OF THE SAME SECTION lying INSIDE…2026-09-17scripts/multibox/chain_rules.py
A 25 m maximum at least 3x the route's overall gradient, on a route gaining under 100 m,…2026-09-17scripts/multibox/chain_rules.py
Every built site section is in site.AERIAL_TILES (open national orthophoto tiles +…2026-09-18src/ukclimb/site.py
Every deploy gate whose answer is already in the corpus is decided BEFORE the ~13-minute…2026-09-19scripts/deploy_gates.py
Every image URL the site emits comes from one function (site.asset_url) reading one…2026-09-19src/ukclimb/site.py
The site build rewrites only the pages whose content changed and sweeps whatever it did…2026-09-19src/ukclimb/site.py
The map library is fetched when the map nears the viewport (IntersectionObserver, 300 px)…2026-09-1916,000 pagessrc/ukclimb/site.py
A published row is reachable at a URL of its own, never only inside a table JavaScript…2026-09-19src/ukclimb/site.py
/sitemap.xml is an index over one sitemap per country plus the survey-wide pages, and…2026-09-19src/ukclimb/site.py
A table is the one element that cannot narrow past its own content, so it scrolls inside…2026-09-19src/ukclimb/site.py
The Worker answers plain http with a 301 to https, for the apex and for www, alongside…2026-09-19web/canonical.js
A deploy must build, bank and publish ONE listing of the corpus2026-09-20scripts/corpus_bank.py
A DECISION, not a fix2026-09-20scripts/e2_mirror.sh
NOT YET FIXED2026-09-2018,511 pages; 110 pages; 218 rowsscripts/corpus_doctor.py
A deploy checks that today's code produces the figures it is about to publish, before the…2026-09-2018,511 pages; 387 pagesscripts/deploy_gates.py
A cache file written by more than one process at a time needs a temp name unique to the…2026-09-2060 pagessrc/ukclimb/atomicio.py
Closeout verifies run outputs2026-09-21scripts/multibox/closeout_outputs_check.py
The kept web/site tree did not shorten the build2026-09-22src/ukclimb/site.py
A measuring box holds the INPUT every figure rests on (the IGN dalles it fetched,…2026-09-22scripts/multibox/box_closeout.sh
Box_closeout.sh's run-output check listed the WHOLE b2 outputs/ prefix with `rclone lsf…2026-09-22scripts/multibox/box_closeout.sh
The pooled IGN fetch (retro ign-dalle-fetch-is-the-clock) measured on the jm-prep box…2026-09-24src/ukclimb/elevation/cog_grid.py
France callout generated from massif configs2026-09-25src/ukclimb/site.py
Fault (2026-09-28, France deploy, docs/RESUME.md §0s)2026-09-28scripts/deploy.sh
Methodology states the 20m rise rule2026-09-28METHODOLOGY.md
Two faults found reviewing the west-coast cities re-adoption (docs/RESUME.md §0t), both…2026-09-29scripts/build_named_pass_routes.py
Naming steepest street and local lane names2026-09-290 rows; 23,119 pages; 1,057 pagessrc/ukclimb/naming.py
Nation_batch.sh's RESUME=1 path computed "remaining entries" by scanning ONLY the…2026-09-29scripts/multibox/reconcile_split.py
Found live on the box2026-09-29scripts/multibox/reconcile_split.py
A check whose tool failed must never read as "clean"2026-09-30box_closeout.sh
Hand-trace / trim / re-measure fold steps that write a site-corpus doc directly…2026-09-30scripts/us_area_labels.py
Ratchet audit 2026-10-01 (gap #49)2026-10-01PRODUCTION.md
The crop close-out planned its corridor from `<run>/batch/*/*.geojson` only2026-10-04scripts/crop_bank_closeout.py
Aerial ends live pages2026-10-06592 pagesaerial_crops.py
Aerial eye other sections2026-10-06src/ukclimb/aerialverdicts.py
Ch d27 lift prepared2026-10-061,446 rowsscripts/chips.py
Ch track context test2026-10-063,771 pages; 1,032 pages; 87 pageslift_review_by_authority.py
Gate bypass switches are ungated2026-10-08scripts/deploy_gates.py
Route doctor allow has no section2026-10-0825 rowsscripts/route_doctor.py
Verdict ledger keyed by slug without section2026-10-0823,721 pages; 343 rowssrc/ukclimb/verdicts.py
Verdict precedence site vs adoption2026-10-08141 rowssrc/ukclimb/protected.py
Study 2 D2, 2026-10-09 (docs/studies/doc-rewrite-behaviour-261009.md)2026-10-0918 pages; 18 rowssrc/ukclimb/protected.py
Utah wave 1, 2026-10-11 (d22fdb54)2026-10-11223 pagesscripts/editorial_coverage.py
Utah hil-3, 2026-10-112026-10-1113 pages; 5 rowssrc/ukclimb/slugtaken.py
Page status measurement vs presentation2026-10-1279 pagessrc/ukclimb/pagestatus.py
Retired slug reuse and resurrection2026-10-1313 pagesscripts/deploy_gates.py
A crop with 0 valid pixels whose ORIGINAL tile has valid data under the 120 m corridor…2026-10-15src/ukclimb/elevation/tile_bank.py
No gate stopped a batch slug that is LIVE from another run2026-10-15src/ukclimb/crossrun.py
`python -m ukclimb.deployreview check --head <sha>` compared the string given against the…2026-10-15src/ukclimb/deployreview.py
A crop-bank manifest route string may be two-part dir/slug (older banks, published/slug)…2026-10-15src/ukclimb/crop_plan_freeze.py
FIXED (2026-10-15, hil-4 us-nc-smokies1)2026-10-15scripts/adopt_hunt_wave.py
Remote_deploy.sh mirrors the working clone's site-corpus (rsync --delete) over the deploy…2026-10-15scripts/manifest_copyback.sh
Tile_bank.corridor_mask buffers each line and unary_unions the polygons2026-10-16src/ukclimb/elevation/tile_bank.py
The I3 protected-values baseline must be retaken by the deploy itself, not by a person…2026-10-16scripts/invariant_sweep.py
A slug collision across states must not nest one climb inside another2026-10-19to
Fable review of route-doctor-allow-has-no-section, 2026-10-202026-10-20scripts/route_doctor.py
A batch group (scripts/multibox/batch_autok.sh) exits 3 and writes failed_pages.tsv /…2026-10-217 pagesscripts/multibox/batch_autok.sh
The newest changelog entry's public numbers must equal what the build publishes2026-10-21scripts/deploy_gates.py
The sidecar-parity check lived only in the campaign driver (campaign.py…2026-10-21scripts/deploy_gates.py
The top-20 eye-pass deploy gate fired only for a section new to the site (0 -> N pages)2026-10-21src/ukclimb/eyepass.py
Johns road negative max100 2610222026-10-22quality.py
I3 reads protected ruling 2610232026-10-23scripts/invariant_sweep.py
A commit that stages only a docs/audits/deploy-review-<label>.md record must not be…2026-10-24scripts/git_hooks_check.py
Page notes carry no internal reference codes2026-10-24src/ukclimb/site.py
The deploy eye sample sees pages that changed only through a review flag2026-10-27152 pages; 25,244 pagessrc/ukclimb/deployreview.py
The published page data names nobody and carries no ledger tags2026-10-27spec/OCL.md
Publictext.public_json left "Fable-checked <date>" and bare model names in published JSON…2026-10-272 pagessrc/ukclimb/publictext.py
A ranked page's access note does not carry working notes about slugs2026-10-27138 pagessrc/ukclimb/publictext.py
Scripts/aerial_card.py has no open imagery source for Norway, so a no line-offset hold…2026-10-28scripts/aerial_card.py
Public JSON and the provenance <pre> carry internal paths in two identity keys left…2026-10-282,793 pagessrc/ukclimb/publictext.py
Publictext strips output paths 2610282026-10-28232 pagessrc/ukclimb/publictext.py
The p4b2-twins-261029 deploy reviewer found 5 rows in climbs/retired-redirects.yaml whose…2026-10-29scripts/deploy_gates.py
Scripts/multibox/retire_list.py write_redirects re-dumped the whole…2026-10-29scripts/multibox/retire_list.py
The uk section map frame (site.py fixed bounds, north edge 59.5) excluded 5 live Shetland…2026-10-31src/ukclimb/site.py
A run keeps ONE bank-tiles close-out prefix across a UTC date change2026-11-03src/ukclimb/crop_bank_dir.py
Mirror copy checksum 2611042026-11-04scripts/deploy.sh
A crop plan checked before restore (P1) must be the plan the cut will use2026-11-05scripts/crop_bank_closeout.py
An edition-fused page (provenance.edition_fusion, mean of two editions) rests on BOTH…2026-11-0518 pagessrc/ukclimb/banked_tiles.py
An UKC_ALLOW_INVARIANT_FINDINGS bypass never covers a finding on a page this deploy adds…2026-11-05scripts/invariant_sweep.py
The named-pass accounting gate runs only inside the launched deploy, so a pass with no…2026-11-09scripts/remote_deploy.sh
The nightly read the deploy clone inventory, refreshed only at a deploy, and false-fired…2026-11-09nightly_invariants.sh
Open ALARM files were printed as warnings, but no deploy gate covers the e2 half2026-11-09scripts/remote_deploy.sh
A deploy refused inside deploy.sh left its tag on origin2026-11-09scripts/remote_deploy.sh
The gates-only dry run gives deploy.sh the ASSET_HOST and DATA_ON_R2 the launch will use…2026-11-10scripts/remote_deploy.sh

Running the survey

Data handling, archiving and the machinery that keeps a run honest.

RuleAddedPages namedCode
A box checkout is updated with scripts/multibox/box_update.sh (stash → reset → pop),…2026-09-0818 pages; 88 pagesscripts/multibox/box_update.sh
Estimates come from measured stage durations + glue + a per-stage gap contingency,…2026-09-08ukclimb
The D27 inventory-authority lift runs in the head chain right after the adopter…2026-09-08scripts/lift_review_by_authority.py
A fresh box seeds the tile index for every zone key it will batch…2026-09-09scripts/multibox/seed_index.sh
Batch is given a PBF cut to the entry set's route corridors (scripts/routes_area.py +…2026-09-10scripts/routes_area.py
Something watches the watcher2026-09-10scripts/multibox/deadman.sh
Disk two filesystems2026-09-10src/ukclimb/campaign.py
Jobs banked gate2026-09-10src/ukclimb/campaign.py
The nation-keyed post-dedupe chain runs the pre-adoption hygiene (extent audit ->…2026-09-10scripts/multibox/nation_batch.sh
The batch stage does not pass until `rclone check` shows the dated PBF2026-09-10src/ukclimb/campaign.py
The nation chain takes every per-nation parameter from the registry (CRS, authority,…2026-09-112,099 rows; 61 pagesscripts/multibox/nation_batch.sh
A page directory holds exactly its own seven files2026-09-11to
Nation_batch.sh names the route-area batch extract per RUN (<pbf>-batch-<run>.osm.pbf)2026-09-12scripts/multibox/nation_batch.sh
68 pages (67 uk, 1 us) reached the 2026-09-12 deploy with a calib map stamp that did not…2026-09-1268 pagesscripts/reencode_maps.py
The road-authority chip instrument (scripts/chips.py, UKAuthority over OS OpenRoads,…2026-09-13scripts/chips.py
Region_run.sh's bank step excludes logs/bank.log from both the copy and the check (the…2026-09-16scripts/multibox/region_run.sh
The driver's interventions ledger distinguishes `budgeted` rows (class exclusions/holds…2026-09-16scripts/multibox/region_run.sh
Region_run.sh sizes its parallelism from the box at launch2026-09-16scripts/multibox/region_run.sh
No fresh Vosges run 3 for a formal zero2026-09-16none
<run>/pairs-corpus is nation_batch's scratch VIEW for audit_published_pairs2026-09-17scripts/multibox/region_run.sh
The adopt step's batch-<region> alias is a SYMLINK to the run's own batch/, so it is…2026-09-17scripts/multibox/region_run.sh
Nation_batch.sh's pre-run test gate checks pytest's own exit status (PIPESTATUS[0])2026-09-17scripts/multibox/nation_batch.sh
A STOP_AFTER run BANKS FIRST and touches/uploads its STOPPED-AFTER-<step> marker LAST, on…2026-09-170 pagesscripts/multibox/region_run.sh
The area-label stamp (adopt_hunt_wave.phase_stamp, osm-admin) reads its admin extract…2026-09-181,840 pagesscripts/adopt_hunt_wave.py
The OSM admin extract that stamps a page's commune and département is named after the…2026-09-2017 pages; 1,999 pages; 3,771 pagesscripts/adopt_hunt_wave.py
A dated corpus release is a MANIFEST plus a content-addressed store, never a second copy…2026-09-20scripts/corpus_bank.py
The steps BELOW the batch are skipped by marker too2026-09-20scripts/multibox/nation_batch.sh
A fold that replaces a page's profile must leave the page with charts drawn from that…2026-09-21169 pagesscripts/multibox/remeasure_fold.py
Lifted suppression defaults to published2026-09-21src/ukclimb/analysis/carried.py
Massif_prep.sh's `passlist` (build + emit) rewrites climbs/fr-passes-<massif>.yaml from…2026-09-22scripts/multibox/massif_prep/massif_prep.sh
`rclone lsf <path>` exits 0 and prints NOTHING when <path> does not exist2026-09-22scripts/multibox/head_wait.sh
Scripts/corpus_release_restore.py staged every object under $TMPDIR before placing it2026-09-22scripts/corpus_release_restore.py
DONE 2026-09-26 (queued 2026-09-24)2026-09-245 rowsscripts/multibox/massif_prep/mc_known_roads.py
Bank prep index prefix per massif2026-09-25scripts/multibox/massif_prep/mc_bank_prep.sh
DEFECT (Provence run, 2026-09-25 06:48Z)2026-09-25scripts/multibox/fleet_watch.py
A resumable chain step must not re-derive its own input by loose glob + newest-MTIME2026-09-25scripts/multibox/massif_prep/massif_prep.sh
DONE (2026-09-26, fr-so-rehearsal on the head box)2026-09-26scripts/multibox/region_run.sh
DONE (2026-09-26, centre chain 06:47Z)2026-09-26scripts/multibox/massif_prep/mc_pbf.sh
DONE 2026-09-26 (same-day fault as `known-roads-registered-by-the-prep-chain` above)2026-09-26scripts/multibox/massif_prep/rehearsal_search.py
A massif whose own pass list carries NO `- name:` row at all2026-09-26scripts/multibox/massif_prep/mc_tour_membership.py
FIXED (2026-09-29, rehearsal box 5.78.138.250 06:40Z)2026-09-29scripts/multibox/cache_extract.sh
Corridor-crop tool (scripts/b2_retro_crop.py), 2026-10-022026-10-02scripts/b2_retro_crop.py
Corridor-crop2026-10-034 routessrc/ukclimb/elevation/usgs_3dep_corridor.py
Every elevation tile a live page names in provenance.elevation_tiles must be banked on B2…2026-10-041,732 pages; 7 pagesscripts/fr_refetch_unbanked.py
Pull_country_close.sh (Norway N=8)2026-10-04scripts/multibox/pull_country_close.sh
The survey-vintage audit compares OSM way timestamps with the survey year, which needs a…2026-10-06audit_survey_vintage.py
Box cost ledger2026-10-08scripts/multibox/box_setup.sh
Chips to editorial uk guard2026-10-081,847 rows; 0 rowsscripts/multibox/chips_to_editorial.py
Protected reads unparsable ledger as empty2026-10-080 climbs; 0 rows; 332 pagessrc/ukclimb/protected.py
A page's elevation + gradient PNGs and its cursor calibration sidecar come from ONE call,…2026-10-10src/ukclimb/export/charts.py
Utah us-ut-b2, 2026-10-11 07:54Z (hil-1)2026-10-11src/ukclimb/route_dirs.py
FIXED (2026-10-13, us-nc-mini2, its only intervention, 07:45Z)2026-10-13scripts/multibox/region_run.sh
FIXED (2026-10-13, us-nc-mini1 intervention 3 of 3, 05:16Z)2026-10-13scripts/multibox/cache_extract.sh
B2 lifecycle must not expire us originals2026-10-15src/ukclimb/b2_lifecycle_gate.py
Box_update.sh took only `main` from a bundle, so a bundle whose ref is origin/main…2026-10-15scripts/multibox/box_update.sh
On macOS a process that has forked (the corridor mask pool) and runs threads can see…2026-10-15scripts/b2_retro_crop.py
Launch.sh records the PID of a WRAPPER subshell (the job is its child; the wrapper writes…2026-10-15scripts/multibox/jobstop.py
A curated ledger looked up per page must be parsed ONCE, never per call2026-10-15src/ukclimb/ledgercache.py
A fetched DTM raster is validated BEFORE it is cached or its provenance written2026-10-18src/ukclimb/elevation/tile_validate.py
Fr missing tour cols 261021 in progress2026-10-21named-pass
Adopt_set.py REQUIRED det/not-public-at-window.csv only for us / usa-* / no2026-10-21scripts/multibox/adopt_set.py
A re-measure plan entry names its page's own published verdicts (`prior_doc:`), as…2026-10-2121 pagesscripts/build_remeasure_plan.py
A test must never judge a fixed-date fixture against the real clock2026-10-21scripts/crop_bank_noted.py
End-stub pages on an unnamed service spur carry a named listing reason2026-10-223 rowsthe
Remeasure fold ruled cut and rises 2610222026-10-22scripts/multibox/remeasure_fold.py
Merge_doc should also record published_overall_pct and _ruled_fold_excuse should anchor…2026-10-23scripts/multibox/remeasure_fold.py
A second remeasure_fold --apply in the same section on the same date must never overwrite…2026-10-23scripts/multibox/remeasure_fold.py
The G2 report-only stage gates that false-fire or are never produced (RESUME 2026-10-27…2026-10-27scripts/multibox/stage_gates.py
Follow-up of usa-cross-state-newest-project (code done 2026-10-27)2026-10-2711 pagesscripts/multibox/remeasure_corpus.sh
A UKC_CI_GREEN_SKIP override is a recorded decision (BR-F2/F4, BR-J9)2026-10-29scripts/deploy.sh
Tests/test_heartbeat_check.py process-group/finish tests…2026-10-29tests/test_heartbeat_check.py
Scripts/multibox/remeasure_corpus.sh was Linux-only (df -BG, /proc/meminfo, stat -c,…2026-10-29scripts/multibox/boxstat.sh
BR-A82026-10-29scripts/multibox/stage_gates.py
Scripts/multibox/chips_to_editorial.py --apply re-dumped the whole…2026-10-31scripts/multibox/chips_to_editorial.py
A remeasure fold must rewrite the folded pages' surface chips (chips_to_editorial) so the…2026-10-31116 pagesscripts/corpus_doctor.py
Nation_batch.sh's RESUME=1 path never batches against a missing batch extract2026-11-02scripts/multibox/check_chunks_disjoint.py
Tile store release check 2611042026-11-0408 pagesscripts/tile_store_releasable.py
A crop cut from a different swissALTI3D capture year than the one a ch page cites fails…2026-11-05scripts/crop_campaign_plan_check.py
Re-bank PAD-US for usa-wv and usa-ut at the region bbox + 0.25 deg…2026-11-05scripts/fetch_padus.py
Scripts/multibox/landownership_bank.py plan() banks and judges PAD-US at the run area +…2026-11-06scripts/multibox/landownership_bank.py
Usa-va b04 STOP 32026-11-08scripts/multibox/adopt_set.py
Stage gates stop vs defer 2611082026-11-08scripts/multibox/stage_gates.py
The usa-va per-box chain, watcher and adopt queue were written by hand outside the repo2026-11-09scripts/multibox/block_chain.sh
Box_deletable took one --run, so a five-block box judged only its first block2026-11-09scripts/box_deletable.py
A red nightly could only be cleared by the next nightly or an override2026-11-09.github/workflows/tests.yml
A mirror run still copying alarmed as no summary line2026-11-09e2_mirror_status.py
Dead IPv6 on Hillsboro boxes cost about 30 min of 30 s requests2026-11-09scripts/multibox/box_setup.sh
Block_watch.sh resets the per-box CPU-idle clock (<box>.busy) when the probe shows a NEW…2026-11-103 pagesscripts/multibox/block_watch.sh
Size_k.sh per-shard memory floors at 2 GB2026-11-101 pagesscripts/multibox/size_k.sh

In preparation

Coded or specified, not yet swept over every page that predates them:

119 further rules recorded as no longer applicable.