Revise the hmrc SPI band exclusions per the #807 support re-measurement - #810
Merged
Conversation
Lift the three mid-band "sparse cell" exclusions whose premise failed on measurement (77-1,158 in-band carrier records, identical on spine-i and spine-j): state_pension 50-70k, self_employment amount 50-70k, and private_pension count 100-150k return to the calibrated surface. Their v9-era exclusion predates #803, when excluding a band silently widened its neighbour, and their fits were overshoots, not support gaps; the one-sided sibling distortion this left (self_employment count 50-70k at +38.6% on v11) resolves at the source. Tighten the eleven 1m+ zero-support reasons to name the income concept (total income, ITA 2007 s.23, which excludes capital gains) and cite the measured support, so the premise can no longer drift into a wealth or gains cap; reword the three retained thin 500k-1m cells with per-cell support instead of the retired "six-cell set" phrase. Register census pins updated: 44 entries, 39 in the 2026-08-26 tranche, the three lifted cells asserted non-excluded. Adjudication: microcosm#807 (spine-i/j receipts, uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juaristi22
marked this pull request as ready for review
August 28, 2026 12:23
This was referenced Aug 28, 2026
30 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #807. Part of the #796 spine-deferral epic.
What moved
Class B — lifted (3 entries).
hmrc/state_pension_income_band_50_000_to_70_000,hmrc/self_employment_income_income_band_50_000_to_70_000, andhmrc/private_pension_income_count_income_band_100_000_to_150_000return to the calibrated surface. The "sparse cell" premise fails on measurement: 77–1,158 in-band carrier records (up to 535k weighted carriers), cell-for-cell identical on spine-i and spine-j (receipts:uk-candidate-eval out/excluded_cell_support_spine_{i,j}.json). Their v9-era adjudication predates #803 — excluding a band then silently widened its neighbour — and their v9 fits were overshoots (+27% to +34%), not support gaps.Class A — reworded (11 entries). The 1m+ zero-support reasons now name the income concept — total income (ITA 2007 s.23, which excludes capital gains) — and cite the measured support (0 records for nine families; 0 SPI / 2 proxy for self-employment), so the premise can no longer drift into a "no wealth over £1m" claim. The spine carries capital gains to £20.4m and 6,925 records above £1m wealth; these cells stand because income excluding gains has no support there.
Class C — reworded (3 entries). The thin 500k–1m cells keep their exclusion (2–16 records) but cite per-cell measured support instead of the now-false "six-cell set" phrase, with re-measure-before-renewal noted.
Register census pins updated: 44 entries, 39 in the 2026-08-26 tranche, the three lifted cells asserted non-excluded. The compiled register surface (408 specs) is untouched — exclusions prune at apply time — so the frozen scoring-register pin and the UK spec digest both stand.
Measurement: the v12 seam run validates the lift
spine-j (sha
481fa7ff…) throughtools/calibrate_uk_national_dataset.pyon this branch (code pin92da31ce), 1500 epochs /family_equal, register bound at 364 calibrated targets (was 361). Receipts:runs/uk-623-first-calibrated/spine-assessment-v12/.All three lifted cells fit inside the 25%
uk_target_fitband:hmrc/state_pension_income_band_50_000_to_70_000hmrc/self_employment_income_income_band_50_000_to_70_000hmrc/private_pension_income_count_income_band_100_000_to_150_000The one-sided sibling distortions collapse at the source, exactly as #807 predicted:
hmrc/self_employment_income_count_income_band_50_000_to_70_000hmrc/state_pension_count_income_band_50_000_to_70_000hmrc/private_pension_income_income_band_100_000_to_150_000Nothing else moves: the UC family is flat (caseload −20.8% → −20.6%),
obr.capital_gains_taxslides just inside the band (−25.01% → −24.9%), headline loss 0.0297 → 0.0300 while binding three more targets, within-10% 90.6% → 89.8%.uk_target_fitnow blocks on 6 cells, all UC composition/two-child-limit (−56.5% to −26.5%) — the uk-data#452 residual beyond mechanism M2, i.e. the #736 adjudication input. The hmrc SPI band surface is fully green.Note on the engine: the v11/v12 assessment runs resolved policyengine-uk 2.89.0 (lock floor
>=2.88). Verified insensitive for the measured surface —ons.land.*initial estimates are identical across the split (corporate land does not flow throughcorporate_wealth), and the UC capital test readscorporate_wealthalone under both 2.89 and 2.92. The>=2.92floor bump (#750's remaining microcosm-side item) follows in its own PR and must precede the certified cut.🤖 Generated with Claude Code