Repository navigation
Count war pensions and AFCS payments in Pension Credit income, less £10 a week - #2508
Conversation
State Pension Credit Act 2002 s.15(1)(g) counts war disablement pensions and war widow's or widower's pensions, and SPC Regs reg 15(5)(aa) counts AFCS guaranteed income payments. Sch IV para 1 disregards £10 a week of them. Pension Credit income counted none of them. Add pension_credit_war_pension_income: the claimant's and partner's afcs and war_widows_pension, each person's less the weekly disregard (a new parameter, gov.dwp.pension_credit.income.war_pension_disregard), and put it in the Pension Credit income list. Add war_widows_pension and war_widows_pension_reported, counted next to bsp in the gross benefit, HBAI and spending totals, so moving FRS code 9 out of bsp_reported keeps those totals unchanged. Housing Benefit is not changed. Add YAML cases from 2026-27 statutory rates (SI 2026/148) and Hypothesis properties: the Pension Credit and Housing Benefit income differential, bounds and closed form, Guarantee Credit monotonicity and moving amounts between sources within a person. 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: 0 (thresholds in Notes
Moves flagged for reviewNone. Spending by benefit and service
Caseloads
Government balance, each component counted once
Model totals
Household income totals
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: receipts by tax head; components the model counts twice; population; poverty rates; people in poverty; 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
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 excludes those points. Drop the assertion that every drawn carer is paid a carer's benefit: since #1994, State Pension and other overlapping benefits can reduce Carer's Allowance to nil. On the derandomized draws the differential compares 278 of 588 points, 214 with counted war pension income above the disregard. All four properties pass in 75 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… on main Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
test_war_widows_pension_counts_wherever_bsp_does (#2382) checked that adding £5,000 of war widow's pension raises household_benefits, HBAI net income and government spending by £5,000, as BSP does. Its widow was on Pension Credit, and war widow's pension is now Pension Credit income (SPCA 2002 s.15(1)(g)) while BSP is not (reg 15(1)(n)), so her Pension Credit fell and the totals rose by £520. Give her £40,000 of private pension, which keeps her out of every means test, so the test again measures how the aggregates count the payment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Independent review of #2508 found that the savings-credit-only routes of Housing Benefit (HB (SPC) Regs 2006 reg 27) and Council Tax Reduction take pension_credit_income, which now counts war pensions less £10, while their general routes count none. Under the model's assumption that authorities disregard war pensions in full under SSAA 1992 s.134(8) (HB/CTB Guidance Manual P2.576: an authority "may modify The Pension Service's calculation" for a greater war pension disregard), both routes now remove pension_credit_war_pension_income. Also: - YAML Case 14: a savings-credit-only claimant with an AFCS payment; HB and CTR income 13,954 - 1,040 + 302.616 = 13,216.616. - Property 5: with and without the payments, HB and CTR income change only by the change in Pension Credit paid, on both routes. Property 3 now starts from nil private pension so Guarantee Credit is usually paid. - Document that afcs sums AFCS payments and war disablement pensions (one £10 on the sum) and that Sch IV para 1(cc)'s abated-GIP rule is not modelled; quote the s.17(1) definition of war widow's pension fully. - Drop three YAML comments that said a case passes on main; name guaranteed income payments in the changelog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Case 14 From the delta review of #2508: - Pension Credit income is net of tax on income it does not count (for example dividends), so it can be smaller than the war pension income it includes. Floor the difference at nil before adding the savings credit payable, in both the Housing Benefit and the Council Tax Reduction savings-credit-only routes. - Case 14 now uses inputs whose amount B is whole pennies (private pension 240 a week, no tax), so the model's unrounded savings credit (476.216) is the regulations' figure; the model does not apply reg 7(4) rounding. - Para 1(cc) covers any pension or payment within AFCS Order 2005 art 31(1)(a) or (b), not only an Armed Forces Pension Scheme pension. 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
Pension Credit income counted none of these:
The law counts all three, less £10 a week. #1954's audit found AFCS payments were the largest omission by money in benefit units receiving Pension Credit.
The law
Read from legislation.gov.uk (revised text,
/data.xml).Per payment, not per person. Para 1 does not say whether the £10 applies to each payment or once per person. Max ruled on 2026-10-19 that it applies to each payment. For that reading:
For the other reading, Sch IV para 11(3)(b) refers to the case where "£10 is disregarded in accordance with paragraph 1(a) to (f)".
Changes
pension_credit_war_pension_income(BenUnit): for the claimant and partner (is_claimant_or_partner),afcsandwar_widows_pensioneach less the weekly disregard × 52, never below nil. An unused disregard does not pass to the other payment or to the other partner. It sits in the Pension Credit income list after working tax credit.gov.dwp.pension_credit.income.war_pension_disregard: £10 a week from 6 October 2003.war_widows_pension(added by Give War Widow's Pension its own CPI-uprated variable ahead of freezing BSP #2382) gets documentation and references (SPCA 2002 s.17(1); ITEPA 2003 s.639).pension_credit_war_pension_incomefrom it, floored at nil.Data
afcsholds FRS benefit code 8, "Armed Forces Compensation Scheme" (formerly War Disablement Pension, including Guaranteed Income Payments; seeafcs_reported).war_widows_pensionis zero in uk-data 1.58.0, which has nowar_widows_pension_reportedcolumn; FRS code 9 still sits inbsp_reported. Split War Widow's Pension (FRS code 9) out of bsp_reported policyengine-uk-data#578 and Split War Widow's Pension (FRS code 9) out of bsp_reported microcosm#1222 move it. Until then the per-payment and per-person readings give identical dataset results.Tests
pension_credit_war_pension_income.yaml: 14 cases for 2026 (SI 2026/148 art 29: standard minimum guarantee £238.00, Savings Credit threshold £208.07). 13 fail on main; Case 12, which checks the existing benefit totals from Give War Widow's Pension its own CPI-uprated variable ahead of freezing BSP #2382, passes on both. The cases cover:test_pension_credit_war_pension_properties.py(Hypothesis, derandomized): 5 properties, 72 s locally.pension_credit_income − pension_credit_war_pension_income == housing_benefit_applicable_income + housing_benefit_applicable_income_disregard.test_war_widows_pension.pynow gives its widow £40,000 of private pension, so the aggregate check stays outside the means tests.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 (report).bsp_reported), so that part shows no effect until policyengine-uk-data#578 lands.Axiom
axiom: rulespec-uk#390 queued (Extension 4: SPCA s.15(1)(g), reg 15(5)(aa) and Sch IV para 1; Sch IV needs ingesting first)
Reproducer:
policyengine_uk/tests/policy/baseline/gov/dwp/pension_credit/pension_credit_war_pension_income.yaml::Case 1, an AFCS payment above £10 a week counts less £10.Reproducer:
policyengine_uk/tests/policy/baseline/gov/dwp/pension_credit/pension_credit_war_pension_income.yaml::Case 5, one person with an AFCS payment and a war widow's pension gets £10 off each.Reproducer:
policyengine_uk/tests/test_pension_credit_war_pension_properties.py::test_pension_credit_and_housing_benefit_differ_only_by_war_pensions🤖 Generated with Claude Code