Repository navigation
Count IIDB, SDA, incapacity benefit and maternity allowance in Pension Credit income - #2507
Conversation
…n Credit income SPC Regs 2002 reg 15(1) prescribes all social security benefits as income except a closed list that does not name these four. Append them to gov.dwp.pension_credit.guarantee_credit.income. The reported IIDB amount cannot separate the constant attendance and exceptionally severe disablement increases that reg 15(1)(c) and (e) except. Complete the reg 9 Savings Credit non-qualifying list with working tax credit, incapacity benefit, SDA and maternity allowance, and let savings_credit_income read benefit-unit sources such as working tax credit. Fix the list's unit metadata and add a label. Housing Benefit income counts IIDB, SDA and incapacity benefit under both HB (SPC) Regs 2006 reg 29(1)(j) and HB Regs 2006 reg 40 with Sch 5. Remove the unused duplicate parameter gov.dwp.pension_credit.income.savings_credit_excluded_sources. Refs #1954. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Aggregate impact on certified data: passBase Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 2 (thresholds in Notes
Moves flagged for review
Receipts by tax head
Spending by benefit and service
Caseloads
Government balance, each component counted once
Model totals
Household income totals
Poverty rates
People in poverty
Inequality
Mean household net income in each side's own deciles
Standard reform costings (change in gov_balance)
Household net income by decileMean change in household net income per household, and as a share of the decile's base income; households stay in the base run's deciles.
No change in any year: components the model counts twice; population; standard reforms: change in each reform's target. Checks failing on both base and head (1)
Counted-once checkEach of 84 components was raised by £1 per unit in 2026-27, and every head of its totals was read household by household: its own head must rise by exactly £1, no other tax head may move, no other benefit may rise, and the model's own total must move by what its heads moved. A head that breaks a rule is measured again twice: with every other head held at its baseline value, and with every other head held at its value after the first £1 while the component rises again. It fails where either still shows the response. 0 failed; 0 were skipped.
Provenance
Dataset: Receipts by tax head: head levels
Spending by benefit and service: head levels
Caseloads: head levels
Government balance, each component counted once: head levels
Model totals: head levels
Components the model counts twice: head levels
Household income totals: head levels
Population: head levels
Poverty rates: head levels
People in poverty: head levels
Inequality: head levels
Mean household net income in each side's own deciles: head levels
Standard reform costings (change in gov_balance): head levels
Standard reforms: change in each reform's target: head levels
|
…hout a UC claim savings_credit_income now floors each person-level excluded source at nil, as pension_credit_income counts them since #2259, so the two never disagree on a negative input. Case 17 tested working-age Housing Benefit income, but on current main the couple's Universal Credit entitlement passports Housing Benefit (#2133) and makes its income nil. Set claims_universal_credit to false so the case tests the means test itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he carers overlap Two behaviours that reached main after these properties were written made them fail with every prescribed benefit at nil: - With a savings-credit-only award, Housing Benefit takes the Secretary of State's assessment plus the savings credit (HB (SPC) Regs 2006 reg 27), so the differential now compares only where neither credit is due. - SDA, IB and MA (and contribution-based JSA and contributory ESA) reduce Carer's Allowance and Carer Support Payment under the overlapping benefits rules (carers_allowance_overlapping_benefits). The pound-for-pound and reg 9 properties now add back the carer's benefit the payment displaces. Measured on the derandomized draws: the differential compares 849 of 1,071 points, 770 of them with a prescribed benefit and 220 with a carer. All four properties pass in 44 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…emoved-parameter registry From the independent review of #2507: - The Housing Benefit earnings disregard is capped at net earnings, so it is nil without earnings. Cases 16 and 17 no longer override it, and the differential property compares Housing Benefit income with Pension Credit income directly instead of adding the disregard back. - Case 9 runs on the model's 2025 minimum guarantee (227.10), which is already the statutory amount; drop the override and its stale comment. - Reg 15(1)(c) is the IIDB increases (SSCBA ss.104-105); (d) and (e) are payments under the Sch 8 schemes for old industrial injury cases. Fix the wording in the income list, the HB comment, the YAML header and the property docstring, and note that incapacity benefit's non-partner dependant increases (reg 15(1)(h)) are not separated either. - Register the removed savings_credit_excluded_sources in REMOVED_PARAMETERS, so a reform naming it fails with directions. - New cases: savings-credit-only Housing Benefit with IIDB (Case 20) and working-age Housing Benefit with IIDB (Case 21). - Correct invariant 3's description of how the model dates State Pension age. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Hand-off to the UK hub (session local_87c93ea5, 2026-10-20).
|
|
Merged by the UK hub (session local_8e19f9d5, Opus 5.5) on its merge gates, from the owner session's hand-off. One merge-queue enqueue, pinned to head
🤖 Generated with Claude Code |
Part of #1954.
What was wrong
State Pension Credit Regulations 2002 reg 15(1) prescribe "all social security benefits" as Pension Credit income except a closed list. PolicyEngine's income list (
gov.dwp.pension_credit.guarantee_credit.income) omitted four benefits that are not on that list:iidb);sda);incapacity_benefit);maternity_allowance).The Savings Credit list of non-qualifying income named only contribution-based JSA and contributory ESA, though reg 9 also names working tax credit, incapacity benefit, SDA and maternity allowance. Housing Benefit income omitted IIDB, SDA and incapacity benefit too.
The law
Read from legislation.gov.uk (revised text,
/data.xml).Changes
guarantee_credit/income.yaml: addiidb,sda,incapacity_benefitandmaternity_allowance.savings_credit/excluded_income.yaml: addworking_tax_credit,incapacity_benefit,sdaandmaternity_allowance(reg 9(a), (b), (d), (e)). Fix the unit metadata (list) and add a label.savings_credit_income: read benefit-unit sources such as working tax credit once, and floor each person-level source at nil, aspension_credit_incomedoes since Count a loss on one source as nil in Pension Credit income and earnings #2259.housing_benefit_applicable_income: countiidb,sdaandincapacity_benefit(maternity allowance was already counted).gov.dwp.pension_credit.income.savings_credit_excluded_sources.git grepfinds no code, test, doc or README that reads it. It is registered inREMOVED_PARAMETERS, so a reform naming it fails with directions togov.dwp.pension_credit.savings_credit.excluded_income.Not changed
iidbis the whole reported payment, so the reg 15(1)(c) increases cannot be separated. Nor can incapacity benefit's increases for a dependant other than a partner (reg 15(1)(h)). The parameter comment says so.maintenance_incomecomes from the FRS child-maintenance module, which records arrangements per child and the "children covered", and child maintenance is not Pension Credit income. Absent-partner payments sit untyped inprivate_transfer_income. See ALLPAY2 is counted in two income variables, and spousal maintenance has no variable of its own policyengine-uk-data#627 and ALLPAY2 is counted in two UK income columns; spousal maintenance column (mirror of uk-data) microcosm#1320.Tests
pension_credit_prescribed_benefits_income.yaml: 21 cases at statutory rates. All 21 fail on main (b9b5671) and pass here.claims_universal_credit: falseto model a legacy Housing Benefit claim; no case overrides a computed amount to isolate a rule.test_pension_credit_prescribed_benefits_properties.py(Hypothesis, derandomized): 4 properties, 36 s locally.housing_benefit_applicable_income == pension_credit_income. There are no earnings, so the HB earnings disregard, which is capped at net earnings, is nil. With a savings-credit-only award HB uses the Pension Credit assessment plus the savings credit (HB (SPC) reg 27), so those points are excluded.savings_credit_income <= pension_credit_income. Adding a reg 9 source changes Savings Credit income only through tax and any displaced carer's benefit, and never raises Savings Credit.Impact
Source: CI's aggregate-impact check, a full microsimulation of each fiscal year on the certified Enhanced FRS 2024-25 (policyengine-uk-data 1.58.1, sha256
056e80fd8e91). It compares main 815f89c with this PR merged (run, report).Axiom
axiom: rulespec-uk#390 queued (Extension 3: reg 15(1) benefits and the reg 9 list; reg 9 needs ingesting first)
Reproducer:
policyengine_uk/tests/policy/baseline/gov/dwp/pension_credit/pension_credit_prescribed_benefits_income.yaml::Case 1, single pensioner with IIDB at 20 percent.Reproducer:
policyengine_uk/tests/policy/baseline/gov/dwp/pension_credit/pension_credit_prescribed_benefits_income.yaml::Case 12, SDA is not qualifying income for Savings Credit.Reproducer:
policyengine_uk/tests/test_pension_credit_prescribed_benefits_properties.py::test_pension_credit_and_housing_benefit_assess_the_same_prescribed_benefits🤖 Generated with Claude Code