Skip to content

Revise the hmrc SPI band exclusions per the #807 support re-measurement - #810

Merged
juaristi22 merged 1 commit into
mainfrom
807-exclusion-revision
Aug 28, 2026
Merged

Revise the hmrc SPI band exclusions per the #807 support re-measurement#810
juaristi22 merged 1 commit into
mainfrom
807-exclusion-revision

Conversation

@juaristi22

@juaristi22 juaristi22 commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

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, and hmrc/private_pension_income_count_income_band_100_000_to_150_000 return 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…) through tools/calibrate_uk_national_dataset.py on this branch (code pin 92da31ce), 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_fit band:

lifted cell v12 fit
hmrc/state_pension_income_band_50_000_to_70_000 +22.2%
hmrc/self_employment_income_income_band_50_000_to_70_000 +18.5%
hmrc/private_pension_income_count_income_band_100_000_to_150_000 +23.3%

The one-sided sibling distortions collapse at the source, exactly as #807 predicted:

sibling v11 v12
hmrc/self_employment_income_count_income_band_50_000_to_70_000 +38.6% (blocking) +0.1%
hmrc/state_pension_count_income_band_50_000_to_70_000 +23.5% +3.0%
hmrc/private_pension_income_income_band_100_000_to_150_000 −0.3% −0.1%

Nothing else moves: the UC family is flat (caseload −20.8% → −20.6%), obr.capital_gains_tax slides 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_fit now 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 through corporate_wealth), and the UC capital test reads corporate_wealth alone under both 2.89 and 2.92. The >=2.92 floor bump (#750's remaining microcosm-side item) follows in its own PR and must precede the certified cut.

🤖 Generated with Claude Code

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Re-measure the hmrc SPI band exclusions: three 'sparse cell' premises fail on spine-i (hundreds of in-band carriers)

1 participant