Skip to content

Charge non-dependant deductions for non-dependants within the claimant's benefit unit - #2017

Draft
MaxGhenis wants to merge 20 commits into
hb-ctr-non-dep-exemptionsfrom
in-unit-non-dep-deductions
Draft

MaxGhenis wants to merge 20 commits into
hb-ctr-non-dep-exemptionsfrom
in-unit-non-dep-deductions

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #2014

Reproducer: policyengine_uk/tests/policy/baseline/finance/benefit/family/benefit_unit_non_dependants.yaml::UC, an adult son in the renter's benefit unit bears a housing cost contribution; policyengine_uk/tests/test_benefit_unit_non_dependant_properties.py::test_deductions_match_the_oracle

Stacked on #2007 (base hb-ctr-non-dep-exemptions), which is on main. Retarget to main once #2007 merges.

Until 2026-10-20 this PR was stacked on #2010 (lha-bedroom-young-people). #2010 has not moved since 2026-10-02, and this PR needs nothing of it: #2010 changes only the LHA size criteria. Merge commit 7f9ef1a merged main and #2007 into this branch and put #2010's own files back to main's versions. The one cross-PR invariant, that an in-unit non-dependant has a bedroom, moved to #2010 (comment).

Merge order

This PR needs #2007's HB and CTR claimant exemptions: HB reg 74(6), SPC reg 55(6) and CTR Sch 1 para 8(6) (review r2, F2). Without them, a blind claimant, or one receiving AA, the DLA care component, the PIP daily living component or AFIP, would newly lose HB and CTR for an adult son. Stacking on #2007's branch enforces the order: this PR cannot reach main before #2007 does. It lands on the PE-UK merge-on-gates rule (d822) when:

Problem

A benefit unit can include someone aged 16 or over who is neither the claimant or partner nor a child or young person the claimant is responsible for. Examples are an adult son, or a 19-year-old who has left education. In law that person is a non-dependant of the renter. The model treated them inconsistently:

  • lha_renter_has_non_dependant already counted them.
  • No deduction was ever charged for them:
    • uc_non_dep_deductions and housing_benefit_non_dep_deductions counted only people in other families (is_non_dependant_of_household_head). The individual eligibility variables also excluded anyone in a family liable for rent.
    • council_tax_reduction_non_dep_deductions subtracted the claimant's own benefit unit.

So a lone parent on UC with a 25-year-old son paid no housing cost contribution. The same son in his own benefit unit in the same household cost the parent £96.55 a month.

The UC renter exemption (Sch 4 para 15) was also missing. When the renter or either joint renter is blind or receives AA, the middle or highest DLA care component, or the PIP daily living component, no contribution should be made for any non-dependant.

The law

Fetched from legislation.gov.uk on 2026-10-01 (texts in the review folder's law/).

  • UC, Sch 4 para 9:

    • (1) "the members of a renter's extended benefit unit are— (a) the renter (or joint renters); (b) any child or qualifying young person for whom the renter or either joint renter is responsible; and (c) any person who is a non-dependant."
    • (2) "A person is a non-dependant if the person normally lives in the accommodation with the renter (or joint renters) and is none of the following— (a) a person within sub-paragraph (1)(a) or (b); … (f) a person who has already been treated as a non-dependant in relation to a claim for universal credit by another person liable to make relevant payments …; (g) a child or qualifying young person for whom no-one in the renter's extended benefit unit is responsible."
    • Para 13(1): "a deduction is to be made in respect of each non-dependant who is a member of the renter's extended benefit unit".
    • Para 15 exempts "any renter who is a single person", or "any joint renter where at least one joint renter is a person", to whom (2) applies. Joint renters are joint claimants (para 1(2)).
    • Para 16 exempts the non-dependant, including "(a) a person who is under 21 years old" and "(b) a person in receipt of state pension credit".
  • HB, HB Regs 2006 / HB (SPC) Regs 2006 reg 3:

    • (1): "'non-dependant' means any person, except someone to whom paragraph (2) applies, who normally resides with a claimant or with whom a claimant normally resides".
    • (2) excludes:
      • "(a) any member of the claimant's family";
      • "(c) a child or young person … not a member of his household by virtue of regulation 21";
      • "(d) … [a person] liable with the claimant … to make payments in respect of his occupation of the dwelling";
      • "(e)(i) any person who is liable to make payments on a commercial basis to the claimant or the claimant's partner".
    • (4): "a person resides with another only if they share any accommodation except a bathroom, a lavatory or a communal area within the meaning prescribed in paragraph 8 of Schedule 1 but not if each person is separately liable to make payments in respect of his occupation of the dwelling to the landlord".
    • The family is the couple and their children and young persons. A young person is a Child Benefit qualifying young person (reg 19).
    • Reg 74 / SPC reg 55 deduct for a non-dependant "aged 18 or over". Under (5): "Where a person is a non-dependant in respect of more than one joint occupier of a dwelling … the deduction … shall be apportioned between the joint occupiers … having regard to the number of joint occupiers and the proportion of the payments in respect of the dwelling payable by each of them."
  • CTR:

    • Definitions: SI 2012/2885 reg 9 (the same definition; family in reg 6); WSI 2013/3029 reg 9; SSI 2021/249 reg 8; SSI 2012/319 reg 3.
    • Reg 9(2)(e) excludes "any person who is liable to make payments on a commercial basis to the applicant or the applicant's partner".
    • Deductions are for non-dependants "aged 18 or over" (Sch 1 para 8 and equivalents).
    • Under para 8(5)(c), one who "is a non-dependant of two or more of the liable persons" is "apportioned equally between those liable persons".
  • CTR applicant (#2078): where a liable household head is not her benefit unit's claimant or partner, she applies alone (council_tax_reduction_head_applies_alone), and is_council_tax_reduction_applicant_or_partner is her alone. The benefit unit's couple are then outside her family under reg 9(2)(a).

Change

Before (main + #2007) After
Who only members of other families who are not liable for rent also benefit-unit members who are neither the claimant/partner nor that scheme's child or young person:
• is_benefit_unit_non_dependant_for_universal_credit: 16+, not a UC qualifying young person (para 9(1)-(2)(a), (g));
• is_benefit_unit_non_dependant_for_legacy_benefits for HB: not a Child Benefit child or QYP (reg 3(2)(a), (c));
• new is_benefit_unit_non_dependant_for_council_tax_reduction for CTR: not the CTR applicant or partner (#2078's identity) and not a Child Benefit child or QYP (reg 9(2)(a), (c))
UC other families' non-dependants count in one claim, uc_non_dependants_counted (para 9(2)(f)) unchanged for other families. A family's own in-unit non-dependant counts in its own claim if that family is renting and claims UC, and otherwise in the counted claim. New para 15 exemption, uc_non_dep_deductions_renter_exempt. The para 16(2)(b) Pension Credit limb applies only to the claimant or partner, who receive it, so a pensioner's adult son is not exempt by her award.
HB #2007's per-couple amounts for other families, apportioned by rent share; none under the claimant exemption every non-dependant, in any family, pooled through #2007's deduction_per_family (one deduction per couple, the higher; each other adult separately) and apportioned between the joint occupiers by rent share (reg 74(5)). That includes a joint occupier's own adult son and a boarder's or lodger's. A boarder or lodger is not a joint occupier with the householder, so it also bears its own in-unit non-dependant in full. #2007's claimant exemption still zeroes the claim, and HB eligibility keeps #2007's individual exemptions.
National CTR #2007's two schemes (the head's family's and the other), other families' amounts per scheme, joint-liability share, the per-applicant exemption in each scheme, every non-dependant is pooled, a lodger's included. The applicant's own family members are left out (reg 9(2)(a)) and its in-unit non-dependants kept, each couple once. The result is apportioned by joint-liability share (para 8(5)) and charged to claiming families only. The per-applicant exemption still zeroes the claim.
Local CTR (5 English schemes) other families' non-dependants unchanged: the local aggregation is masked to the same other-family term as the eligibility

Joint occupiers and lodgers

A joint occupier's adult son normally resides with every joint occupier he shares accommodation with (HB reg 3(1), (4); CTR reg 9(1)). None of reg 3(2)(a)-(f) excludes him in relation to the other occupier, so he is a non-dependant of each, apportioned by reg 74(5) or para 8(5). That is how the model already treats a non-dependant in another family. So for joint occupiers (HB and CTR), and for CTR generally, the result does not depend on whether the survey codes the son in his parent's benefit unit or in his own: two YAML cases check the two codings give the same deductions. The exceptions are listed under "Not modelled".

Reg 3(2)(e)(i) and CTR reg 9(2)(e) exclude only the person liable to pay the claimant. The household extension in (e)(iii) is for the landlord's side. So a lodger's adult son who pays nothing himself is the householder's non-dependant. For HB he is also the lodger's own.

An earlier head (155766b) charged a joint occupier's own son wholly to that occupier, citing LHA Guidance Manual 2.093 example 2 and HBGM A5 5.622. Review r2 (F3) showed neither supports that:

  • the LHA example is about the size criteria, and concerns a sister, who in the model is another family's non-dependant and is apportioned;
  • 5.622 is conditional ("If a person is a non-dependant of only one of the joint occupiers").

2d54628 follows the text.

CTR: a head applying alone

Where a liable household head is not her benefit unit's claimant or partner, she applies alone (#2078). Her benefit unit's couple are then outside her family and are her non-dependants (reg 9(1), (2)(a)). As a couple they pay one deduction, the higher (Sch 1 para 8(3)), or one for each member in the Welsh working-age scheme where the couple has a UC award (WSI 2013/3029 Sch 6 para 5(3)).

For UC and HB the couple stay the benefit unit's claimant and partner. The head is the householder in whose name the accommodation is rented, so she is no one's non-dependant (UC Sch 4 para 9(2)(d); HB reg 3(2)(d)-(e)). Both in-unit helpers exclude is_resolved_household_head. YAML cases pin both sides (review r4, F1).

Local schemes

Merton, Kingston, Newham, Westminster and Oxford keep their own aggregation (_legacy.local_non_dep_deductions). The shared eligibility now also covers in-unit non-dependants, so the local aggregation masks the individual deductions to in_other_non_liable_family. The eligibility uses the same function: #2007's claimant-family test (outside every claiming, sharing or lodging family). The local schemes are therefore exactly as on #2007's base. #2077 (stacked on this PR) replaces the mask with each scheme's pooled aggregation.

Other compositions

Invariants (stated and tested)

Hypothesis properties are in test_benefit_unit_non_dependant_properties.py. They are derandomized, with 10 examples each, on populations of up to 5 households. The populations include sharers, lodgers, non-dependant families, adult children, qualifying young persons (including looked-after ones), pensioner heads with working-age sharers, and exemption flags.

  1. Oracle (differential). A plain-Python calculation from the generated structure must match each family's UC, HB and CTR deductions, and who is eligible for an individual HB or CTR deduction.
    • It decides who is whose non-dependant, couples once, HB rent shares, lodgers' own in full, the applicant's own family left out, and the claimant exemptions.
    • It reads from the model: the individual amounts; which UC claim counts the household's non-dependants and whether a family claims UC; the CTR claim flags, joint-liability shares and each family's scheme. Other-scheme amounts come from the aggregator's own helper.
    • It checks that the members each scheme classes as in-unit non-dependants (UC, HB and CTR sets) are exactly the generated non-QYP members.
  2. Conservation.
    • HB deductions (a couple's once) are borne in full across the joint occupiers, plus once more by a lodger for its own non-dependant, where no claimant is exempt.
    • CTR deductions are borne by each claiming family, under its own scheme, in proportion to its joint-liability share (Give sharers, boarders and lodgers their own rent, tenure and LHA category #2006's per-person shares need not sum to one); none where the applicant is exempt. This holds on the generator's domain (rent > 0, claimants liable).
    • Each UC contribution is borne by at most one family.
  3. Exemptions.
    • A para 15-exempt family has no UC deductions.
    • No deduction is made for anyone under 21 (UC) or under 18 (HB, CTR).
    • No one in a rent-liable family is charged other than its in-unit non-dependants.
  4. No-op. Where no benefit unit contains a non-dependant, every family's deductions equal Apply Housing Benefit and national Council Tax Reduction non-dependant deductions as legislated #2007's formulas with this PR's para 15 exemption and claim flag: UC through the counted claim, HB by rent share, and CTR per scheme by claim share, each with the exemptions.

Tests

Impact (real microsimulation)

These figures come from the released enhanced FRS 2024-25 in uk-data 1.58.1 (HF snapshot 2526edbb, sha256 056e80fd…). The base is #2007 at 0b6c3db, this PR's base; the branch is 89beee8 (same model code as ae4e42b). Each figure comes from a real run of the full model. A survey household is counted by its rent and members' ages, and any cell from fewer than 10 survey households is suppressed.

Effects, £m a year:

Year UC paid HB CTR awards Household net income Households gaining
2025 +57.5 0 <10 households +57.5 35k (43 survey households)
2026 +59.9 0 <10 households +59.9 35k (43)
2027 +59.0 0 <10 households +58.9 33k (42)
2028 +60.4 0 <10 households +60.4 33k (42)
2029 +61.9 0 <10 households +61.8 33k (42)
2030 +63.4 0 <10 households +63.4 33k (42)

No household loses. Poverty before and after housing costs changes for people in fewer than 10 survey households (suppressed).

Where it comes from (2026). Rerunning the branch with only uc_non_dep_deductions_renter_exempt (para 15) switched off changes no award. So the in-unit charge, the UC routing and the Pension Credit gate move nothing on the survey, and the whole UC effect is the para 15 renter exemption:

  • 42k benefit units (53 survey households) lose £71.0m of UC non-dependant deductions;
  • their housing costs element rises by £61.0m for 35k (43 survey households);
  • UC paid rises by £59.9m.

The in-unit group itself is 23k people (20 survey households): 18k aged 16-17 (12 survey households), 18-20 suppressed, none 21 or over. UC exempts everyone under 21 (para 16(2)(a)), and HB and CTR deductions change for fewer than 10 survey households.

Intermediate variables. council_tax_reduction_non_dep_deductions falls by £232.8m across 234k benefit units because non-claiming families now read zero (only claiming families bear deductions). The individual UC and HB deduction variables fall by tens of £bn because they now read zero for people who are nobody's non-dependant. No award changes through these.

The earlier figure (UC +£39.1m in 2026, old stack, uk-data 1.57.4) is superseded. Both the model's base and the data have changed since then (for example, main added the single-claim rule uc_non_dependants_counted, and uk-data moved to 1.58.1). The difference between the two figures was not decomposed.

Review

  • Review r1 (Opus 5.5) was lost to a session limit. Its counterexamples were folded in at 155766b.
  • Review r2 (Opus 5.5) on 155766b: F1-F5 (per-applicant CTR exemption, merge order, joint-occupier pooling, lodger's son, local neutrality), all fixed.
  • Review r3 (Opus 5.5) on e72f2b8: F1-F5 confirmed fixed, local schemes exactly neutral; R3-1 to R3-11 fixed or disclosed.
  • Review r4 (Opus 5.5, Subfleet 20261020-191444-in-unit-nondep-review-r4) on ae4e42b:
    • F1: a head applying for CTR alone was charged as her benefit unit's UC and HB non-dependant. Fixed: the household head is excluded from both in-unit helpers.
    • F2: the claim flag decides routing. Disclosed, with a YAML case.
    • F3: Reproducer line. Added.
    • F4: an in-unit parent of a child under 5. Disclosed.
    • F5: wording nits. Fixed.
    • Fixes are at 58db77c. The verdict is pending while r4 runs its mutation checks.

Not modelled / follow-ups

  • A boarder's or lodger's adult relative coded in his own benefit unit is charged to the householder only. Coded in the lodger's unit, he is charged to both, as reg 3(2)(e)(i) and (iii) give. The model cannot tell which separately coded adult is the lodger's. (The householder's own household is rightly not the lodger's non-dependant: reg 3(2)(e)(iii); UC Sch 4 para 9(2)(e).)
  • An in-unit non-dependant's own benefits are not modelled (receives_benefits_in_own_right does not say which benefit). So the exemptions for a non-dependant on IS, income-based JSA or income-related ESA, or on UC with no earned income (HB reg 74(8), CTR Sch 1 para 8(8), SSI 2021/249 reg 90), never apply to them. The same son coded as his own benefit unit gets his own UC award and can be exempt. This sits inside a suppressed survey cell.
  • "Makes a UC claim" is the model's would-claim flag for a renting, UC-eligible family (claims_universal_credit), as in main's uc_non_dependants_counted. So a family flagged as claiming counts its own in-unit non-dependants even where its award is nil, though in law a family with no claim treats no one as its non-dependant (para 9(2)(f)). A family flagged as not claiming, which the survey's take-up draws produce, passes them to the counted claim, and a YAML case pins that. Real entitlement cannot be the test without a branch calculation, because UC entitlement depends on these deductions (review r4, F2).
  • An in-unit parent of a child under 5 in the same benefit unit is charged a UC contribution. Para 16(2)(i) exempts a non-dependant responsible for a child under 5, but the model gives responsibility for the benefit unit's children to its claimant or partner, and UC reg 4(4) gives a child to one person only (review r4, F4).
  • Two in-unit non-dependants who are a couple (neither the benefit unit's claimant nor partner) pay two HB deductions, not one on their joint income (reg 74(3)-(4)). The model has no relationship data to pair them. The FRS gives every couple its own benefit unit, so this arises only in user-entered households. For CTR, the couple in a head-applies-alone family is charged once (both members in the Welsh working-age scheme with a UC award).
  • A joint occupier's or lodger's young person aged 18-19. Read literally, they are the other occupier's non-dependant, since they are not in that occupier's family. The model treats them as no one's.
  • Inherited from Give sharers, boarders and lodgers their own rent, tenure and LHA category #2006:
    • per-person joint-liability shares, so for a couple jointly liable with a single sharer, part of each pooled CTR deduction is charged to no one;
    • FRS sharers with their own agreement are apportioned as joint occupiers, although reg 3(4)'s tail and reg 74(5) would charge each claim in full.
  • Local English CTR schemes: Charge in-unit non-dependants in the local Council Tax Reduction schemes #2077.

axiom: UC Sch 4 para 13 encoded-correct; TheAxiomFoundation/rulespec-uk#413 queued (UC Sch 4 paras 15-16); TheAxiomFoundation/rulespec-uk#406 queued (UC Sch 4 para 9, HB reg 3, CTR reg 9: who is a non-dependant, joint occupiers, lodgers, the household head); TheAxiomFoundation/rulespec-uk#407 queued (HB reg 74, SPC reg 55, CTR Sch 1 para 8)

🤖 Generated with Claude Code

MaxGhenis and others added 4 commits October 1, 2026 13:23
…ze criteria

Universal Credit: a qualifying young person the renter is responsible for has
a bedroom (UC Regs 2013 Sch 4 para 10(1)(b)), and any other member aged 16 or
over is a non-dependant with one (para 9(2), 10(1)(c)), except a qualifying
young person no one is responsible for (para 9(2)(g)).

Housing Benefit: every member aged 16 or over other than the claimant or
partner is a person who is not a child (HB Regs 2006 and HB (SPC) Regs 2006
reg 13D(3)(b); reg 2(1)).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
YAML cases for a qualifying young person aged 17 and 19, an 18-year-old
non-dependant, a looked-after qualifying young person (no UC bedroom), a
couple with a young person and two younger children (category E), a partner
aged 19 (no extra bedroom) and a pensioner couple's grandchild under HB (SPC).
Two LHA_claimant_composition cases asserted the old one-bedroom count for an
apprentice non-dependant and an 18-year-old qualifying young person; both are
now two bedrooms (Sch 4 para 10(1)(c) and (b)).

Hypothesis properties: bedrooms never fall when a person aged 16-19 joins any
family; the exact change when they do; and agreement with an independent
count of the size criteria, children's rooms found by brute force.

Fixes #2008

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t's benefit unit

A member of a benefit unit aged 16 or over who is not the claimant, partner
or a qualifying young person (UC) or child or young person (HB, CTR) is a
non-dependant of the renter (UC Regs 2013 Sch 4 para 9; HB Regs 2006 and HB
(SPC) Regs 2006 reg 3; SI 2012/2885 reg 9 and the Welsh and Scottish
equivalents). The deductions now charge them:

- UC: to the renter's own claim; non-dependants in other families stay with
  the household head's claim (para 9(2)(f)). Adds the para 15 renter
  exemption and limits the para 16 Pension Credit exemption to the claimant
  or partner who receives it.
- HB: apportioned between joint occupiers by rent share (reg 74(5)); a
  boarder or lodger bears their own.
- National CTR: pooled across the claiming families by joint-liability
  share; only claiming families bear deductions.

Fixes #2014.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits October 1, 2026 15:12
… cost contributions

UC Regs 2013 Sch 4 para 15(1)(a) turns on the renter's own circumstances;
found by a mutation that applied the exemption to every family member.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Mutation testing (15 one-line mutations of the new logic) left the
in-unit age floor surviving the YAML tests, and dropping in-unit
non-dependants from HB or CTR eligibility surviving the properties. The
YAML case now checks a child's classification, and the oracle checks HB
and CTR eligibility independently. All 15 mutations are now killed by both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 1, 2026
Reg 9(2)(a) excludes the applicant's family (claimant, partner and the
children they are responsible for) from non-dependants, not every member of
the FRS benefit unit. PR #2017 charges non-dependants who share a benefit unit
with the claimant, so the property now asserts that no claimant or partner
of a claimant family is a non-dependant. It holds on this branch and on its
composition with #2017.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
A non-dependant in a family's own benefit unit is that family's alone, not
shared between joint occupiers: DWP guidance treats a joint tenant's sister
as "Sarah's non-dependant" only (LHA Guidance Manual 2.093, example 2) and
says "if a person is a non-dependant of only one of the joint occupiers,
take the whole of the deduction from that joint occupier's entitlement"
(HBGM A5 5.622). Reg 74(5) and CTR Sch 1 para 8(5) apportionment now apply
only to non-dependants from other families. A lodger's family is one
commercial arrangement for CTR too, so its adult son is no one's
non-dependant there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
Follows #2017's decision: a non-dependant in a joint occupier's own benefit
unit is that occupier's only (LHA Guidance Manual para 2.093 example 2;
HBGM A5 para 5.622). Other families' non-dependants still reside with each
joint occupier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
Applies #2007 at 6257277 (59c7082 plus the
r1 review commit) onto #2017 (in-unit non-dependants, #2006 rent shares):

- One definition of claimant or partner: #1896's is_claimant_or_partner
  variable. #2007's proxy helper (benefit-unit head or any member who is not
  a Child Benefit child or QYP) is removed and its call sites read the
  variable.
- HB and national CTR aggregation: another family's non-dependants per
  deduction_per_family (the couple's higher amount, both for a Welsh
  working-age UC couple, and each other member's own), counted once per
  family and apportioned by rent share (HB) or joint-liability share (CTR);
  a family's own in-unit non-dependants in full (LHA Guidance Manual 2.093;
  HBGM A5 5.622); the claimant exemptions. charged_to_other_families
  ("household minus own family") is no longer used and is removed.
- #2007's property oracle reads is_claimant_or_partner; the in-unit
  property oracle counts a couple once and applies the claimant exemptions.
- Drops council_tax_reduction_pension_credit.yaml and the
  in_receipt_of_guarantee_credit output (#1909, main only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
Follows #2017's decision: a non-dependant in a joint occupier's own benefit
unit is that occupier's only (LHA Guidance Manual para 2.093 example 2;
HBGM A5 para 5.622). Other families' non-dependants still reside with each
joint occupier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits October 2, 2026 04:34
…ions say

Review r2 (F3, F4, F5) found three departures from the text.

F3. 155766b charged a joint occupier's own adult son wholly to that
occupier, citing LHA Guidance Manual 2.093 example 2 and HBGM A5 5.622. HB
reg 3(1) and (4) and CTR reg 9(1) make him a non-dependant of every joint
occupier he shares accommodation with: none of reg 3(2)(a)-(f) excludes him
in relation to the other occupier. Reg 74(5) and CTR Sch 1 para 8(5) then
apportion him. The LHA example concerns the size criteria and a sister, whom
the model already treats as another family's non-dependant and apportions;
5.622 is conditional. The old rule also made the result depend on whether the
survey codes the son in his parent's benefit unit or his own. HB and national
CTR now pool every non-dependant, in any family, and apportion by rent share
(HB) or joint-liability share (CTR).

F4. A lodger's adult son was no one's non-dependant for CTR. Reg 9(2)(e)
excludes only the person liable to pay the applicant, as HB reg 3(2)(e)(i)
does; the household extension in (iii) is for the landlord's side. He is now
eligible and is the householder's non-dependant for CTR and HB, and still
the lodger's own for HB, in full, since they are not joint occupiers.

F5. Widening the shared CTR eligibility made a jointly liable sharer's local
claim bear the head's own son (Newham: £489.84 in 2025). The local
aggregation now counts only other families' non-dependants, as before, so
this change is neutral for the five local schemes until each council's
aggregation is brought into line.

YAML: joint tenants share one tenant's son by rent share (and get the same
result with him coded in his own unit); jointly liable applicants share one's
son equally; a lodger's son is the householder's non-dependant (HB and CTR)
and the lodger's (HB); Newham sharer does not bear the head's son. Property
oracle and conservation invariants restated for pooling.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The local schemes' aggregation masks the shared individual deductions to
members of other families not liable for rent, so it stays as on base while
the national eligibility also covers in-unit non-dependants. That mask must
be exactly the eligibility's other-family term. #2009 changes the term to the
claimant family, so that a sharer with no rent is a claimant and not a
non-dependant (reg 9(2)(d)). in_other_non_liable_family now holds the term
once, and both the eligibility and local_non_dep_deductions call it, so
composing with #2009 is one edit.

No change in behaviour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
… deduction code

Follows #2017 at 2d54628 (review r2 F3/F4): a non-dependant normally
resides with each joint occupier whichever family they belong to (HB reg
3(1), (4); reg 74(5)), including a joint tenant's own adult son and a
lodger's adult son (reg 3(2)(e)(i) excludes only the person liable to pay
the claimant). A boarder or lodger keeps only their own family's.

Both flags now count the same people the deduction formulas charge, so a
deduction always implies a non-dependant, including for a family with no
claimant or partner (review r1 finding 3). "Joint renter" in the UC
docstring becomes "sharer of the rent" (in UC Sch 4 it means a joint
claimant; review r1 finding 6).

New YAML cases: a lodger's adult son (HB non-dependant of the householder
and the lodger; UC counts him in the lodger's claim only, para 9(2)(f)),
and a looked-after 16-year-old school leaver with a young single HB
claimant (C, not A; #2016 review r2 N9).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
… deduction code

Follows #2017 at 2d54628 (review r2 F3/F4): a non-dependant normally
resides with each joint occupier whichever family they belong to (HB reg
3(1), (4); reg 74(5)), including a joint tenant's own adult son and a
lodger's adult son (reg 3(2)(e)(i) excludes only the person liable to pay
the claimant). A boarder or lodger keeps only their own family's.

Both flags now count the same people the deduction formulas charge, so a
deduction always implies a non-dependant, including for a family with no
claimant or partner (review r1 finding 3). "Joint renter" in the UC
docstring becomes "sharer of the rent" (in UC Sch 4 it means a joint
claimant; review r1 finding 6).

New YAML cases: a lodger's adult son (HB non-dependant of the householder
and the lodger; UC counts him in the lodger's claim only, para 9(2)(f)),
and a looked-after 16-year-old school leaver with a young single HB
claimant (C, not A; #2016 review r2 N9).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Mutation check v3 found that dropping the applicant's own-family
subtraction survived every test: with formula-computed eligibility the
applicant's family never has an eligible member. An individual deduction set
directly as an input does, and reg 9(2)(a) still keeps the applicant's own
family out of its non-dependants, as base did. The YAML case pins it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review r3:
- R3-6: in_other_non_liable_family's docstring stated the proxy as if it
  were reg 9(2)(a), (d)-(e). It is a proxy: a family jointly liable for the
  council tax but paying no rent is wrongly included, which #2009's
  claimant-family test fixes.
- R3-3: an in-unit non-dependant's own benefit awards are not modelled, so
  the HB reg 74(8) and CTR Sch 1 para 8(8) exemptions for a non-dependant on
  an income-related benefit or on UC with no earned income never apply to
  them. The documentation of is_benefit_unit_non_dependant_for_legacy_benefits
  now says so.

No change in behaviour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
Review r3:
- R3-1: housing_benefit_non_dep_deductions' documentation still said a
  family's own in-unit non-dependant is its alone. The code apportions every
  non-dependant between joint occupiers; the text now says so, as on #2017.
- R3-11: no YAML pinned the HB side of the exemptions under pooling. Two
  cases: a blind sharer's son is still half the head's (reg 74(5), then reg
  74(6) on the sharer's claim only; £105.20 a week x 52, halved), and a
  lodger on PIP daily living is not charged for its own son while the
  householder is.
- R3-6 and R3-3: the same documentation fixes as on #2017.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
…ncil's scale

Hypothesis properties 6 and 7: each council's individual and family
deductions equal an independent calculation from its 2026-27 scale, and an
adult who is not a claimant or partner changes no one else's deduction
through their earnings (both fail on the previous aggregation). A Merton case
for a 19-year-old who has left education, and #2017's Newham case now
apportions the head's own son between the jointly liable families (para
30(5)).

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 is_council_tax_reduction_applicant_or_partner (Person) and council_tax_reduction_head_applies_alone (BenUnit). Where the household head is liable but is not the benefit unit's claimant or partner, the head applies alone, and the benefit unit's claimant and partner are not her family. An example is a grandmother head sharing a benefit unit with a young couple and their baby.

For CTR, a family's in-unit non-dependants should then be benefit-unit members aged 18 or over who are neither is_council_tax_reduction_applicant_or_partner nor a child or young person of the applicant's family. Here is_benefit_unit_non_dependant_for_legacy_benefits uses is_claimant_or_partner. Composed with #2009/#2078, that would make the grandmother a non-dependant in her own claim and the young couple not hers, the reverse of the law (SI 2012/2885 reg 9(1), (2)(a)). HB can keep the generic identity; the CTR deduction (council_tax_reduction_individual_non_dep_deduction_eligible, council_tax_reduction_non_dep_deductions) needs the CTR one.

This matters more after #2078: for a head who applies alone, #2078 stops counting the young couple's income, as the law requires, and leaves their non-dependant deduction (when they are 18 or over) to this PR.

#2017 was stacked on #2010 (lha-bedroom-young-people), which has not moved
since 2026-10-02 and is 1,651 commits behind main. #2017 needs nothing of
#2010's: #2010 changes only the LHA size criteria. #2017 needs #2007's HB and
CTR claimant exemptions (review r2, F2), and #2007 lands first. So this
merges hb-ctr-non-dep-exemptions (#2007 at 0b6c3db, with main) and puts
#2010's own files back to main's versions; the bedroom differential property
that needed #2010 moves to #2010.

Composition with main and #2007:
- UC: other families' non-dependants follow uc_non_dependants_counted (the
  first liable family that claims UC). A family's own in-unit non-dependant
  counts in its own claim if it makes one, otherwise in that counted claim
  (Sch 4 para 9(2)(f); review r3, R3-7). The para 16(2)(b) Pension Credit
  limb is gated to the claimant or partner. Para 15 renter exemption kept.
- HB: every family's per-couple amount (#2007's deduction_per_family over
  other families' and in-unit non-dependants) pooled and apportioned by rent
  share; a boarder or lodger also bears its own in full; #2007's claimant
  exemption zeroes the claim. HB eligibility adds #2007's exemption.
- CTR: #2007's two-scheme structure. Each scheme pools every family's amount,
  replaces the applicant's own family amount with its in-unit non-dependants,
  apportions by joint-liability share, and charges claiming families only.
  The applicant exemption zeroes the claim. Eligibility is 18+ and either
  outside every claiming, sharing or lodging family (#2007's claimant-family
  test, now in in_other_non_liable_family) or an in-unit non-dependant for
  CTR. New is_benefit_unit_non_dependant_for_council_tax_reduction uses
  #2078's is_council_tax_reduction_applicant_or_partner, so where a household
  head applies alone, her benefit unit's couple are her non-dependants.
- Local schemes: masked to the same other-family term, so unchanged.

Tests: the composition's YAML and property oracle (couple-once, exemptions,
per-applicant CTR exemption), with the oracle's UC attribution following the
counted claim. Three new YAML cases: a head applying alone charged once for
her benefit unit's couple; a non-claiming head's son counted in the sharer's
claim; a pensioner's Pension Credit not exempting her adult son. Two cases
adjusted: a pension-age head has no UC claim to count non-dependants in, and
a 19-year-old on UC with no earnings is exempt under reg 74(8)(b).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis changed the base branch from lha-bedroom-young-people to hb-ctr-non-dep-exemptions October 20, 2026 22:32
MaxGhenis and others added 3 commits October 20, 2026 19:14
…ed claim

Since #2015 each Council Tax Reduction claim is assessed under its own
family's scheme, and #2007 recomputes a jointly liable applicant's deductions
under the other scheme. The oracle and the conservation and no-op invariants
charged every claiming family the head's-scheme amounts, so a pensioner head
with working-age sharers in England (no national working-age scale) failed
against a correct model. They now take each family's own-scheme amounts,
other-scheme amounts from the aggregator's helper, and each family's scheme
from the model.

UC attribution follows main's uc_non_dependants_counted: other families'
non-dependants count in the first liable claiming family's claim, and a
family's own in-unit non-dependant in its own claim if it claims UC. The
no-op invariant uses the counted claim instead of the head's family.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…4(6)

Brings #2007's test-only fix: the sharers conservation check counts a
couple once and leaves out an exempt joint occupier's share, which made
test_non_dependants fail on #2007 and #2017 alike. 6 of 6 pass here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ixed-scheme CTR tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 21, 2026
The 70-year-old applicant in each Scottish case is on Pension Credit, so
their own council_tax_reduction_non_dep_deduction_exempt is true. The flag
matters only for a non-dependant, so the cases now also assert who is
eligible as a non-dependant. The deductions are unchanged. Reported by the
#2017 session.

The non-dependant property test's docstring now states that invariant 5
multiplies by the rent share (reg 74(5)) or the joint-liability share
(Sch 1 para 8(5)), as its oracle already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 5 commits October 20, 2026 22:29
F1. Where a liable household head is not her benefit unit's claimant or
partner, she applies for Council Tax Reduction alone (#2078), but the UC and
HB in-unit helpers made her a non-dependant of her own benefit unit's couple.
She is the householder in whose name the accommodation is rented: UC Sch 4
para 9(2)(d) and HB reg 3(2)(d)-(e) exclude her. Both helpers now exclude
is_resolved_household_head. A YAML case pins UC and HB at 0 while CTR keeps
the couple as her non-dependants.

F2. uc_non_dep_deductions' documentation states that "makes a claim" is the
claims_universal_credit flag, so a family flagged as claiming counts its own
non-dependants even with a nil award, and says where other families' go.
A YAML case pins a non-claiming lodger's son in the householder's claim.

F5. The changelog names the household head rule, joint-occupier
apportionment and the narrowed para 16(2)(b) Pension Credit limb. The
property oracle checks all three in-unit sets (UC, HB, CTR); the generator
now states the child's Child Benefit status, since inputs set for some
members are inputs for all.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…with investment income)

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

#2007 masks HB's other-family non-dependants to families with no share of the
rent (a joint occupier, reg 3(2)(d)), since at nil rent a sharer is not
benunit_is_rent_liable. Composed with #2017's pool: the mask applies to the
other-family term only, so a nil-rent sharer's own in-unit non-dependants are
still pooled and apportioned between the joint occupiers (reg 74(5)). A YAML
case pins it: sharer charged nothing, its adult son split [500, 500].

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndants (review r4)

F7. #2062's test_every_programme_reads_one_head pinned three rules that
assume no non-dependants inside a benefit unit; on this branch it failed
deterministically (a 19-year-old presumed the 82-year-old head's child is an
in-unit CTR non-dependant, as SI 2012/2885 reg 9(2)(a) gives). Restated:
- UC deductions fall on the counting claim, or on a family's own claim for
  its in-unit non-dependants;
- HB deductions only for families with a share of the rent, or a boarder or
  lodger with a non-dependant in its own benefit unit;
- no one in the adult head's family is a CTR non-dependant except a member
  outside the applicant's family.

F6. The property generator now draws would_claim_uc per family, so the
in-unit routing's claim factor is exercised (its mutant now fails the
oracle); a YAML case pins a non-claiming head whose son counts in a
claiming sharer's claim.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The full Python suite at 2e37b1e failed test_claimant_invariants: it
pinned that no member of a sharer family is a CTR non-dependant, but an
18-year-old presumed the 66-year-old sharer's child, not in education, is
outside the sharer's family and a non-dependant (SI 2012/2885 reg 9(1),
(2)(a)). The assertion now excludes is_benefit_unit_non_dependant_for_
council_tax_reduction members, and "no claimant or partner is a
non-dependant" now reads #2078's applicant identity, so a head applying
alone may have her benefit unit's couple as non-dependants.

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