Repository navigation
Conversation
The five English working-age local schemes (Merton, Kingston upon Thames, Newham, Westminster, Oxford) reproduce the Default Scheme's para 9: an adult in the applicant's benefit unit who is not the claimant, partner, child or young person is a non-dependant. local_non_dep_deductions now charges the claiming family the household pool (claims x pool x share, as the national variable), counting the higher of each non-dependant couple (each member in Merton and Kingston where the couple has UC) and every other adult separately. normal_gross_income_non_dep_deduction bands a claimant/partner on the couple's joint income and anyone else on their own, uses each person's own hours, and gates the IS/JSA/ESA/PC/UC exemptions to the award's claimant and partner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…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>
…amily Review r1 of #2077: an in-unit adult who personally pays the householder as a boarder or lodger, or is personally liable for the rent, was still a non-dependant, and a household head whom the inference left outside his benefit unit's couple was charged as his own non-dependant. The household head (the person liable for the council tax), anyone liable for the household's rent and anyone paying rent as a boarder or lodger is now nobody's non-dependant, in the national and local schemes alike. Property 6's oracle now derives who claims and each claim's share from the generated structure and checks the model's against them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vahid-ahmadi
left a comment
There was a problem hiding this comment.
Thanks Max. The rules applied match each scheme:
- Who is a non-dependant: charging in-unit adults follows para 9 ("any person ... who normally resides with an applicant", except "any member of the applicant's family").
- Couples: one deduction, the higher, on joint income follows para 30(3)-(4).
- Joint liability: the apportionment follows para 30(5).
- Merton and Kingston: the per-member UC deduction matches the Default Scheme's own "(other than where there is an award of universal credit)".
Verified at 663a5b7:
- Tests: the local_authorities YAML passes 67/67, benefit_unit_non_dependants 28/28 and properties 6/6.
- Probe for Newham, 2026:
- The household: a grandmother aged 55 applies alone. A 19-year-old couple live with her as another family; the father earns £30,000 and works 37.5 hours.
- The deduction is £1,175.72 (£22.61 × 52 on joint income of £576.92 a week). The mother's own deduction, £392.08, is the lower, so it is not taken.
- CTR is £84.28.
- Blocking: needs a rebase. #2017 conflicts with main in 6 files, and this PR adds a seventh,
_legacy.py(from #2009, merged 4 Oct). This is the same standard as #2015 and #2078. #2030 is also stacked on #2017. - Should fix: #2027 is missing from Coordination, and the conflict at
_legacy.py:175-179changes amounts.- The case: Merton, a non-dependant couple. One reports £5,000 of income-related ESA; the other works 20 hours on £15,000.
- Here: no deduction, CTR £1,800.
- With #2027's
is_on_*: £551.20 deducted, CTR £1,248.80. - Default Scheme para 2(4) ("payable to him") with para 30(3) supports #2027.
- Take #2027's
is_on_*there, keep your claimant-or-partner gate on the Pension Credit (:179) and UC limbs, and add the case.
- Should fix: this does not fix the #2078 grandmother cases.
- Both
own_family_member(_legacy.py:114) andin_unit(council_tax_reduction_individual_non_dep_deduction_eligible.py:40) key onis_claimant_or_partner. - So when the head applies alone and the inference makes the 19-year-olds the unit's couple, they count as neither her family nor her non-dependants.
- Put my probe household in one benefit unit and this PR gives a £0 deduction. Under paras 6 and 9 it should be £1,175.72, giving CTR of £84.28.
- Whichever PR lands second should key both on
is_council_tax_reduction_applicant_or_partnerfrom #2015/#2078. - #2078's Newham and Kingston grandmother cases also need explicit inputs:
- set the young father's
weekly_hours, so the hours band applies; - set
current_educationfor the 19-year-olds, who otherwise default to tertiary education and fall under the full-time student exemption (para 30(7)(c)). - Without these, those cases give a £0 deduction whatever the non-dependant logic does.
- set the young father's
- Both
- Should fix: the agreed #2015 resolution covers
_legacy.pybut not the eligibility file. - Should fix: the review-1 fix changes
council_tax_reduction_individual_non_dep_deduction_eligible, which the national schemes share. That is the body's −£3.4bn on the intermediate.- Say so in the title and changelog:
changelog.d/2014-local.fixed.mdmentions only the local schemes. - Also remove the survey household counts ("135 survey households", "134", "54").
- Say so in the title and changelog:
- Nit: close relatives who pay board are non-dependants.
- Para 9(3)(a)(i) makes someone who pays a close relative a non-dependant again: "that person is a close relative of his or his partner".
council_tax_reduction_individual_non_dep_deduction_eligible.py:47-51excludes every boarder and lodger, for example an adult son paying his mother board. Main does the same throughin_other_non_liable_family.- There is no relationship input, so document the gap in the variable and open a follow-up issue.
|
#2062 is now on This PR still adds formulas that read the raw flag:
Each needs to read the resolved head instead:
|
|
Cross-reference from #2027 (a maintainer review there, 5 October, raised this household). #2027 (head The household: Merton, a non-dependant couple. One reports £5,000 of income-related ESA; the other works 20 hours on £15,000.
The resolution the reviewer proposed: when this PR merges main after #2027, read |
Stacked on #2017 (
in-unit-non-dep-deductions), for issue #2014. #2017 charges non-dependants inside the claimant's own benefit unit in UC, HB and the national CTR schemes, and keeps the five English working-age local schemes on their old aggregation behind a mask. This PR brings those schemes (Merton, Kingston upon Thames, Newham, Westminster, Oxford) into line with the law and with #2017's national variable.The law
Each council's 2026-27 scheme reproduces the Default Scheme's (SI 2012/2886) definitions:
What follows from the texts:
Who is a non-dependant. Anyone who normally resides with the applicant (para 9), except:
So an adult in the applicant's own benefit unit who is not the partner, a child or a qualifying young person is a non-dependant (a 19-year-old who has left education, say, or an adult son). So is each adult in another family. Westminster's guidance agrees ("anyone over 18 living in your home"; partners and children the claimant gets Child Benefit for excepted). So does Oxford's glossary.
Banding (para 30(1)-(2), para 10). A non-dependant aged 18 or over is banded on his normal gross weekly income, if in remunerative work on their own hours. For a couple, regard is had to the couple's joint income (para 30(4); Oxford para 44).
Couples (para 30(3)). A couple pays one deduction, the higher of the two. Merton and Kingston upon Thames add "(other than where there is an award of universal credit)"; Newham's 30B(3), Westminster and Oxford have no such exception.
Joint occupiers (para 30(5)). A non-dependant of two or more jointly liable people is apportioned equally between them.
Exemptions (para 30(8)). Being "on income support, state pension credit, an income-based jobseeker's allowance or an income-related employment and support allowance", or entitled to UC calculated on no earned income, exempts the person on the award. Oxford applies these to pensioner applicants only (para 47), as before.
Every 2026-27 deduction parameter for the five councils matches its scheme text.
Changes
policyengine_uk/variables/gov/local_authorities/council_tax_reduction/_legacy.py:local_non_dep_deductionsnow has the same shape as Charge non-dependant deductions for non-dependants within the claimant's benefit unit #2017'scouncil_tax_reduction_non_dep_deductions: claims × joint-liability share × (the household's pool of non-dependant deductions, less the claiming family's own claimant, partner and children). The pool counts:It replaces "the household total minus the family's own maximum", which never charged the applicant's own in-unit non-dependants. It also drops Charge non-dependant deductions for non-dependants within the claimant's benefit unit #2017's temporary
in_other_non_liable_familymask from the aggregation. Eligibility still uses that helper.normal_gross_income_non_dep_deductionnow:These are #2007's fixes 1 and 3 (couple-only joint income; benefit-receipt exemptions gated to the claimant and partner), carried into the local schemes. They use the same names and semantics as the composition branch
in-unit-non-dep-deductions-on-2007.#2017's Newham case "a jointly liable sharer does not bear the head's own in-unit son" pinned the temporary mask. It now apportions the son's £979.68 half to each jointly liable family (para 30(5)), as #2017's national variable already does.
Open interpretation, flagged with #2007's author. Para 30(8)(c) exempts a non-dependant "entitled to an award of universal credit where the award is calculated on the basis that the person does not have any earned income". This PR reads a joint award on the couple's earnings (today's local behaviour). #2007 reads it on each person's own earnings for the national schemes and HB. Neither of us found guidance that settles it. It only binds for a non-dependant UC couple where exactly one member earns.
Review r1 fixes (head 663a5b7)
An independent review (Subfleet, Opus) of 570f163 requested changes. This head addresses all three findings.
Personal exclusions (major). Para 9(2)(d)-(e) exclude the person, whatever family they are in. Charge non-dependant deductions for non-dependants within the claimant's benefit unit #2017's in-unit term let through two people:
Removing the local mask exposed this for the local schemes. Eligibility (
council_tax_reduction_individual_non_dep_deduction_eligible, shared with the national schemes) is now(other family | in-unit) & ~personally_excluded, wherepersonally_excludedcovers:A lodger's adult son who doesn't pay the householder himself is still a non-dependant, and a YAML case pins that.
The applicant charged for themself (major). A household head whom the claimant/partner inference left outside his benefit unit's couple was an "in-unit non-dependant" of his own claim. The household-head exclusion above fixes this, and a YAML case pins it.
Oracle independence (minor). Property 6 now derives who claims and each claim's joint-liability share from the generated structure (
legal_claims_and_shares). It asserts the model's match, so injected claim or share errors fail it.The three new exclusion cases fail on 570f163 and pass here.
Effect on the national schemes. Real Microsimulation, enhanced FRS 2024-25 (uk-data 1.57.4), 2026, 570f163 → 663a5b7:
council_tax_reduction_non_dep_deductionsfalls from £16,617.5m to £13,200.5m, on 374k benefit units (135 survey households).Invariants
For every input:
Properties 6 and 7 both fail on #2017's head (the previous aggregation), so they bind. Property 7 adds a guaranteed binding family to every generated household.
Tests
local_scheme_non_dependants.yaml, 23 cases, including the review r1 counterexamples): each council's own in-unit son, a lone parent plus her working son in another family, gated Income Support, JSA and UC exemptions, Merton's UC couple on its own hours, a joint-income couple, the applicant PIP exemption, a full-time student, a 19-year-old who has left education, and Oxford's pensioner-only exemptions. Every expectation is hand-computed from the scheme text.gov/local_authorities,benefit_unit_non_dependants.yaml).Impact
Real Microsimulation of the released enhanced FRS 2024-25 (uk-data 1.57.4, sha256 03fe15e40a4c), 2026, #2017 head 270412d → 570f163:
Every enhanced-FRS household has
local_authority= MAIDSTONE (the variable's default; the dataset carries no local authority), so the five local schemes never run on survey data. The fix changes household-level calculations in those councils only.Axiom
axiom: TheAxiomFoundation/rulespec-uk#426 queued. The Kingston upon Thames, Merton and Newham modules derive each non-dependant's deduction from their own income and hours, which is encoded-correct given its inputs. They take who is a non-dependant, the exemption and the household total as inputs. Westminster defers Appendix A, and Oxford has no module.
Coordination
ctr-per-family-scheme) rewrites the same two helpers. Whoever lands second, the agreed resolution is:where(applicant_exempt, 0, claims * share * non_dependants);in_scheme_areaforworking_age;claimant_exempt;council_tax_reduction_claimant_benunit, which the pool reads. Its eligibility line follows Charge non-dependant deductions for non-dependants within the claimant's benefit unit #2017's resolution._legacy.py.🤖 Generated with Claude Code