You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
WS-E spine deferrals: known bugs and signed inconsistencies awaiting their increment #796
Parent: #145 (workstream E of the UK-migration epic #665). The spine-lane counterpart of #736 (WS-C calibration deferrals): a central checklist of every deferral, known bug, and signed inconsistency filed while the spine lane landed (#686 → #757 → PR #793), so nothing lives only in a PR body or an adjudication comment. Items graduate to their own issues when they become actionable; the committed signed-differences register (uk/spine_swap_signed_differences.json) remains the authoritative record of every intentional candidate-vs-incumbent deviation.
Audit 2026-10-06: every open item was re-checked against the published release microcosm-uk-2024-25-national (cut tag microcosm-uk-2024-25-national-20261002T230158Z-5c6b3f68, H5 sha256 aa31bdf6…, built from 64c460b on policyengine-uk 2.100.0, published 2026-10-04) and main 581b569, with the policyengine-uk 2.122.2 bump in view. Items are updated in place; the comment of 2026-10-06 summarises what changed.
Clock for the next national build (as of 2026-10-06)
Register entries are checked against the build's review date (default today; a warning from seven days out) and again by the release certifier on the UTC wall clock, so certifying after an expiry fails even when the build ran before it.
Cut the first certified line:microcosm-uk-2024-25-national (cut tag microcosm-uk-2024-25-national-20261002T230158Z-5c6b3f68, H5 aa31bdf6, built from 64c460b on policyengine-uk 2.100.0), published to policyengine/populace-uk-private on 2026-10-04 behind latest-national.json. The August history of the blocked-cell queue is in the 2026-08-28 comments.
B4 completion / C4 (Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757 items 9, 14), unblocked since the first certified cut. That cut was still certified against efrs-post-calibration (the eFRS 1.56.16 totals, tolerance ±452%), so 79 microcosm-only columns (private_pension_wealth, mortgage and consumer debt, cash_isa and the other ISA columns, the 14 hmrc_spi_* columns, the CGT BADR/residential columns, uc_reported_capital) have no input-mass fence. At the next cut: emit a totals sidecar from the certified H5, register it as a named reference with run provenance, and mint the tolerance on the cut-to-cut pair (absorbs Tighten the UK input-mass tolerance by receipting the explained top drifts #713 and the UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750 composite mass audit). The frozen eFRS extraction stays as the historical instrument. C4 (retiring the descriptor and the filename pin in weighted_integrity.py and microcosm-data/contract.py) waits until the rule-1 scorer and the export/target-surface gates stop reading the eFRS.
Flip the registry default to the national line (added 2026-10-06):microcosm-data/registry.py registers ('uk', 2025, 'national') off the default variant, so resolve("uk") still loads populace_uk_2023; the code calls the flip a one-line follow-up after promotion, which happened on 2026-10-04 (Promotion for the constant-id national line: pointer and certified-loader extension #823). Fix the live-pointer test's microcosm-uk-2025- prefix (test_loader.py) with it; the live id is microcosm-uk-2024-25-national.
Weight period of the published file (A19 from First calibrated rowwise UK local candidate (#495 increment 6) #762, never ruled; added 2026-10-06): the release pin stamps the file at the FRS year (uk/frs_release.json: survey and base year 2024, time_period "2024", calibration year 2025), and the build solves the weights against engine measures at 2025 and writes them unchanged. policyengine-uk uprates household_weight by ONS population growth (+0.72% for 2025, unchanged in 2.122.2), so any engine run at 2025 reads every total 0.72% above the calibrated targets (households 29.23m against 29.02m). uk-data stamps the same year but down-rates the calibrated file, weights included, to the base year so that the engine's uprating reproduces the calibrated state; the US lane stamps its target year (2024). Options: divide the stored weights by the engine's population index at export (the uk-data shape), stamp 2025 with every input materialised at 2025, or document it.
Retire the five obsolete release-fit deferrals: UC one-child, two-child, five-plus-child and lone-parent counts, plus the HMRC private-pension count £100k–£150k. Completed in Repair UC capital graph inputs and document calibration support gaps #892; all five remain in calibration and return to ordinary enforcement under the unchanged 25% bound. The evidence uses 1,500 updates / family_equal; this does not complete the certified cut.
Legacy 2023-vintage build of the microcosm UK spine (deferred) #687 — legacy 2023-vintage spine build (deferred). 2026-10-06: no consumer since the 2024-25 line was certified (the June 2023 artifact stays registered for historical comparisons). Proposed: close as not planned.
UK spine: preserve FRS benefit-unit capital for UC while retaining WAS household wealth #828 — preserve FRS benefit-unit capital for UC while retaining WAS household wealth: carry TOTCAPB4 into uc_reported_capital, preserve the WAS wealth surface and top tail, make SPI UC/capital writes coherent, and refresh would_claim_uc after the final reported-UC write; no disagreement-conditioned twins.
UK spine: JSA claimants 2.8× the DWP caseload — legacy-benefit reporting after the UC migration #869 — JSA claimants against DWP's 71k New Style JSA: now under, not over. 2026-10-06: the published cut starts at 117k contributory reporters (1.65×) and ends at 47.9k (−33%); UK: port the unblocked uk-data fixes tracked in #1095 #1100's spi_benefit_coherence zeroes JSA on SPI rows, leaving 19.2k at initialization (−73%) and 45.6k final (−36%) on its arm E. The zeroing also drops about half of the FRS-reported JSA carried by SPI copies (18.1k removed against 19.2k left), and the exclusion's reason compares contributory plus income-based JSA (63k) with a contributory-only measure (37k in the FRS). Exclusion (Align UK UC claim, child and period definitions #882) expires 2026-12-08; its "next spine with the SPI repair" trigger has passed and the reason needs restating.
macro_realism for the UK (Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757 item 9): named in the arming item but never declared — no uk/gates.json entry and no UK_GATE_REGISTRY binding exist (only the Belgium precedent). Decide arm-or-drop; arming needs a UK metric/band source plus a new binding. 2026-10-06: still undeclared; Belgium and Armenia (EPIC: populace-am — Armenia: closing the EG DNA macro–micro gap on public data #814) remain spec-only, and the fiscal levels it would fence are now mostly calibration targets (income tax −0.3%, UC −0.1%, NI +8.1%, VAT +23.1%). Drop it, or arm it on a non-target anchor such as ONS household disposable income.
Household-surface QRF tail gate: still unarmed (uk_qrf_tail_concentration reads only the person-level HMRC surface; UK spine follow-ups: SPI donors funded, WAS coherence, residential split, Child Benefit, release-cut blockers (#1063) #1089 added WAS coherence and support gates, not a tail gate). 2026-10-06: at calibrated weights on the published cut, all 12 Assemble the microcosm-built UK spine: whole-spine parity and swap acceptance #686 columns sit above their spine-a baselines (owned_land 0.79 vs 0.66, non_residential_property_value 0.74 vs 0.50, corporate_wealth 0.24 vs 0.06), and four columns are new since the baselines (LISA balance 0.71, consumer_debt 0.31, mortgage_debt 0.24, private_pension_wealth 0.20). Re-baseline, choose stage-time or calibrated weights, then add the evidence function and the gate entry.
student_loan_balance:2026-10-06: the direction is now evidenced (2.89m carriers, £48.7bn, +144% against the eFRS and still short of SLC's stock), but balance and plan disagree on the published cut: 82% of balance carriers have no plan and 91% of plan holders have a zero balance, because balances are allocated by household tier independently of the plan stage. The balance caps repayments in the engine and net_wealth subtracts it. Draw the balance conditional on the plan.
Local-area support floor — the two micro-authorities (Isles of Scilly E06000053, City of London E09000001):2026-10-06: still below the 50-row / ESS-50 floor at every clone count measured (K=15 R17: 24 and 72 rows, ESS 8.1 and 11.0; K=25 dense, atomic assignment: 39 and 223 rows, ESS 3.6 and 14.8, the only two areas below ESS 50). The reviewed exclusions in uk/local_area_support_exclusions.json expire 2026-12-02 and the census-households companion entry (census_households: bind from the Chronicle feed and replace the inferred NI constituency mapping #887) 2026-12-10; their own local-authority cells (44, not 43: the City's band A joined with Re-base the UK council tax stock family on the councils' taxbase returns; re-pin the Chronicle feed to df35af7 (consumer_fact.v3) (#929, closes #920) #934) stay signed-deferred (local_authority_support_floor_excluded). The register's evidence comes from the ladder assignment, which release candidates now refuse: re-sign on an atomic K=15 candidate, or fix with frame rows.
Council-tax band H spine support:2026-10-06: the spine still carries the 49 raw FRS band-H households, and since UK spine: make SPI support households internally consistent (SPI-first order, housing shell) #1012's housing shell 461 SPI-channel rows carry a classifier-drawn band H (41 in the North East, North West and Yorkshire, where no FRS household is band H), so "no band-H household" no longer holds region-wide. The 296 English authority cells and Shetland stay signed-deferred (council_tax_band_h_spine_support_absent, no expiry); the national region rows mhclg.council_tax_stock.band_h@E12000001..3 are excluded to 2026-11-26, tracking this item, and on the published weights hold 117 / 3,692 / 1,727 households against VOA's 1,570 / 7,350 / 3,770. Ruling needed: does a band H drawn by the SPI shell count as spine support? Candidate for its own issue together with the next two items.
Council-tax band domain (added 2026-10-06): the SPI housing shell (UK spine: make SPI support households internally consistent (SPI-first order, housing shell) #1012) draws bands without each nation's valid set: on the published cut 933 rows outside Wales carry band I (about 39k weighted households: England 33k, Scotland 5.3k, Northern Ireland 0.4k), and 202 Northern Ireland rows carry a band other than the FRS placeholder D. They count toward no band target, and no gate checks the domain.
Per-block engine resolution mis-measures population-normalised formulas (First calibrated rowwise UK local candidate (#495 increment 6) #762 R15):2026-10-06: now live. Release candidates refuse --engine-blocks > 1, but one engine over a K=25 pool needs about 100 GB, so the dense path runs per block and binds the artefact rows: in the 2026-10-06 K=25 build corporate land value is +1,460% dense (+2,023% after the 60k selection) and land value +423% (+589%), about a fifth of the final loss. The receipt's present_in_this_run never fires: full_measure.py compares measure paths (ons/corporate_land_value) with engine variable names, and the unit test's stub uses the path as the name (Make the dense role run on a current spine: identity branch, scratch aliases, per-block national problem, compiled-row axis, holdout shape, engine blocks that represent the pool #1115 keeps the same check). Fix options: resolve the three normalised measures once over the pool, or scale each block's national totals by its mass share; then show that K blocks equal one block and lift the refusal. Candidate for its own issue.
SPI top-tail band support (added 2026-10-06): 12 windowed calibration exclusions expiring 2026-11-26 cite the closed Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757: no in-band carriers above £1m total income for dividends, employment, private pension, property, self-employment and State Pension (amounts and counts), and 2–10 carriers in the £500k–£1m dividend-amount and property-count cells. Re-measure on the next national spine, then renew with receipts or retire.
LCFS regime-gated incidence (added 2026-10-06): signed with no expiry and no issue: the fuel gate puts petrol on 0.300 of households against the donor's 0.391 (diesel 0.158 against 0.204), and the incumbent is closer on the alcohol/tobacco and transport shares.
The U8 would_claim_uc lever is measured and re-frozen at 0.55: the raise moves claimants off legacy benefits (housing benefit −0.0% → −52.4%) while leaving every UC cell unchanged; the contract entry carries the receipts. Do not re-raise without new evidence — the lever's disposition is UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750. Re-signed 2026-09-16 (Align UK UC claim, child and period definitions #882): the rate is a share of the benefit units with an adult under State Pension age; the 0.55 value is unchanged.
The spine signed-differences register (30 entries on main at 2026-10-06 incl. the quantitative bounds re-minted per candidate) is the swap-decision record; per-stage battery gates are the standing health checks.
E7 reviewed-absent incapacity (moved here 2026-10-06): hmrc_spi_incapacity_benefit_income is reviewed-absent per the Create the SPI income channel on the microcosm spine with the FRS-only second stage #683 adjudication; the stage fence (not the gate) promotes it when a future FRS vintage carries signal. On the published cut its 596 nonzero rows are all SPI-synthetic, as designed.
Parent: #145 (workstream E of the UK-migration epic #665). The spine-lane counterpart of #736 (WS-C calibration deferrals): a central checklist of every deferral, known bug, and signed inconsistency filed while the spine lane landed (#686 → #757 → PR #793), so nothing lives only in a PR body or an adjudication comment. Items graduate to their own issues when they become actionable; the committed signed-differences register (
uk/spine_swap_signed_differences.json) remains the authoritative record of every intentional candidate-vs-incumbent deviation.Clock for the next national build (as of 2026-10-06)
Register entries are checked against the build's review date (default today; a warning from seven days out) and again by the release certifier on the UTC wall clock, so certifying after an expiry fails even when the build ran before it.
dwp.uc.households_housing_element(Align UK UC claim, child and period definitions #882). Fails from 2026-10-16.ons.savings_interest_income(UK spine: savings interest income a third under HMRC SPI and five times under the ONS D.41 row — reconcile the target concept and review FRS interest capture #866; UK income anchors at the calibration year and reserved top-tail income rows (income-anchor lane, PolicyEngine/chronicle#280) #1006 ruling R3). Fails from 2026-10-23.slc.borrowers.plan_2_liableandslc.borrowers.plan_2_above_threshold(UK spine: SLC plan-2 borrower stocks at a third of SLC's — the FRS flag captures repayers, not the liable stock #868). Fail from 2026-11-04.dfe_education_spendingafter UK: port the unblocked uk-data fixes tracked in #1095 #1100 retired three entries on the same arm.The capstone: the first certified cut
Re-certify the candidate-of-record on a post-UK WAS stage: split private pension wealth out of corporate_wealth (#750) #755 spine. UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750 landed via UK WAS stage: split private pension wealth out of corporate_wealth (#750) #755 (2026-08-28), so spine-i no longer carries the UC lever the dispositions assume;
spine-j(data/ukds/acceptance/spine-j-remeasure/, developer full build from main, gates green,private_pension_wealthpresent) needs the RC-strict battery + ladder + parity instruments + signed-differences re-mint before it can replace spine-i as candidate-of-record. Precedes the cut.Cut the first certified line:
microcosm-uk-2024-25-national(cut tagmicrocosm-uk-2024-25-national-20261002T230158Z-5c6b3f68, H5 aa31bdf6, built from 64c460b on policyengine-uk 2.100.0), published topolicyengine/populace-uk-privateon 2026-10-04 behindlatest-national.json. The August history of the blocked-cell queue is in the 2026-08-28 comments.B4 completion / C4 (Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757 items 9, 14), unblocked since the first certified cut. That cut was still certified against
efrs-post-calibration(the eFRS 1.56.16 totals, tolerance ±452%), so 79 microcosm-only columns (private_pension_wealth, mortgage and consumer debt, cash_isa and the other ISA columns, the 14hmrc_spi_*columns, the CGT BADR/residential columns, uc_reported_capital) have no input-mass fence. At the next cut: emit a totals sidecar from the certified H5, register it as a named reference with run provenance, and mint the tolerance on the cut-to-cut pair (absorbs Tighten the UK input-mass tolerance by receipting the explained top drifts #713 and the UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750 composite mass audit). The frozen eFRS extraction stays as the historical instrument. C4 (retiring the descriptor and the filename pin inweighted_integrity.pyandmicrocosm-data/contract.py) waits until the rule-1 scorer and the export/target-surface gates stop reading the eFRS.W8 (Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757 item 12): certified-identity registry entry for the cut artifact.
UK scorecard: populace_uk_2023 vs enhanced_frs_2024_25 vs admin benchmarks (2026) #731 scorecard probe on the certified line: fix the HBAI year first (engine period 2024 is FY2024-25, which HBAI calls FYE 2025; the probe matches FYE 2024), then run it on aa31bdf6 under policyengine-uk 2.100.0 and post it on UK scorecard: populace_uk_2023 vs enhanced_frs_2024_25 vs admin benchmarks (2026) #731. The rule-1 scorer seal is done: the certification cross-pins
score_vs_enhanced_frs.json(1,020–30 wins; loss 0.0082 against 0.327; in-sample).UK_REFERENCE_DATASET_NAMEre-semantics once a second certified line exists: "reference" becomes the previous certified microcosm line (Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757 item 13 note,terminal_gates.py). Unticked 2026-10-06: the constant still readsenhanced_frs_2024_25, and only one certified line exists.Flip the registry default to the national line (added 2026-10-06):
microcosm-data/registry.pyregisters ('uk', 2025, 'national') off the default variant, soresolve("uk")still loadspopulace_uk_2023; the code calls the flip a one-line follow-up after promotion, which happened on 2026-10-04 (Promotion for the constant-id national line: pointer and certified-loader extension #823). Fix the live-pointer test'smicrocosm-uk-2025-prefix (test_loader.py) with it; the live id ismicrocosm-uk-2024-25-national.Weight period of the published file (A19 from First calibrated rowwise UK local candidate (#495 increment 6) #762, never ruled; added 2026-10-06): the release pin stamps the file at the FRS year (
uk/frs_release.json: survey and base year 2024,time_period"2024", calibration year 2025), and the build solves the weights against engine measures at 2025 and writes them unchanged. policyengine-uk uprateshousehold_weightby ONS population growth (+0.72% for 2025, unchanged in 2.122.2), so any engine run at 2025 reads every total 0.72% above the calibrated targets (households 29.23m against 29.02m). uk-data stamps the same year but down-rates the calibrated file, weights included, to the base year so that the engine's uprating reproduces the calibrated state; the US lane stamps its target year (2024). Options: divide the stored weights by the engine's population index at export (the uk-data shape), stamp 2025 with every input materialised at 2025, or document it.Retire the five obsolete release-fit deferrals: UC one-child, two-child, five-plus-child and lone-parent counts, plus the HMRC private-pension count £100k–£150k. Completed in Repair UC capital graph inputs and document calibration support gaps #892; all five remain in calibration and return to ordinary enforcement under the unchanged 25% bound. The evidence uses 1,500 updates /
family_equal; this does not complete the certified cut.Filed spine issues
Derive NHS allocation (and audit age-conditioned imputations) from the disaggregated age surface #785 — derive NHS allocation (and audit age-conditioned imputations) from the disaggregated age surface; was blocked on the swap certifying, now unblocked by Swap the microcosm spine into the UK national build: self-policing build, retired June path, hardened parity instruments (#757) #787's merge
UK spine: relationship-to-head frame column, so the ONS household-composition split is measurable #791 — relationship-to-head frame column so the ONS household-composition split is measurable; its three windowed exclusions were retired on 2026-09-11
UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750 — split
private_pension_wealthout ofcorporate_wealth(uk-data#452 M2): landed via UK WAS stage: split private pension wealth out of corporate_wealth (#750) #755 + policyengine-uk#1824 (2.92.0) + floors Floor the uk extra at policyengine-uk>=2.92 for the pension-wealth split (#750) #811; lever measured (UC support +1.11m, caseload −25.6% → −20.8%); residual owned by UC residual after the pension-wealth split: support 4.24m vs 6.76m — re-draw undershoot, the 0.55 take-up freeze, and composition shape #809/UK spine: child disability under-identification blocks the TCL disability cells (−56.5% / −40.0% across three spine vintages) #808 — landed via UK WAS stage: split private pension wealth out of corporate_wealth (#750) #755 and first measured 2026-08-28: UC initial support 3,128,938 → 4,242,978 with non-UC targets untouched; the residual is UC residual after the pension-wealth split: support 4.24m vs 6.76m — re-draw undershoot, the 0.55 take-up freeze, and composition shape #809UK CGT top-tail age and geography joints inherit from incidence and look off — benchmark against HMRC marginals #725 — CGT top-tail age and geography joints vs HMRC marginals. Done in substance (2026-10-06): UK CGT distribution: age/region conditioning, banded and residential targets, asset types (#725, #467) #939 added the Table 6 age conditioning and the Table 5 regions, and UK CGT: BADR-qualifying gains, the Table 3 income joint and wealth-conditioned gain carriers (#1014) #1045/UK spine follow-ups: SPI donors funded, WAS coherence, residential split, Child Benefit, release-cut blockers (#1063) #1089 added BADR and Table 3; on the published cut the 16 age rows and 24 region rows fit within ±0.4%, and people aged 65+ are 39% of the £2m+ gainers. What remains is stage-level on design weights (four region groups and a pooled 75+: East Midlands +118%, Wales +108%, 85+ +141% before calibration), which matters only for local-area CGT. Close, or re-scope to that.
Carry manifest rewrites into the shared Stage/StageRecord producer graph #721 — carry manifest rewrites into the shared Stage/StageRecord producer graph. 2026-10-06: the graph path (Build the UK national release role on the graph (PR-2 of the #901 line) #1057) keeps each rewrite's pre-image as its own content-store object, which answers the reconstructability concern while the node store is kept. Left:
StageRecordcarries no rewrites, the hard-codedFRS_EDUCATION_GRANT_REWRITEScarve-out remains (spine_build.py), and nothing checks that a rewrite has an earlier producer. Close, or re-scope to those three.Tighten the UK input-mass tolerance by receipting the explained top drifts #713 — tighten the UK input-mass tolerance by receipting the explained top drifts. 2026-10-06: still 4.5218. On the published cut |drift| has median 0.18, p95 0.93 and max 2.42 (charitable_investment_gifts), and Tighten the UK input-mass tolerance by receipting the explained top drifts #713's edge column sits at +0.22; but UK: port the unblocked uk-data fixes tracked in #1095 #1100 retired the JSA, WTC and access-fund exclusions (JSA +316% on its arm A9), so a re-mint at the cut's 2.42 would fail the next build. Proposed: fold into B4 and mint on the cut-to-cut pair.
Adjudicate the UK spine grain at the ingest/calibration seam #688 — the open half of the spine-grain adjudication (E10 gate arithmetic)
Net-new UK stages: UC deduction attributes, bus fares, WAS debt #685 — net-new UK stages: UC deduction attributes, bus fares, WAS debt
Legacy 2023-vintage build of the microcosm UK spine (deferred) #687 — legacy 2023-vintage spine build (deferred). 2026-10-06: no consumer since the 2024-25 line was certified (the June 2023 artifact stays registered for historical comparisons). Proposed: close as not planned.
ETB services imputation divides household totals by household size and stores the per-head figure in household-entity columns policyengine-uk-data#469 — the incumbent's ETB per-head division (upstream defect of the UK: banded CGT gains targets (by size of gain) to constrain the distribution, not just count + total #467 family, observed during E10)Moot for microcosm (2026-10-06): microcosm's ETB stage keeps household totals (no division by household size; rail subsidy +1.1% and bus subsidy +5.0% against the eFRS on the published cut), so the defect reaches microcosm only through the eFRS input-mass reference that B4 retires.Re-measure the hmrc SPI band exclusions: three 'sparse cell' premises fail on spine-i (hundreds of in-band carriers) #807 — re-measure the hmrc SPI band exclusions: three "sparse cell" premises fail on spine-i and spine-j (77–1,158 in-band carriers); lifting them re-couples the amount/count pairs (the +38.6%
self_employment_income_count_50k_70ksibling distortion is the live symptom)UK spine: child disability under-identification blocks the TCL disability cells (−56.5% / −40.0% across three spine vintages) #808 — child disability under-identification on the FRS disability stage: the two TCL disability cells run −56.5% / −40.0%, invariant across spine-c/i/j; blocks 2 of the 8 capstone cells
UC residual after the pension-wealth split: support 4.24m vs 6.76m — re-draw undershoot, the 0.55 take-up freeze, and composition shape #809 — the UC residual after the pension-wealth split (support 4.24m vs 6.76m): promote the wealth-block re-draw undershoot from UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750's follow-ups, re-measure the U8
would_claim_uc0.55 freeze on its requested new evidence, and the composition shape (2-children fails while 1 and 3 fit); owns 3–4 of the 8 capstone cellsUK spine: preserve FRS benefit-unit capital for UC while retaining WAS household wealth #828 — preserve FRS benefit-unit capital for UC while retaining WAS household wealth: carry
TOTCAPB4intouc_reported_capital, preserve the WAS wealth surface and top tail, make SPI UC/capital writes coherent, and refreshwould_claim_ucafter the final reported-UC write; no disagreement-conditioned twins.UK spine: condition SPI UC receipt on benefit-unit composition and add a UC-specific child count #832 — make SPI UC receipt coherent with benefit-unit composition and combined income, and add a UC-specific child count for the DWP numbered-child targets; successor to UK spine: preserve FRS benefit-unit capital for UC while retaining WAS household wealth #828 after its capital-coherence fix.
Port post-freeze UK childcare/TFC spine inputs and calibration contract #834 — port the TFC work recently done in uk-data into microcosm.
UK spine: composition-faithful SPI income draw — bridge predictors and rank-preserving replacement (with-children UC residual) #840 — keep SPI incomes consistent with the FRS household's composition and employment status. 2026-10-06: the four UC with-children cells it was the fix arm for now fit on the published cut (−4% to −17%), and UK spine: make SPI support households internally consistent (SPI-first order, housing shell) #1012/UK: port the unblocked uk-data fixes tracked in #1095 #1100 fixed the SPI rows' Housing Benefit tenure and legacy-benefit reports. Open: stage 1 still predicts on age, gender and region only, so SPI-channel lone parents have 4.6× the FRS-channel median income and most SPI-channel out-of-work adults carry pay (£133.5bn). Candidate route: port Draw SPI incomes within earnings groups set by FRS employment status policyengine-uk-data#529's earnings groups by employment status. Likely to matter more under policyengine-uk 2.122.0's work-requirement rules, which read profit and hours.
UK FRS stages evaluate policy parameters at the survey period: declare a policy-year rule (uk-data#475, uk-data#478) #862 — FRS stages evaluate policy parameters at the survey period (uk-data#475 disability-threshold year and uk-data#478 DSA gate, inherited via parity; uk-data#476 reduces to the SPI-refresh week mix; uk-data#477 is covered by
frs_release.json+test_uk_frs_release; uk-data#479 is an input to Adjudicate the incumbent's four post-calibration aggregate scalers #790; incumbent fix uk-data#480)UK spine: savings interest income a third under HMRC SPI and five times under the ONS D.41 row — reconcile the target concept and review FRS interest capture #866 — savings interest income. 2026-10-06: concept declared 2026-09-22 (UK income anchors at the calibration year and reserved top-tail income rows (income-anchor lane, PolicyEngine/chronicle#280) #1006 ruling R3). The SPI 2023-24 Table 3.7 interest rows now bind uprated to 2025 (£21.7bn; +0.4% at initialization on the published cut), which closes the frame gap in aggregate (individual bands still start between −60% and +184%). The ONS D.41 row (£95.5bn; the frame is about −75%) stays a measured diagnostic (
ons.savings_interest_income, expires 2026-10-22) until a D.41-to-cash bridge is declared. Close, with the D.41 row as a standing diagnostic on a longer window, or keep this issue as the bridge's owner.UK spine: housing benefit £2.7bn against OBR £12.1bn — pensioner and supported-accommodation HB missing after the UC migration #867 — Housing Benefit against OBR's £12.73bn (calendar-2025 window, GB). 2026-10-06: the pension-age half now binds and fits (UK #882 repairs: the A16 legacy rows, the carer and childcare elements, the benefit-cap bands #937 take-up gate, UK spine: make SPI support households internally consistent (SPI-first order, housing shell) #1012 housing shell, UK pensions: resident State Pension, Pension Credit, contributions and salary-sacrifice relief (#1069) #1084 caseload rows:
dwp.hb.households_pension_age1.107m, −29.6% at initialization, 0.0% final;dwp.hb.amount_pension_ageat £7.05bn is pending in the second UK: track the defects uk-data is fixing that microcosm still has #1095 PR). The 2026-10-06 K=25 evaluation still measures £7.8bn (−39%): the residual is working-age HB, including supported and temporary accommodation, which neither the frame nor the engine carries. On survey data policyengine-uk pays HB to reporters only (claims_all_entitled_benefitsis false on any file with reported benefits), so 2.102.5's new pension-age claims do not reach microcosm.obr.housing_benefitand the threedwp.hb.households*exclusions (Align UK UC claim, child and period definitions #882) expire 2026-12-08; their reasons still describe spine-q and need restating.UK spine: SLC plan-2 borrower stocks at a third of SLC's — the FRS flag captures repayers, not the liable stock #868 — SLC plan-2 borrower stocks. 2026-10-06: the
student_loansstage tops plan 2 up toward SLC Table 6a, but its pool (England, tertiary, entry at 18 in 2012–22, i.e. ages 21–31) holds 2.09m against a 7.5m shortfall (pool_exhausted, attainment 0.39); the published cut carries 3.64m liable against 9.71m (−62%). Exclusions renewed to 2026-11-03 (on 2026-10-02). The stage reads academic year 2024/25 stocks (uk/slc_liable_stocks.json, key 2025) while the reference rows bind 2025/26, so the bound plan-5 above-threshold row (35k) exceeds the stage's plan-5 stock (10k) and calibration turns every plan-5 borrower into a repayer. The plan-5 and postgraduate exclusions (to 2026-11-26, citing the closed Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757; their "pool saturation" reason predates the UK student-loans realization gate refuses every spine since #1006: the PLAN_5 top-up shortfall is below one person's weight #1049 walk) belong here too.UK spine: JSA claimants 2.8× the DWP caseload — legacy-benefit reporting after the UC migration #869 — JSA claimants against DWP's 71k New Style JSA: now under, not over. 2026-10-06: the published cut starts at 117k contributory reporters (1.65×) and ends at 47.9k (−33%); UK: port the unblocked uk-data fixes tracked in #1095 #1100's
spi_benefit_coherencezeroes JSA on SPI rows, leaving 19.2k at initialization (−73%) and 45.6k final (−36%) on its arm E. The zeroing also drops about half of the FRS-reported JSA carried by SPI copies (18.1k removed against 19.2k left), and the exclusion's reason compares contributory plus income-based JSA (63k) with a contributory-only measure (37k in the FRS). Exclusion (Align UK UC claim, child and period definitions #882) expires 2026-12-08; its "next spine with the SPI repair" trigger has passed and the reason needs restating.UK bus fares: impute journeys from NTS microdata so the DfT receipts targets are not level-set by the stage (#890 follow-up) #930 — UK bus fares: impute journeys from the NTS microdata (UKDS SN 5340) priced at the published revenue per journey, so the DfT receipts targets bound in Bind the Chronicle transport and energy facts on the UK national surface (#890 PR-T) #904 are no longer level-set by the Bind DfT, HMRC, DESNZ, Ofgem and ORR facts for bus fares, road fuel, domestic energy and rail support (#790 ruling: bind facts and calibrate) #890 lcfs rake and incidence draw (María's ruling 2026-09-15 on UK #890 PR-S: uprate the LCFS and ETB donors, condition on vehicles, draw NTS bus use, rake bus and energy to vendored facts, price energy at the FY2024-25 cap #927; rake and target kept together as the interim, ONS 07.3.2 recorded as a diagnostic) Closed by UK bus fares: impute local-bus journeys from the NTS microdata and price them at the published yield (#930) #954 (merged 2026-09-23).
Deferrals and signed inconsistencies without their own issue yet
cash_isacarries £409bn in 37.6% of households;savingsis savings accounts only), but in policyengine-uk 2.122.2 no means test readscash_isa(UC, HB and Pension Credit capital sources) and neither dototal_wealthornet_wealth; an engine issue is owed. (b) The composite mass audit is not built: corporate_wealth £1,775.9bn plus private_pension_wealth £5,788.1bn is −17.3% against the eFRS corporate total, which the ±452% gate cannot see; folded into B4. (c)current_db_pension_wealthis still not carried (no policyengine-uk variable). The re-draw undershoot stays with UC residual after the pension-wealth split: support 4.24m vs 6.76m — re-draw undershoot, the 0.55 take-up freeze, and composition shape #809 M1 + Port UK compact source stages and 2024-25 refresh from uk-data #145.macro_realismfor the UK (Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757 item 9): named in the arming item but never declared — nouk/gates.jsonentry and noUK_GATE_REGISTRYbinding exist (only the Belgium precedent). Decide arm-or-drop; arming needs a UK metric/band source plus a new binding. 2026-10-06: still undeclared; Belgium and Armenia (EPIC: populace-am — Armenia: closing the EG DNA macro–micro gap on public data #814) remain spec-only, and the fiscal levels it would fence are now mostly calibration targets (income tax −0.3%, UC −0.1%, NI +8.1%, VAT +23.1%). Drop it, or arm it on a non-target anchor such as ONS household disposable income.uk_qrf_tail_concentrationreads only the person-level HMRC surface; UK spine follow-ups: SPI donors funded, WAS coherence, residential split, Child Benefit, release-cut blockers (#1063) #1089 added WAS coherence and support gates, not a tail gate). 2026-10-06: at calibrated weights on the published cut, all 12 Assemble the microcosm-built UK spine: whole-spine parity and swap acceptance #686 columns sit above their spine-a baselines (owned_land 0.79 vs 0.66, non_residential_property_value 0.74 vs 0.50, corporate_wealth 0.24 vs 0.06), and four columns are new since the baselines (LISA balance 0.71, consumer_debt 0.31, mortgage_debt 0.24, private_pension_wealth 0.20). Re-baseline, choose stage-time or calibrated weights, then add the evidence function and the gate entry.uk_take_up_signalsemantics: the gate sits terminal, so it compares weighted post-calibration shares against unweighted contract targets. 2026-10-06: narrowed: Pension Credit (UK pensions: calibrate State Pension, Pension Credit and pension contributions to the resident administrative facts (PolicyEngine/chronicle#305), pin the State Pension age boundary, fix the pension spine stages, and the engine pieces a State Pension uprating analysis needs #1069) and the Child Benefit flags (UK spine follow-ups after #1045: SPI band donors as a mass-conserving support channel, WAS tenure coherence, the residential draw's bound and Table 7 composition, then a national build #1063) moved to stage-time gates, and twelve flags remain terminal. On the published cut the largest deviation is calibration drift, not the draw (TV-licence evasion 0.124 at initial weights, 0.147 calibrated, against 0.125). Unruled.owned_landseed variance: 2026-10-06: the reviewed input-mass exclusion was retired on 2026-09-21 (UK national line: the signed v20 deferral, six A16 retirements on measured evidence, and the scoring-path fix #967) when the first release-cut certification measured it inside the ±452% fence (−78.6% on the published cut), so the fence no longer sees the variance. The stage still draws owned_land in one raw draw with no winsorising, and the top 100 rows hold 79% of its mass. The remedy stays on Port UK compact source stages and 2024-25 refresh from uk-data #145 (comment 5341180811): re-run the two-seed instrument on the next spine.Moot (2026-10-06): no objection was raised, Assemble the microcosm-built UK spine: whole-spine parity and swap acceptance #686 is closed and its ledger historicized, and the register is read only by the parity tools, not by certification (share 0.890 on the published cut against the donor's 0.870).communication_consumptionregister scope: the one LCFS column where the incumbent is closer on level while the candidate is closer on share; signed inside the donor-faithful class, with a one-line rescope on offer if the adjudicator objects (Assemble the microcosm-built UK spine: whole-spine parity and swap acceptance #686 ledger, still open).student_loan_balance: 2026-10-06: the direction is now evidenced (2.89m carriers, £48.7bn, +144% against the eFRS and still short of SLC's stock), but balance and plan disagree on the published cut: 82% of balance carriers have no plan and 91% of plan holders have a zero balance, because balances are allocated by household tier independently of the plan stage. The balance caps repayments in the engine andnet_wealthsubtracts it. Draw the balance conditional on the plan.uc_LCWRA_element > 0and no UC condition (any disabled member, children and pensioners included). The paid-claim rowdwp.uc.households_lcwra_element(Align UK UC claim, child and period definitions #882 adjudication, bound by Bind the UC element targets on paid claims and an OBR UC total on the chronicle 474a0ae feed (#882) #921) reads 2.46m against 2.27m (+8.3%) on the published cut; the incumbent reads −8.1%. Engine note for Align UK UC claim, child and period definitions #882: children still trigger the element (0.33m of 2.04m reporting units are flagged only through a child under 16); Give the UC LCWRA and carer elements, the work allowance and the benefit cap exceptions on the claimants' circumstances only policyengine-uk#1989 (draft) fixes it.obr.income_taxbound at the calendar-2025 window, £325.05bn). The published cut reads £324.08bn (−0.3%), with the 11 HMRC liability bands within −0.2% to +2.2%; the incumbent reads −10.4%.uk/local_area_support_exclusions.jsonexpire 2026-12-02 and the census-households companion entry (census_households: bind from the Chronicle feed and replace the inferred NI constituency mapping #887) 2026-12-10; their own local-authority cells (44, not 43: the City's band A joined with Re-base the UK council tax stock family on the councils' taxbase returns; re-pin the Chronicle feed to df35af7 (consumer_fact.v3) (#929, closes #920) #934) stay signed-deferred (local_authority_support_floor_excluded). The register's evidence comes from the ladder assignment, which release candidates now refuse: re-sign on an atomic K=15 candidate, or fix with frame rows.council_tax_band_h_spine_support_absent, no expiry); the national region rowsmhclg.council_tax_stock.band_h@E12000001..3are excluded to 2026-11-26, tracking this item, and on the published weights hold 117 / 3,692 / 1,727 households against VOA's 1,570 / 7,350 / 3,770. Ruling needed: does a band H drawn by the SPI shell count as spine support? Candidate for its own issue together with the next two items.council_tax_bandverbatim to every clone (the raw FRSctbandon FRS-channel rows, one classifier draw per household on SPI-channel rows since UK spine: make SPI support households internally consistent (SPI-first order, housing shell) #1012). 2026-10-06, K=25 build: 99.7% of the 2,511 authority cells within 10% dense, 98.0% after the 60k selection; the residue is Na h-Eileanan Siar band A (−30%) and the band-H micro-cells (Merthyr Tydfil +2,735% on a target of 2); Derbyshire Dales band G now fits. The route is unchanged; re-imputingcouncil_taxper clone can move engine-side once Compute gross council tax from LA Band D amounts and statutory band ratios policyengine-uk#1855 lands.--engine-blocks > 1, but one engine over a K=25 pool needs about 100 GB, so the dense path runs per block and binds the artefact rows: in the 2026-10-06 K=25 build corporate land value is +1,460% dense (+2,023% after the 60k selection) and land value +423% (+589%), about a fifth of the final loss. The receipt'spresent_in_this_runnever fires:full_measure.pycompares measure paths (ons/corporate_land_value) with engine variable names, and the unit test's stub uses the path as the name (Make the dense role run on a current spine: identity branch, scratch aliases, per-block national problem, compiled-row axis, holdout shape, engine blocks that represent the pool #1115 keeps the same check). Fix options: resolve the three normalised measures once over the pool, or scale each block's national totals by its mass share; then show that K blocks equal one block and lift the refusal. Candidate for its own issue.COVERAGE_PROGRESS.md,PROGRESS_BUILD*.md,_698-*.md,_*LANE-NOTES.md,FINAL_REPORT.md— historicize or delete in their own PR; the UK-lane markdowns were dispositioned in Swap the microcosm spine into the UK national build: self-policing build, retired June path, hardened parity instruments (#757) #787. 2026-10-06: none removed yet; addPROGRESS.md,PROGRESS-graph-acceptance.md,PROGRESS-chronicle-dual-accept.md,PROGRESS-chronicle-dual-accept-round2.md,PROGRESS-amendment-20-keyed-draws.md,PROGRESS-spm-composition.mdandout.md.lifetime-isa-person-net-new-column; UK: impute LISA ownership and balances from WAS; document the annual-contribution gap #1003 is closed); it matters now that policyengine-uk 2.103.0 counts the LISA as capital.support_below_floorinarea_support_summary.csv, but that column went with the old driver on 2026-09-25 and the graph path'sarea_support.csvdoes not carry it, so consumers of the local file (UK local-area exports: add theconstituency_code_oa,la_code_oaandregion_code_oacolumns that policyengine.py and the simulation API read, and record the area-code frames in the release manifest #1114, Evidence-tier publishing: ship the best available artifact at all times, with its failures recorded in the manifest (dense first) #506) cannot see which areas are below the floor.incapacity_benefit_reported(added 2026-10-06): the national release boundary drops it and the local/dense graph path does not, which failed the K=25 build's degenerate-surface gate; belongs in Make the dense role run on a current spine: identity branch, scratch aliases, per-block national problem, compiled-row axis, holdout shape, engine blocks that represent the pool #1115's triage.gates.json(input mass: "the register is empty"; the QRF thin-column list); the certifier's scope note citing the closed Publish a Populace UK local variant with rowwise H5 and long weights #146; "audited 2023-24 FRS" in the HMRC stage contract; the unused export exclusions the cut reported (person.incapacity_benefit_reported,council_tax/band_ifor the two micro-authorities); 17 calibration exclusions whose owner is the closed Swap the microcosm-built UK spine into the national build and retire the incumbent feed #757; and excluded rows being re-measured only by the evaluation site, not the build receipts (WS-C deferred adjudications and the reconciliation layer #736).Standing records (not action items)
would_claim_uclever is measured and re-frozen at 0.55: the raise moves claimants off legacy benefits (housing benefit −0.0% → −52.4%) while leaving every UC cell unchanged; the contract entry carries the receipts. Do not re-raise without new evidence — the lever's disposition is UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750. Re-signed 2026-09-16 (Align UK UC claim, child and period definitions #882): the rate is a share of the benefit units with an adult under State Pension age; the 0.55 value is unchanged.hmrc_spi_incapacity_benefit_incomeis reviewed-absent per the Create the SPI income channel on the microcosm spine with the FRS-only second stage #683 adjudication; the stage fence (not the gate) promotes it when a future FRS vintage carries signal. On the published cut its 596 nonzero rows are all SPI-synthetic, as designed.Refs: #686, #757, PR #793, #736 (calibration counterpart), #665.