Skip to content

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

Merged
MaxGhenis merged 17 commits into
mainfrom
hb-pension-age-severe-disability-premium
Oct 4, 2026
Merged

MaxGhenis merged 17 commits into
mainfrom
hb-pension-age-severe-disability-premium

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Pension-age Housing Benefit and Council Tax Reduction use their own schedules of premiums, which have the severe disability premium but no adult disability or adult enhanced disability premium (HB(SPC) Regs 2006 Sch 3; England CTR Sch 2; Scotland; Wales). Main applied the working-age premiums to every family. This PR:

  • gives a family with a member over State Pension age only the pension-age premiums (benefits_premiums → PENSION_AGE_PREMIUMS: severe disability and carer; the two child premiums are not modelled);
  • adds pension_age_severe_disability_premium, which is severe_disability_premium for a family over State Pension age. HB(SPC) Sch 3 para 6 sets the same conditions as the working-age premium (HB Sch 3 para 14): the qualifying benefits; both partners qualifying unless the other is blind; no non-dependant aged 18 or over, with the same exceptions (para 6(6), reg 3); and no carer benefit paid for caring for the claimant or partner. Para 12 sets the same weekly amounts, £86.05 and £172.10 in 2026-27.

Before 2026 the model's premium amounts are not the enacted rates. gov.dwp.disability_premia.severe_single and severe_couple hold a 2015 value uprated by CPI until their 2026 value, which gives £82.69, £88.73 and £90.95 a week for a single person in 2023, 2024 and 2025 against the enacted £76.40, £81.50 and £82.90 (para 12 as in force on 30 April of each year). These parameters are on main already and this PR does not change them; #1925 sets them to the announced amounts.

Where only one partner qualifies and the other is blind, the qualifying partner is taken to claim, as a couple may agree (HB(SPC) reg 63(1); England CTR Sch 8 para 4(1)). Carers are attributed by #1977's is_cared_for_by_carer_benefit_recipient.

The Pension Credit severe disability addition has the same conditions apart from wider residence exceptions (SPC Regs Sch I para 2), but its own amount parameter. The premium now reads the HB amounts rather than the Pension Credit addition, so it no longer depends on a Pension Credit parameter. Pension Credit still affects pension-age HB and CTR awards through their other rules, such as the Guarantee Credit passport in housing_benefit_applicable_income.

Stack

#1946, #1951 and #1977 have merged (#1977 at 21:20Z on 3 October as dba35e27). This branch merges #1977's final head ab929c48, so its diff against main is its own 7 files.

Impact on the Enhanced FRS

Real Microsimulation runs on the Enhanced FRS 2024-25 (policyengine-uk-data 1.57.4, SHA-256 03fe15e4…68d4). Baseline: #1977's head ab929c48, so the comparison isolates this PR. Reform: this branch at b21f805a. Changes in £m a year:

2025 2026 2027 2028
Housing Benefit −151.6 −145.6 −164.8 −169.2
Council Tax Reduction −21.8 −20.9 −23.4 −24.7
Household net income −173.4 −166.5 −188.2 −193.9
Households with lower net income, thousands 93.1 91.4 93.7 93.6

No household gains. Pension Credit, Universal Credit and Income Support do not change. The fall comes from families over State Pension age losing the adult disability and enhanced disability premiums, which their schedules do not have. The 2025 column uses the model's 2025 premium amounts (see Summary). An earlier run on older heads (a4795bbf → 5ea3a92a) gave a Housing Benefit fall of −134.3, −126.1, −159.9 and −164.3; main has changed since, and the table above replaces it.

Tests

On b21f805a: 905 tests (904 YAML cases and one Python test) under tests/policy/baseline/finance/benefit/family, gov/dwp and gov/local_authorities and 1,809 pytest (the pension-age premium, legacy premium and Pension Credit addition property files and the code-health tests) pass. fdeb6470 then corrects one test comment (the HB income in a pension-age premium case is now £16,914) and changes no expected value. CI runs the full suite on the head. The schedule property checks that over State Pension age the premium is 0, 1 or 2 weekly rates, equals severe_disability_premium, and, for the households it draws, equals the separately calculated Pension Credit addition.

The final HB and CTR awards in pension_age_severe_disability_conditions.yaml include the model's current income rules, including two known defects outside this PR, both tracked: no Savings Credit in pension-age HB income for a savings-credit-only claimant (#2112, HB(SPC) reg 27(4)(a)), and no non-dependant deduction exemption for a claimant on Attendance Allowance (#2007). The premium and applicable-amount assertions do not depend on them. Main's #1908 has fixed a third defect (earnings disregards deducted from State Pension income), so the six expected HB awards in that file fell when this branch merged main. Each is now the rent less 65% of income after tax above the applicable amount.

Not modelled

  • A Universal Credit award that includes the carer element counts in law as a carer benefit for the carer condition. The shared attribution does not count it, because reading calculated Universal Credit there would be circular (uc_non_dep_deduction_exempt reads Pension Credit). Count Universal Credit carer-element awards in the severe disability premium and addition carer test #2120 tracks counting those awards without the cycle.
  • The disabled child and child enhanced disability premiums in the pension-age schedules.
  • Hospital deeming, backdated carer awards and carers outside the household (shared-helper limitations).

Review of 2 October (subfleet, on ab59fade)

  1. Impact measured on an older head: re-measured above.
  2. CI: running on this head.
  3. Merge order: this lands after Give the legacy severe disability premium its statutory conditions (stacked on #1896) #1946, Apply the Pension Credit severe disability residence and carer conditions #1951 and Use one carer attribution for the legacy severe disability premium and the Pension Credit addition (stacked on #1946 and #1951) #1977.
  4. Amounts tied to Pension Credit parameters: the premium now reads severe_disability_premium, with HB's own amounts.
  5. HB awards that embed other defects: noted in the YAML header and tracked in Pension-age Housing Benefit income omits Savings Credit for savings-credit-only claimants (HB(SPC) reg 27(4)(a)) #2112 and Apply Housing Benefit and national Council Tax Reduction non-dependant deductions as legislated #2007 (Take Housing Benefit earnings disregards from net earnings only #1908 has merged).
  6. Property tests that restate the formula: the schedule property now cross-checks against the separately calculated Pension Credit addition; the boundary property was already independent.
  7. UC carer element: see Not modelled; tracked in Count Universal Credit carer-element awards in the severe disability premium and addition carer test #2120 and named in the changelog.
  8. Citations: the CTR nomination rule and the other premium schedules are now cited.

Review of 3 October (subfleet, on 5ea3a92a)

  1. Parents: Give the legacy severe disability premium its statutory conditions (stacked on #1896) #1946, Apply the Pension Credit severe disability residence and carer conditions #1951 and Use one carer attribution for the legacy severe disability premium and the Pension Credit addition (stacked on #1946 and #1951) #1977 have merged.
  2. CI: runs on this head.
  3. Amounts before 2026: disclosed in Summary and under the impact table; Set DWP benefit rates to the announced amounts, not CPI projections #1925 corrects the parameters.
  4. Northern Ireland citation: now SR 2006/406 Schedule 4 (applicable amounts); Schedule 3 is excluded tenancies.
  5. Pension Credit independence: the claim is now limited to the premium's own parameter dependency.
  6. UC carer element: Count Universal Credit carer-element awards in the severe disability premium and addition carer test #2120, linked above and named in the changelog.

🤖 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.

@juaristi22

Copy link
Copy Markdown
Collaborator

Codex review — changes required

Reviewed commit 46b9ff3ef3417633d1dbfe2b749d73d4ca036b57. COMPLETE; 1 confirmed blocking finding(s). Independent code/test and policy/source reviews were consolidated for the changed behavior and affected dependencies.

code-1 — [P1] Apply the severe-premium household conditions before copying the PC addition

pension_age_severe_disability_premium.py:35–38 copies the existing simplified Pension Credit addition into Housing Benefit and pension-age CTR. That helper awards one rate per qualifying adult but omits material couple and other-resident conditions. In particular, a pensioner couple with only one Attendance Allowance recipient and a non-blind, non-qualifying partner must not receive this severe premium; this head awards £4,474.60.

Executed case: ages 80/78 in 2026, State Pension £13,000 each, claimant's higher-rate AA, neither partner blind, England council rent £6,240 and Council Tax £2,000. Guarantee Credit is zero, so there is no Guarantee Credit passport hiding the issue. The current head returns HB £5,792.28 and CTR £1,716.16. A control changing only pension_age_severe_disability_premium to zero gives HB £2,883.79 and CTR £821.24. The PC addition and Savings Credit remain unchanged in that control; it isolates the new downstream effect rather than claiming the inherited PC defect was introduced here.

Implement or depend on the complete qualifying-claimant/partner and other-resident conditions, respecting the HB-specific residence definition, before exposing the addition to HB/CTR. Add final-award cases for a one-qualifying-member/non-blind couple and non-ignored adult residents. The current passing cases cover couples where both qualify and children, leaving these exclusions untested. Confidence: high for the couple case; exact current head and executed final awards support the finding.

Independent policy review corroborates the missing couple/residence conditions in HB Schedule 3 paragraph 6 and the CTR rules for England, Scotland and Wales. The overlapping code and policy findings are counted once.

policy-2 [SHOULD ADDRESS] Keep HB's residence rule distinct from Pension Credit's

The docstring at pension_age_severe_disability_premium.py:14-20 says the conditions are the same. They are not: PC SchI para2(2)(f) disregards a qualifying young person, whereas HB reg3(2)(a) excludes members of the claimant's own family; HB Sch3 para6(6) otherwise exempts qualifying-benefit recipients/blind people. Thus an18-year-old student in a daughter's separate family remains relevant to the grandmother's HB test even if PC ignores him. Reusing #1951 without an HB-specific residence gate leaves this defect. Keep the already documented cross-family case when resolving the stack and revise the unconditional minimum-guarantee invariant.

Sources: HB severe premium, HB nondependant definition, PC ScheduleI, England, Scotland, Wales.

The prior fixes to child and own-carer exclusions do not resolve these conditions. Coordinate the claimant/partner and residence changes with #1896/#1951, retaining HB-specific rules.

Validation: 18 focused tests passed. An executed final-award diagnostic reproduced the HB/CTR increases and isolated them with a zero-severe-premium control while leaving Pension Credit unchanged. Six official source originals were inspected and their cached bytes verified. No material review gaps remain within this scope.

Focused tests used an existing cached Python 3.13 environment (Core 3.32.9, NumPy 2.1.3, pandas 2.3.1, microdf-python 1.2.1, Hypothesis 6.168.2, pytest 8.4.2) with this PR’s isolated source snapshot. No dependencies were installed; this was not a freshly synced lock environment or a full-suite/population run. This is a review comment, not a formal GitHub review vote.

Live check before posting (2026-10-02T10:35:21.260004+00:00): same commit, CLEAN; all reported CI checks pass.

@vahid-ahmadi

Copy link
Copy Markdown
Collaborator

Review pass (Claude Code, on Vahid's behalf) at 46b9ff3e, round 2

Short version: the head hasn't moved since my round 1 on 1 October, so all four items stand and this is still request changes. The Codex review reaches the same blocker and adds a case where no Guarantee Credit passport hides it. The fix route hasn't changed either: #1896 and #1951 are both still open, and this PR merges cleanly onto main as it is.

Status of round 1:

# Item Status
1 Couple with one qualifying, non-blind partner gets the premium; no residence (non-dependant) test Open
2 pension_age_premiums.yaml:13-42 fails on a merge with #1913 (CTR 1,987.32, not 2,000) Open
3 receives_carer_benefit leaves out the UC carer element (para 6(2)(a)(iii)) Open: it is still Carer's Allowance or Carer Support Payment only
4 WSI 2013/3035 here against 2013/3029 in #1909 and #1913 Open

On item 1, reproduced at this head (2026, England):

  • Household: a couple aged 80 and 78, £13,000 State Pension each, the claimant on higher-rate AA, neither blind, council rent £6,240 and council tax £2,000.
  • This head: premium £4,474.60, HB £5,792.28, CTR £1,716.16.
  • With the premium set to 0, which is the law here (HB(SPC) Sch 3 para 6(2)(b) and (3)): HB £2,883.79 and CTR £821.24, the Codex control.
  • So the PR raises this couple's HB and CTR by about £3,800 a year with no Guarantee Credit in play. It isn't only the dataset's 172.10 → 86.05 case.

What would close it: either route from round 1 works.

Either way:

  • add final-award YAML cases for the one-qualifying couple and the 18-year-old of another family;
  • restrict the "HB applicable amount ≥ minimum guarantee" property to households without that young person, since there the HB amount is lawfully lower;
  • reword the docstring at lines 10-21, which says the conditions "are the same" as Pension Credit's.

Checked: the head is 46b9ff3e (30 September), CI 6/6 green, and it merges cleanly onto current main. #1896, #1951 and #1913 are all still open.

…ion-age-severe-disability-premium

Conflicts in severe_disability_minimum_guarantee_addition.py and
test_carer_support_payment.py resolve to #1951's versions, which replace
this PR's earlier change to the shared Pension Credit addition.

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

Copy link
Copy Markdown
Collaborator Author

Composition note from #2078 (stacked on #2009), which makes the CTR means test assess the applicant and partner rather than the benefit unit's claimant and partner.

#2078 adds council_tax_reduction_premiums, which the CTR applicable amount now reads in place of benefits_premiums. For ordinary families it is benefits_premiums, so this PR's premium changes flow through unchanged. Where the household head applies alone (council_tax_reduction_head_applies_alone: the head is liable but is not the benefit unit's claimant or partner), it computes the head's own premiums at the single rates, mirroring the single-claimant rules on #2009's base.

A property test in #2078 (test_head_applying_alone_matches_her_own_benefit_unit) checks that a head who applies alone gets the same applicable amount as the same head entered as her own benefit unit. Whichever of the two PRs lands second should therefore carry this PR's rules into the head-alone path of council_tax_reduction_premiums. For example: pension-age schedules with no adult disability premium; severe disability premium conditions; the carer premium per qualifying claimant. That test fails until it does.

MaxGhenis and others added 2 commits October 2, 2026 17:00
Apply the HB-specific residence condition to the shared Pension Credit
addition, cover statutory couple and cross-family exclusions with final
awards, and describe the removal of pension-age adult disability premiums.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Preserve the stacked severe disability formulas and HB residence fix.

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

MaxGhenis commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator Author

@vahid-ahmadi, point-by-point update for fix 5d2c49f45, with the four-parent stack and updated main included.

  1. Couple and residence blocker: the preserved dependency merge 33651318b contains Replace generic child and adult flags with each programme's legal definitions #1896, Apply the Pension Credit severe disability residence and carer conditions #1951, Give the legacy severe disability premium its statutory conditions (stacked on #1896) #1946 and Use one carer attribution for the legacy severe disability premium and the Pension Credit addition (stacked on #1946 and #1951) #1977. Apply the Pension Credit severe disability residence and carer conditions #1951's rewritten PC formula wins the conflicts and rejects the one-qualifying, non-blind couple. The local HB premium now also gates on Give the legacy severe disability premium its statutory conditions (stacked on #1896) #1946's family-aware non-dependant helper. I read and compared both HB schedules and regulation 3: their represented residence exceptions match. Added final-award cases include the adult resident and the young person in another family, preserving the HB/PC distinction. HB paragraph 6, regulation 3, working-age paragraph 14.
  2. Allowance cohort: both paired boundary-test claimants are now 72; the CTR assertions are retained. The property comparisons explicitly exclude other residents and use the older allowance cohort.
  3. UC carer element: confirmed that the paragraph counts actual UC awards containing the element. Use one carer attribution for the legacy severe disability premium and the Pension Credit addition (stacked on #1946 and #1951) #1977's shared attribution still deliberately omits them because calculated UC introduces PC and HB/benefit-cap cycles. This point is not closed; I flagged the receipt-input/proxy decision to Max rather than choosing a new methodology. The cross-benefit-unit CA/CSP attribution regression is included.
  4. Welsh citation: changed to WSI 2013/3029 Schedule 2 paragraph 6, matching the instrument used by 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. Both Welsh instruments and the England/Scotland equivalents were read.
  5. Description and changelog: removed the identical-conditions claim; the fragment now leads with removal of adult disability premiums and names the severe premium's couple, residence and carer conditions. The impact table is explicitly historical, measured on 2f3548f1, and must be re-run by the merge train. No microsimulation was run here.

Validation: the three requested policy directories had 716 passes and one new fixture failure (expected-list arithmetic strings), now corrected. Both pension-age YAML files then passed all 17 cases, including the child/own-carer cases and all six new final awards. Premium/HB properties, carer-support and code-health tests passed all 1,772 checks in one process (one dependency deprecation warning). Ruff formatting/lint passed before both commits. Fix 5d2c49f45 and main merge ab59fade7 are pushed. The report and reproducible patch are in the assigned worktree's .review-work/ directory.

@MaxGhenis

MaxGhenis commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator Author

@juaristi22, update on code-1 and policy-2 in fix 5d2c49f45, with the four-parent stack and updated main included.

Validation: the three requested policy directories had 716 passes and one new fixture failure (expected-list arithmetic strings), now corrected. Both pension-age YAML files then passed all 17 cases, including the original child/own-carer cases and all six new final awards. Premium/HB properties, carer-support and code-health tests passed all 1,772 checks in one process (one dependency deprecation warning). Ruff formatting/lint passed before both commits. Fix 5d2c49f45 and main merge ab59fade7 are pushed. The PR impact table is marked as an earlier-head measurement requiring a merge-train re-run; no microsimulation was run.

HB(SPC) Sch 3 para 6 has the working-age premium's conditions and para
12 its amounts, so the pension-age premium is severe_disability_premium
for a family over State Pension age. A Pension Credit reform no longer
moves pension-age HB or CTR. The schedule property keeps the Pension
Credit addition as a cross-check. References add the CTR nomination
rule and the other premium schedules; the conditions YAML notes the
three income-rule defects its awards include (#1908, #2112, #2007).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 3 commits October 3, 2026 09:10
SR 2006/406 Schedule 3 lists excluded tenancies; the applicable amounts,
including the premiums, are in Schedule 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ion-age-severe-disability-premium

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 4 commits October 3, 2026 14:58
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main's #1908 takes the Housing Benefit earnings disregards from net
earnings only, so State Pension income is no longer reduced by them.
The six final awards here fall by 65% of the old disregard; the premium
and applicable-amount assertions are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…to hb-pension-age-severe-disability-premium

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main's #1908 no longer deducts earnings disregards from State Pension
income, so the case's HB income is 16,914 (18,000 less 20% tax above the
personal allowance), still below the applicable amount. The expected
award is unchanged.

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

Copy link
Copy Markdown
Collaborator Author

Three of this PR's YAML cases need new Housing Benefit values once #1945 lands, or this PR needs them when it merges after #1945. #1945 implements HB(SPC) Regs 2006 reg 27: for a savings-credit-only award, HB income is Pension Credit income plus the savings credit payable, under reg 27(4)(a).

I checked this on a scratch merge of #1945 head c9033a6 with this PR's head fdeb647:

All three failures are in pension_age_severe_disability_conditions.yaml. Each family has in_receipt_of_savings_credit_only true, and each HB gap is exactly 0.65 × the savings credit:

Case Savings credit HB expected here HB with reg 27
Both qualifying pensioners keep two rates in their final HB and CTR awards 569.28 6,146.01 5,775.98
A qualifying pensioner with a blind non-qualifying partner gets one HB and CTR rate 59.44 5,317.52 5,278.89
An 18-year-old of another family blocks HB and CTR although Pension Credit ignores him 908.46 [3,898.70, 0] [3,308.20, 0]

The CTR values are unaffected, because #1909 already counts savings credit in CTR on main.

Whichever of this PR and #1945 merges second updates these three expectations. If this PR lands first, I'll update them on #1945.

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

UK hub merged main into this branch at 6166d47d8. It needs the core 3.32.16 CI fix (#2125) on main; the train session was cut off by a network drop.

  • Parents: fdeb64703 (approved by review_1938f) and main 7fee075d.
  • Conflicts: none.
  • Own diff: identical against each base, with the same paths and the same lines.
  • Next: CI runs on the new Linux workflow (about 25 min). The merge goes ahead on green under that merge-only check.

@MaxGhenis
MaxGhenis merged commit 4b575fd into main Oct 4, 2026
6 checks passed
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Merged by the UK hub under the PE-UK merge-on-gates rule:

  • CI: every check passed on the merged head (fast Linux workflow); gh pr checks exits 0.
  • Independent review approved the pre-merge head; the main merge is merge-only (own diff identical: see the hub's earlier comment).
  • Impact: unchanged from the description (no own-code change in the merge).

@MaxGhenis
MaxGhenis deleted the hb-pension-age-severe-disability-premium branch October 4, 2026 10:16
MaxGhenis added a commit that referenced this pull request Oct 4, 2026
Main's #1938 picked the pension-age premium schedule for HB, CTR and
Income Support when any member was over State Pension age, while this
branch moves the HB and CTR allowances to their own statutory tests
(HB(SPC) Regs reg 5; the CTR pensioner tests). A mixed-age couple on
Universal Credit then got the working-age allowance with pension-age
premiums. Each programme now chooses the schedule with the test that
chooses its allowance; Income Support, whose Schedule 2 is a
working-age schedule, uses the working-age premiums; and the
pension-age severe disability premium follows the qualifying age of a
claimant or partner.

Also folds the build's changelog fragments into this PR's own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 4, 2026
#1938's pension_age_severe_disability_conditions.yaml cases on savings
credit only now count the savings credit in Housing Benefit income
(HB (SPC) Regs 2006 reg 27(4)(a)), so each award is 0.65 x the savings
credit lower: 569.28, 59.44 and 908.46.

Co-Authored-By: Claude Opus 5.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.

3 participants