Conversation
…oner CTR The benefit cap has no age exception. UC Regs 2013 regs 79, 82 and 83 cap every Universal Credit award, including a mixed-age couple's joint award (reg 3(2)(a)). The Housing Benefit cap (HB Regs 2006 Part 8A) reaches only Housing Benefit under the working-age regulations, which by reg 5 apply to a claimant or partner over the qualifying age for State Pension Credit only while either is on UC, Income Support, income-based JSA or income-related ESA. is_benefit_cap_exempt_other exempted any benefit unit with a member over State Pension age; it now exempts only one whose Housing Benefit is under the pension-age regulations (new housing_benefit_pension_age_regulations_apply). For Council Tax Reduction a pensioner must not be, nor have a partner who is, on those legacy benefits or have an award of UC (SI 2012/2885 reg 3(1); WSI 2013/3029 reg 3(1); SSI 2021/249 reg 3; SSI 2012/319 reg 12). The new council_tax_reduction_pensioner applies that test, and council_tax_reduction_household_has_pensioner uses it, so an English mixed-age couple on UC moves to the working-age (local) scheme. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…review Universal Credit needs a claimant or partner under the qualifying age for State Pension Credit (UC Regs 2013 reg 3(2)(a)), but is_uc_eligible counts any working-age adult, so the model pays UC to a pensioner whose only younger adult is a qualifying young person. Both new tests now count a UC award only where an is_uc_claimant member is under State Pension age, so such a family keeps the pension-age HB rules (no cap) and pensioner CTR, as on main. Tests: JSA cases move to 2025-26 and use reported JSA; assert Newham amounts; add a Newham non-dependant case, a pensioner with a qualifying young person, and a Cardiff case pinning the cap's effect on Welsh CTR through UC income. The property test adds the pensioner-with-young-person shape, weights draws towards mixed-age UC families, states P1 as an equivalence, and restates P5: Welsh and Scottish CTR changes only through Universal Credit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review found the cap does have one age-based exception: SI 2014/1230 reg 60C (NI: SR 2016/226 reg 61C) disapplies UC Regs reg 79 for a claim where every claimant has reached the qualifying age (tax credit migrants under reg 60A). It never covers a mixed-age couple, so no result changes; the comments now say so. Also attribute the April 2026 end of income-based JSA to the model's parameter rather than stating it as law. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eview - The guard reads is_uc_claimant, which treats an 18-year-old as a dependant only when is_parent is set (as in the FRS datasets). Say so in the changelog and comments, and pin the no-is_parent result in YAML. - housing_benefit_pension_age_regulations_apply: note that treating a UC award with no working-age claimant as "not on UC" is right for the cap (reg 60C) but not for HB reg 5 itself. - council_tax_reduction_pensioner: "claimant or partner" in the docs; note that Scotland, unlike England and Wales, has no reg 60A disregard. - Cardiff YAML: the value is the model's pension-age formula, not the law. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Working-age families in Scotland and Wales went through the pension-age means test built on Housing Benefit parameters. The whole Universal Credit award counted as income against an HB personal allowance with no children, so UC claimants almost never got CTR. Scotland's working-age scheme (SSI 2021/249) and the Welsh rules for persons who are not pensioners (WSI 2013/3029) now have their own route: - Wales, UC: applicable amount is the UC maximum amount and income is the Secretary of State's UC income plus the award (Sch 6 paras 3, 9). - Scotland, UC: own applicable amount; only the child and childcare elements of UC count as income (regs 35, 42, 57(1)(p), (2)(d)). - IS, income-based JSA and income-related ESA passport to the maximum reduction (SSI 2021/249 reg 13(11); WSI 2013/3029 Sch 9/10 para 8). - Applicable amounts: each country's personal allowances, child amounts, family premium and disabled child premiums, 2013-14 to 2026-27. - Income: Child Benefit disregarded, earnings disregards, childcare charges, closed unearned-income lists and tariff income from capital. Pension-age CTR is unchanged. Carries a byte-identical copy of #1944's council_tax_reduction_pensioner. Fixes #1962 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The model does pay UC with no working-age claimant (the any-adult test), so say those are not awards in law rather than that none exist; and date the Welsh reg 60A disregard to schemes from 2026-27. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Reviewed: approve with nits, once the pending Test job passes. The law is right. UC Regs regs 79–83 have no age exception; reg 80A sets only the cap amounts, and SI 2014/1230 reg 60C covers only claims where everyone is over the qualifying age. SI 2012/2885 reg 3, WSI 2013/3029 reg 3 and SSI 2021/249 reg 3 all make a mixed-age couple on UC working-age for CTR.
Verified: I read UC Regs regs 79, 82 and 83, TP reg 60C, HB Regs 2006 reg 5 and Part 8A (75A, 75C, 75E), SI 2012/2885 reg 3, and SSI 2021/249 reg 3, including para (3) on mixed-age couples on PC. The YAML passes (18/18) and the property suite passes (2/2). Lint and smoke checks pass; Test was still pending. |
|
Composition note: #2015 (stacked on #2009 → #2006) adds |
Summary
Two rules treated a mixed-age couple on Universal Credit as pensioners. A mixed-age couple is one member over State Pension age and one under it. The law treats such a couple as working-age for both rules.
is_benefit_cap_exempt_otherexempted any benefit unit with a member over State Pension age. The UC cap turns on earnings and benefit receipt, not age, so a mixed-age couple's UC award is capped like any other.is_benefit_cap_exempt_earningsandis_benefit_cap_exempt_health_disabilitycompute the samehas_pensionerbut never return it. That dead code is Fix benefit cap exemption defects (#1818) #1820's to remove.council_tax_reduction_household_has_pensionerignored UC. In England a mixed-age couple on UC went to the national pensioner scheme; the law puts it in the council's working-age scheme.Law (legislation.gov.uk CLML, read 2026-09-30)
UC cap.
HB cap.
CTR "pensioner".
Change
New
housing_benefit_pension_age_regulations_apply(BenUnit), for HB Regs 2006 reg 5 and HB (SPC) Regs 2006 reg 5. It holds when all of these hold:is_uc_claimant) is over State Pension age;is_benefit_cap_exempt_otherexempts on that variable in place of "any member over State Pension age". It keeps the AFCS and contributory-ESA terms and drops the dead code. So:The reduction comes off UC and HB alike, and the model never pays one family both, so one flag serves both caps.
New
council_tax_reduction_pensioner(BenUnit) applies reg 3(1)(a): a claimant or partner over State Pension age, no IS, income-based JSA or income-related ESA, and no UC award with a working-age claimant or partner.council_tax_reduction_household_has_pensioneris now the claimant benefit unit'scouncil_tax_reduction_pensioner. It feedscouncil_tax_reduction_scheme_supported, the English pensioner scheme, and the five simulated local working-age schemes and their non-dependant deductions.Which UC award counts.
is_uc_entitled, UC before the cap > 0, which also needswould_claim_uc). Reg 81 reduces an award rather than removing it, and HB Regs reg 2(3B) counts a person as "on universal credit" whether or not it is in payment.is_uc_eligiblecounts any working-age adult, so the model pays UC to a pensioner whose only younger adult is a qualifying young person. Without this guard, that family would have been newly capped and moved off pensioner CTR; the law gives it no UC at all.is_uc_claimantrecognises the young person as a dependant only whenis_parentis set, as the FRS datasets do; a YAML case pins the result without it.is_uc_eligibleitself to need anis_uc_claimantmember under State Pension age.As elsewhere in the model,
is_SP_agestands in for the qualifying age for State Pension Credit; Use the State Pension Credit qualifying age, and start-of-year status for Class 4 NI #1907 swaps that in.What changes where
council_tax_reduction_applicable_amount. This PR leaves that file alone. The two nations' working-age rules for UC applicants differ, and the model implements neither:Wales (WSI 2013/3029 Sch 6 paras 3 and 9): applicable amount = UC maximum amount × 12/52; income = UC-assessed income plus the UC award.
Scotland (SSI 2021/249 reg 35 and Sch 1): the ordinary working-age allowances (couple £150.15), with income counting retirement pension income and only the child and childcare elements of UC (reg 57(1)(a), (p) and (2)(d)). The model counts the whole UC award as income.
A review script tested keeping the pension-age amount against switching to the model's legacy working-age amount, compared with a hand computation of each nation's UC-applicant rules. The grid: couples aged 70 and 58, 0-2 children, rent 0 or £7,800, State Pension £0-12,000, earnings £0-24,000.
So this PR keeps it. The PE-UK CTR shortfall work, a separate session, is building both UC-applicant routes keyed on
council_tax_reduction_pensioner.Welsh and Scottish CTR still moves through Universal Credit. It counts UC as income, so where the newly applied cap lowers a mixed-age couple's UC, their CTR rises. Invariant P5 pins this, as does a Cardiff YAML case: UC 19,020 after a 10,980 reduction, CTR 1,582.84; main pays UC 30,000 and CTR 0. Both CTR figures come from the model's pension-age formula; the Welsh UC-applicant route (Sch 6 paras 3 and 9) would give this family the full reduction.
Household results (2026, main 44240bd → this branch)
Real model runs; the cases are in
~/reviews/uk-mixed-age-uc-cap-ctr-2026-09-30/cases.py. The benefit cap and UC columns are real outputs on main's UC, which leaves State Pension out of unearned income until #1943.Enhanced FRS impact (real runs)
Both code versions ran on
enhanced_frs_2024_25.h5, a read-only copy ofuk-weight-8566-2026-09-29/data, sha256e433e532…. Scripts areimpact/dataset_impact.pyandimpact/compare.py; the branch run is at 48a11ed, the code this PR ships.Coordination with open PRs
test_housing_benefit_pension_age_properties.py.is_benefit_cap_exempt_other.py, and Use the State Pension Credit qualifying age, and start-of-year status for Class 4 NI #1907 also editscouncil_tax_reduction_household_has_pensioner.py; keep this PR's formulas.council_tax_reduction_pensioner.pyand routes on it; whichever lands second drops its copy.council_tax_reduction_applicable_amount.py(edited by Replace generic child and adult flags with each programme's legal definitions #1896, Use the State Pension Credit qualifying age, and start-of-year status for Class 4 NI #1907 and Split pension-age Housing Benefit allowances by when State Pension age was attained #1913) is not touched.Invariants (stated and tested)
policyengine_uk/tests/test_benefit_cap_and_ctr_pension_age_properties.pyis a Hypothesis test, derandomized, 15 examples of 10-30 families.Invariants:
Mutation check (scratch worktree, both test layers):
Log:
out/mutations.log.Review
is_parentqualification, the grid figures, the Cardiff comment, row 2 of the household table, and reg 83(1)(fa). d420697 makes them. A confirmation pass approved them (no formula logic changed; the ASTs match apart from documentation), and a later commit fixes two comment nits it raised.Tests
policyengine_uk/tests/policy/baseline/gov/dwp/benefit_cap/benefit_cap_pension_age.yaml(8 cases). UC and HB before the cap are inputs, so rate changes elsewhere cannot break these.is_parent, capped without it.policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.yaml(10 cases).policyengine-core test policyengine_uk/tests/policy1,300 passed;pytest policyengine_uk/tests -m "not microsimulation" --ignore=policyengine_uk/tests/policy322 passed, 15 skipped. CI covers the final head.Follow-ups (filed as separate tasks)
housing_benefit_pension_age_regulations_apply, together with the HB Sch 5 para 4 / Sch 6 para 5 passport.axiom: TheAxiomFoundation/rulespec-uk#389 queued. rulespec-uk takes these as inputs: the cap exemption (
uc_pilot_exempt_from_benefit_cap), the HB age switch (hb_pilot_any_member_pension_age) and CTRperson_is_pensioner. UC Regs regs 79/83, HB Regs reg 5 and the four CTR "pensioner" provisions need a corpus ingest first.🤖 Generated with Claude Code