Skip to content

Give pension-age HB and CTR the severe disability premium Pension Credit uses - #1938

Open
MaxGhenis wants to merge 3 commits into
mainfrom
hb-pension-age-severe-disability-premium
Open

MaxGhenis wants to merge 3 commits into
mainfrom
hb-pension-age-severe-disability-premium

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Pension Credit's minimum guarantee includes the severe disability addition for an Attendance Allowance (AA) recipient, but the Housing Benefit (HB) and Council Tax Reduction (CTR) applicable amounts did not include the severe disability premium. The legacy premium keys on is_severely_disabled_for_benefits, a tax-credit style flag (DLA care highest rate, PIP daily living enhanced rate, AFCS) that never counts AA.

While Guarantee Credit (GC) is paid, HB is passported to its maximum (HB(SPC) Regs 2006 reg 26) and hides the gap. When GC ends, HB falls by 65% of it. Reproduction on main for 2026: a single person aged 70 with State Pension £6,000, AA higher rate and council rent £6,240. Their private pension rises from £11,900 to £12,000:

private pension 11,900 private pension 12,000
Guarantee Credit 16.60 0
HB applicable amount (main) 13,312.00 (256 × 52) 13,312.00
Housing Benefit (main) 6,240.00 4,136.08
Household net income (main) 29,069.76 27,029.24 (−2,040.52)
HB applicable amount (this PR) 17,786.60 ((256 + 86.05) × 52) 17,786.60
Housing Benefit (this PR) 6,240.00 6,240.00

Law (legislation.gov.uk, current revised text, read 2026-09-30)

  • HB(SPC) Regs 2006 (SI 2006/214) Sch 3 para 6 and para 12(1) give the severe disability premium the same qualifying benefits, conditions and amounts as SPC Regs 2002 Sch I para 1 and reg 6(5):
    • qualifying benefits: AA at either rate, pension age disability payment, the DLA care component at the middle or highest rate, PIP daily living at the standard or enhanced rate, ADP daily living, and AFIP;
    • amounts: £86.05, or £172.10 for a couple who both qualify with no carer paid.
  • Sch 3 Part 3 lists only four premiums: severe disability, enhanced disability (for a child or young person only), disabled child and carer. There is no adult disability premium and no adult enhanced disability premium at pension age.
  • The pensioner CTR schedules have the same four premiums: England SI 2012/2885 Sch 2, Scotland SSI 2012/319 Sch 1 and Wales SI 2013/3035 Sch 2.

Change

  • New pension_age_severe_disability_premium (BenUnit). It reads severe_disability_minimum_guarantee_addition, so Pension Credit, pension-age HB and pension-age CTR share one definition. The premium cannot drop out of the HB applicable amount when GC ends.
  • benefits_premiums: when any member is over State Pension age (the same switch the HB and CTR applicable amounts use for the aged personal allowance), it is now that premium plus the carer premium. Below State Pension age it is still the four legacy premiums.
    • Income Support is not paid to a family with a member over State Pension age, so it is unaffected.
    • The CTC, WTC and UC disability elements and is_severely_disabled_for_benefits are untouched.

The Pension Credit addition itself is corrected in two ways the review found HB and CTR would otherwise inherit:

  • Children never withhold it. SPC Regs Sch I para 1(1)(a)(ii) counts only people aged 18 or over, and para 2(2)(f) ignores qualifying young people. On main, a child without a qualifying benefit withheld it.
  • A claimant's own carer benefit never withholds it. Para 1(1)(a)(iii) withholds it only for a carer benefit paid "in respect of caring for him". Each qualifying adult is now withheld only when another member of the benefit unit receives a carer benefit, which stands in for one paid for caring for them. So a couple who both qualify, one paid Carer's Allowance for the other, gets one rate, as reg 6(5)(a) gives.

test_carer_support_payment.py asserted the opposite for a single claimant's own Carer Support Payment. It now asserts the addition is paid.

Retained simplifications, documented on the variable:

  • one rate per qualifying adult, so a couple where only one partner qualifies gets £86.05, where the law gives 0 unless the other partner is blind;
  • no test for other adults living in the household;
  • carers outside the benefit unit are not seen.

Main paid the HB couple rate whenever any one adult was flagged.

Invariants (tests)

policyengine_uk/tests/test_pension_age_severe_disability_premium_properties.py is a Hypothesis test over single people and couples over State Pension age (ages 67-95, eight disability states, blind flags, rents, council tax and savings), with private pension on a £500 grid from 0 to £20,000:

  1. Structural: where HB is available, the HB applicable amount ≥ the PC minimum guarantee, and the CTR applicable amount ≥ the minimum guarantee.
  2. Boundary: on the step where GC ends, household net income (excluding the TV licence, whose over-75 Pension Credit concession is a genuine statutory cliff) does not fall.
  3. Schedule:
    • Over State Pension age, the premium is a whole multiple (0, 1 or 2) of the weekly severe disability rate × 52. It equals the Pension Credit addition, and it is the only premium besides the carer premium.
    • Below State Pension age, the premium is 0 and benefits_premiums equals the four legacy premiums, so working-age applicable amounts are unchanged.

Properties 1 and 2 fail on main and pass here.

pension_age_premiums.yaml has 11 hand-computed cases. Cases asserting an applicable amount use claimants who reached State Pension age before April 2021, so they hold with #1913's allowance cohort split. They cover:

  • the repro on both sides of the boundary;
  • DLA care highest gets only the severe premium;
  • a couple both on AA gets 172.10 × 52;
  • the carer premium is kept;
  • a working-age continuing award keeps the legacy premiums;
  • Scottish pension-age CTR with PIP daily living at the standard rate;
  • a dependent child does not withhold the premium;
  • a pensioner's own Carer's Allowance does not withhold it;
  • a couple who both get AA, one paid Carer's Allowance for the other, gets one rate;
  • the premium is zero below State Pension age.

Checks run locally:

  • all 1,298 YAML policy tests pass;
  • test_housing_benefit_pension_age_properties.py and test_legacy_benefit_parameters.py pass.

Known remaining failures, not asserted here:

  • the properties fail for carers (Pension Credit income omits Carer's Allowance, and two carers get one carer premium);
  • full monotonicity in income fails (HB and CTR income omit Savings Credit, contrary to HB(SPC) reg 27(4)(a)).

These are separate fixes.

Dataset impact (real runs of main 44240bd and this branch 2f3548f)

Two Enhanced FRS 2024-25 builds are in use locally, so both are shown. Build A (md5 10a924c0, 126.6 MB) is the copy most review sessions use. Build B (md5 beba41cc, 127.5 MB) is the newer published download.

Build A 2025 Build A 2026 Build B 2025 Build B 2026
Housing Benefit −£7.05m −£4.59m −£9.53m −£6.87m
Council Tax Reduction −£26.07m −£23.57m −£36.75m −£34.20m
Pension Credit +£1.41m +£1.46m +£1.47m +£1.52m
UC, IS 0 0 0 0
Household net income −£31.72m −£26.70m −£44.81m −£39.54m
Households gaining / losing 3.5k / 43.0k 4.7k / 39.3k 3.6k / 51.6k 4.9k / 47.9k
Working-age units with any premium change 0 0 0 0

On the dataset the net effect is a small reduction. The mechanism is the same on both builds:

  • In dataset mode, is_severely_disabled_for_benefits is a stored input that policyengine-uk-data sets from AA > 0. So AA recipients already had the legacy severe premium, and gainers are mainly DLA care middle rate and PIP daily living standard rate recipients.
  • Losers had the adult disability or enhanced disability premium on main, which the pension-age schedules don't have. Some are couples where only one partner qualifies, moving from 172.10 to 86.05.
  • The Pension Credit gain comes from the child and own-carer corrections.

In the household calculator, AA recipients gain, and the cliff above is removed.

Coordination

axiom: uk/regulation/uksi/2006/214/schedule/3 TheAxiomFoundation/rulespec-uk#383 queued

🤖 Generated with Claude Code

…dit uses

The Pension Credit minimum guarantee included the severe disability
addition for an Attendance Allowance recipient, but the Housing Benefit and
Council Tax Reduction applicable amounts took the legacy severe disability
premium, which tests a narrower tax-credit disability flag (DLA care highest
rate, PIP daily living enhanced rate). Guarantee Credit passports HB to its
maximum, so the gap only showed when GC ended: a single pensioner on AA lost
£2,040.52 of net income when private pension rose from £11,900 to £12,000.

HB(SPC) Regs 2006 Sch 3 paras 6 and 12(1) and the pensioner CTR schedules
give the severe disability premium the same qualifying benefits, conditions
and amounts as SPC Regs Sch I para 1 and reg 6(5), and have no adult
disability or enhanced disability premium. At pension age benefits_premiums
is now the Pension Credit severe disability addition plus the carer premium.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion

Review of this PR found that sharing the Pension Credit severe disability
addition made pension-age HB and CTR inherit two deviations from SPC Regs
Sch I: a child in the benefit unit withheld it, although the residence test
counts only people aged 18 or over (para 2(2)(f)), and a claimant's own
Carer's Allowance withheld it, although only one paid "in respect of caring
for him" does (para 1(1)(a)(iii)). Each qualifying adult is now withheld
only when another member of the benefit unit receives a carer benefit. A
couple who both qualify, one paid Carer's Allowance for the other, now gets
one rate, as reg 6(5)(a) gives.

Also: the pension-age premium is zero below State Pension age; YAML cases
that assert an applicable amount use claimants who reached State Pension
age before April 2021, so they hold with the allowance cohort split; the
schedule property checks whole multiples of the weekly rate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

An independent Opus review (in-session, not posted separately) returned APPROVE with two should-fix items and three nits. All are addressed in 2f3548f:

  • Test literals and Split pension-age Housing Benefit allowances by when State Pension age was attained #1913: two YAML cases hard-coded the pre-April-2021 allowance for a 70-year-old. They now use claimants who reached State Pension age before April 2021, or assert only amounts that hold under either cohort.
  • Inherited withholding rules: HB and CTR inherited the Pension Credit addition's child and own-carer withholding, which the law doesn't support (SPC Regs Sch I paras 1(1)(a)(ii)-(iii) and 2(2)(f)). Both are fixed in the shared addition and covered by new YAML cases. A consequence is Pension Credit +£1.5m.
  • Dataset build: the dataset table now names both local builds, by md5, with real runs on each.
  • Changelog: now states the cliff as about £2,100 (single) and £4,700 (couple).
  • Property test: the premium is gated to pension age, and the schedule property now checks whole multiples of the statutory weekly rate rather than restating the formula.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Coordination with #1946 (working-age severe disability premium). This PR sends pension-age HB and CTR through the Pension Credit severe disability addition and keeps severe_disability_premium for working-age families. #1946 fixes that working-age premium: the statutory qualifying benefits, both partners qualifying, and the non-dependant and carer conditions. The two PRs touch different files. I cherry-picked #1946 onto this PR's head 1e66b42 and ran the Enhanced FRS: with this PR in place, #1946 changes only working-age families (2026: HB +£10.0m, CTR −£0.8m, net income +£9.3m).

One difference remains between the two routes. #1946 applies the non-dependant condition (HB Sch 3 para 14(2)(a)(ii); SPC Sch 3 para 6(2)(a)(ii) for the pension-age equivalent). The Pension Credit addition does not yet do so. Chip task_e4bcb4ae covers that, and has_non_dependant_for_severe_disability_premium from #1946 is reusable there.

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Coordination with #1951 (Pension Credit severe disability addition: statutory residence and carer conditions), which is stacked on #1896.

1. This PR alone has no residence test. pension_age_severe_disability_premium reads severe_disability_minimum_guarantee_addition, and at 2f3548f that variable still has no test for other adults living in the household. So a pensioner on Attendance Allowance who lives with an adult non-dependant gets the HB/CTR premium, where HB(SPC) Regs 2006 Sch 3 para 6(2)(a)(ii) gives 0.

Executed, 2026, England: claimant aged 80 on AA higher, State Pension £6,000 and private pension £12,000, living with an unrelated 40-year-old in their own benefit unit; council rent £6,240 and council tax £2,000.

This PR alone (2f3548f) This PR + #1951 Law
Premium (£/yr) 4,474.60 0 0
HB (£/yr) 6,240 4,136.08 4,136.08
CTR (£/yr) 2,000 1,279.60 1,279.60

2. Conflicts. This PR and #1951 both edit severe_disability_minimum_guarantee_addition.py and tests/test_carer_support_payment.py. #1951's version covers everything this PR's edit to that formula does:

  • children and qualifying young people never block;
  • a claimant's own carer benefit never blocks;
  • a carer benefit for one of two qualifying partners gives one rate.

It adds the #1896 couple rule, the residence test and one-person-per-award carer attribution. With both conflicts resolved to #1951's versions, all of this PR's tests pass on the merge: the 3 Hypothesis properties in test_pension_age_severe_disability_premium_properties.py, including the invariant that the pension-age HB and CTR applicable amounts are at least the minimum guarantee, and 117 YAML cases (pension_age_premiums.yaml plus the Pension Credit directory).

Suggested order: #1896, then #1951, then this PR rebased onto it.

3. One divergence from HB law that belongs here, not in #1951. SPC Sch I para 2(2)(f) ignores any reg 4A qualifying young person. HB(SPC) reg 3(2)(a) excludes from "non-dependant" only "any member of the claimant's family", and Sch 3 para 6(6) ignores only qualifying-benefit recipients and blind people. So an 18- or 19-year-old young person of another family counts against the HB premium, but not against the Pension Credit addition.

Executed on the merge, 2026, with the same claimant, rent and council tax as above: a claimant aged 80 on AA lives with her daughter, aged 50 and on PIP, and the daughter's 18-year-old son, who is in non-advanced education. The daughter and her son form their own benefit unit.

This PR + #1951 HB law
Premium (£/yr) 4,474.60 0
HB (£/yr) 6,240 4,136.08
CTR (£/yr) 2,000 1,279.60

In both tables the law column is the model re-run with the premium set to 0; the claimant receives AA, so no non-dependant deduction applies (HB(SPC) reg 55(6)).

A sketch, run in the audit's scratch tree, that fixed this case and left this PR's tests passing:

class meets_pension_age_severe_disability_premium_residence_condition(Variable):
    # HB(SPC) Sch 3 para 6(2)(a)(ii), (b)(iii) and (6), with reg 3(2)(a):
    # no non-dependant aged 18 or over other than a qualifying-benefit
    # recipient or a blind person; only the claimant's family is excluded.
    value_type = bool
    entity = BenUnit
    definition_period = YEAR

    def formula(benunit, period, parameters):
        p = parameters(period).gov.dwp.pension_credit.guarantee_credit
        person = benunit.members
        adult = person("age", period) >= p.severe_disability.other_resident_age_limit
        ignored = person(
            "receives_severe_disability_addition_qualifying_benefit", period
        ) | person("is_blind", period)
        counted = adult & ~ignored
        family = person("is_claimant_or_partner", period) | person(
            "is_child_or_young_person_for_legacy_benefits", period
        )
        return benunit.max(person.household.sum(counted)) == benunit.sum(
            counted & family
        )


# pension_age_severe_disability_premium:
#     where(pension_age & resides, severe_disability_minimum_guarantee_addition, 0)

The set HB counts contains the set Pension Credit counts in every case the model can represent, so multiplying the addition by this test gives the HB premium.

Alternatively, reuse #1946's has_non_dependant_for_severe_disability_premium (working-age premium, HB Regs 2006 Sch 3 para 14). It applies the same reg 3 non-dependant test and the same age, qualifying-benefit and blind exceptions. One difference: it excludes everyone in the claimant's benefit unit. The sketch above excludes only the claimant, partner and their children or young persons, so an adult in the unit who is neither still counts.

Two knock-on effects:

  • In that case the pension-age HB applicable amount is lawfully below the minimum guarantee. Restrict the structural invariant to households with no young person of another family.
  • Add the case above as a YAML test.

4. Documentation. The docstring says the premium's conditions "are the same" as the Pension Credit addition's. Two differences affect households the model can represent:

  • the young person of another family (point 3);
  • a blind claimant whose partner is on AA. HB 6(3) with 6(2)(a)(i) needs the partner on AA to be the claimant, whereas SPC Sch I para 1(1)(c) is symmetric. The shared result is lawful if the couple nominate that partner to claim, as HB(SPC) reg 63(1) lets them.

Neither affects the Enhanced FRS, because is_blind is not a data input.

Evidence: executed scripts and law text are in the review folder for #1951 (audit/hb-mirror: cases.py, cases2.py, alone.py).

@vahid-ahmadi

Copy link
Copy Markdown
Collaborator

Reviewed: request changes.

Sending pension-age HB and CTR through the Pension Credit severe disability addition is the right design, and it removes the HB cliff when Guarantee Credit ends. Dropping the adult disability premiums at pension age matches HB(SPC) Sch 3 Part 3.

  1. Blocking: pension_age_severe_disability_premium.py:35-38 adds a new departure from the law for couples. Take a couple over State Pension age where one partner gets AA and the other is not blind. On main their HB applicable amount is £19,934.20, with no premium. On this PR it is £24,408.80, because the premium is £86.05 a week. In law it is 0 (HB(SPC) Sch 3 para 6(2)(b)(ii) and (3), and the same in the CTR schedules). The non-dependant test (para 6(2)(a)(ii)) is also missing, as your own comment shows. Fix: merge after Replace generic child and adult flags with each programme's legal definitions #1896 and then Apply the Pension Credit severe disability residence and carer conditions #1951, as you proposed, and rebase onto them. Or gate this premium here on both partners qualifying, or the other partner being blind, and add the residence test. Include your 18-year-old young person of another family (comment point 3) as a YAML case. On the dataset this case is better than main (172.10 → 86.05), but the 2026 net effect, about −£27m across roughly 40k losing households, comes from dropping the adult premiums rather than from the AA fix the title describes. Say so in the changelog.
  2. Should fix: pension_age_premiums.yaml:13-42 says it holds for either allowance cohort, but it fails on a local merge with Split pension-age Housing Benefit allowances by when State Pension age was attained #1913: council_tax_benefit comes out at 1,987.32, not 2,000. The comment works from HB income (16,548.80), but CTR applicable income comes out at 16,914, which is above (238 + 86.05) × 52 = 16,850.60. Fix: make the claimant 72, or drop the CTR assertion.
  3. Nit: receives_carer_benefit (used at severe_disability_minimum_guarantee_addition.py:42) leaves out the UC carer element, which para 6(2)(a)(iii) counts.
  4. Nit: the docstring cites WSI 2013/3035, while Disregard guarantee credit recipients' income and capital in pensioner council tax reduction #1909 and Split pension-age Housing Benefit allowances by when State Pension age was attained #1913 cite 2013/3029. Both contain the premium, so use one instrument in all three PRs.

Verified: I read the current text of SI 2006/214 Sch 3 para 6, SI 2002/1792 Sch I paras 1-2, SI 2012/2885 Sch 2 Part 3 and WSI 2013/3035 Sch 2 para 6. Tests at 46b9ff3: 11/11 YAML; 7/7 pytest (properties and carer support payment). CI: 6/6 green.

This branch has not been deployed

No deployments
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.

2 participants