Repository navigation
Description
Why. The release path (docs/us-uk-release-path.md) fixes one construction order for both countries: complete multispine including its initial clones → assign one atomic area per household → derive larger geographies from versioned mappings → enrichment that retains the assigned location → calibration → full and compact exports. The UK full-build graph registered by #901 keeps the older UK order: every spine stage runs on the source FRS before cloning, the K geographic clones are created after the spine, and the legacy ladder draw assigns geography just before target compilation. That draw is not keyed to household identity (row order or K changes every draw), the ladder carries no machine-readable exact / best-fit relation per layer, and its publisher provenance is only partly committed. This issue tracks the PRs that move the UK to the shared order and the shared operators, each with its own before/after evidence.
Fixed decisions (2026-09-14/15). Atomic level stays the lowest published census unit per nation: E&W 2021 Output Areas (188,880), Scotland 2022 Output Areas (46,363), NI 2021 Data Zones (3,780). Sampling law becomes a single-stage draw of the atomic area by census household count within the household's FRS region. Vintages for FY2024-25: LAD April 2023 code set (the 1 April 2025 Barnsley/Sheffield recode is item (e) below), ITL 2025 for all nations, Ward 2024, Westminster constituencies July 2024. K, seed and solve doctrine are unchanged by any PR in this list. The UK geography.yaml stays phase: legacy until item (f).
Tracked PRs (checklist).
- (a) Assignment swap (step 2; stacked on Register one UK full-build graph with all-geography calibration #901; draft PR UK geography step 2: identity-keyed atomic-area assignment on rebuilt supports (#931) #932): replace
uk.full.locations/uk.full.geography_mappingwith the sharedatomic_geography_nodes(support import, assign, derive, gate) keyed bygeography_household_keyfrom the existinghousehold_draw_keylineage; single-stage law in the UK adapter; three support artifacts rebuilt from published lookups with a committed provenance JSON andsources.yamlentries;--geography-assignment legacykept for measurement builds only (--release-candidaterefuses it); assignment-level before/after on {legacy two-stage, keyed single-stage} × {K=1, K=15} with per-area evidence (887 format). No calibration A/B. - (b) Enrichment reorder, one area-dependent stage at a time (frs_brma, was_wealth, lcfs_consumption, regional_uprating, council tax), each with a distribution receipt against the pre-move build; decide per stage whether it conditions on assigned local authority, constituency or region. Weight-changing stages (SPI support channel, CGT clones) must stay before the origin-budget freeze point.
- (c) Origin budget and caps: decide the budget's reference weight once (b) settles how weights flow into calibration; decide whether the UK calibrated node adopts the US two-cap declaration (solver bound against incoming importance weights plus the executor's design cap). No solve-doctrine change lands with (a) or (b).
- (d) Rosters and area support from the supports: derive the 650/361 roster and the terminal area-support summary from the three support artifacts; retire the ladder NPZ and
local_area_crosswalk.json's ladder pins. - (e) LAD 2025 recode: vintage translation for Barnsley E08000016→E08000038 and Sheffield E08000019→E08000039 in the Translate old-vintage CD targets to current district geography #205 pattern, when 2025-coded facts arrive in Chronicle.
- (f) F3
geography.yamlbundle diff: move the UK spec fromphase: legacytophase: f3declaring the OA anchor, single-stage draw, shared kernels, per-layer vintages, typed source refs for the three supports and a keyed seed stream; needs two shared spec-engine extensions (a support list field ingeography.schema.json, a keyed seed site inseeds.py), reviewed with Max. - Chronicle: issue Register the ONS / NRS / NISRA small-area geography lookups and census counts behind microcosm's UK atomic-area supports (raw-only, no facts) chronicle#269 and its raw-only registration PR for the sixteen publisher lookup files (separate lane).
Out of scope for this issue. Calibration doctrine, K, the UC element and Chronicle schema work (#882, chronicle#259/#261/#262), and the US pipeline.
Evidence. Each PR records its receipts under experiments/931-… and per-cell evidence under docs/evidence/uk-931/, with sha256s in the PR body. Nothing here certifies a release; the release battery and holdout stay separate gates.
Activity
Re-apply the identity-keyed atomic-area assignment (#932) on the re-b…
Re-apply the identity-keyed atomic-area assignment (#932) on the re-b…
Re-apply the identity-keyed atomic-area assignment (#932) on the re-b…
Re-apply the identity-keyed atomic-area assignment (#932) on the re-b…
Re-apply the identity-keyed atomic-area assignment (#932) on the re-b…
Re-apply the identity-keyed atomic-area assignment (#932) on the re-b…
Re-apply the identity-keyed atomic-area assignment (#932) on the re-b…
Re-apply the identity-keyed atomic-area assignment (#932) on the re-b…
Merge pull request #932 from PolicyEngine/uk-geography-step2
Blank z-scores beside suppressed counts in the #931 evidence (#932 re…
Withhold a complementary count so the #931 level totals recover no su…
Render the #931 receipts' summary cells from the re-suppressed eviden…
Point the Barnsley and Sheffield note at Microcosm's code aliases
Add conditioned UK area supports for the geography-first draw (#931)
Re-pin the conditioned supports to chronicle#413's merge (#931)
46 remaining items
Key the CGT redraw's walk offsets and plan jitters, and BADR's band o…
Break ties at the six id-ordered walks on identity-keyed uniforms (#931)
Give tied ISA balances one weighted mid-rank (#931)
Follow up the review of the keyed offsets, tie-break and ISA rank com…
Extract the derived binding rule into a shared test module (#931)
Count a store into a container a function creates as local in the ref…
Hold every transport kernel to the derived binding rule (#931)
Close two gaps in the refusal check's local containers and control th…
Hold the engine hand-off to the built registry and correct two transp…
Move the gate phase codes into a refusal-only module and refuse a sta…
Take frs_spine and frs_relationships off the target kernels' keys (#931)
Count module-level aliases and wrapper internals in the hold's premis…
Follow up the review of the phase-code, target-key and premises-test …
Check every import of the annuity column's name, and say where the pr…
Say the Lifetime ISA rank blends no income rank, and that tied balanc…