Skip to content

Means-test the Council Tax Reduction applicant and partner, not the benefit unit's claimant - #2078

Open
MaxGhenis wants to merge 4 commits into
ctr-claimant-household-headfrom
ctr-applicant-means-test
Open

MaxGhenis wants to merge 4 commits into
ctr-claimant-household-headfrom
ctr-applicant-means-test

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

Stacked on #2009 (ctr-claimant-household-head at 4b84ea0), which is stacked on #2006 and #1896. Merge #2009 first; the diff here is this PR's changes only.

Summary

Council Tax Reduction (CTR) is means-tested on the applicant's own income and their partner's. The applicant is the person liable for the council tax. The model means-tested the benefit unit's claimant and partner (is_claimant_or_partner) instead, and the two are not always the same people.

The case that shows it (#2009 review r3, finding N3): an 80-year-old grandmother heads a household in Scotland and shares a benefit unit with two 17-year-old parents and their baby. #1896's parent-couple rule makes the young parents the benefit unit's claimant and partner. #2009 makes the grandmother the liable person, so the family claims through her. The means test still read the young couple:

Grandmother's private pension CTR before CTR after
£0 £1,800 £1,800
£100,000 £1,800 £0

This was already so on #2009's base (b065a48), so #2009 did not introduce it.

What changes

Two new variables say who is assessed:

  • council_tax_reduction_head_applies_alone (BenUnit): the household head is liable for the council tax but is not the benefit unit's claimant or partner.
  • is_council_tax_reduction_applicant_or_partner (Person):
    • where the family's liable person is the benefit unit's claimant or partner, the claimant and partner, whatever their ages (a partner under 18 is not liable, but their income counts);
    • where the head applies alone, the head only;
    • for a family with no liable person, which cannot claim, the claimant and partner, so nothing changes for it.

Every part of the assessment that read the generic claimant, or the whole benefit unit, now reads the applicant:

Part of the assessment Before, for the grandmother After
Applicable income the young couple's income, plus their Child Benefit her own income
Personal allowance a couple's, on the couple's ages, plus the pension-age couple amount (£25,880 a year) a single pensioner's (£13,312)
Premiums the couple's disability and caring her own, at the single rates (council_tax_reduction_premiums)
Non-dependant exemption not exempt if she is blind (a Merton probe deducted £270.40) exempt
Income-based benefit passport the couple's Income Support, JSA or ESA passported her not passported by their award
Universal Credit route (Merton, Kingston, Newham, Westminster, Oxford) the couple's award put her on the Universal Credit figures her own income and allowance
Oxford's Child Benefit deduction took the couple's Child Benefit off her income nothing to take off
Pensioner scheme any pension-age member of the head's family a pension-age applicant or partner

Where the head applies alone, she is assessed as a single person with no partner or children. The benefit unit's own awards (Child Benefit, Income Support, income-based JSA, income-related ESA, Universal Credit, tax credits) and its children belong to its claimant and partner.

Families whose applicant is the benefit unit's claimant are unchanged, with one exception: the pension-age allowance and the pensioner scheme no longer switch on a pension-age member who is neither the applicant nor the partner.

Law

Invariants

These hold for every input, and the property tests check them:

  1. The liable head is assessed. A liable household head is always an applicant or partner of their own family. Raising the head's own private pension raises their family's applicable income.
  2. Monotone. Raising the head's pension never raises any family's simulated reduction.
  3. High income. With £250,000 more pension the head's family gets no simulated reduction, unless an income-based benefit passports it or its applicant has a Universal Credit award.
  4. Ordinary families unchanged. Where the head does not apply alone, the applicant and partner are exactly the benefit unit's claimant and partner. Where the head applies alone, the head is the only applicant, and a young parent's earnings do not move the family's applicable income.
  5. Two inputs, one answer (differential). A head of any age who shares a benefit unit with parents aged 16 or 17 and their baby gets the same applicable income, applicable amount, premiums, passport, scheme, exemption and reduction as the same head entered as her own benefit unit, with the young family as another, in all eight schemes. Two limits keep the two inputs comparable. Nobody takes up Universal Credit or Income Support (a head inside another couple's benefit unit cannot be given her own award; the couple's awards are supplied as inputs). The parents are under 18 (adult ones would be her non-dependants, and the model charges a deduction only when they are in another benefit unit).

Tests

  • YAML, applicant_or_partner.yaml, 11 end-to-end cases. None sets applicable income. 9 fail on Give Council Tax Reduction to the household head's family, not the oldest adult's #2009's head (4b84ea0); the other 2 pin behaviour that should not change (a partner under 18's income counts).

    • The grandmother with no income gets £1,800, and with a £100,000 pension gets £0.
    • In England her £20,000 pension gives £759.60: 1,800 − (20,000 − 1,486 tax − 13,312) × 20%.
    • The young couple's income-based JSA does not passport her.
    • Her premiums follow her own disability, at the single rates.
    • A blind grandmother head has no non-dependant deduction in Merton.
    • The young couple's Universal Credit does not put her on Newham's Universal Credit route, and does not remove her tariff income from capital in Kingston upon Thames.
    • A pension-age relative who is not the applicant or partner does not make a young couple's claim a pensioner's.
  • Hypothesis, test_council_tax_reduction_applicant_properties.py: 2 tests, the 5 invariants above, across all eight modelled schemes.

  • Mutation checks. Ten mutations each put back one piece of the old behaviour, and every one makes a test fail:

    • the differential property catches seven: premiums, passport, the benefit unit's benefits and children, couple status, exemption, the Universal Credit route and Oxford's Child Benefit deduction;
    • the liable-head property catches applicable income reading the generic claimant;
    • YAML cases catch the other two: Kingston's tariff income, and the pensioner flag reading any member of the head's family.

    The first draft of the differential missed the Universal Credit route, because its savings and bills rarely gave a part-withdrawn award. Its strategy now weights toward those values.

  • Regression. All 113 cases in the 12 YAML files that read Council Tax Reduction, its council schemes or the premiums pass. So do Give Council Tax Reduction to the household head's family, not the oldest adult's #2009's and Give sharers, boarders and lodgers their own rent, tenure and LHA category #2006's property tests (test_council_tax_reduction_claimant_properties.py, test_rent_of_sharers_boarders_and_lodgers_properties.py). CI runs the full suite.

Enhanced FRS impact

Real Microsimulation runs, base 4b84ea0 against this branch at 905d0d9, on the same file each time. Later commits change only tests. Aggregates only.

Dataset Year CTR, base CTR, branch Households that change
Enhanced FRS 2024-25 (e433e532) 2026 £2,360.98m £2,360.98m none
Enhanced FRS 2024-25 (e433e532) 2025 £2,304.29m £2,304.29m none
Payer build (ed1a2991, uk-data#512) 2026 £2,182.18m £2,182.18m none

The reduction is identical for every household in all three runs. So are applicable income, applicable amount, the passport, the pensioner flag, the exemption, net income and poverty status. No household in the microdata has a head who applies alone, and none has a pension-age member of the head's family who is not the applicant or partner. The FRS forms a benefit unit from one adult or a couple and their dependent children, so it does not put parents into a grandparent's benefit unit. The fix therefore changes household calculations entered that way, and no population estimate.

Not in this PR

  • Non-dependant deductions for adults in the applicant's own benefit unit. Where the head applies alone and the young couple are 18 or over, they are her non-dependants, and this PR stops counting their income without charging a deduction. Charge non-dependant deductions for non-dependants within the claimant's benefit unit #2017 adds in-unit non-dependants; it should identify them with is_council_tax_reduction_applicant_or_partner for CTR (see Coordination).
  • A head's partner or child who is not the benefit unit's claimant, partner or child. The model has no relationship input to find them, so a head who applies alone is single.
  • The head's own means-tested benefits. A working-age head who applies alone may have her own Universal Credit, which the model does not calculate inside another couple's benefit unit.
  • Children's income. The means test still counts the income of the applicant's children, as before (SSI 2012/319 reg 21(3) and SSI 2021/249 reg 36(2) exclude it).

Coordination

axiom: uk/regulations/uksi/2012/2885/schedule/1/paragraph/11 encoded-correct (tests applicant_income_and_capital_are_calculated, partner_income_and_capital_are_calculated, household_member_is_not_treated_without_polygamous_marriage) | Scotland and Wales (SSI 2012/319 reg 21, SSI 2021/249 reg 36, WSI 2013/3029 Sch 1 para 5 and Sch 6 para 7) TheAxiomFoundation/rulespec-uk#427 queued

🤖 Generated with Claude Code

MaxGhenis and others added 4 commits October 2, 2026 08:03
…ans test

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gston's tariff income

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
#2078 (also stacked on #2009) adds
is_council_tax_reduction_applicant_or_partner and
council_tax_reduction_head_applies_alone for the CTR means test. They define
the same people as this PR's council_tax_reduction_applicant_or_partner: the
claimant and partner where the liable person is one of them, the liable head
alone otherwise, and the claimant and partner in a family that cannot claim.
Take #2078's two files byte for byte, so whichever PR lands second merges
without conflict, and point the pensioner flag and the applicant exemption
at it.

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

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.

1 participant