Repository navigation
WS-C deferred adjudications and the reconciliation layer #736
Description
Central registry of the adjudications deferred during the #622 build-out (PR #735) and the calibration-target deferrals accumulated since, to be reviewed as the spine (#145/WS-E) and calibration workstreams converge on the first certified cut. Each item links its signed rationale in the committed resources (uk/target_reference_membership.json, uk/ledger_compile_parity_*_signed_differences.json, uk/calibration_measure_exclusions.json). Items graduate to their own issues when they become actionable. Spine-lane counterpart: #796.
Deferred adjudications from the #622 build-out
-
Property-income ×1.9 undercount → reconciliation home. The incumbent scales SPI Table 3.7 amounts ×1.9 (trace: policyengine-uk-data#311 / policyengine-uk-data#230 — SPI covers only taxpayers with liability; HMRC Property Rental Income Statistics show £46.68bn vs SPI ~£24.5bn for 2020-21). The family is signed-excluded from activation. Doctrine-clean paths: a chronicle package for the rental statistics + a declared reconciliation, or a declared value-scaling operation citing Add coverage-universe targets for uninsured and private coverage #230. This is the anchor case for the reconciliation layer.
-
Region-grain activation for the 18 two-level contract targets — Fixture A's 131 region×age production rows are structurally unmatched while activation pins country grain. Landed: microcosm#906 (merged 2026-09-15) fans the two-level targets over the region tier; the council-tax region controls are composed from the 296 authority rows since microcosm#934 (2026-09-16).
-
ons.population.scotland_households_3plus_children— the contract wants a household-composition fact that does not exist at ≤2025; needs a chronicle-side fact or an adjudicated alternative source. -
TCL year surface — the incumbent pins the April-2025 publication values at {2026}; the Ledger side activates at 2025. Revisit when a 2026-vintage publication exists.
-
CGT 2025 level → UK CGT: translate the 2024-25 gains outturn to the 2025 calibration year (forestalling year; OBR CGT +44.2% signed on the stack register) #875 (2026-09-05). Superseded facts: since the Chronicle re-pin (microcosm#874) the latest outturn is 2024-25 (£127.3bn of gains, 584k taxpayers — the forestalling year ahead of the October 2024 rate rise) and the doctrine binds it at face value at the 2025 period; the engine's 2025-26 rates on those gains overshoot OBR's FY2025-26 receipts by +44.2% (
obr.capital_gains_tax@2025). Ruled option 1: facts stay bound as published, the OBR miss is signed on the publication-stack register (obr.capital_gains_tax@2025, adjudication UK CGT: translate the 2024-25 gains outturn to the 2025 calibration year (forestalling year; OBR CGT +44.2% signed on the stack register) #875, window 2026-09-05 → 2026-10-05). Deliverable in UK CGT: translate the 2024-25 gains outturn to the 2025 calibration year (forestalling year; OBR CGT +44.2% signed on the stack register) #875: the index ruling for a declared 2024-25 → 2025 translation (rate-adjusted; a derived Chronicle fact), applyinguprating_indexin the compile step, the taxpayer count flat at 584k, and the cash-lag mapping for self-assessed OBR lines. -
The 347 uprating holds — currently explicit identity holds; per-family index declarations belong to the materialization layer.
-
Salary-sacrifice canonical source — HMRC-table facts vs the incumbent's OBR-forecast rows (value ratios 0.81–1.14); pick per target when calibration binds them. (The five measure exclusions covering the family are windowed to 2026-11-25.)
-
UC payment-band source-only rows — 12 'No payment' / 'or over' facts skipped in fan-out (no safe incumbent inverse).
-
UC family-split month choice — resolved for the implemented paid-family/source-window comparison by Align national UC targets with paid claims and explicit source windows #891/Repair UC capital graph inputs and document calibration support gaps #892: explicit monthly windows and complete-month checks, including the twelve-month CY2025 paid headline/family/child margins, replace latest-month resolution. Remaining claim/cohort and administrative-family approximations stay in Align UK UC claim, child and period definitions #882.
-
Calibrate the UK national build from Ledger-backed targets #623 disposition — resolved: the calibration seam landed via Add the UK national calibration step over ledger-backed target references #729/UK national calibration run-readiness: doctrine, live parity trio, US-format diagnostics, scorer, staging posture (#623) #743, its gate story completed in PR Complete the #757 deferrals: the exclusion pass, the measured U8 lever, the release-cut certification, and the re-armed thresholds #793, and Calibrate the UK national build from Ledger-backed targets #623 closes with that PR (residual acceptance work tracked here and in WS-E spine deferrals: known bugs and signed inconsistencies awaiting their increment #796).
-
TCL retirement at the year move — the limit is abolished from 2026-04-06 (Budget 2025; policyengine-uk-data#465), so at period 2026 the 15 TCL targets are structurally zero: the references must retire or re-vintage with the calibration-year move (WS-F/Retarget the UK build to FRS 2024-25: re-pin raw vintages, regenerate parity instruments, re-measure gate baselines #723). Add the contract-side guard from uk-data#465's step 2: a test refusing a reference whose binding variable is structurally zero at the reference period. (Our 2025 activation is unaffected — the limit is in force in FY 2025-26; when uk-data#465 moves the incumbent's values to 2025, Fixture B's 15 TCL ledger-only additions become matched rows at the next pin refresh.)
-
UC element-count targets (housing, LCWRA, carer, childcare — policyengine-uk-data#466, Re-measure UC composition errors after first calibrated run; element references still unsourced #738 step 3): no contract declarations exist; pipeline is chronicle facts first (childcare's published 160k series needs no API key — easiest first package; the rest need Stat-Xplore UC_Households exports), then a contract amendment per the Refresh the UK Universal Credit target contract #727 precedent, then references auto-activate on regeneration. Facts requested: UC element-count and monthly composition facts for the microcosm UK target surface chronicle#187.
-
Council tax level (microcosm#929 CT-C, graduated 2026-09-16 on closure):
obr.council_tax(UK, net of CTR, £50.9bn) measures −12.8 % on the microcosm#934 candidate (−11.0 % on D2: the dwelling over-weighting that propped it up is gone). On the spine England's gross council tax averages about £1,522 per household against a requirement near £1,815 (MHCLG 2025-26 average Band D £2,280); the amount comes fromfrs_council_taxand is never tied to the authority's rate, and CTR is under-simulated (Scotland +17 %, Wales +9 % on the incumbent; uk-data#448). Reconciliation home: rules-based liability from band × the authority's Band D level (MHCLG Table 10 × 296, CTAS 2026 × 32 and the WG levels × 22 are all in the pinned feed) × the statutory ratios × the single-adult discount (CTB line 8 by band, also in the feed), with CTR engine-side (policyengine-uk#1669 / Add PUF tax detail support and batched fiscal reform scoring #150). Until then the OBR nation rows (obr.council_tax_{england,scotland,wales}, generator-pinned to E92/S92/W92 while Chronicle stamps K02000001) stay report-only, and a signed asymmetry onobr.council_taxfor receipts on non-household dwellings (second homes and empties with premiums, which a household file cannot carry) is the honest disposition. The incumbent'shousing/council_tax_net× 318 authorities stays blocked on its source (MHCLG taxbase × Band D proxy). Pairs with uk-data#448. -
water_and_sewerage_chargesraw-mapping divergence — resolved by fix-and-sign during the Assemble the microcosm-built UK spine: whole-spine parity and swap acceptance #686 lane: verified on the raw FRS 2024-25 tab (12,644 vs 14,307 nonzero households, all 1,663 differing households Scottish), the defect is the incumbent's NaN-propagating addition of the retired CSEWAMT header, and the candidate side stands. Signed asscottish-water-incumbent-nan-zeroing(defect_fix, +0.1009) onuk/spine_swap_signed_differences.jsonwith a quantitative bound; latent in the incumbent since at least 2023-24 and surviving at 1.56.16. -
Census household counts bind at the 2021/22 vintage in the first rowwise local candidate (revision 2026-09-02, microcosm#762 A11). The Declare cross-grain target reconciliation for the UK local surface: national wins, sub-national rescales (#495 increment 6 companion) #802 bridge that reconciles the OA ladder's census household counts (650 constituencies + 361 local authorities) to the national household-composition partition cannot bind while three of its ten cells (
multi_family_households,unrelated_adult_households,lone_parent_non_dependent_children_households) are UK spine: relationship-to-head frame column, so the ONS household-composition split is measurable #791's reviewed measure exclusions (in force to 2026-11-26). The rowwise candidate therefore classifies that bridge as unbound with a receipt (cross_grain.unbound_bridgesin the candidate plan and manifest) and binds the 1,011 census household rows as published — 2021 for England, Wales and Northern Ireland, 2022 for Scotland — while every national row binds at the 2025 calibration period. The vintage gap is a known level pull (−2.58% household mass measured at K=2 in July); it is re-measured in the First calibrated rowwise UK local candidate (#495 increment 6) #762 receipts. Resolution rides UK spine: relationship-to-head frame column, so the ONS household-composition split is measurable #791 (the relationship-to-head column) or a shares/uprating ruling on the local family; until then the deferral is deliberate and visible, not silent. Revised 2026-09-03 (microcosm#762 A15): the shares/uprating ruling landed — every ladder household row now binds uprated to the calibration year by one national factor from the Ledger'sons.households_totalfact (29,003,000 for 2025 over the ladder's 28,060,832 = 1.033577), receipted in the candidate manifest and mandatory under--release-candidate; the bridge stays unbound until UK spine: relationship-to-head frame column, so the ONS household-composition split is measurable #791. See the next item. -
Five reviewed measure exclusions for national rows the spine cannot reach by reweighting (microcosm#762 A16, ruling 2026-09-03; window 2026-09-03 → 2026-10-03; erratum in the 2026-09-03 comment below). Register
uk/calibration_measure_exclusions.json(49 entries):ons.savings_interest_income(spine £13.8bn vs ONS D.41 £95.5bn, HMRC SPI £18.3bn — a frame gap plus a concept gap) → 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;obr.housing_benefit(£2.7bn vs £12.1bn) → UK spine: housing benefit £2.7bn against OBR £12.1bn — pensioner and supported-accommodation HB missing after the UC migration #867;slc.borrowers.plan_2_liableandslc.borrowers.plan_2_above_threshold(−65 % / −69 %) → UK spine: SLC plan-2 borrower stocks at a third of SLC's — the FRS flag captures repayers, not the liable stock #868;dwp.jsa_claimants(2.8×) → UK spine: JSA claimants 2.8× the DWP caseload — legacy-benefit reporting after the UC migration #869. The two ONS land rows first listed (8.7× / 2.5×) were withdrawn the same day: their misses were an artefact of per-block engine resolution in the candidate driver (receipt R15), and single-block resolution puts them within 3 % and 9 % of the ONS balance sheet. Each exclusion fails the run on expiry: correct the spine (the issues) or re-adjudicate. Also ruled the same day and applied onuk-rowwise-candidate-762-b: stretch bound 10,grain_equal, K=15 and 1500 epochs as UK local doctrine constants; A17, the census tenure cells uprate with the ladder rows. -
Local target surface: 68 signed deferrals covering 513 cells (
uk/local_target_reference_membership.json→signed_deferrals; no expiry — each retires when the fact lands or the frame supports it). Of 21,519 candidate references, 19,105 are active; 314 have no fact at or before the period, 1,586 no fact for the area, 513 are signed. By reason:msoa_mean_to_la_deferred(3 targets, 1,083 area-cells: ONS equivalised income is MSOA-grain means, LA aggregation waits on the mean-aggregation design — Port UK local target surface and credibility gates from uk-data #147 lineage, no issue of its own);council_tax_voa_scotland_absent(256 cells: the VOA feed has no Scottish band counts — a chronicle-side fact ask, no issue yet);council_tax_wales_country_control_absent(176 cells, First calibrated rowwise UK local candidate (#495 increment 6) #762 A13: no Wales country stock-by-band fact — asked for in the 2026-09-03 comment, no issue yet);council_tax_ni_domestic_rates(88: NI has domestic rates, structurally absent);private_rent_pipr_*(4 reasons, 361 cells: the PIPR feed is 2026-06 only, after the period, missing four English authorities, Scottish BRMA grain, no NI — chronicle-side, no issue yet);uc_gb_only_ni_absent/uc_children_gb_only_ni_absent(101 cells: Stat-Xplore UC local facts cover GB only — no issue yet);spi_la_target_measure_coverage_absent/spi_pcon_self_employment_mean_absent(9 cells: SPI publishes medians only for E06000027, nothing for Scilly, one constituency lacks the SE mean — structurally absent);council_tax_city_of_london_band_a_suppressed(1: VOA suppression);local_authority_support_floor_excluded(43) andcouncil_tax_band_h_spine_support_absent(296) are spine-side and tracked on WS-E spine deferrals: known bugs and signed inconsistencies awaiting their increment #796. Revision 2026-09-16 (microcosm#934): 20,885 active, 341 signed cells;council_tax_voa_scotland_absent,council_tax_wales_country_control_absent,council_tax_ni_domestic_ratesandcouncil_tax_city_of_london_band_a_suppressedretired with dates under the census family (uk/uk_local_target_census.json→retired_deferrals); the 297 band-H cells (296 English + Shetland) remain, tracked in WS-E spine deferrals: known bugs and signed inconsistencies awaiting their increment #796. -
Local binding adjudications (
uk/local_binding_adjudications.json, 6 entries; Declare cross-grain target reconciliation for the UK local surface: national wins, sub-national rescales (#495 increment 6 companion) #802 2026-08-31 → 2026-11-30, First calibrated rowwise UK local candidate (#495 increment 6) #762 A1 2026-09-02 → 2026-12-02): the fences lifted so the local families may bind — census disclosure-control noise; the SPI frame-model proxy; full-FRS TEI bands unavailable; population universe = private households; UC bound at benefit-unit grain; VOA dwellings vs the household frame. Each is a target-side reconciliation the family stands on; renewal or a real fix falls due at expiry. No issue yet. Revision 2026-09-16:voa_dwellings_vs_household_framere-adjudicated onto the taxbase basis by microcosm#934 (approved 2026-09-15, expires 2026-12-15; England and Wales occupied chargeable ≈ households, Scotland chargeable +1.2 %). -
UC households by area against the national caseload (added 2026-10-10, UK local build (K=25, 2026-10-06): data-quality defects on the target surface and the spine #1123 PR A; corrected 2026-10-11). UC area cells are scaled down 8% to the national caseload. The grains agree, but the scaling hides a concept gap that predates this work: the area extract carries no Payment Indicator, so it counts every household on UC, nil awards included (6.73m across Great Britain), while the national rows count paid claims (6.20m). The first version of this item called it households against benefit units; the One consistent UK target surface: enforced cross-grain reconciliation, declared uprating holds, nation household controls and the 942a1fa re-pin (#1123 PR A) #1198 review showed it is all claims against paid claims. Until a paid-claims area series is pinned, the bridge applies the GB paid share to every area alike, and the constituency child bands sit between +2.8% (no children) and −5.1% (three or more) against the national paid rows. Measured on One consistent UK target surface: enforced cross-grain reconciliation, declared uprating holds, nation household controls and the 942a1fa re-pin (#1123 PR A) #1198's target-surface receipt: the constituency cells reconcile to the GB caseload by 0.921 (0.942 before One consistent UK target surface: enforced cross-grain reconciliation, declared uprating holds, nation household controls and the 942a1fa re-pin (#1123 PR A) #1198, on the May 2025 snapshot). Fix: re-extract the area series with Payment Indicator in Chronicle (requested in UC households by area: re-extract the constituency, local-authority and by-children series with Payment Indicator as a dimension (PolicyEngine/microcosm#1198) chronicle#339, filed 2026-10-11) and re-pin.
-
Local uprating holds (17,077 cells;
uprating_holdsin the local membership): age 2024, SPI tax-year 2023 and the census tenure cells 2021/22 are held to 2025 as identity except tenure, which A17 uprates with the ladder rows; UC 2025-05 and council-tax stock 2025 carry none. Same resolution as the national 347 holds above: per-family index declarations in the materialization layer, or later facts (asked for in the 2026-09-03 comment).
The uk_target_fit disposition remainder (PR #793's adjudication queue)
The adjudicated exclusion pass (42 windowed entries, expiring 2026-11-26, correct-or-renew at apply time) landed in PR #793; the first certified cut blocks on what remains:
- The 8 UC caseload/two-child-limit cells (−28.6%…−62.0% at the post-exclusion optimum): the pre-registered U8 take-up lever is measured and exhausted (0.85 leaves every cell unchanged while destroying housing benefit −0.0% → −52.4%); the measured lever is capital-test support — UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750 / policyengine-uk#1824. Decide: wait for UK WAS stage: split private pension wealth out of corporate_wealth (uk-data#452 M2) #750, retarget, or exclude.
-
hmrc/dividend_income_count_income_band_500_000_to_1_000_000— the historical −36.7% failure recovered after Fix #792: derive band edges from the compiled register, never the pruned roster #803; the post-fix validation records −2.2% on spine-i and −2.3% on spine-j. This closes that historical band-definition defect, not future release validation. - Band edges derive from the exclusion-pruned register, silently widening surviving banded targets #792 — measure materialization is exclusion-set-dependent — resolved by Fix #792: derive band edges from the compiled register, never the pruned roster #803 and the post-merge validation on Band edges derive from the exclusion-pruned register, silently widening surviving banded targets #792. The cause was deterministic band-edge derivation from the pruned registry; the RNG hypothesis was refuted. Band edges now come from the compiled pre-exclusion register, with roster-invariance checks.
- Doctrine posture for the certified cut: the Phase-3 run carries
epochs 1500/family_equalas receipted overrides (the 2026-08-24 ruling keepsuniformthe default); the certification records them verbatim. Promote to doctrine, or certify with receipted overrides. - Fuel-duties ledger retarget (household-incidence fact vs total receipts — chronicle-side): the binding is verified correct; the gap is universe scope plus LCFS diary under-capture at 37% of implied litres. The target carries a windowed exclusion meanwhile.
- The five publication-stack target-fit exclusions due 2026-09-30 — retired in Repair UC capital graph inputs and document calibration support gaps #892:
dwp.uc.households_single_with_children,dwp.uc.households_children_1,dwp.uc.households_children_2,dwp.uc.households_children_5_or_more, andhmrc/private_pension_income_count_income_band_100_000_to_150_000. The canonical comparison evidence records all five within the unchanged 25% bound at 1,500 updates /family_equal. Remaining UC diagnosis and remeasurement are consolidated in Align UK UC claim, child and period definitions #882; this does not certify an artifact. - Sixth entry (2026-09-05, on
uk-publication-stack-834, microcosm#874 composition):obr.capital_gains_tax@2025(+44.2%, the 2024-25 forestalling-year gains bound at 2025 — UK CGT: translate the 2024-25 gains outturn to the 2025 calibration year (forestalling year; OBR CGT +44.2% signed on the stack register) #875), window 2026-09-05 → 2026-10-05. The Port the post-freeze childcare / Tax-Free Childcare inputs and targets, re-pin the Chronicle feed, and activate the DfT bus targets (#834, #789) #874 run-4 receipt also reports the private-pension band entry stale (+24.7%, back inside the bound; the rot rule wants it removed) and two unsigned state-pension SPI bands (50–70k +34.6%, 20–30k +25.3%) outside the bound. - Exclusion-window renewals fall due 2026-11-25/26: the 5 salary-sacrifice and 42 target-fit entries all fail closed on expiry — each needs its gap corrected or its adjudication renewed by then.
National calibration-target issues previously untracked here
- Adjudicate the incumbent's four post-calibration aggregate scalers #790 — adjudicate the incumbent's four post-calibration aggregate scalers (the rail/bus/fuel class deliberately left out of E6 scope)
- UK bus fare and subsidy consumer targets from Chronicle facts #789 — UK bus fare and subsidy consumer targets from Chronicle facts
- Re-measure UC composition errors after first calibrated run; element references still unsourced #738 — superseded by Align UK UC claim, child and period definitions #882. Composition activation and the first candidate remeasurement landed; remaining element integration and remeasurement after the outstanding repairs are carried forward in Align UK UC claim, child and period definitions #882.
- Certified UK artifact carries less than half of admin UC caseload (3.26m vs ~6.7m; £36.9bn vs £75.8bn) #701 — superseded by Align UK UC claim, child and period definitions #882. Missing UC caseload bindings are repaired; expenditure comparability and certified consumer acceptance are carried forward in Align UK UC claim, child and period definitions #882.
- UK rebuild: sequence calibration after the amounts imputations; staging seam has no CGT target parity evidence #704 — sequence calibration after the amounts imputations; staging seam has no CGT target parity evidence
- UK scorecard: populace_uk_2023 vs enhanced_frs_2024_25 vs admin benchmarks (2026) #731 — the scorecard (populace_uk_2023 vs enhanced_frs_2024_25 vs admin benchmarks) — becomes the acceptance probe of the first certified cut
- Publish Chronicle package IDs in calibration diagnostics targets #661 — publish Chronicle package IDs in calibration diagnostics targets
Activity
juaristi22 commentedon Aug 22, 2026
Item 10 resolved: #623 narrowed to run-readiness (not closed) — the tooling is delivered by draft PR #743 (doctrine, live parity trio, US-format diagnostics with the chronicle pin, #578 rule-1 scorer, staging-candidate posture, runbook); the licensed armed run is held until WS-E E8 (#684) + E10 (#686) complete or María names a different base. #623 stays open for the run + acceptance evidence; the aggregate-scaler ruling (item context) remains open on #623 itself.
Fix the Scottish water and sewerage charge for the FRS 2024-25 vintage
juaristi22 commentedon Aug 24, 2026
Registry coverage: 29 contract targets have no reference row — verified findings + adjudication queue
Folding the #623-lane registry findings here per María's ruling (2026-08-25): the coverage work does not ride PR #743, which ships as calibration-seam-only. Everything below was verified mechanically against the pinned feed (
chronicle-uk-artifact-1cab809, facts226358e7…, 107,550 rows), the real compiler (compile_ledger_target_references), the real generator (tools/generate_uk_target_references.py), and policyengine-uk's variable registry.The gap, exactly
uk_national_targets.jsondeclares 189 contract targets;target_references.jsoncarries 388 references covering only 160 of them. The other 29 compile into no calibration, no score, and no coverage receipt.verify_register_coverage.pyreports 388/388 because it counts references, not contract targets — a true statement about the wrong denominator.Nuance worth keeping: the gap was never invisible. The membership report records all 29 as non-active candidates (417 = 388 active + 27
no_fact_at_or_before_period+ 1multi_fact+ 1signed_excluded). It was recorded but unenforced — nothing turns an unexplained coverage hole into a failure.Root causes (verified by re-running the generator against the current feed: it reproduces 388/29 exactly)
_geography_id_for_targetinfers a pin from target-id substrings and merges it over the contract selector, so the selector matches zero facts:obr.council_tax_{england,scotland,wales}→ pinned E92/S92/W92 while OBR files everything at K02000001 (the split is by concept, not geography);obr.domestic_rates→ pinned N92000002 by substring rule, facts at K02000001.slc.*→ pinned GB (K03000001) vs the facts' England (E92000001) for borrowers/support and S92/W92/N92 for the devolved repayments.dwp.pip.*→ pinned GB vs the facts' England+Wales (K04000001).scotgov.*→ falls to UK ("scottish" ≠ "scotland" as a substring) vs S92000003.period_value; with pins, everything compiles (verified 42/42 in a synthetic run).source_concept(feed carriesscotgov.chargeable_dwellings_band_a…_h/_total, Scotland, month 2025-09) — both fixes needed.What is wireable — and what is not
Wireable now: 29 references closing 27 targets (verified end-to-end, values resolved):
All 29 bindings' variables verified present in policyengine-uk (866 variables —
pip_dl_category,council_tax_less_benefit,student_loan_plan,council_tax_band, etc.).NOT wireable — the 13 property-income amounts. They sit under the generator's standing signed exclusion: the incumbent's amount target carries the ×1.9 property-income undercount adjustment (policyengine-uk-data #311/#230; HMRC PRIS £46.68bn vs SPI ~£24.5bn), so binding raw SPI facts would knowingly calibrate to ~10/19 of the incumbent's concept. They stay out pending a chronicle PRIS package or a first-class value-scaling operation (chronicle#196 lane).
Blocked —
ons.population.scotland_households_3plus_children: selector reaches 30,925 age facts and cannot answer a household question; the right concept (ons.families_households_table7) has no Scotland cut. Filed as chronicle#196; worth neutralising so it fails loudly.Adjudications needed (María)
slc.repayments.devolved_totalinto three contract targets with explicitcountrybinding filters (the OBR council-tax pattern). Contract count 189→191.pip_dl_categorymodel-wide, so Scotland's ADP claimants inflate the estimate against an E+W target. Add a country filter to the two bindings, or record a signed asymmetry?allow_source_projection(the naive compile silently yields the prior-year observation instead). Confirm projections are the intended targets, matching the existing 24 OBR references.period_valueselector pins for borrowers ("2025"), slc.support ("2024"), SCP ("2025").Mechanics when this lands (one commit, after the digest-neutral seam work)
Regenerate — never hand-edit:
target_references.json+ membership (generator), and the two parity signed-differences resources (tools/build_uk_ledger_compile_parity_signed_differences.py). The parity fixtures describe the June/incumbent sides and do not change; the 2023 gate already tolerates 2025-only references (211/388 compile at 2023 today). Pinned counts that move:ACTIVE_REFERENCE_COUNT388→417, per-family membership counts, contract target count 189→191. Alllegacy_json— no spec/gate-battery digest movement.Plus the regression guard: a test on the committed JSONs (CI has no feed) asserting every contract target has ≥1 reference or a membership status in {signed_excluded, blocked-with-tracking-issue} — turning the already-recorded statuses into an enforced contract.
Re-score both artifacts on the new register before quoting any head-to-head; the v9 figures (297/71/10, losses 0.085 vs 0.235) don't carry across a denominator change. Closes ~20 of the 65 incumbent-only national rows; the 13 property amounts join the fact-gap bucket.
🤖 Posted from the #623 working session (Claude Code).
juaristi22 commentedon Aug 24, 2026
Correction: I measured against a stale base — E2 is already fixed on main
My comment above was computed against the #743 branch, which sits 245 commits behind
main. Measured againstmainthe numbers are different, and one of my two work items is already done.Against
maintoday: 397 references covering 169 of 189 contract targets — 20 unreferenced, not 29.@MaxGhenis's
d9d5a45e("Pin the scotgov council-tax stock targets to Scotland", 2026-08-23) already wired the ninescotgov.council_tax_stock.*targets, and diagnosed the same root cause I described — the substring geography rule sees no "scotland" in "scotgov", pins to the UK, and the pin is merged into the selector and matched againstfact.geography.id, which Chronicle stamps S92000003. Membership moved 388 → 397 active,no_fact_at_or_before_period27 → 18. So E2 is closed; disregard that section.Two things survive the correction, and one is worth deciding deliberately.
The remaining 20 break down as: 13 property-income amounts (standing signed exclusion — unchanged), 1 blocked (
ons.population.scotland_households_3plus_children, chronicle#196), and 6 groups still unwired: OBR council tax ×3 + domestic rates, SLC borrowers ×4, SLC support ×6, devolved repayments, PIP ×2, Scottish child payment. All still verified wireable against the pinned feed, with the same adjudications outstanding (devolved contract split, PIP England+Wales geography, forecast-period convention).The fix strategy question is now live rather than hypothetical.
d9d5a45efixed the geography rule with a targeted prefix special-case:That is correct and well-documented for those nine. But each remaining group needs its own special-case under that approach — OBR files at K02000001 while the rule infers E92/S92/W92 from the target name; SLC borrowers are England while the rule infers GB; PIP is England+Wales; the devolved rows are per-country. That is five more branches in a heuristic whose failure mode is silent: a wrong pin yields zero matches, and a zero-match target is deferred rather than raised.
The alternative I verified: let a
geography_level/geography_iddeclared on the contract's ownledger_selectorwin over the inferred pin, keeping the heuristic as the fallback. The existing references regenerate byte-identically (the heuristic still answers wherever the contract is silent), and each future target states its geography where a reader would look for it. Worth a ruling before anyone writes the sixth special-case.Everything else in my comment above stands — the compile verification, the property-income exclusion, the regeneration inventory, and the regression guard, which is the item that would have caught this class in the first place.
Apologies for the stale baseline; I should have measured against
mainrather than the working branch.Fix the Scottish water and sewerage charge for the FRS 2024-25 vintage
juaristi22 commentedon Sep 3, 2026
Erratum and two follow-ups on the #762 items above (2026-09-03).
A16 erratum — the two ONS land rows are withdrawn.
ons.land.corporate_land_value(listed at 8.7×) andons.land.land_value(2.5×) were not unreachable. The misses were an artefact of the candidate driver's per-block engine resolution: policyengine-uk'scorporate_land_valueallocates a fixed national aggregate by each household's share of total weighted corporate wealth, and with the engine run per clone block every block reproduced the whole aggregate (×15.000 at K=15, receipt R15 inexperiments/762-uk-rowwise-candidate-receipts.md). Single-block resolution — the release posture — puts them within 3 % and 9 % of the ONS balance-sheet rows, and the next release-candidate run binds them. The A16 register holds five entries (savings interest, housing benefit, the two plan-2 borrower stocks, JSA claimants; 49 exclusions in total), still expiring 2026-10-03. No other national row is block-sensitive (361 of 364 identical), and the manifest now names the population-normalised measures whenever blocks are used. The five remaining rows are filed as spine issues (linked from the #686 PR body).A17 (ruling 2026-09-03) — census tenure cells uprate with the household rows. The 1,436 tenure-by-authority cells (Census 2021 for England, Wales and Northern Ireland; Scotland's Census 2022) partition the same household universe as the ladder rows and were held at their census vintage; after A15 they summed to 95.7 % of the uprated household rows and the solver let owned-outright absorb the gap (+8.2 % median). Held tenure cells now take the same national household factor (1.033577 = ONS
ons.households_total29,003,000 for 2025 over the ladder's 28,060,832), receipted beside the ladder rows; a tenure cell compiled from a fact at the calibration period is never touched.Ask to the fact side, so both holds retire rather than persist: please add to the Ledger, at 2025 or the latest available vintage, whichever is later — (a) household counts by parliamentary constituency and by local authority (ONS household estimates / projections for England and Wales; NRS and NISRA equivalents), so the ladder rows bind to a published 2025 level instead of a census count × one national factor; (b) tenure by local authority at the latest published vintage (English Housing Survey / Census-based estimates where any post-2021 series exists), so the A17 uprating retires per cell; (c) the Welsh council-tax dwelling stock by band (StatsWales), still deferred under A13. The compile keys the uprating on the hold metadata, so the day a later fact lands the corresponding cells bind as published with no code change.
Vahid's review: releasable needs a single-block engine, fail-closed c…
Re-pin the UK target surfaces to Chronicle 6fb700e and repair the con…
Re-pin the UK target surfaces to Chronicle 6fb700e and repair the con…
Scale each engine block's weights to the pool so weight-share formula…
Scale each engine block's weights to the pool so weight-share formula…