Repository navigation
Exclude Child Benefit from pensioner Council Tax Reduction income - #2470
Conversation
vahid-ahmadi
left a comment
There was a problem hiding this comment.
Looks right, fine to approve.
@juaristi22 the law is right and the change is tightly scoped. Child Benefit is in the "other than" list of social security benefits in all three GB pensioner schemes: SI 2012/2885 Sch 1 para 16(1)(j)(vi), WSI 2013/3029 Sch 1 para 10(1)(j)(vi) and SSI 2012/319 reg 27(1)(j)(vii). I read each on legislation.gov.uk. Leaving SSP and SMP in as earnings matches the issue thread. Guarantee Credit, savings-credit-only, working-age and Northern Ireland paths are untouched.
Findings
- should (follow-up, not this PR):
council_tax_reduction_applicable_amount.pygives pensioners no child or young person amount. SI 2012/2885 Sch 2 para 2 adds one per child (£87.88 a week in the current text). I did not check the Welsh and Scottish tables. So the PR's headline example (£2,318.28 to £2,599.60) is wrong for a real family with a child, because the full applicable amount would wipe out the taper. That is an existing gap, not this PR's. But it affects every case this PR changes, so the #2111 impact run should note it, or it should be its own issue. - nit:
council_tax_reduction_pensioner_child_benefit.yaml, SSP/SMP case:region: LONDONwithlocal_authority: MAIDSTONE. The other cases usecountry: ENGLAND. That is harmless, but the inputs contradict each other. - nit: the same file has comment typos where spaces went missing: "Model2026", "aged allowance256*52" in the header, and "removes the otherwise86tax" in the SSP/SMP case.
- nit: the zero-floor case passes on the unchanged formula too, because 1,406.60 minus 2,000 is already floored at zero. That is fine as a control, but its name suggests it tests the exclusion.
Overlaps: ten other open PRs touch council_tax_reduction_applicable_income.py or the Pension Credit property file (#1831, #1995, #2002, #2066, #2078, #2299, #2301, #2302, #2368, #2387). Whichever lands second will need a rebase. None of Vahid's open PRs (#1820, #1855, #1864, #2184, #2187, #2189, #2193, #2382, #2386, #2433) touch these files. #2184 changes the CTR non-dependant deduction, which is a separate variable.
What I checked
- Read the PR body, the full diff and #2111 with its comments.
- Read England Sch 1 para 16, Wales Sch 1 para 10, Scotland reg 27 and England Sch 2 on legislation.gov.uk.
- Hand-checked the England case: tax (16,000 - 12,570) x 20% = 686, so income is 15,314. CTR is 3,000 - 0.2 x (15,314 - 13,312) = 2,599.60. Both match.
- Ran
policyengine-core teston the new YAML (8 passed) and on the wholecouncil_tax_reductiontest folder (190 passed). - Ran pytest on both property files (11 passed).
- Restored main's formula: 4 of the 8 new cases fail (England, Scotland, Wales, and SSP/SMP). The controls pass as they should.
ruff checkandruff format --checkare clean on the changed Python files..github/check_fix_pr.pypasses. TheReproducer:andaxiom:lines are present, andfixedis the right fragment type.- CI is green on the current head (11406ad).
- Not checked: the population impact, and the Axiom mirror.
🤖 Generated with Claude Code
vahid-ahmadi
left a comment
There was a problem hiding this comment.
Approving, per my review above. The shoulds and nits can follow.
Folds #2479's CTR-specific severe disability premium into the ordinary branch of council_tax_reduction_premiums, and limits #2470's pensioner Child Benefit exclusion to families whose applicant is the benefit unit's claimant (a head who applies alone counts none of its awards). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs #2111.
Pensioner Council Tax Reduction currently includes Child Benefit in general-rule income. This subtracts the existing benefit-unit Child Benefit component before the income floor for GB pensioner claims, using the existing claim selector. SSP and SMP remain counted as earnings, as clarified in the issue. Guarantee Credit, savings-credit-only assessment, working-age schemes and Northern Ireland retain their existing treatment.
The exclusion follows England SI 2012/2885, Schedule 1 paragraph 16, Scotland SSI 2012/319, regulation 27, and Wales WSI 2013/3029, Schedule 1 paragraph 10.
For the tested England pensioner family with £16,000 pension income and £1,406.60 Child Benefit, assessed income falls by £1,406.60 and annual CTR increases from £2,318.28 to £2,599.60 under the existing 20% taper. This is a household example, not a population estimate.
Validation:
make format, Ruff formatting/lint checks, duplicate/undefined-name checks andgit diff --checkpassed. The changelog fragment is included.Reproducer: policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner_child_benefit.yaml::England pensioner Child Benefit is excluded before the CTR taper
axiom: needed
Local tests used Python 3.13.14, core 3.32.27 and Hypothesis 6.168.2; the lockfile specifies core 3.33.2 and Hypothesis 6.169.0. Hosted CI must verify the locked environment.
Keep #2111 open: representative Enhanced FRS impact and the RuleSpec/Axiom follow-up remain unrun. Draft #1966 owns working-age income changes; drafts #1995, #2368 and #2387 change adjacent income logic and need integration checks as they land. This PR does not change their branches or claim encoded parity.