Repository navigation
Add pensioner CTR child amounts and uncap Scotland's tariff income - #2826
Conversation
The pension-age Council Tax Reduction applicable amount now adds an amount for each child or young person in the family (England SI 2012/2885 Sch 1 para 6(1)(b) and Sch 2 para 2, with the 2018-19 to 2024-25 two-child limit and its Child Tax Credit exception; Wales WSI 2013/3029 Sch 2 para 2; Scotland SSI 2012/319 reg 20(b) and Sch 1 para 3) and the family premium where the scheme still has one (Wales; England and Scotland to April 2016). General-rule income now counts tariff income from capital over 10,000 (SI 2012/2885 Sch 1 para 37; WSI 2013/3029 Sch 1 para 31; SSI 2012/319 reg 27(2)), reusing the pension-age Housing Benefit tariff parameters. Four existing YAML expectations move with the law: the 16,000 capital case gains 624 a year of tariff income, and three pensioner cases with a child or young person gain the child amount. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…riff The new property tests check that tariff income is the statutory tariff and never falls as capital rises, that adding a dependent child never lowers the applicable amount, and that pensioners with no child and capital up to 10,000 and every working-age family get none of the new amounts. A frozen differential checks those households against values computed on origin/main at 2da212a. Two existing property tests move with the law: the Child Benefit test's State Pension range rises so its award stays interior above an applicable amount that now includes the children, and the Pension Credit test's recomputed general-rules income adds the statutory tariff income. Wales's 2013-14 child amount is 65.62, set by WSI 2013/112 reg 5(b). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
legislation.gov.uk serves SI 2012/2885 Schedule 2 paragraphs 2 and 3 under Parts 1 and 2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ption SI 2012/2885 Sch 1 para 6(1B)(a) asks whether the applicant has an award of Child Tax Credit "whether or not any amount is payable". The child amounts read an award only from would_claim_CTC and is_CTC_eligible, so an entered final child_tax_credit with three individual elements gave two child amounts. A positive final child_tax_credit now counts as an award too, and the claim-and-eligibility route stays for a nil-rate award. New YAML cases: the entered award (three amounts), a claim without eligibility (two), and a nil-rate award (three). Case 16's name uses "their". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SI 2012/2885 Sch 1 para 37 and WSI 2013/3029 Sch 1 para 31 count capital in excess of £10,000 "but not exceeding £16,000". SSI 2012/319 reg 27(2) has no such ceiling; reg 40 separately ends entitlement above £16,000. The tariff now caps capital only in England and Wales, so a Scottish pensioner with £20,000 has 20 * 52 = £1,040 of tariff income, not £624, and still no reduction. New YAML cases for Scotland and Wales at £20,000. The Pension Credit and children/tariff property tests' reference calculations cap only England and Wales. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The general-rules income floors cash income after tax, pension contributions and the earnings disregards, then adds tariff income as a separate source. A pensioner with no cash income, £3,000 of pension contributions and £10,001 of capital has applicable income of £52. Moving the tariff inside the floor would give nil. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Capital changes a savings-credit-only pensioner's applicable income through the Secretary of State's assessment, and a child who brings Universal Credit into payment for a mixed-age couple moves them to the working-age scheme. The property docstring now states each invariant for the route its generated families stay on, and names those route changes as model behaviour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The applicable amount comment now says we include the severe disability and carer premiums for pensioners, rather than that the pension-age schedules have only those (England's Sch 2 paras 7 and 8 have more). The applicable income comment uses "them", and the new documentation names the Ministers, councils or "we" that act. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tariff documentation and comments now say who acts (councils, the Scottish Ministers) rather than giving the verb to a regulation, and the "Nil for working-age families" fragments become sentences. No code changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The child-limit exception in council_tax_reduction_pensioner_child_amounts now reads the claim and eligibility only while gov.dwp.tax_credits.active holds, as has_tax_credit_award does. A supplied positive final award still counts. Case 21 covers eligibility without a claim, and Case 22 an inactive-scheme reform with a reported award. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tariff documentation and its Scottish comment now say councils apply the £16,000 limit to assessable capital after statutory disregards and disregard all capital for Guarantee Credit recipients. The property module's child invariant states England's Child Tax Credit exception. The changelog, documentation fields and test docstrings name who acts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Documentation and comments only: the child-amount award text names HMRC as the body that pays tax credit awards, the tariff text gives each Pension Credit route its reason, and Case 21's comment cites the claim requirement of TCA 2002 s.3(1). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Councils, the Secretary of State, the Welsh and Scottish Ministers, HMRC and the model now act in the documentation, docstrings, code and YAML comments and parameter descriptions that #1933 adds. The tariff text keeps the partner limb of the guarantee credit disregard. No formula or expected value changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Case 23 takes Case 22's reform and household and enters a final award of 9,800.95. Councils count the award under SI 2012/2885 Sch 1 para 6(1B)(a) and (1C), so all three children count: 3 * 83.24 * 52 = 12,985.44. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Name the award and the counting rule where the Case 23 comment said "it", and cite SI 2024/29 reg 6(3) for the 2024-25 child amount. Say that the pension-age Housing Benefit tariff amounts equal those each Council Tax Reduction scheme sets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6Gz4VGd6Cph9n66gKW
Aggregate impact on certified data: passBase Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0 (thresholds in Notes
Moves flagged for reviewNone. Spending by benefit and service
Caseloads
Government balance, each component counted once
Model totals
Household income totals
Inequality
Mean household net income in each side's own deciles
Standard reform costings (change in gov_balance)
Household net income by decileMean change in household net income per household, and as a share of the decile's base income; households stay in the base run's deciles.
No change in any year: receipts by tax head; population; poverty rates; people in poverty; standard reforms: change in each reform's target. Checks failing on both base and head (1)
Counted-once checkEach of 92 components was raised by £1 per unit in 2026-27, and every head of its totals was read household by household: its own head must rise by exactly £1, no other tax head may move, no other benefit may rise, and the model's own total must move by what its heads moved. A head that breaks a rule is measured again twice: with every other head held at its baseline value, and with every other head held at its value after the first £1 while the component rises again. It fails where either still shows the response. 0 failed; 0 were skipped.
Provenance
Dataset: Receipts by tax head: head levels
Spending by benefit and service: head levels
Caseloads: head levels
Government balance, each component counted once: head levels
Model totals: head levels
Household income totals: head levels
Population: head levels
Poverty rates: head levels
People in poverty: head levels
Inequality: head levels
Mean household net income in each side's own deciles: head levels
Standard reform costings (change in gov_balance): head levels
Standard reforms: change in each reform's target: head levels
|
juaristi22
left a comment
There was a problem hiding this comment.
Reviewed 06e51a8ab57d5c2bce6f98c3b2f0f763b17b6a0a. COMPLETE; no findings or material evidence gaps within the disclosed scope.
Independent source review checked the historical child/family amounts, England's two-child limit and nil-rate CTC exception, the different tariff ceilings, and Pension Credit routing. In particular, England's paragraph 37 caps the capital counted for tariff income; Scotland's regulation 27 does not, with its separate capital-entitlement rule retained. The actual Axiom #522 dispatch includes the source excerpts, outputs, companion cases and signed-encoder/ingest blocker; completed encoding is not claimed.
100 local tests passed, zero failures/skips, in one bounded serial run: 81 YAML cases and 19 properties. Six ordinary-input calculations plus one explicitly supplied-award contract cover final CTR/household income, Guarantee Credit, savings-credit-only, positive/nil-rate CTC and closure. The Welsh native child/family/tariff case increases both CTR and household income by £1,113.84 against a control setting only the new components to zero; that is a component control, not a separate prior-branch run. Current-head hosted checks also pass.
The stated annual 30 April convention, transitional/protected-family and existing disability-premium exclusions remain scope qualifications; this approval does not certify those omitted histories or the author's private population results. Approving this head after a fresh activity/readiness/required-CI check.
|
Picking this up for the UK hub. Reply here if you're mid-change and I'll stop. Generated by Claude Code |
Resolve the three conflicts to main's side where both add tariff income: council_tax_reduction_applicable_income adds main's council_tax_reduction_tariff_income, the £16,000 pension credit case reads its outputs, and invariant 4 states main's tariff recomputation. The property file's recomputation adds tariff income once, through main's expected_tariff_income. The docstring keeps main's text with this branch's active wording of the war pensions sentence. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6HDAHLr6RSvBAdeFM1
Delete council_tax_reduction_pensioner_tariff_income, which the merge left unused, and point the pensioner tariff YAML and property tests at council_tax_reduction_tariff_income. That variable also carries the Welsh and Scottish working-age tariffs, so tariff Case 14 (a Welsh earner aged 40 with 12,000 of capital) now expects 1,248 (24 * 52 under WSI 2013/3029 Sch 6 para 33), the property test checks nil tariff income at working age only in England, and the frozen differential now holds main's values at 9dd44e1, which add those working-age tariffs in Wales and Scotland. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6HDAHLr6RSvBAdeFM1
SSI 2012/319 reg 27(2) treats capital as yielding £1 a week for each £500, or part, over £10,000 with no ceiling; reg 40 separately bars a reduction above £16,000. council_tax_reduction_tariff_income now leaves the Scottish pensioner branch uncapped and keeps the £16,000 ceiling in England and Wales. No award moves: a Scottish pensioner with £16,500 or £20,000 of capital still gets no reduction. A new income_from_capital.yaml case checks a Scottish pensioner's 1,040 and an English one's 624 at £20,000, and the pension credit property test's tariff recomputation follows reg 27(2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6HDAHLr6RSvBAdeFM1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6HDAHLr6RSvBAdeFM1
|
Generated by Claude Code |
|
Generated by Claude Code |
|
Generated by Claude Code |
|
Ready for hub review Head: Commits:
The PR body, title and Axiom #522 text are in the three comments above. Findings and resolutions
Tests at
|
The tariff property test now asserts invariant 4 of #2826's description: councils give no award where capital exceeds £16,000 (SI 2012/2885 reg 11(2); WSI 2013/3029 reg 30; SSI 2012/319 reg 40), so Scotland's uncapped pensioner tariff changes no award. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the approval. Since then, #1995 added We merged main at Tariff Case 14, a Welsh earner aged 40 with £12,000 of capital, now expects £1,248, the Welsh working-age tariff that main's variable carries. The frozen differential now holds main's values at |
juaristi22
left a comment
There was a problem hiding this comment.
Re-reviewed adopted head 87cbc397ef3b38c78cc234a02bd18c0d6ad54560 after the main merge. COMPLETE — no findings or material evidence gaps.
The shared tariff is counted once, and the duplicate pensioner variable is removed. Scotland correctly counts the whole excess over £10,000 for the intermediate tariff while retaining the separate £16,000 final capital limit. England/Wales ceilings and Guarantee Credit/savings-credit routing remain intact. The updated actual Axiom #522 record covers the revised outputs and companions with the encoding/ingest approval blockers explicit.
All 174 selected checks passed: 171 repository cases/properties plus three native final-result checks. They cover the single tariff addition, final CTR and household income, Scottish capital-gate cases, Pension Credit routes and Welsh child/family composition. The run used the current locked Core 3.34.1 environment; older runs and the declared model limitations remain separately qualified.
Approval awaits the remaining current-head CI; the completed review can be retained for a CI-only follow-up.
juaristi22
left a comment
There was a problem hiding this comment.
Approved current head 87cbc397ef3b38c78cc234a02bd18c0d6ad54560. COMPLETE — no findings or material evidence gaps; applicable current-head checks have passed.
The completed review of the adopted tariff-income fix is retained. Its 174 passing checks (171 repository cases/properties and three final CTR/household-income checks) and 52 original/source-extract pairs were integrity-checked; no tests or calculations were repeated for this CI-only approval. The actual Axiom #522 record and declared model limitations remain unchanged.
Fixes #1933
What and why
PolicyEngine's pension-age Council Tax Reduction for England, Scotland and Wales left out two parts of the law. At main
2da212abc, the model gave a 72-year-old an applicable amount of £13,312 a year (256.00 × 52) whether or not a ten-year-old lived with them, and counted capital over £10,000 as no income. Earlier PRs on this issue added the post-April-2021 personal allowances, the severe disability premium and the Child Benefit exclusion. #1995 then addedcouncil_tax_reduction_tariff_incometo main, which counts pensioners' tariff income. We now add child amounts and family premiums, and we change main's tariff income in one place: we count the whole of a Scottish pensioner's capital over £10,000. We still leave out the enhanced disability and disabled child premiums for a pensioner's child (see Not modelled).Child or young person amounts and the family premium. Councils add a weekly amount for every child or young person in a pensioner applicant's family. The Welsh Ministers keep a family premium; the Secretary of State and the Scottish Ministers ended theirs in 2016:
For the 2018-19 to 2024-25 schemes, the Secretary of State limited England's child amounts to two children or young persons, or more where the applicant's Child Tax Credit award included the individual element for more (SI 2017/1305 reg 7, inserting para 6(1A)-(1C); removed for 2025-26 by SI 2025/39 reg 5(2)). Councils apply the exception where the applicant has an award of Child Tax Credit "whether or not any amount is payable" (para 6(1B)(a)). In
council_tax_reduction_pensioner_child_amounts, we count an award when finalchild_tax_creditexceeds zero, whether the model calculates it or the user enters it. While HMRC pays tax credit awards (gov.dwp.tax_credits.active), we also countwould_claim_CTCwithis_CTC_eligibleto retain nil-rate awards, ashas_tax_credit_awarddoes. HMRC paid no ongoing tax credit awards after 5 April 2025, and the Secretary of State removed England's limit for the 2025-26 schemes, so that condition changes no current-law result. It changes a result only under a reform that closes tax credits before 2025-26 or restores England's limit after it. We add the family premium throughcouncil_tax_reduction_pensioner_family_premiumand add both amounts for pensioners. When a household head applies alone, we assume their family includes no children because the model cannot identify those relationships.So the 72-year-old with a ten-year-old now has an applicable amount of £17,881.76 in England (13,312 + 87.88 × 52), £19,024.20 in Scotland (13,312 + 109.85 × 52) and £18,933.20 in Wales (13,312 + 87.88 × 52 + 20.22 × 52). In 2024-25, an English 72-year-old with three children born before April 2017 and an entered Child Tax Credit award of £9,800.95 gets three child amounts, £12,985.44 (3 × 83.24 × 52); without an award they get two, £8,656.96. Under a reform that ends tax credits for 2024-25, a family that reports Child Tax Credit has no award and also gets two; where the user enters the award HMRC made, we still count it, as councils do, and the family gets three.
Tariff income. Councils treat a pensioner's capital as a weekly income of £1 for each £500, or part of £500, over £10,000. The Secretary of State and the Welsh Ministers count the excess "not exceeding £16,000" (SI 2012/2885 Sch 1 para 37; WSI 2013/3029 Sch 1 para 31). The Scottish Ministers set no ceiling in SSI 2012/319 reg 27(2). All three bar a reduction where capital exceeds £16,000 (SI 2012/2885 reg 11(2); WSI 2013/3029 reg 30; SSI 2012/319 reg 40). Councils apply the £16,000 limit to assessable capital after statutory disregards (SI 2012/2885 reg 11(3); WSI 2013/3029 reg 30(2); SSI 2012/319 reg 41), and disregard all of an applicant's capital where the applicant or their partner receives guarantee credit (England Sch 1 para 13, Wales Sch 1 para 7, Scotland reg 24). We now take pension-age tariff income from main's
council_tax_reduction_tariff_incomeand change it only for Scotland's ceiling. Its Scottish pensioner branch now counts all ofcouncil_tax_reduction_assessable_capitalover £10,000, while England and Wales keep the £16,000 cap. That variable also carries main's working-age tariffs for Wales and Scotland and Universal Credit's assumed yield, which this PR leaves alone.council_tax_reduction_applicable_incomeadds it to general-rule income after the income floor, so the tax and pension deductions cannot reduce it. Councils count no tariff income on £10,000 of capital, £52 a year on £10,001 and £624 on £16,000. At £20,000 of capital, a Scottish pensioner off Pension Credit has £1,040 of tariff income (20 × £1 × 52) and an English or Welsh one £624, and none of them gets a reduction. On main9dd44e142and on this branch alike, a Scottish 72-year-old with a State Pension of £12,570 gets the whole £2,000 at £16,000 of capital and nothing at £16,500 or £20,000. Only their tariff income moves, from £624 to £676 at £16,500 and to £1,040 at £20,000.Pension Credit. Councils keep the guarantee credit route: they disregard the whole of the applicant's capital and income (England Sch 1 para 13, Wales Sch 1 para 7, Scotland reg 24), so
council_tax_reduction_tariff_incomegives nil. On a savings-credit-only award they use the Secretary of State's assessment of income and capital (England Sch 1 para 14, Wales Sch 1 para 8, Scotland reg 25). The Secretary of State already counts Pension Credit's deemed income from capital in that assessment (pension_credit_incomesums the sources ingov.dwp.pension_credit.guarantee_credit.income, which listspension_credit_deemed_income), socouncil_tax_reduction_tariff_incomegives nil there too. A savings-credit-only pensioner with £16,000, incouncil_tax_reduction_pension_credit.yaml, keeps applicable income of £14,247.02.Parameters
Tariff income.
council_tax_reduction_tariff_incomereads each scheme's own pensioner tariff parameters (gov.local_authorities.england.council_tax_reduction.pensioners.means_test.tariff_income,gov.local_authorities.wales.council_tax_reduction.means_test.tariff_income.pensionerandgov.local_authorities.scotland.council_tax_reduction.means_test.tariff_income.pensioner), and each scheme's capital limit for the £16,000 ceiling in England and Wales. All three hold the same amount, step and threshold (£1, £500, £10,000) as the pension-age Housing Benefit parameters (gov.dwp.housing_benefit.means_test.capital.pension_age.tariff_income, SI 2006/214 reg 29(2)). We compared them in a run of the parameter tree on this branch, on 1 April and 30 April of every year from 2013 to 2035 and in every model year from 2014 to 2035. The scheme parameters start on 1 April 2013, so model year 2013 has none.Child amounts. The model's Housing Benefit has no child allowance parameter to reuse:
housing_benefit_applicable_amountadds no child amounts at all. We put the new parameters under each scheme. England's amounts equal the pension-age Housing Benefit amounts (SI 2006/214 Sch 3 para 2) in every year; Wales and Scotland differ:The Welsh Ministers did not raise the child amount or the family premium for 2020-21 or 2021-22: in WSI 2020/16 reg 8 and WSI 2021/34 reg 5 they amended only Sch 2 para 1 and Part 4. For each value we cite the version of the schedule in force on 30 April, or the amending regulations where legislation.gov.uk's revised text lags them (WSI 2013/112 reg 5(b) for Wales in 2013-14; SSI 2025/24 for Scotland in 2025-26).
Family premium. Housing Benefit's family premium parameter holds the protected premium for legacy awards, which
housing_benefit_family_premiumgates on a protection category. Welsh councils add the premium for every pensioner family with a child or young person, and the Secretary of State and the Scottish Ministers ended theirs in 2016, so each scheme has its own parameter.Which years
The change reaches model years 2015 onward. Each new parameter starts on 1 April 2013, the first Council Tax Reduction scheme year, but the model annualises parameters only from 2015:
_fiscal_year_conversion_yearsinpolicyengine_uk/utils/parameters.pykeeps the years from 2015 (lines 108 and 126), andconvert_to_fiscal_year_parametersgives each ordinary parameter its value on 30 April of the year (line 171). The Housing Benefit personal allowance that the CTR applicable amount reads starts on 1 April 2015, so the model has no applicable amount before then, as on main. A run of the parameter tree on this branch gives:Two dates limit the change. The Secretary of State made England's family premium nil, and the Scottish Ministers removed Scotland's, from 1 May 2016, after the 30 April reading, so we keep both premiums for the whole of model year 2016 and drop them from 2017. England's two-child limit covers model years 2018 to 2024. After 2026-27 we uprate the child amounts and the Welsh family premium by September CPI (
gov.benefit_uprating_cpi), as we uprate the Housing Benefit family premium. We count a Scottish pensioner's capital over £16,000 in every model year in which the model runs Council Tax Reduction; the Scottish tariff parameters read £1 for each £500 over £10,000 from 1 April 2013.Not modelled
council_tax_reduction_assessable_capitaluses the household's savings, land and property other than the home in their place, and where the household head applies alone we cannot establish whether a child belongs to the head's family.Existing tests changed
Each change follows from the law above. Only the Child Benefit property test changes an input, its State Pension range.
council_tax_reduction_pension_credit.yaml, "Capital of exactly 16,000 is within the limit for a pensioner without Pension Credit": main and this branch both moved the award from £2,000 to £1,954.80, and the merge keeps main's outputs (council_tax_reduction_tariff_income: 624,council_tax_reduction_applicable_income: 13_538). Under Sch 1 para 37 the pensioner has £624 of tariff income: 13,000 − 86 tax + 624 = 13,538, and 2,000 − 0.2 × (13,538 − 13,312) = 1,954.80.council_tax_reduction_pensioner_child_benefit.yaml, "England pensioner Child Benefit is excluded before the CTR taper": the applicable amount moves from £13,312 to £17,881.76 (the child's 87.88 × 52, Sch 2 para 2), so income of £15,314 no longer exceeds it and the award moves from £2,599.60 to the whole £3,000. "Not claiming Child Benefit preserves the pensioner general-rule income" moves the same way, from £2,599.60 to £3,000.council_tax_reduction_young_person.yaml, Case 5: Scotland's pension-age applicable amount for a lone parent with a 19-year-old young person moves from £13,312 to £19,024.20 (SSI 2012/319 reg 20(b) and Sch 1 para 3, 109.85 × 52).test_council_tax_reduction_child_benefit_properties.py: the generated State Pension range moves from £15,000-£19,000 to £30,000-£34,000. The test checks the 20% taper on an award between the floor and the cap, which needs income above an applicable amount that now includes up to two children's amounts (£24,736.40 for two children in Scotland). Its assertions stay the same.test_council_tax_reduction_pension_credit_properties.py: invariant 4 keeps main's statement and recomputation, which adds tariff income once (expected_tariff_income). Following reg 27(2),expected_tariff_incomenow counts a Scottish pensioner's capital without the £16,000 ceiling. The generated families include children, so the route tests run with this branch's child amounts in the applicable amount.test_legacy_means_test_income_from_capital_properties.py: invariant 5's 2,088 bound still holds, because the generated savings stop at £20,000, where a Scottish pensioner's uncapped tariff comes to £1,040. We changed only the invariant's text, to give that reason.council_tax_reduction_pensioner_tariff_income.yamlandtest_council_tax_reduction_pensioner_children_tariff_properties.pynow readcouncil_tax_reduction_tariff_income, which also carries main's working-age tariffs. Tariff Case 14, a Welsh earner aged 40 with £12,000 of capital, keeps its inputs and now expects £1,248 in place of nil. Councils in Wales count £1 a week for each £250, or part of £250, of a working-age applicant's capital over £6,000 (WSI 2013/3029 Sch 6 para 33): (12,000 − 6,000) / 250 = 24, and 24 × 52 = 1,248. The property file now expects nil tariff income at working age only in England, where main's variable gives nil. Its frozen differential (test_matches_origin_main_on_unchanged_households) now holds main's values at9dd44e142. Those differ from the2da212abcvalues only for the six Welsh and Scottish working-age families with savings, in each of 2019, 2024 and 2026. The working-age tariff adds £1,248 a year on £12,000, £2,080 on £16,000 and £416 on £8,000, and the £416 lowers the £8,000 family's award by 0.2 × 416 = £83.20.Merge with main
This branch merges main at
9dd44e142, which includes #1995. Three files conflicted, and in each we kept main's side where both added tariff income: the formula line ofcouncil_tax_reduction_applicable_income(main'scouncil_tax_reduction_tariff_income, after the income floor), the £16,000 case's outputs incouncil_tax_reduction_pension_credit.yaml, and invariant 4 oftest_council_tax_reduction_pension_credit_properties.py.council_tax_reduction_applicable_income's docstring keeps main's text with this branch's wording of the war pensions sentence. Git auto-merged both sides' tariff recomputation in that property file, which would have added tariff income twice; we kept main's. We then deleted this branch'scouncil_tax_reduction_pensioner_tariff_income, which counted the same pensioner tariff, and pointed its tests at main's variable.Overlap with open PRs and issues
Seven open PRs share files with this one. We ran
git merge-tree --write-tree --name-onlyof each against this branch's head and against main (9dd44e142):6e96ffef8a013f520af7788dc97, #28344af0f0429983488065adac44079, #2845f379377f9#2861 builds on this branch at
06e51a8ab. It conflicts with main in the three files this branch's merge resolved, and it merges cleanly with this head, leaving no reference to the deletedcouncil_tax_reduction_pensioner_tariff_income.Issue #2090 (CTR income deducts the family's whole income tax) has no PR. A fix would change the tax we deduct from general-rule income before the floor. Keep the tariff as a separate addition after the deductions, and change the reference income in
test_council_tax_reduction_pension_credit_properties.pywith it (MAIN_DEDUCTIONSand the recomputation incalculate).#1966 adds working-age child amounts in separate working-age variables, so the pensioner variables here stay apart from them.
Invariants
Each invariant holds on a fixed route and status: the family stays on the same Council Tax Reduction scheme (pensioner or working-age) and, for the first, off Pension Credit.
council_tax_reduction_tariff_income.Off those routes, capital and a child can both move these amounts. A savings-credit-only pensioner aged 90 with a State Pension of £13,500 has no tariff income at £10,000 or £16,000 of capital, but the Secretary of State counts Pension Credit's deemed income in the assessment, so their Pension Credit income rises from £13,314 to £13,938 and their applicable income from £13,872.62 to £14,247.02. A couple aged 72 and 50 with a State Pension of £10,000 who claim Universal Credit get none of it until a ten-year-old joins them. With the child, the couple gets £2,226.20 of Universal Credit and moves to the working-age scheme, and their applicable amount falls from £19,934.20 to £7,807.80.
Test plan
council_tax_reduction_pensioner_child_amounts.yaml(23 cases),council_tax_reduction_pensioner_tariff_income.yaml(17 cases) and a newincome_from_capital.yamlcase for a Scottish and an English pensioner at £20,000, with the arithmetic worked in comments.ruff format --checkandruff check(ruff 0.17.2) on the whole repository.changelog.d/1933.fixed.md.Results
Every run used small hand-built situations; no survey data.
At
20a02e033:policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/, all 25 files in one run: 386 passed.policyengine_uk/tests/policy/baseline/gov/dwp/legacy_means_tests/, both files in one run: 79 passed.test_council_tax_reduction_pension_credit_properties.py,test_council_tax_reduction_pensioner_children_tariff_properties.py,test_legacy_means_test_income_from_capital_properties.pyandtest_savings_credit_only_receipt_properties.py, in one run with-n 4: 31 passed (9, 7, 9 and 6 respectively).policyengine_uk/tests/code_healthwith-n 4: 3,158 passed.ruff format --check .,ruff check .andruff check --select F811,F821 policyengine_uk(ruff 0.17.2), andgit diff --check 06e51a8ab..HEAD: clean.git merge-tree --write-tree --name-onlyof this head against main9dd44e142: no conflicts.This head adds one assertion to
test_tariff_income_is_the_tariff_and_never_falls_as_capital_rises, for invariant 4: where capital exceeds £16,000, councils give no award.Earlier runs, on this branch before the merge with main:
council_tax_reduction_pensioner_child_amounts.yaml: 23 passed at06e51a8ab. Atc5b07aec7, before Case 23, 22 passed.council_tax_reduction_pensioner_child_benefit.yaml: 8 passed.entitledto_scenarios.yaml,ctc_child_element_eligibility.yaml, the Housing Benefit, legacy award reader, Pension Credit and winter fuel files among them): 293 passed atc91e960cf. The closure condition changes a result only wheregov.dwp.tax_credits.activereads false while England's limit runs. Outside the child amounts file, onlyclaims_universal_credit.yamlsets that parameter, to true, for 2026.test_council_tax_reduction_child_benefit_properties.py, with its higher State Pension range: 3 passed.test_claims_all_entitled_benefits.py, which runs its tax credit families in 2024, while England's limit runs: 19 passed, 1 skipped ate8831fb6b.test_survey_takeup_follows_reports_in_microdatacarries themicrosimulationmark, and with no survey dataset configured the suite skips it.test_parameter_descriptions.py: 24 passed at06e51a8ab.e8831fb6b:test_council_tax_reduction_claimant_family_scheme_properties.py3 passed,test_legacy_award_readers_properties.py18 passed,test_council_tax_reduction_carer_income_properties.py4 passed,test_council_tax_reduction_applicant_properties.py2 passed andtest_council_tax_reduction_prescribed_benefits_properties.py4 passed.c5b07aec7: we ran an English 72-year-old with three children who reports Child Tax Credit in each model year from 2015 to 2030, and in 12 runs under reforms. The reforms close tax credits from 2018-19, for 2024-25, or from a date before or after the 30 April reading; extend England's limit past 2025-26 with tax credits closed or open; or close tax credits for 2024-25 and enter a final award, or a claim and eligibility without a report. In all 28 runs, the claim-and-eligibility route that the condition counts equalshas_tax_credit_award.child_limitreads 2 for model years 2018 to 2024, and infinity from 2014 to 2017 and from 2025 on.council_tax_reductionraisesParameterNotFoundErrorongov.dwp.pension_credit.mixed_age_couplesin all three nations, on main and on this branch alike, so the new variable's failed read ofchild_limitbefore model year 2014 adds no failure.c5b07aec7and at2da212abc. For private renters who claim Housing Benefit, with and without a ten-year-old,housing_benefitand the amounts it reads match. For a 72-year-old homeowner, only the Council Tax Reduction outputs move: with a ten-year-old, the applicable amount rises from 13,312.00 to 17,881.76 in England, 18,933.20 in Wales and 19,024.20 in Scotland, and with £24,000 of pensions the award rises from 319.60 to 1,233.55 in England, from 319.60 to 1,443.84 in Wales and from 311.67 to 1,454.11 in Scotland.e8831fb6bas atc91e960cf.Fails on main. On
2da212abc, child Cases 1-17 and tariff Cases 1-14 (we removed the new variables' outputs, since that main lacked them) gave 12 failed, 12 passed. The 12 failures covered the changed cases: the five applicable amounts with a child or young person (13,312 against 17,881.76, 17,881.76, 19,024.20 and 18,933.20, and the couple's 19,934.20 against 29,073.72) and the seven applicable incomes with capital over £10,000 (12,570 against 12,622 and 13,194 in each nation, and 14,514 against 15,138). Main at9dd44e142now counts that tariff income itself. The new property file's child test (test_adding_a_dependent_child_never_lowers_the_applicable_amount) failed on2da212abctoo, because that main had nocouncil_tax_reduction_pensioner_child_amounts. Against main at9dd44e142, this PR changes tariff income only for a Scottish pensioner with capital over £16,000: if we restore main's Scottish cap, tariff Case 15 and the newincome_from_capital.yamlcase fail (624 against 1,040 in each).Differential against main. We ran the same 23 fixed households (18 across the three nations and one English working-age family under each of the five local schemes) and 120 seeded random households (58 pensioners with no child and capital up to £10,000, 12 of them claiming Pension Credit, and 62 working-age families with any children and capital, 14 of them English families under the local schemes) through this branch at
15f986adaand an export of2da212abc, for 2019, 2024 and 2026. Of 2,145 values (applicable amount, applicable income,council_tax_benefit,council_tax_reduction_pensioner,council_tax_reduction), none differed.test_matches_origin_main_on_unchanged_householdsreruns the 23 fixed households at this head against values we computed on main at9dd44e142, and they match.Mutations. We ran each mutant against the YAML file it targets, and every one fails:
gov.dwp.tax_credits.activegov.dwp.tax_credits.activereads falsechild_tax_credit, dropping nil-rate awardswould_claim_CTC, so eligibility alone countswould_claim_CTCand dropsis_CTC_eligiblecouncil_tax_reduction_pension_credit.yaml, £16,000 casenp.floorfornp.ceil)income_from_capital.yamlThe tariff mutations and the double count ran on this head's code, against main's
council_tax_reduction_tariff_income. Of the child mutations, the first five ran on this branch's child code: the first four atc5b07aec7, which had 22 child cases, and the fifth ate8831fb6b. Atc5b07aec7the fifth passed all 22, because no case entered an award under a closed scheme; Case 23 enters one and fails under it. The other four ran on the code before the closure condition, and their failing cases set no reform. The condition changes a result only wheregov.dwp.tax_credits.activereads false while England's limit runs, which current-law parameters never combine, so it leaves those cases unchanged.Reproducer
Reproducer:
policyengine_uk/tests/test_council_tax_reduction_pensioner_children_tariff_properties.py::test_adding_a_dependent_child_never_lowers_the_applicable_amount,policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner_child_amounts.yaml,policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner_tariff_income.yamlaxiom: TheAxiomFoundation/rulespec-uk#522 queued
The Welsh child amount, family premium and tariff modules in rulespec-uk agree for 2026-27. The child and family-premium modules apply 87.88 and 20.22 from
0001-01-01, so they cannot reproduce the 2021-22 amounts of 66.90 and 17.45. In the queued issue we cover that history, England's child amount, family premium and applicable amount, and Scotland's corresponding outputs. A signed encoder run needs separate approval. The pinned release holds England's provisions, including Sch 1 para 37; Scotland's reg 27 and Sch 1 para 3, and all earlier-year versions, need ingest and a new pin.🤖 Generated with Claude Code