Skip to content

Add pensioner CTR child amounts and uncap Scotland's tariff income - #2826

Merged
juaristi22 merged 23 commits into
mainfrom
claude/ctr-pensioner-children-nits-7654i7
Nov 5, 2026
Merged

juaristi22 merged 23 commits into
mainfrom
claude/ctr-pensioner-children-nits-7654i7

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

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 added council_tax_reduction_tariff_income to 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:

Scheme Provision 2026-27 child amount Family premium
England SI 2012/2885 Sch 1 para 6(1)(b)-(c), Sch 2 paras 2-3 £87.88 nil for reduction weeks beginning after 1 May 2016 (SI 2015/2041 reg 2(4)(b))
Wales WSI 2013/3029 Sch 1 para 1(1)(b)-(c), Sch 2 paras 2-3 £87.88 £20.22
Scotland SSI 2012/319 reg 20(b), Sch 1 para 3 £109.85 removed from 1 May 2016 (SSI 2016/81 reg 18)

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 final child_tax_credit exceeds zero, whether the model calculates it or the user enters it. While HMRC pays tax credit awards (gov.dwp.tax_credits.active), we also count would_claim_CTC with is_CTC_eligible to retain nil-rate awards, as has_tax_credit_award does. 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 through council_tax_reduction_pensioner_family_premium and 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_income and change it only for Scotland's ceiling. Its Scottish pensioner branch now counts all of council_tax_reduction_assessable_capital over £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_income adds 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 main 9dd44e142 and 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_income gives 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_income sums the sources in gov.dwp.pension_credit.guarantee_credit.income, which lists pension_credit_deemed_income), so council_tax_reduction_tariff_income gives nil there too. A savings-credit-only pensioner with £16,000, in council_tax_reduction_pension_credit.yaml, keeps applicable income of £14,247.02.

Parameters

  • Tariff income. council_tax_reduction_tariff_income reads 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.pensioner and gov.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_amount adds 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:

    Year HB (SI 2006/214 Sch 3 para 2) England Wales Scotland
    2013-14 65.62 65.62 65.62 65.62
    2014-15 66.33 66.33 66.33 66.33
    2015-16 to 2016-17 66.90 66.90 66.90 66.90
    2017-18 to 2019-20 66.90 66.90 66.90 83.63
    2020-21 68.27 68.27 66.90 85.34
    2021-22 68.60 68.60 66.90 85.75
    2022-23 70.80 70.80 70.80 88.50
    2023-24 77.78 77.78 77.78 97.23
    2024-25 83.24 83.24 83.24 104.05
    2025-26 84.66 84.66 84.66 105.85
    2026-27 87.88 87.88 87.88 109.85

    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_premium gates 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_years in policyengine_uk/utils/parameters.py keeps the years from 2015 (lines 108 and 126), and convert_to_fiscal_year_parameters gives 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:

Model year 2015 2016 2017 2018-2019 2020 2021 2022 2023 2024 2025 2026 2027
England child amount 66.90 66.90 66.90 66.90 68.27 68.60 70.80 77.78 83.24 84.66 87.88 90.96
England family premium 17.45 17.45 0 0 0 0 0 0 0 0 0 0
England child limit none none none 2 2 2 2 2 2 none none none
Wales child amount 66.90 66.90 66.90 66.90 66.90 66.90 70.80 77.78 83.24 84.66 87.88 90.96
Wales family premium 17.45 17.45 17.45 17.45 17.45 17.45 17.85 18.53 19.15 19.48 20.22 20.93
Scotland child amount 66.90 66.90 83.63 83.63 85.34 85.75 88.50 97.23 104.05 105.85 109.85 113.69
Scotland family premium 17.45 17.45 0 0 0 0 0 0 0 0 0 0

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

  • Transitional protection. We do not model the English and Scottish family premium that councils keep for families with a child who had a reduction on 30 April 2016 (SI 2015/2041 reg 3; SSI 2016/81 reg 2 and SSI 2012/319 reg 20(e), £19.48), or England's protection for families with more than two children on 31 March 2018 (SI 2017/1305 reg 17). No input identifies these families.
  • The enhanced disability premium and the disabled child premium for a pensioner's child (England SI 2012/2885 Sch 2 paras 7 and 8; Wales WSI 2013/3029 Sch 2 paras 7 and 8; Scotland SSI 2012/319 Sch 1 paras 8 and 9; £33.99 and £84.46 a week in 2026-27). We currently include the severe disability and carer premiums for pensioners. We give a 72-year-old in England whose ten-year-old gets the highest rate of the DLA care component an applicable amount of £17,881.76, where councils add 118.45 × 52 = £6,159.40 under paras 7 and 8, for £24,041.16. We give £18,933.20 in Wales against £25,092.60, and £19,024.20 in Scotland against £25,183.60. Pension-age Council Tax Reduction omits the disabled child and enhanced disability premiums #2824 tracks them.
  • Child amounts and the family premium for working-age families in Scotland and Wales (Give Scotland and Wales working-age CTR their own rules #1966 covers them).
  • Applicant and partner capital. council_tax_reduction_assessable_capital uses 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_income now 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.yaml and test_council_tax_reduction_pensioner_children_tariff_properties.py now read council_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 at 9dd44e142. Those differ from the 2da212abc values 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 of council_tax_reduction_applicable_income (main's council_tax_reduction_tariff_income, after the income floor), the £16,000 case's outputs in council_tax_reduction_pension_credit.yaml, and invariant 4 of test_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's council_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-only of each against this branch's head and against main (9dd44e142):

Head Conflicts with main Added by this PR
#2861 6e96ffef8 3 files none
#1966 a013f520a 3 files none
#2002 f7788dc97, #2834 4af0f0429 2 files each none
#2016 983488065 1 file none
#2821 adac44079, #2845 f379377f9 none none

#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 deleted council_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.py with it (MAIN_DEDUCTIONS and the recomputation in calculate).

#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.

  1. For a pensioner off Pension Credit, tariff income is 52 × £1 for each £500, or part of £500, of capital above £10,000 (up to £16,000 in England and Wales, with no ceiling in Scotland), and nil on the Pension Credit routes. It never falls as capital rises, capital changes nothing else in the applicable income, and the award never rises with capital.
  2. For a family whose scheme stays the same, adding a dependent child never lowers the applicable amount. For a pensioner, councils add 52 times the scheme's weekly rate for each extra child they count. In England from 2018-19 to 2024-25, they count up to two children, or more where a Child Tax Credit award includes individual elements for more. In Wales, councils also add the family premium with the first child.
  3. A pensioner with no child and capital up to £10,000 gets no child amount, family premium or tariff income, and a working-age family gets no child amount or family premium. Their applicable amount, applicable income and award match main. An English working-age family also gets no tariff income from council_tax_reduction_tariff_income.
  4. A Scottish pensioner's award matches main at every level of capital. Their tariff income differs from main's only where capital exceeds £16,000, and there the Scottish Ministers bar a reduction (reg 40).

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

  • YAML tests whose expected values come from the legislation: council_tax_reduction_pensioner_child_amounts.yaml (23 cases), council_tax_reduction_pensioner_tariff_income.yaml (17 cases) and a new income_from_capital.yaml case for a Scottish and an English pensioner at £20,000, with the arithmetic worked in comments.
  • ruff format --check and ruff check (ruff 0.17.2) on the whole repository.
  • Changelog fragment 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.py and test_savings_credit_only_receipt_properties.py, in one run with -n 4: 31 passed (9, 7, 9 and 6 respectively).
  • policyengine_uk/tests/code_health with -n 4: 3,158 passed.
  • ruff format --check ., ruff check . and ruff check --select F811,F821 policyengine_uk (ruff 0.17.2), and git diff --check 06e51a8ab..HEAD: clean.
  • git merge-tree --write-tree --name-only of this head against main 9dd44e142: 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 at 06e51a8ab. At c5b07aec7, before Case 23, 22 passed.
  • council_tax_reduction_pensioner_child_benefit.yaml: 8 passed.
  • The 26 other YAML files that read Council Tax Reduction outputs (entitledto_scenarios.yaml, ctc_child_element_eligibility.yaml, the Housing Benefit, legacy award reader, Pension Credit and winter fuel files among them): 293 passed at c91e960cf. The closure condition changes a result only where gov.dwp.tax_credits.active reads false while England's limit runs. Outside the child amounts file, only claims_universal_credit.yaml sets 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 at e8831fb6b. test_survey_takeup_follows_reports_in_microdata carries the microsimulation mark, and with no survey dataset configured the suite skips it.
  • test_parameter_descriptions.py: 24 passed at 06e51a8ab.
  • The other property files that compute Council Tax Reduction, at e8831fb6b: test_council_tax_reduction_claimant_family_scheme_properties.py 3 passed, test_legacy_award_readers_properties.py 18 passed, test_council_tax_reduction_carer_income_properties.py 4 passed, test_council_tax_reduction_applicant_properties.py 2 passed and test_council_tax_reduction_prescribed_benefits_properties.py 4 passed.
  • Closure condition at 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 equals has_tax_credit_award. child_limit reads 2 for model years 2018 to 2024, and infinity from 2014 to 2017 and from 2025 on.
  • For model years 2011 to 2014, council_tax_reduction raises ParameterNotFoundError on gov.dwp.pension_credit.mixed_age_couples in all three nations, on main and on this branch alike, so the new variable's failed read of child_limit before model year 2014 adds no failure.
  • We ran 2026 households in Maidstone, Cardiff and Glasgow at c5b07aec7 and at 2da212abc. For private renters who claim Housing Benefit, with and without a ten-year-old, housing_benefit and 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.
  • The off-route amounts under Invariants and the parameter table under Which years come from one household and parameter run, which gives the same 52 rows at e8831fb6b as at c91e960cf.

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 at 9dd44e142 now counts that tariff income itself. The new property file's child test (test_adding_a_dependent_child_never_lowers_the_applicable_amount) failed on 2da212abc too, because that main had no council_tax_reduction_pensioner_child_amounts. Against main at 9dd44e142, 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 new income_from_capital.yaml case 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 15f986ada and an export of 2da212abc, 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_households reruns the 23 fixed households at this head against values we computed on main at 9dd44e142, and they match.

Mutations. We ran each mutant against the YAML file it targets, and every one fails:

Mutation YAML file Result
Award inference ignores gov.dwp.tax_credits.active child amounts 1 failed, 21 passed: Case 22 (12,985.44 against 8,656.96)
Award inference runs only when gov.dwp.tax_credits.active reads false child amounts 2 failed, 20 passed: Case 20 (8,656.96 against 12,985.44) and Case 22 (12,985.44 against 8,656.96)
Award read only from a positive final child_tax_credit, dropping nil-rate awards child amounts 1 failed, 21 passed: Case 20 (8,656.96 against 12,985.44)
Award inference drops would_claim_CTC, so eligibility alone counts child amounts 1 failed, 21 passed: Case 21 (12,985.44 against 8,656.96)
The closure condition also drops an entered final award child amounts 1 failed, 22 passed: Case 23 (8,656.96 against 12,985.44)
Award gate keeps would_claim_CTC and drops is_CTC_eligible child amounts 1 failed: Case 19 (12,985.44 against 8,656.96)
Award read only from the claim and eligibility, ignoring an entered final award child amounts 1 failed: Case 18 (8,656.96 against 12,985.44)
England's two-child limit dropped child amounts 2 failed: Cases 9 and 19
Child amounts without the pensioner test child amounts 1 failed: Case 17, the working-age control
Both tariff variables added on the formula line (the double count the merge removes) council_tax_reduction_pension_credit.yaml, £16,000 case 1 failed: applicable income 14,162 against 13,538
Tariff rounds down (np.floor for np.ceil) tariff income 4 failed, 13 passed: Cases 2, 5, 8 and 17, the £10,001 cases
Tariff added inside the income floor tariff income 1 failed, 16 passed: Case 17 (applicable income 0 against 52)
Scotland's pensioner tariff capped at £16,000 tariff income; income_from_capital.yaml 1 failed, 16 passed: Case 15 (624 against 1,040); 1 failed, 69 passed: the new £20,000 case (624 against 1,040)
Wales's pensioner tariff uncapped tariff income 1 failed, 16 passed: Case 16 (1,040 against 624)
England's pensioner tariff uncapped tariff income 1 failed, 16 passed: Case 11 (1,040 against 624)
Pension Credit gate dropped from the tariff tariff income 1 failed, 16 passed: Case 13 (624 against 0)

The 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 at c5b07aec7, which had 22 child cases, and the fifth at e8831fb6b. At c5b07aec7 the 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 where gov.dwp.tax_credits.active reads 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.yaml

axiom: 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

MaxGhenis and others added 18 commits October 31, 2026 20:52
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
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Aggregate impact on certified data: pass

Base 9dd44e142c against head bafacb77f3, both on enhanced_frs_2024_25.h5 (policyengine-uk-data 1.58.1, sha256 056e80fd8e91), fiscal years 2025-26 to 2031-32. Each year is a full microsimulation run on each side.

Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0 (thresholds in report_spec.yaml; a flag does not fail the job).

Workflow run and full report

Notes

  • In the years a figure from fewer than 10 records is suppressed (spending.disabled_students_allowance), every total containing it, and the decile incomes, are rebuilt from their other components, so no published total includes it. Those totals are marked †. A change is withheld where the two sides leave out different figures and can't be lined up.

Moves flagged for review

None.

Spending by benefit and service

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Council Tax Reduction +£0.2m +£0.3m +£0.3m +£0.2m +£0.3m +£0.3m +£0.3m
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Caseloads

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Council Tax Reduction +254 +255 +255 0 0 0 0
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Government balance, each component counted once

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government spending +£0.2m † +£0.3m † +£0.3m † +£0.2m † +£0.3m † +£0.3m † +£0.3m †
Government balance, each receipt once -£0.2m † -£0.3m † -£0.3m † -£0.2m † -£0.3m † -£0.3m † -£0.3m †

Model totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_spending +£0.2m † +£0.3m † +£0.3m † +£0.2m † +£0.3m † +£0.3m † +£0.3m †
household_benefits +£0.2m † +£0.3m † +£0.3m † +£0.2m † +£0.3m † +£0.3m † +£0.3m †
gov_balance -£0.2m † -£0.3m † -£0.3m † -£0.2m † -£0.3m † -£0.3m † -£0.3m †

Household income totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household net income +£0.2m † +£0.3m † +£0.3m † +£0.2m † +£0.3m † +£0.3m † +£0.3m †
Household net income (HBAI definition) +£0.2m +£0.3m +£0.3m +£0.2m +£0.3m +£0.3m +£0.3m

Inequality

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000

Mean household net income in each side's own deciles

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household -£0.30 † -£0.32 † -£0.36 † 0 † 0 † 0 † 0 †
Decile 2: mean household_net_income per household -£0.43 † -£0.45 † -£0.38 † +£0.08 † +£0.08 † +£0.08 † +£0.08 †

Standard reform costings (change in gov_balance)

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp -£991 -£976 +£997 0 +£0 +£0 -£1
Raise higher rate by 1pp +£0 +£0 0 0 0 0 +£0
Raise personal allowance by ~800GBP/year -£1,144 -£1,146 -£1,148 +£0 0 +£0 -£1
Raise child benefit by 25GBP/week per additional child +£0 +£0 -£1 0 +£0 +£0 -£0
Reduce Universal Credit taper rate to 20% +£0 +£0 -£0 0 0 0 -£0
Raise Class 1 main employee NICs rate to 10% +£0 0 +£0 0 -£0 0 -£0
Raise VAT standard rate by 2pp +£0 +£0 +£0 0 +£0 +£0 0
Raise additional rate by 3pp 0 +£0 -£0 0 0 +£0 0
Raise the Universal Credit standard allowance by 10% +£0 0 -£0 0 0 +£0 -£0
Raise the State Pension by 10% -£16,194 -£17,004 -£17,690 +£46,477 +£40,639 +£33,250 +£24,393

Household net income by decile

Mean 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.

Base decile 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1 fewer than 10 households change fewer than 10 households change fewer than 10 households change 0 0 0 0
Decile 2 0 0 0 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 3 0 0 0 0 0 0 0
Decile 4 0 0 0 0 0 0 0
Decile 5 0 0 0 0 0 0 0
Decile 6 0 0 0 0 0 0 0
Decile 7 0 0 0 0 0 0 0
Decile 8 0 0 0 0 0 0 0
Decile 9 0 0 0 0 0 0 0
Decile 10 0 0 0 0 0 0 0
all fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Year People gaining over £1 People losing over £1
2025-26 fewer than 10 households change fewer than 10 households change
2026-27 fewer than 10 households change fewer than 10 households change
2027-28 fewer than 10 households change fewer than 10 households change
2028-29 fewer than 10 households change fewer than 10 households change
2029-30 fewer than 10 households change fewer than 10 households change
2030-31 fewer than 10 households change fewer than 10 households change
2031-32 fewer than 10 households change fewer than 10 households change

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)
  • VAT excluding private school fees is never negative (sign:vat): 2025-26: 76 units below zero, a weighted £-53,888,684 in total; 2026-27: 76 units below zero, a weighted £-55,777,260 in total; 2027-28: 76 units below zero, a weighted £-57,727,917 in total
Counted-once check

Each 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.

  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; gov_spending; not a failure)
  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; household_benefits; not a failure)
Provenance
Side Commit Runtime Environment hash Partition hash Time
base main 9dd44e142c uk 2.174.3 (files 2f333d0d4734), core 3.34.1, py 3.13.18 aarch64 dadc93b7ef0c 7cb61324a46b 2328.22s
head #2826 merged into main bafacb77f3 uk 2.174.3 (files 73d7d9a7937b), core 3.34.1, py 3.13.18 aarch64 dadc93b7ef0c 7cb61324a46b 2431.44s

Dataset: hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@2526edbbb687a3b54dbb11272e5389e4b62d2ac2, sha256 056e80fd8e9151d78f432a25cde863340baee81304c6216a37fb575ce8563784 (verified on both sides), policyengine-uk-data 1.58.1.

Receipts by tax head: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Final charge on cash interest in non-cash ISAs £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Lifetime ISA withdrawal charge £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Income tax £294.46bn £315.23bn £335.82bn £351.28bn £366.96bn £385.36bn £399.99bn
National Insurance (employee and self-employed) £51.70bn £54.14bn £56.13bn £57.73bn £59.76bn £61.64bn £63.51bn
National Insurance (employer) £148.71bn £155.37bn £160.88bn £165.09bn £172.06bn £177.36bn £182.57bn
Employer NI change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Employer NI change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Capital gains tax £12.60bn £13.15bn £13.60bn £14.11bn £14.67bn £15.24bn £15.80bn
Student loan repayments £7.82bn £8.13bn £8.39bn £8.58bn £8.79bn £9.04bn £9.29bn
VAT excluding private school fees £249.37bn £256.87bn £266.33bn £272.70bn £278.97bn £285.24bn £291.59bn
Change in VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
VAT on private school fees £1.95bn £2.01bn £2.09bn £2.14bn £2.20bn £2.26bn £2.31bn
Change in private school VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Fuel duties £24.71bn £24.13bn £26.00bn £26.83bn £26.51bn £25.78bn £24.63bn
Alcohol duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tobacco duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Vehicle excise duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Betting and gaming duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
TV licence fee £4.26bn £4.40bn £4.41bn £4.42bn £4.43bn £4.44bn £4.45bn
Council tax £49.21bn £52.16bn £54.89bn £57.95bn £61.16bn £64.47bn £67.91bn
High value council tax surcharge £0.00bn £0.00bn £0.00bn £0.48bn £0.49bn £0.50bn £0.51bn
Northern Ireland domestic rates £0.55bn £0.58bn £0.60bn £0.63bn £0.66bn £0.69bn £0.72bn
Business rates £34.68bn £36.20bn £38.00bn £39.46bn £42.27bn £43.25bn £44.29bn
Stamp duty land tax on the household's own purchases £6.88bn £7.32bn £7.66bn £8.06bn £8.47bn £8.91bn £9.35bn
Stamp duty land tax paid by companies £4.72bn £4.57bn £5.29bn £6.03bn £6.37bn £6.92bn £7.45bn
Land transaction tax (Wales) £0.07bn £0.08bn £0.08bn £0.09bn £0.10bn £0.10bn £0.11bn
Land and buildings transaction tax (Scotland) £0.31bn £0.32bn £0.33bn £0.35bn £0.36bn £0.38bn £0.40bn
Unspecified tax change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Unspecified tax change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax excluding the main residence £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Land value tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Carbon tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Spending by benefit and service: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Lifetime ISA bonus £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
State Pension £121.68bn £125.92bn £126.72bn £129.48bn £132.98bn £136.65bn £140.41bn
Pension Credit £6.21bn £6.46bn £6.68bn £6.82bn £6.89bn £7.07bn £7.22bn
Winter Fuel Payment £1.86bn £1.85bn £1.79bn £1.77bn £1.78bn £1.78bn £1.78bn
Pension Age Winter Heating Payment (Scotland) £0.19bn £0.20bn £0.20bn £0.21bn £0.21bn £0.22bn £0.22bn
Universal Credit £75.48bn £80.52bn £82.95bn £84.96bn £86.11bn £87.61bn £88.21bn
Housing Benefit £8.56bn £8.89bn £9.23bn £9.46bn £9.69bn £9.99bn £10.27bn
Council Tax Reduction £2.07bn £2.20bn £2.32bn £2.45bn £2.59bn £2.73bn £2.87bn
Employment and Support Allowance (income-related) £0.79bn £0.82bn £0.84bn £0.86bn £0.88bn £0.90bn £0.92bn
Employment and Support Allowance (contribution-based) £5.20bn £5.37bn £5.56bn £5.69bn £5.82bn £5.95bn £6.09bn
Jobseeker's Allowance (income-based) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Jobseeker's Allowance (contribution-based) £0.29bn £0.30bn £0.31bn £0.31bn £0.32bn £0.33bn £0.34bn
Income Support £0.11bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Working Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Incapacity Benefit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Personal Independence Payment £26.95bn £28.03bn £29.05bn £30.09bn £30.75bn £31.51bn £32.21bn
Disability Living Allowance £7.49bn £7.79bn £8.07bn £8.36bn £8.55bn £8.76bn £8.95bn
Attendance Allowance £8.68bn £9.03bn £9.36bn £9.69bn £9.90bn £10.15bn £10.38bn
Carer's Allowance £4.48bn £4.66bn £4.83bn £5.00bn £5.11bn £5.27bn £5.42bn
Carer Support Payment (Scotland) £0.31bn £0.32bn £0.33bn £0.34bn £0.35bn £0.36bn £0.37bn
Carer's Allowance Supplement (Scotland) £0.00bn £0.04bn £0.04bn £0.05bn £0.05bn £0.05bn £0.05bn
Severe Disablement Allowance £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn
Industrial Injuries Disablement Benefit £0.50bn £0.52bn £0.54bn £0.55bn £0.56bn £0.58bn £0.59bn
Armed Forces Compensation Scheme £0.61bn £0.63bn £0.65bn £0.66bn £0.68bn £0.69bn £0.71bn
War Widow's or Widower's Pension £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Benefit £16.19bn £16.82bn £17.39bn £18.00bn £18.39bn £18.84bn £19.25bn
Scottish Child Payment £0.49bn £0.52bn £0.53bn £0.55bn £0.56bn £0.57bn £0.56bn
Two Child Limit Payment (Scotland, counterfactual) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Healthy Start vouchers £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn
Maternity Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Maternity Pay £3.30bn £3.41bn £3.54bn £3.62bn £3.70bn £3.78bn £3.87bn
Statutory Paternity Pay £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Sick Pay £1.12bn £1.16bn £1.20bn £1.23bn £1.26bn £1.29bn £1.32bn
Sure Start Maternity Grant £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Bereavement Support Payment £0.67bn £0.69bn £0.71bn £0.73bn £0.75bn £0.76bn £0.78bn
Widowed Parent's Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tax-Free Childcare £0.56bn £0.57bn £0.57bn £0.58bn £0.60bn £0.61bn £0.59bn
Extended childcare entitlement £2.99bn £3.50bn £3.59bn £3.71bn £3.78bn £3.86bn £3.93bn
Universal childcare entitlement £2.06bn £2.22bn £2.29bn £2.37bn £2.43bn £2.48bn £2.53bn
Targeted childcare entitlement £0.50bn £0.51bn £0.52bn £0.54bn £0.55bn £0.57bn £0.56bn
Childcare Offer for Wales £0.26bn £0.28bn £0.28bn £0.29bn £0.30bn £0.31bn £0.32bn
Care to Learn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Childcare Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Parents' Learning Allowance £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn
Adult Dependants' Grant £0.06bn £0.06bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Travel Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
NHS spending £203.89bn £204.30bn £204.56bn £204.91bn £205.34bn £205.85bn £206.35bn
State education spending £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn
Transport subsidy spending £25.05bn £25.10bn £25.14bn £25.18bn £25.23bn £25.30bn £25.36bn
Cost-of-living support payment £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Bills Rebate £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Household Energy Payment £0.00bn £2.11bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Price Guarantee subsidy £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disability basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Other public spending budget change £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Caseloads: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Lifetime ISA bonus 0k 0k 0k 0k 0k 0k 0k
State Pension 11,264k 11,145k 10,819k 10,700k 10,723k 10,750k 10,776k
Pension Credit 1,489k 1,484k 1,476k 1,454k 1,452k 1,457k 1,466k
Winter Fuel Payment 7,844k 7,783k 7,473k 7,375k 7,391k 7,409k 7,427k
Pension Age Winter Heating Payment (Scotland) 803k 802k 800k 797k 799k 801k 802k
Universal Credit 6,342k 6,347k 6,336k 6,297k 6,292k 6,271k 6,223k
Housing Benefit 1,249k 1,245k 1,244k 1,227k 1,227k 1,229k 1,232k
Council Tax Reduction 3,180k 3,200k 3,206k 3,219k 3,234k 3,245k 3,252k
Employment and Support Allowance (income-related) 71k 71k 71k 71k 71k 71k 71k
Employment and Support Allowance (contribution-based) 719k 720k 721k 722k 724k 726k 728k
Jobseeker's Allowance (income-based) 0k 0k 0k 0k 0k 0k 0k
Jobseeker's Allowance (contribution-based) 67k 67k 67k 67k 67k 68k 68k
Income Support 25k 0k 0k 0k 0k 0k 0k
Working Tax Credit 0k 0k 0k 0k 0k 0k 0k
Child Tax Credit 0k 0k 0k 0k 0k 0k 0k
Incapacity Benefit 0k 0k 0k 0k 0k 0k 0k
Personal Independence Payment 3,567k 3,575k 3,579k 3,585k 3,593k 3,602k 3,611k
Disability Living Allowance 1,291k 1,294k 1,296k 1,298k 1,300k 1,304k 1,307k
Attendance Allowance 1,695k 1,698k 1,700k 1,703k 1,707k 1,711k 1,715k
Carer's Allowance 1,034k 1,037k 1,038k 1,040k 1,042k 1,060k 1,062k
Carer Support Payment (Scotland) 71k 71k 71k 72k 72k 72k 72k
Carer's Allowance Supplement (Scotland) 0k 71k 71k 72k 72k 72k 72k
Severe Disablement Allowance 4k 4k 4k 4k 4k 4k 4k
Industrial Injuries Disablement Benefit 137k 137k 137k 138k 138k 138k 139k
Armed Forces Compensation Scheme 93k 93k 94k 94k 94k 94k 94k
War Widow's or Widower's Pension 0k 0k 0k 0k 0k 0k 0k
Child Benefit 8,123k 8,120k 8,120k 8,130k 8,145k 8,161k 8,178k
Scottish Child Payment 351k 352k 352k 353k 350k 348k 337k
Two Child Limit Payment (Scotland, counterfactual) 0k 0k 0k 0k 0k 0k 0k
Healthy Start vouchers 200k 200k 200k 201k 201k 201k 202k
Maternity Allowance 0k 0k 0k 0k 0k 0k 0k
Statutory Maternity Pay 333k 333k 334k 334k 335k 336k 337k
Statutory Paternity Pay 0k 0k 0k 0k 0k 0k 0k
Statutory Sick Pay 181k 182k 182k 182k 182k 183k 183k
Sure Start Maternity Grant 26k 26k 26k 26k 26k 26k 26k
Bereavement Support Payment 98k 98k 98k 98k 98k 99k 99k
Widowed Parent's Allowance 0k 0k 0k 0k 0k 0k 0k
Tax-Free Childcare 1,043k 1,027k 1,014k 1,009k 1,011k 1,009k 993k
Extended childcare entitlement 795k 800k 796k 797k 798k 798k 792k
Universal childcare entitlement 1,071k 1,072k 1,072k 1,073k 1,076k 1,079k 1,074k
Targeted childcare entitlement 165k 156k 154k 154k 155k 155k 150k
Childcare Offer for Wales 39k 39k 39k 39k 39k 39k 39k
Care to Learn 0k 0k 0k 0k 0k 0k 0k
Childcare Grant 0k 0k 0k 0k 0k 0k 0k
Parents' Learning Allowance 98k 98k 98k 99k 99k 99k 99k
Adult Dependants' Grant 18k 18k 12k 12k 12k 12k 12k
Travel Grant 0k 0k 0k 0k 0k 0k 0k
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund 0k 0k 0k 0k 0k 0k 0k
Cost-of-living support payment 0k 0k 0k 0k 0k 0k 0k
Energy Bills Rebate 0k 0k 0k 0k 0k 0k 0k
Household Energy Payment 0k 21,065k 0k 0k 0k 0k 0k
Energy Price Guarantee subsidy 0k 0k 0k 0k 0k 0k 0k
Basic income 0k 0k 0k 0k 0k 0k 0k
Disability basic income 0k 0k 0k 0k 0k 0k 0k
Government balance, each component counted once: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government receipts, each component once £892.00bn £934.66bn £980.50bn £1,015.93bn £1,054.24bn £1,091.56bn £1,124.89bn
Government spending £528.93bn † £545.10bn † £550.16bn † £558.85bn † £566.49bn † £575.19bn † £582.78bn †
Government balance, each receipt once £363.07bn † £389.57bn † £430.34bn † £457.08bn † £487.75bn † £516.37bn † £542.11bn †
Benefits in household_benefits but not in gov_spending £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Model totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax £892.00bn £934.66bn £980.50bn £1,015.93bn £1,054.24bn £1,091.56bn £1,124.89bn
household_tax £491.97bn £520.41bn £551.21bn £576.00bn £601.00bn £626.69bn £648.42bn
pre_budget_change_household_tax £484.15bn £512.28bn £542.82bn £566.95bn £591.72bn £617.16bn £638.61bn
gov_spending £528.93bn † £545.10bn † £550.16bn † £558.85bn † £566.49bn † £575.19bn † £582.78bn †
household_benefits £528.93bn † £545.10bn † £550.16bn † £558.85bn † £566.49bn † £575.19bn † £582.78bn †
gov_balance £363.07bn † £389.57bn † £430.34bn † £457.08bn † £487.75bn † £516.37bn † £542.11bn †
Household income totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income £1,637.96bn £1,702.77bn £1,757.35bn £1,806.41bn £1,855.97bn £1,912.43bn £1,970.44bn
Household net income £1,636.24bn † £1,687.25bn † £1,714.85bn † £1,746.83bn † £1,777.98bn † £1,816.26bn † £1,858.87bn †
Household net income (HBAI definition) £1,449.13bn £1,499.27bn £1,530.25bn £1,564.51bn £1,597.18bn £1,634.83bn £1,675.80bn
Population: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People 69,245k 69,383k 69,473k 69,592k 69,738k 69,912k 70,080k
Benefit units 35,110k 35,181k 35,226k 35,286k 35,360k 35,449k 35,534k
Households 31,046k 31,108k 31,149k 31,201k 31,267k 31,345k 31,420k
Poverty rates: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 16.3% 15.5% 16.4% 16.3% 16.5% 16.5% 16.6%
Absolute poverty, before housing costs: children 24.7% 22.1% 23.3% 22.9% 23.1% 23.2% 23.5%
Absolute poverty, before housing costs: working-age adults 14.1% 13.8% 14.7% 14.7% 14.8% 14.8% 15.0%
Absolute poverty, before housing costs: pensioners 13.7% 13.4% 14.0% 13.8% 13.9% 14.0% 13.9%
Absolute poverty, after housing costs: everyone 21.6% 21.0% 22.0% 22.6% 22.9% 23.1% 23.4%
Absolute poverty, after housing costs: children 33.3% 31.3% 32.3% 32.5% 32.9% 33.4% 34.2%
Absolute poverty, after housing costs: working-age adults 19.9% 19.8% 20.8% 21.6% 21.9% 22.0% 22.3%
Absolute poverty, after housing costs: pensioners 12.7% 12.4% 13.1% 13.2% 13.3% 13.4% 13.6%
Relative poverty, before housing costs: everyone 17.0% 16.0% 16.4% 16.3% 16.4% 16.3% 16.6%
Relative poverty, before housing costs: children 25.9% 22.9% 23.3% 22.9% 23.0% 22.9% 23.5%
Relative poverty, before housing costs: working-age adults 14.5% 14.1% 14.6% 14.7% 14.7% 14.7% 15.0%
Relative poverty, before housing costs: pensioners 14.5% 14.0% 13.9% 13.8% 13.8% 13.9% 13.9%
Relative poverty, after housing costs: everyone 21.5% 21.0% 21.3% 21.3% 21.3% 21.5% 21.7%
Relative poverty, after housing costs: children 33.1% 31.1% 31.2% 31.0% 31.1% 31.2% 31.8%
Relative poverty, after housing costs: working-age adults 19.9% 19.8% 20.2% 20.4% 20.5% 20.6% 20.8%
Relative poverty, after housing costs: pensioners 12.5% 12.4% 12.2% 11.7% 11.7% 11.8% 12.0%
People in poverty: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 11,277k 10,778k 11,402k 11,365k 11,475k 11,514k 11,650k
Absolute poverty, before housing costs: children 3,688k 3,314k 3,496k 3,445k 3,480k 3,502k 3,549k
Absolute poverty, before housing costs: working-age adults 5,965k 5,893k 6,308k 6,362k 6,420k 6,430k 6,521k
Absolute poverty, before housing costs: pensioners 1,624k 1,571k 1,597k 1,558k 1,575k 1,581k 1,580k
Absolute poverty, after housing costs: everyone 14,944k 14,599k 15,310k 15,721k 15,937k 16,140k 16,426k
Absolute poverty, after housing costs: children 4,975k 4,682k 4,837k 4,888k 4,945k 5,040k 5,179k
Absolute poverty, after housing costs: working-age adults 8,463k 8,461k 8,971k 9,344k 9,491k 9,584k 9,706k
Absolute poverty, after housing costs: pensioners 1,506k 1,456k 1,501k 1,489k 1,501k 1,517k 1,541k
Relative poverty, before housing costs: everyone 11,750k 11,084k 11,387k 11,364k 11,416k 11,416k 11,654k
Relative poverty, before housing costs: children 3,872k 3,423k 3,496k 3,445k 3,466k 3,454k 3,551k
Relative poverty, before housing costs: working-age adults 6,159k 6,013k 6,301k 6,362k 6,389k 6,389k 6,523k
Relative poverty, before housing costs: pensioners 1,719k 1,648k 1,590k 1,558k 1,561k 1,573k 1,580k
Relative poverty, after housing costs: everyone 14,864k 14,552k 14,777k 14,809k 14,872k 15,012k 15,232k
Relative poverty, after housing costs: children 4,944k 4,660k 4,673k 4,663k 4,679k 4,707k 4,806k
Relative poverty, after housing costs: working-age adults 8,431k 8,440k 8,711k 8,823k 8,873k 8,967k 9,062k
Relative poverty, after housing costs: pensioners 1,489k 1,452k 1,393k 1,323k 1,321k 1,338k 1,364k
Inequality: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs 0.3078 0.3050 0.3056 0.3055 0.3060 0.3066 0.3082
Mean household net income in each side's own deciles: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household £17,681 † £17,997 † £17,915 † £18,152 † £18,308 † £18,533 † £18,718 †
Decile 2: mean household_net_income per household £27,942 † £29,025 † £28,715 † £29,017 † £29,280 † £29,698 † £30,156 †
Decile 3: mean household_net_income per household £34,316 † £35,481 † £36,069 † £36,606 † £37,195 † £37,732 † £38,182 †
Decile 4: mean household_net_income per household £38,934 † £40,684 † £41,726 † £42,728 † £43,331 † £44,130 † £44,432 †
Decile 5: mean household_net_income per household £43,235 † £45,581 † £46,012 † £46,961 † £47,713 † £48,725 † £50,296 †
Decile 6: mean household_net_income per household £47,931 † £49,202 † £50,891 † £51,936 † £52,936 † £53,820 † £54,663 †
Decile 7: mean household_net_income per household £55,659 † £56,569 † £57,437 † £57,642 † £58,733 † £59,661 † £61,087 †
Decile 8: mean household_net_income per household £68,784 † £70,802 † £71,864 † £73,512 † £73,886 † £75,319 † £77,177 †
Decile 9: mean household_net_income per household £78,889 † £81,012 † £80,859 † £82,645 † £85,463 † £86,945 † £89,508 †
Decile 10: mean household_net_income per household £116,861 † £120,161 † £124,545 † £126,420 † £125,753 † £128,368 † £130,693 †
Standard reform costings (change in gov_balance): head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp £6.41bn £6.66bn £6.63bn £6.85bn £7.03bn £7.25bn £7.49bn
Raise higher rate by 1pp £3.61bn £3.87bn £4.00bn £4.22bn £4.44bn £4.71bn £4.83bn
Raise personal allowance by ~800GBP/year £-3.81bn £-3.93bn £-3.99bn £-4.05bn £-4.11bn £-4.24bn £-1.95bn
Raise child benefit by 25GBP/week per additional child £-1.99bn £-1.75bn £-1.55bn £-1.38bn £-1.30bn £-1.18bn £-1.07bn
Reduce Universal Credit taper rate to 20% £-20.77bn £-21.32bn £-21.75bn £-22.00bn £-22.35bn £-22.75bn £-22.94bn
Raise Class 1 main employee NICs rate to 10% £10.89bn £11.30bn £11.71bn £12.01bn £12.31bn £12.62bn £13.00bn
Raise VAT standard rate by 2pp £24.89bn £25.71bn £26.63bn £27.24bn £27.87bn £28.50bn £29.14bn
Raise additional rate by 3pp £2.90bn £3.15bn £3.22bn £3.41bn £3.61bn £3.85bn £4.14bn
Raise the Universal Credit standard allowance by 10% £-3.06bn £-3.18bn £-3.26bn £-3.35bn £-3.44bn £-3.49bn £-3.50bn
Raise the State Pension by 10% £-7.76bn £-8.00bn £-8.22bn £-8.45bn £-8.80bn £-8.53bn £-8.87bn
Standard reforms: change in each reform's target: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax £6.55bn £6.86bn £6.79bn £7.00bn £7.20bn £7.44bn £7.66bn
Raise higher rate by 1pp: change in income_tax £3.61bn £3.92bn £4.01bn £4.23bn £4.45bn £4.72bn £4.84bn
Raise personal allowance by ~800GBP/year: change in income_tax £-3.93bn £-4.07bn £-4.13bn £-4.18bn £-4.22bn £-4.40bn £-1.75bn
Raise child benefit by 25GBP/week per additional child: change in child_benefit £2.33bn £2.14bn £1.94bn £1.76bn £1.65bn £1.52bn £1.40bn
Reduce Universal Credit taper rate to 20%: change in universal_credit £20.74bn £21.31bn £21.79bn £22.05bn £22.37bn £22.78bn £22.99bn
Raise Class 1 main employee NICs rate to 10%: change in national_insurance £11.15bn £11.63bn £12.00bn £12.29bn £12.61bn £12.94bn £13.31bn
Raise VAT standard rate by 2pp: change in vat £24.69bn £25.51bn £26.42bn £27.03bn £27.65bn £28.28bn £28.91bn
Raise additional rate by 3pp: change in income_tax £2.90bn £3.15bn £3.22bn £3.42bn £3.62bn £3.86bn £4.12bn
Raise the Universal Credit standard allowance by 10%: change in universal_credit £3.06bn £3.19bn £3.28bn £3.37bn £3.43bn £3.49bn £3.51bn
Raise the State Pension by 10%: change in state_pension £10.68bn £11.17bn £11.28bn £11.60bn £12.03bn £12.46bn £12.96bn

@MaxGhenis
MaxGhenis marked this pull request as ready for review November 3, 2026 10:42

@juaristi22 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

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
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

PR_BODY.md

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 added `council_tax_reduction_tariff_income` to main, which counts pensioners' tariff income. We now add child amounts and family premiums, and we change main's tariff income in one place: a Scottish pensioner's tariff income now counts the whole excess of 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:

| Scheme | Provision | 2026-27 child amount | Family premium |
| --- | --- | --- | --- |
| England | SI 2012/2885 Sch 1 para 6(1)(b)-(c), Sch 2 paras 2-3 | £87.88 | nil for reduction weeks beginning after 1 May 2016 (SI 2015/2041 reg 2(4)(b)) |
| Wales | WSI 2013/3029 Sch 1 para 1(1)(b)-(c), Sch 2 paras 2-3 | £87.88 | £20.22 |
| Scotland | SSI 2012/319 reg 20(b), Sch 1 para 3 | £109.85 | removed from 1 May 2016 (SSI 2016/81 reg 18) |

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 final `child_tax_credit` exceeds zero, whether the model calculates it or the user enters it. While HMRC pays tax credit awards (`gov.dwp.tax_credits.active`), we also count `would_claim_CTC` with `is_CTC_eligible` to retain nil-rate awards, as `has_tax_credit_award` does. 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 through `council_tax_reduction_pensioner_family_premium` and 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). The pension-age tariff income now comes from main's `council_tax_reduction_tariff_income`, which this PR changes only for Scotland's ceiling: its Scottish pensioner branch now counts all of `council_tax_reduction_assessable_capital` over £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_income` adds 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. The Scottish change moves no award: 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, on main `9dd44e142` and on this branch alike; 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_income` gives 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_income` sums the sources in `gov.dwp.pension_credit.guarantee_credit.income`, which lists `pension_credit_deemed_income`), so the tariff variable gives nil there too. A savings-credit-only pensioner with £16,000, in `council_tax_reduction_pension_credit.yaml`, keeps applicable income of £14,247.02.

### Reuse of Housing Benefit parameters

- **Tariff income.** `council_tax_reduction_tariff_income` reads 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.pensioner` and `gov.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. A run of the parameter tree on this branch gives the same amount, step and threshold (£1, £500, £10,000) for all three schemes as for the pension-age Housing Benefit parameters (`gov.dwp.housing_benefit.means_test.capital.pension_age.tariff_income`, SI 2006/214 reg 29(2)) 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_amount` adds 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:

  | Year | HB (SI 2006/214 Sch 3 para 2) | England | Wales | Scotland |
  | --- | --- | --- | --- | --- |
  | 2013-14 | 65.62 | 65.62 | 65.62 | 65.62 |
  | 2014-15 | 66.33 | 66.33 | 66.33 | 66.33 |
  | 2015-16 to 2016-17 | 66.90 | 66.90 | 66.90 | 66.90 |
  | 2017-18 to 2019-20 | 66.90 | 66.90 | 66.90 | 83.63 |
  | 2020-21 | 68.27 | 68.27 | **66.90** | 85.34 |
  | 2021-22 | 68.60 | 68.60 | **66.90** | 85.75 |
  | 2022-23 | 70.80 | 70.80 | 70.80 | 88.50 |
  | 2023-24 | 77.78 | 77.78 | 77.78 | 97.23 |
  | 2024-25 | 83.24 | 83.24 | 83.24 | 104.05 |
  | 2025-26 | 84.66 | 84.66 | 84.66 | 105.85 |
  | 2026-27 | 87.88 | 87.88 | 87.88 | 109.85 |

  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_premium` gates 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_years` in `policyengine_uk/utils/parameters.py` keeps the years from 2015 (lines 108 and 126), and `convert_to_fiscal_year_parameters` gives 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:

| Model year | 2015 | 2016 | 2017 | 2018-2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| England child amount | 66.90 | 66.90 | 66.90 | 66.90 | 68.27 | 68.60 | 70.80 | 77.78 | 83.24 | 84.66 | 87.88 | 90.96 |
| England family premium | 17.45 | 17.45 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| England child limit | none | none | none | 2 | 2 | 2 | 2 | 2 | 2 | none | none | none |
| Wales child amount | 66.90 | 66.90 | 66.90 | 66.90 | 66.90 | 66.90 | 70.80 | 77.78 | 83.24 | 84.66 | 87.88 | 90.96 |
| Wales family premium | 17.45 | 17.45 | 17.45 | 17.45 | 17.45 | 17.45 | 17.85 | 18.53 | 19.15 | 19.48 | 20.22 | 20.93 |
| Scotland child amount | 66.90 | 66.90 | 83.63 | 83.63 | 85.34 | 85.75 | 88.50 | 97.23 | 104.05 | 105.85 | 109.85 | 113.69 |
| Scotland family premium | 17.45 | 17.45 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

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. The uncapped Scottish pensioner tariff applies 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

- Transitional protection. We do not model the English and Scottish family premium that councils keep for families with a child who had a reduction on 30 April 2016 (SI 2015/2041 reg 3; SSI 2016/81 reg 2 and SSI 2012/319 reg 20(e), £19.48), or England's protection for families with more than two children on 31 March 2018 (SI 2017/1305 reg 17). No input identifies these families.
- The enhanced disability premium and the disabled child premium for a pensioner's child (England SI 2012/2885 Sch 2 paras 7 and 8; Wales WSI 2013/3029 Sch 2 paras 7 and 8; Scotland SSI 2012/319 Sch 1 paras 8 and 9; £33.99 and £84.46 a week in 2026-27). We currently include the severe disability and carer premiums for pensioners. We give a 72-year-old in England whose ten-year-old gets the highest rate of the DLA care component an applicable amount of £17,881.76, where councils add 118.45 × 52 = £6,159.40 under paras 7 and 8, for £24,041.16. We give £18,933.20 in Wales against £25,092.60, and £19,024.20 in Scotland against £25,183.60. #2824 tracks them.
- Child amounts and the family premium for working-age families in Scotland and Wales (#1966 covers them). Main's `council_tax_reduction_tariff_income` already gives those families their working-age tariff income.
- Applicant and partner capital. `council_tax_reduction_assessable_capital` uses household savings and other residential property 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`). Its pensioner tariff now counts a Scottish pensioner's capital without the £16,000 ceiling, written out from reg 27(2). 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 text now says why its 2,088 bound still holds: the generated savings stop at £20,000, where a Scottish pensioner's uncapped tariff comes to £1,040. Its code stays the same.
- `council_tax_reduction_pensioner_tariff_income.yaml` and `test_council_tax_reduction_pensioner_children_tariff_properties.py` now read `council_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 (Welsh working-age tariff, WSI 2013/3029 Sch 6 para 33: (12,000 − 6,000) / 250 = 24, and 24 × 52 = 1,248) in place of nil. The property file checks nil tariff income at working age only in England, whose local schemes set their own, and its frozen differential (`test_matches_origin_main_on_unchanged_households`) now holds main's values at `9dd44e142`. Those differ from the `2da212abc` values only for the six Welsh and Scottish working-age families with savings, by the working-age tariff: £1,248 a year on £12,000, £2,080 on £16,000 and £416 on £8,000 (which also lowers the £8,000 family's award by 0.2 × 416 = £83.20), in each of 2019, 2024 and 2026.

### 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 of `council_tax_reduction_applicable_income` (main's `council_tax_reduction_tariff_income`, after the income floor), the £16,000 case's outputs in `council_tax_reduction_pension_credit.yaml`, and invariant 4 of `test_council_tax_reduction_pension_credit_properties.py`. The 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's `council_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

We ran `git merge-tree --write-tree --name-only` of each open head against this branch's head and against main (`9dd44e142`) to find the conflicts this PR adds:

| Head | Conflicts with main | Added by this PR |
| --- | --- | --- |
| #2077 `cf0475ddb` | 11 files | none |
| #1969 `b4e872273`, #2688 `80e0d344f` | 8 files each | none |
| #1966 `a013f520a` | 3 files | none |
| #2002 `f7788dc97`, #2007 `fde435bd3`, #2017 `b3e0d76b8` | 2 files each | none |
| #2301 `1eb9e075d`, #2302 `6db2b6d47`, #2808 `6563f73e5` | none | none |
| branch `fix-2120-uc-carer-awards` `260f6a77e`, which has no PR | none | none |

#1995 has merged; this branch carries it. #2002 builds on #1995.

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.py` with it (`MAIN_DEDUCTIONS` and the recomputation in `calculate`).

#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.

1. For a pensioner off Pension Credit, tariff income is 52 × £1 for each £500, or part of £500, of capital above £10,000 (up to £16,000 in England and Wales, with no ceiling in Scotland), and nil on the Pension Credit routes. It never falls as capital rises, capital changes nothing else in the applicable income, and the award never rises with capital.
2. For a family whose scheme stays the same, adding a dependent child never lowers the applicable amount. For a pensioner, councils add 52 times the scheme's weekly rate for each extra child they count. In England from 2018-19 to 2024-25, they count up to two children, or more where a Child Tax Credit award includes individual elements for more. In Wales, councils also add the family premium with the first child.
3. A pensioner with no child and capital up to £10,000 gets no child amount, family premium or tariff income, and a working-age family gets no child amount or family premium, so their applicable amount, applicable income and award match main. An English working-age family also gets no tariff income from `council_tax_reduction_tariff_income`.
4. A Scottish pensioner's award matches main at every level of capital: the uncapped tariff changes tariff income only where capital exceeds £16,000, where reg 40 already bars a reduction.

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

- [x] YAML tests whose expected values come from the legislation: `council_tax_reduction_pensioner_child_amounts.yaml` (23 cases), `council_tax_reduction_pensioner_tariff_income.yaml` (17 cases) and a new `income_from_capital.yaml` case for a Scottish and an English pensioner at £20,000, with the arithmetic worked in comments.
- [x] `ruff format --check` and `ruff check` (ruff 0.17.2) on the whole repository.
- [x] Changelog fragment `changelog.d/1933.fixed.md`.

### Results

Every run used small hand-built situations; no survey data.

At this head (`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.py` and `test_savings_credit_only_receipt_properties.py`, in one run with `-n 4`: **31 passed** (9, 7, 9 and 6 respectively).
- `policyengine_uk/tests/code_health` with `-n 4`: **3,158 passed**.
- `ruff format --check .`, `ruff check .` and `ruff check --select F811,F821 policyengine_uk` (ruff 0.17.2), and `git diff --check 06e51a8ab..HEAD`: clean.
- `git merge-tree --write-tree --name-only` of this head against main `9dd44e142`: no conflicts.

Earlier runs, on this branch before the merge with main:

- `council_tax_reduction_pensioner_child_amounts.yaml`: **23 passed** at `06e51a8ab`. At `c5b07aec7`, before Case 23, 22 passed.
- `council_tax_reduction_pensioner_child_benefit.yaml`: **8 passed**.
- The 26 other YAML files that read Council Tax Reduction outputs (`entitledto_scenarios.yaml`, `ctc_child_element_eligibility.yaml`, the Housing Benefit, legacy award reader, Pension Credit and winter fuel files among them): **293 passed** at `c91e960cf`. The closure condition changes a result only where `gov.dwp.tax_credits.active` reads false while England's limit runs. Outside the child amounts file, only `claims_universal_credit.yaml` sets 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** at `e8831fb6b`. `test_survey_takeup_follows_reports_in_microdata` carries the `microsimulation` mark, and with no survey dataset configured the suite skips it.
- `test_parameter_descriptions.py`: **24 passed** at `06e51a8ab`.
- The other property files that compute Council Tax Reduction, at `e8831fb6b`: `test_council_tax_reduction_claimant_family_scheme_properties.py` **3 passed**, `test_legacy_award_readers_properties.py` **18 passed**, `test_council_tax_reduction_carer_income_properties.py` **4 passed**, `test_council_tax_reduction_applicant_properties.py` **2 passed** and `test_council_tax_reduction_prescribed_benefits_properties.py` **4 passed**.
- Closure condition at `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 equals `has_tax_credit_award`. `child_limit` reads 2 for model years 2018 to 2024, and infinity from 2014 to 2017 and from 2025 on.
- For model years 2011 to 2014, `council_tax_reduction` raises `ParameterNotFoundError` on `gov.dwp.pension_credit.mixed_age_couples` in all three nations, on main and on this branch alike, so the new variable's failed read of `child_limit` before model year 2014 adds no failure.
- We ran 2026 households in Maidstone, Cardiff and Glasgow at `c5b07aec7` and at `2da212abc`. For private renters who claim Housing Benefit, with and without a ten-year-old, `housing_benefit` and 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.
- The off-route amounts under **Invariants** and the parameter table under **Which years** come from one household and parameter run, which gives the same 52 rows at `e8831fb6b` as at `c91e960cf`.

**Fails on main.** On `2da212abc`, child Cases 1-17 and tariff Cases 1-14 (with the new variables' outputs removed, 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 at `9dd44e142` now counts that tariff income itself. The new property file's child test (`test_adding_a_dependent_child_never_lowers_the_applicable_amount`) failed on `2da212abc` too, because that main had no `council_tax_reduction_pensioner_child_amounts`. Against main at `9dd44e142`, this PR's tariff change shows only for a Scottish pensioner with capital over £16,000: restoring main's Scottish cap fails tariff Case 15 and the new `income_from_capital.yaml` case (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 `15f986ada` and an export of `2da212abc`, 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_households` reruns the 23 fixed households at this head against values computed on main at `9dd44e142`, and they match.

**Mutations.** Each mutant, a scratch copy of this branch, ran against the YAML file it targets, and every one fails:

| Mutation | YAML file | Result |
| --- | --- | --- |
| Award inference ignores `gov.dwp.tax_credits.active` | child amounts | 1 failed, 21 passed: Case 22 (12,985.44 against 8,656.96) |
| Award inference runs only when `gov.dwp.tax_credits.active` reads false | child amounts | 2 failed, 20 passed: Case 20 (8,656.96 against 12,985.44) and Case 22 (12,985.44 against 8,656.96) |
| Award read only from a positive final `child_tax_credit`, dropping nil-rate awards | child amounts | 1 failed, 21 passed: Case 20 (8,656.96 against 12,985.44) |
| Award inference drops `would_claim_CTC`, so eligibility alone counts | child amounts | 1 failed, 21 passed: Case 21 (12,985.44 against 8,656.96) |
| The closure condition also drops an entered final award | child amounts | 1 failed, 22 passed: Case 23 (8,656.96 against 12,985.44) |
| Award gate keeps `would_claim_CTC` and drops `is_CTC_eligible` | child amounts | 1 failed: Case 19 (12,985.44 against 8,656.96) |
| Award read only from the claim and eligibility, ignoring an entered final award | child amounts | 1 failed: Case 18 (8,656.96 against 12,985.44) |
| England's two-child limit dropped | child amounts | 2 failed: Cases 9 and 19 |
| Child amounts without the pensioner test | child amounts | 1 failed: Case 17, the working-age control |
| Both tariff variables added on the formula line (the double count the merge removes) | `council_tax_reduction_pension_credit.yaml`, £16,000 case | 1 failed: applicable income 14,162 against 13,538 |
| Tariff rounds down (`np.floor` for `np.ceil`) | tariff income | 4 failed, 13 passed: Cases 2, 5, 8 and 17, the £10,001 cases |
| Tariff added inside the income floor | tariff income | 1 failed, 16 passed: Case 17 (applicable income 0 against 52) |
| Scotland's pensioner tariff capped at £16,000 | tariff income; `income_from_capital.yaml` | 1 failed, 16 passed: Case 15 (624 against 1,040); 1 failed, 69 passed: the new £20,000 case (624 against 1,040) |
| Wales's pensioner tariff uncapped | tariff income | 1 failed, 16 passed: Case 16 (1,040 against 624) |
| England's pensioner tariff uncapped | tariff income | 1 failed, 16 passed: Case 11 (1,040 against 624) |
| Pension Credit gate dropped from the tariff | tariff income | 1 failed, 16 passed: Case 13 (624 against 0) |

The 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 at `c5b07aec7`, which had 22 child cases, and the fifth at `e8831fb6b`. At `c5b07aec7` the 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 where `gov.dwp.tax_credits.active` reads 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.yaml`

axiom: 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](https://claude.com/claude-code)

https://claude.ai/code/session_01LwQq6HDAHLr6RSvBAdeFM1

Generated by Claude Code

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

PR_TITLE.txt

Add pensioner CTR child amounts and uncap Scotland's tariff income

Generated by Claude Code

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

AXIOM_522.md

Encode the pension-age Council Tax Reduction child amounts, family premium and tariff income for parity with policyengine-uk#1933. PolicyEngine UK now adds, to a pensioner's applicable amount, an amount for each child or young person in the applicant's family and the family premium where the scheme keeps one, and it counts tariff income from capital. The Secretary of State, the Scottish Ministers and the Welsh Ministers set those rules in SI 2012/2885, SSI 2012/319 and WSI 2013/3029. Every companion case below comes from two PolicyEngine test files under `policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/` at policyengine-uk commit `e8831fb6b295d0c959b4694913574366997b26b3`: `council_tax_reduction_pensioner_child_amounts.yaml` (23 cases) and `council_tax_reduction_pensioner_tariff_income.yaml` (17 cases). PolicyEngine's tariff output `council_tax_reduction_tariff_income` also carries the Welsh and Scottish working-age tariffs and Universal Credit's assumed yield from capital, which this issue doesn't encode; only its pension-age values map to the outputs below. So at the PolicyEngine PR's current head, tariff Case 14 (W9, a Welsh earner aged 40 with £12,000 of capital) expects 1,248 from the Welsh working-age tariff, while the pension-age RuleSpec value stays 0.

Two of the modules this work needs already have dispatch blocks in an open issue. rulespec-uk#483 step 3a specifies England's SI 2012/2885 Sch 1 para 37 module, and #483 step 11(b) Scotland's SSI 2012/319 reg 27(2) tariff income. Encode each of those modules once, under #483, and add this issue's companion cases to that dispatch.

## Pinned target and execution blocker

Proposed label: `pe-parity`. Queue the signed encoding work. No one has separately approved a billed encoder run. Keep encoding and corpus ingest blocked until that approval; use the signed encoder for the RuleSpec modules. Establish parity through paired tests after encoding.

Target the release that rulespec-uk `main` (`0497350d74f9d0f7272b88e08019e66366d3be58`) pins in `.axiom/toolchain.toml`: `uk-rulespec-2026-10-25-pe-child-definitions`, content SHA-256 `76b42156de23f2c000dab657dafacfb5b96ec9fe5670a75563574bd00793048c`. The release object names axiom-corpus commit `9d174d88119fd6e6ace02d7c94eec7bb47e363f0` and a creation time of 2026-10-25T06:51:19Z. We recomputed the content hash from the canonical JSON of the release content (sorted keys, compact separators, ASCII): it matches. Its Ed25519 signature (key id `axiom-corpus-release-v2`) verifies against the public key in axiom-corpus's `AXIOM_CORPUS_RELEASE_PUBLIC_KEY` variable. We read all 1,143 artifacts the release names, across its 193 scopes, from local copies; every one matched the size and SHA-256 in the release entry. The encoder operator must record the actual ingest, signed-expression and release bindings when carrying out the approved work. Do not silently substitute a different release.

### What the pinned release holds

Every artifact below sits in the release content, and its local bytes match the release entry's size and SHA-256. Artifact paths below sit under `data/corpus/provisions/uk/regulation/`.

| Provision | Corpus citation | Artifact | Artifact SHA-256 |
| --- | --- | --- | --- |
| SI 2012/2885 Sch 1 para 6 | `uk/regulation/uksi/2012/2885/schedule/1/paragraph/6` | `2026-07-13-uk-ctr-enp-sch1-award-r2026-07-20-datefix.jsonl` | `6a90198cd59bf7aa0f6f7f4316a289034ded2f3e1fd62486676e4e031de3c920` |
| SI 2012/2885 Sch 1 para 37 | `uk/regulation/uksi/2012/2885/schedule/1/paragraph/37` | `2026-07-10-uk-rulespec-source-promotion.jsonl` | `eda0904ba946a2bfb04d19164436b424919f2fdb790a4e7adf7580f8e007a841` |
| SI 2012/2885 Sch 2 Pt 1 para 1 | `uk/regulation/uksi/2012/2885/schedule/2/part/1/paragraph/1` | `2026-07-14-uk-ctr-enp-applicable-amounts-r2026-07-20-datefix.jsonl` | `8329a5c0742d8beb1be77bfca29b41cc56164139d8eeb26426b19cb3f8df4daa` |
| SI 2012/2885 Sch 2 Pt 1 para 2 | `uk/regulation/uksi/2012/2885/schedule/2/part/1/paragraph/2` | same | same |
| SI 2012/2885 Sch 2 Pt 2 para 3 | `uk/regulation/uksi/2012/2885/schedule/2/part/2/paragraph/3` | same | same |
| SI 2012/2885 Sch 2 Pt 4 | `uk/regulation/uksi/2012/2885/schedule/2/part/4` | same | same |
| SI 2012/2885 reg 11 | `uk/regulation/uksi/2012/2885/11` | `2026-07-13-uk-ctr-enp-regs-r2026-07-20-datefix.jsonl` | `2c3c384f959a4705143972940d208dd78e0a34d38c2053e91df6ddd30820aa76` |
| SSI 2012/319 reg 20 | `uk/regulation/ssi/2012/319/20` | `2026-07-13-uk-ctr-scp-award-r2026-07-20-datefix.jsonl` | `c83b45c299b3a0bb9e7a93e524bcad0cd5fdb61a227c4be77606a59a88e8fb59` |
| SSI 2012/319 reg 40 | `uk/regulation/ssi/2012/319/40` | same | same |
| SSI 2012/319 Sch 1 para 2 | `uk/regulation/ssi/2012/319/schedule/1/paragraph/2` | same | same |
| WSI 2013/3029 Sch 1 paras 1 and 31 | `uk/regulation/wsi/2013/3029/schedule/1/paragraph/1`, `.../paragraph/31` | `2026-07-13-uk-ctr-wa-pensioner-award-r2026-07-20-datefix.jsonl` | `a6bd0aa38ad400bd7cd9a4e10687786b133f36b4d4369970325f8b366ed764bb` |
| WSI 2013/3029 Sch 2 paras 1, 2 and 3 | `uk/regulation/wsi/2013/3029/schedule/2/paragraph/1`, `/2`, `/3` | `2026-07-13-uk-ctr-wa-pensioner-applicable-amounts-r2026-07-20-datefix.jsonl` | `2721406d59afb33fb0de05eb0a4929a2971df2384d575f9ef19ecd8603714f14` |
| WSI 2013/3029 reg 30 | `uk/regulation/wsi/2013/3029/30` | `2026-07-13-uk-ctr-wa-classes-r2026-07-20-datefix.jsonl` | `6e8758d053ead3da73745f76e621c16c5bcaf003594b4aedd00723d92ae2335c` |

The release lacks the following:

- SSI 2012/319 reg 27, as a whole or as reg 27(2), and SSI 2012/319 Sch 1 para 3. No artifact of any class holds either: no provision row, no source file and no inventory entry. The release holds SSI 2012/319 rows for regs 14, 14A, 20, 40, 47, 48 and 56, Sch 1 para 2 and Sch 5 para 1. No artifact contains reg 27(2)'s wording or a link to reg 27, and Sch 1 para 3 appears only in a `rel="next"` navigation link in the Sch 1 para 2 source XML. axiom-corpus `main` (`3b59339d7abcdfd58ffe1c0dc7cd468a07671e7b`) has no lock for either provision, and axiom-corpus#810 lists reg 27 as in no UK scope.
- A provision row for SSI 2012/319 regs 24 to 26 (the Pension Credit routes), 31 or 41, which reg 27(2) names.
- A provision row for SI 2012/2885 Sch 2 Part 3 (paras 4 to 11, the premium conditions) or Sch 1 paras 14, 15 and 24.
- A provision row for any amending instrument behind an earlier year's amount: SI 2015/2041, SI 2017/1305, SI 2025/39 and SI 2026/27; SSI 2016/81 and SSI 2025/24; WSI 2014/66, WSI 2020/16 and WSI 2021/34. Some appear only as mentions, in legislation.gov.uk commentaries inside source XML and in council scheme documents.
- Point-in-time versions. The release's sources for Sch 2 paras 2 and 3 hold only the current text: Wales from 2026-01-26 and England from 2026-02-13. They contain no earlier amount.

So every item this release can source waits only on that approval. The Scottish child amount, the Scottish tariff and every pre-2026-27 version also need an approved corpus ingest and a new release pin before an encoder can bind them.

### Proposed module and corpus targets

Use the proposed module paths and corpus selectors below, with each provision's official identifier and version.

| Proposed module path | Corpus selector | State on rulespec-uk `main` | Encoder-ready on this pin? |
| --- | --- | --- | --- |
| `uk/regulations/uksi/2012/2885/schedule/2/part/1/paragraph/2.yaml` | `uk/regulation/uksi/2012/2885/schedule/2/part/1/paragraph/2` | absent | yes, for 2026-27 |
| `uk/regulations/uksi/2012/2885/schedule/2/part/2/paragraph/3.yaml` | `uk/regulation/uksi/2012/2885/schedule/2/part/2/paragraph/3` | absent | yes, para 3(b) |
| `uk/regulations/uksi/2012/2885/schedule/1/paragraph/6.yaml` | `uk/regulation/uksi/2012/2885/schedule/1/paragraph/6` | `status: deferred` (commit `465f5835`, #153): "The aggregate depends on Schedule 2 paragraph 2, paragraph 3, and Parts 3 and 4 amounts, for which no executable canonical imports are supplied." No rules, no tests. | yes, with the typed inputs below |
| `uk/regulations/uksi/2012/2885/schedule/1/paragraph/37.yaml` (owned by #483 step 3a) | `uk/regulation/uksi/2012/2885/schedule/1/paragraph/37` | absent | yes |
| `uk/regulations/ssi/2012/319/20.yaml` | `uk/regulation/ssi/2012/319/20` | no `status` key (commit `23a0af13`, #154). It encodes (e), `transitional_family_premium_contribution` (Family, Week, 19.48), and defers `applicable_amount`: "The aggregate also requires allowances and premiums determined under Schedule 1, but no executable exports for those cross-referenced amounts are supplied." | yes, with the typed inputs below |
| `uk/regulations/ssi/2012/319/schedule/1/paragraph/3.yaml` | `uk/regulation/ssi/2012/319/schedule/1/paragraph/3` | absent | no: no corpus row |
| `uk/regulations/ssi/2012/319/27.yaml` (reg 27(2) owned by #483 step 11(b); #432 and #474 cover reg 27(1)) | `uk/regulation/ssi/2012/319/27` | absent | no: no corpus row |
| `uk/regulations/wsi/2013/3029/schedule/2/paragraph/2.yaml` | `uk/regulation/wsi/2013/3029/schedule/2/paragraph/2` | present (commit `f364d7e8`, #155): both table amounts 87.88 from `0001-01-01` | 2026-27 only; history needs ingest |
| `uk/regulations/wsi/2013/3029/schedule/2/paragraph/3.yaml` | `uk/regulation/wsi/2013/3029/schedule/2/paragraph/3` | present (commit `f364d7e8`, #155): 20.22 from `0001-01-01` | 2026-27 only; history needs ingest |
| `uk/regulations/wsi/2013/3029/schedule/1/paragraph/31.yaml` | `uk/regulation/wsi/2013/3029/schedule/1/paragraph/31` | present (commit `f2e69b99`, #160): £1 per £500 or part over 10,000, capital counted up to 16,000, from `0001-01-01` | no change for these cases |

The Welsh paragraph 2 and 3 modules agree with policyengine-uk for 2026-27 and cannot reproduce 2021-22: they return 87.88 and 20.22 for every date, while policyengine-uk's Case 13 expects 66.90 and 17.45 for a 2021-22 week. WSI 2021/34 reg 5 amended Sch 2 para 1 and Part 4 for 2021-22 and left paras 2 and 3 unchanged.

## Operative source

Official sources, checked for the companion cases (fetched 31 October and 1 November 2026):

- https://www.legislation.gov.uk/uksi/2012/2885/schedule/1/paragraph/6 and https://www.legislation.gov.uk/uksi/2012/2885/schedule/2 (in force from 2026-02-13)
- https://www.legislation.gov.uk/uksi/2012/2885/schedule/1/paragraph/37 and https://www.legislation.gov.uk/uksi/2012/2885/regulation/11
- https://www.legislation.gov.uk/uksi/2026/27/made, https://www.legislation.gov.uk/uksi/2025/39/made, https://www.legislation.gov.uk/uksi/2017/1305/regulation/7/made, https://www.legislation.gov.uk/uksi/2015/2041/made
- https://www.legislation.gov.uk/ssi/2012/319/regulation/20, https://www.legislation.gov.uk/ssi/2012/319/regulation/27, https://www.legislation.gov.uk/ssi/2012/319/regulation/40 and https://www.legislation.gov.uk/ssi/2012/319/schedule/1 (in force from 2026-04-01)
- https://www.legislation.gov.uk/ssi/2016/81/made
- https://www.legislation.gov.uk/wsi/2013/3029/schedule/1/paragraph/1, https://www.legislation.gov.uk/wsi/2013/3029/schedule/1/paragraph/31, https://www.legislation.gov.uk/wsi/2013/3029/schedule/2 and https://www.legislation.gov.uk/wsi/2013/3029/regulation/30 (in force from 2026-01-26)
- https://www.legislation.gov.uk/wsi/2020/16/made and https://www.legislation.gov.uk/wsi/2021/34/made

The England and Scotland provision quotations come from legislation.gov.uk, in the versions in force on 30 April 2026, and the amending-instrument quotations from the made versions. The Wales quotations and England's reg 11(2) come from the pinned corpus rows. England's Sch 1 para 37 corpus row has the same words without the (a) and (b) labels.

## Outputs and companion cases

### Required outputs

England, encoder-ready on this pin:

1. `uk:regulations/uksi/2012/2885/schedule/2/part/1/paragraph/2#child_or_young_person_amount` (Person, Money, Week, GBP): 87.88 in either period of the table, 0 outside both. Take the two period Judgments as inputs, with the names the Welsh paragraph 2 module uses: `person_is_between_birth_and_day_before_first_monday_in_september_after_sixteenth_birthday` and `person_is_between_first_monday_in_september_after_sixteenth_birthday_and_day_before_twentieth_birthday`. The 87.88 version starts on 2026-04-01: SI 2026/27 reg 1(3) applies the instrument "in relation to council tax reduction schemes made by billing authorities for financial years beginning on or after 1st April 2026", and reg 6(3) substitutes "£87.88" for "£84.66".
2. `uk:regulations/uksi/2012/2885/schedule/2/part/2/paragraph/3#family_premium` (Family, Money, Week, GBP): nil in respect of a reduction week that begins after 1 May 2016 (para 3(b)). Reduction weeks begin on a Monday, so this version starts on Monday 2 May 2016. Do not encode para 3(a) from the current text. It reads £20.22 because the annual amending regulations substitute its figure each year (SI 2025/39 reg 6(4): "for “£19.15” substitute “£19.48”"; SI 2026/27 reg 6(4): "for “£19.48” substitute “£20.22”"). It does not give the amount councils used in April 2016.
3. `uk:regulations/uksi/2012/2885/schedule/1/paragraph/6#applicable_amount_for_pensioner` (Person, Money, Week, GBP). Re-encode the deferred module in place and drop the deferral. Encode the aggregate as the Welsh Sch 1 para 1 module encodes its own: the sum of four typed inputs. Type each input as Money, GBP a week:
   - `personal_allowance_amount`, for para 6(1)(a): the SI 2012/2885 Sch 2 Pt 1 para 1 amount. The pin holds that row (above), but rulespec-uk has no module for it; #378 queues one. Once #378's module lands, import its output instead.
   - `child_or_young_person_amounts`, for para 6(1)(b): the sum of output 1 over each child or young person who is a member of the applicant's family. Output 1 gives a Person's amount and this input takes the family total, so supply it as a typed input. Import it instead only if RuleSpec can sum a Person output over the family's members; we did not check whether it can.
   - `family_premium_amount`, for para 6(1)(c): output 2. Import output 2 if a Family-entity import binds to this Person-entity aggregate; otherwise supply it as a typed input.
   - `applicable_premiums_amount`, for para 6(1)(d): the premiums under Sch 2 Parts 3 and 4. The pin holds Part 4 (the amounts) but not Part 3 (paras 4 to 11, the conditions), so this input stays typed. #403 queues the carer premium.
4. `uk:regulations/uksi/2012/2885/schedule/1/paragraph/37#pensioner_weekly_tariff_income_from_capital` (Person, Money, Week, GBP), the output name in #483 step 3a: £1 for each £500, and £1 for any part of £500, by which capital exceeds £10,000, with capital counted up to £16,000. Give 0 where para 13 or para 14 applies, the precondition #483 step 3a sets out. Encode it once, under #483.

Scotland:

5. `uk:regulations/ssi/2012/319/schedule/1/paragraph/3#child_or_young_person_amount` (Person, Money, Week, GBP): 109.85 in either period of the table, 0 outside both; the version starts on 2026-04-01. This output needs an approved ingest of SSI 2012/319 Sch 1 para 3 and a new pin first.
6. `uk:regulations/ssi/2012/319/20#applicable_amount` (Family, Money, Week, GBP): the aggregate of (a), (b), (d) and (e). The pin holds reg 20, so an approved encoder can complete it now:
   - (a): import `uk:regulations/ssi/2012/319/schedule/1/paragraph/2#applicable_amount_for_regulation_20_a` (Family, Money, Week, GBP), which `main` already encodes.
   - (b): typed input `child_or_young_person_amounts` (Money, GBP a week), the sum of output 5 over each child or young person in the applicant's family. It stays typed until output 5 exists.
   - (d): typed input `disability_premiums_amount` (Money, GBP a week), the premiums under Sch 1 Parts 3 and 4. The pin holds neither Part.
   - (e): the module's own `transitional_family_premium_contribution`.
7. `uk:regulations/ssi/2012/319/27#weekly_tariff_income` (Person, Money, Week, GBP): £1 for each £500 by which capital exceeds £10,000, and £1 for any part of that excess that is not a complete £500, with no ceiling. Reg 40 separately ends entitlement above £16,000. #483 step 11(b) owns the reg 27(2) module, with its Pension Credit precondition (regs 24 to 26); #432 and #474 encode other parts of reg 27. Sign reg 27 once. This output needs an approved ingest of reg 27 and a new pin first.

Wales, history:

8. `uk:regulations/wsi/2013/3029/schedule/2/paragraph/2#child_or_young_person_amount` and `uk:regulations/wsi/2013/3029/schedule/2/paragraph/3#family_amount_with_child_or_young_person`. Replace each `0001-01-01` version with dated versions, so that a 2021-22 reduction week gives 66.90 and 17.45 and a 2026-27 week gives 87.88 and 20.22. The pin holds only the 2026 text, so each earlier version needs its point-in-time source or its amending instrument ingested first. Dating the versions also changes the modules' existing tests, which use the week of 5 January 2026, a week in the 2025-26 scheme year. Move those tests to the 2026-27 week of companion W2.

For the ingest, policyengine-uk's parameter files give these dated weekly values and cite a point-in-time legislation.gov.uk version for each (`policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/pensioners/applicable_amount/child_or_young_person.yaml` and `family_premium.yaml`). They show which versions to fetch; the encoder must take every amount from the ingested law, not from this table.

| From | Sch 2 para 2 | Sch 2 para 3 | policyengine-uk's reference |
| --- | ---: | ---: | --- |
| 2014-04-01 | 66.33 | 17.40 | WSI 2013/3029 Sch 2 as in force on 30 April 2014 (para 2 as WSI 2014/66 amended it; para 3 unchanged for 2014-15) |
| 2015-04-01 | 66.90 | 17.45 | as in force on 30 April 2015; WSI 2020/16 reg 8 and WSI 2021/34 reg 5 leave both unchanged for 2020-21 and 2021-22 |
| 2022-04-01 | 70.80 | 17.85 | as in force on 30 April 2022 |
| 2023-04-01 | 77.78 | 18.53 | as in force on 30 April 2023 |
| 2024-04-01 | 83.24 | 19.15 | as in force on 30 April 2024 |
| 2025-04-01 | 84.66 | 19.48 | as in force on 30 April 2025 |
| 2026-04-01 | 87.88 | 20.22 | as in force on 30 April 2026 |

### How the cases map

The YAML expected values come from the legislation, not from policyengine-uk output. The child file says "We multiply each weekly amount by 52", and the tariff file writes its weekly amounts times 52, so each RuleSpec weekly value below equals the YAML amount divided by 52. Each YAML case names its financial year, so a YAML `period` of Y maps to a reduction week in the scheme year that starts on 1 April of Y: the week of Monday 6 April 2026 to Sunday 12 April 2026 for 2026, and of Monday 5 April 2021 to Sunday 11 April 2021 for 2021. Every person aged 72 or 80 in the YAML reached State Pension age before 1 April 2021, so councils use a personal allowance of 256.00 for a single applicant and 383.35 for a couple: rows (1) and (2) of SI 2012/2885 Sch 2 para 1, the two rows of WSI 2013/3029 Sch 2 para 1, and rows (1)(b) and (2)(b) of SSI 2012/319 Sch 1 para 2. Inputs and outputs appear as the YAML writes them.

### England companions (encoder-ready on this pin)

From `council_tax_reduction_pensioner_child_amounts.yaml`:

- **E1, Case 1** (period 2026). Inputs: pensioner `age: 72`, `state_pension: 12_570`; benunit `would_claim_pc: false`, `would_claim_uc: false`; household `country: ENGLAND`, `local_authority: MAIDSTONE`, `council_tax: 2_000`, `savings: 0`. YAML outputs: `council_tax_reduction_pensioner: true`, `council_tax_reduction_pensioner_child_amounts: 0`, `council_tax_reduction_pensioner_family_premium: 0`, `council_tax_reduction_applicable_amount: 256.00 * 52`. RuleSpec: `applicable_amount_for_pensioner` with `personal_allowance_amount` 256.00 and the other three inputs 0 gives **256.00**.
- **E2, Case 2** (period 2026). Inputs: as Case 1, plus child `age: 10` in the benunit and household. YAML outputs: `council_tax_reduction_pensioner: true`, `is_child_or_young_person_for_council_tax_reduction: [false, true]`, `council_tax_reduction_pensioner_child_amounts: 4_569.76`, `council_tax_reduction_pensioner_family_premium: 0`, `council_tax_reduction_applicable_amount: 17_881.76`. RuleSpec: `child_or_young_person_amount` for the child, first period true and second false, gives **87.88**; `family_premium` for a family with a child gives **0**; `applicable_amount_for_pensioner` with inputs 256.00, 87.88, 0 and 0 gives **343.88**.
- **E3, Case 3** (period 2026). Inputs: pensioner `age: 72`, `state_pension: 12_570`; student `age: 17`, `current_education: UPPER_SECONDARY`, `age_started_or_accepted_current_education_or_training: 16`; benunit `would_claim_pc: false`, `would_claim_uc: false`; household `country: ENGLAND`, `local_authority: MAIDSTONE`, `council_tax: 2_000`, `savings: 0`. YAML outputs: `is_qualifying_young_person_for_child_benefit: [false, true]`, `is_child_or_young_person_for_council_tax_reduction: [false, true]`, `council_tax_reduction_pensioner_child_amounts: 87.88 * 52`, `council_tax_reduction_applicable_amount: (256.00 + 87.88) * 52`. RuleSpec: a 17-year-old in the week of 6 April 2026 has passed the first Monday in September after their 16th birthday, so first period false and second true gives **87.88**; the aggregate gives **343.88**.
- **E4, Case 8** (period 2026). Inputs: older `age: 74`, `state_pension: 12_000`; younger `age: 72`, `state_pension: 9_000`; child_1 `age: 8`; child_2 `age: 12`; benunit `would_claim_pc: false`, `would_claim_uc: false`; household `country: ENGLAND`, `local_authority: MAIDSTONE`, `council_tax: 2_000`, `savings: 0`. YAML outputs: `council_tax_reduction_pensioner_child_amounts: 9_139.52`, `council_tax_reduction_applicable_amount: 29_073.72`. RuleSpec: `child_or_young_person_amount` gives **87.88** for each child; `applicable_amount_for_pensioner` with inputs 383.35, 175.76, 0 and 0 gives **559.11**.

From `council_tax_reduction_pensioner_tariff_income.yaml`, for #483's para 37 module. Unless a case says otherwise, each has pensioner `age: 72`, `state_pension: 12_570`; benunit `would_claim_pc: false`, `would_claim_uc: false`; household `country: ENGLAND`, `local_authority: MAIDSTONE`, `council_tax: 2_000`; period 2026.

- **E5, Case 1**: `savings: 10_000`. YAML: `council_tax_reduction_tariff_income: 0`, `council_tax_reduction_applicable_income: 12_570`. RuleSpec weekly tariff: **0**.
- **E6, Case 2**: `savings: 10_001`. YAML: `council_tax_reduction_tariff_income: 1 * 52`, `council_tax_reduction_applicable_income: 12_570 + 52`. RuleSpec: **1**.
- **E7, Case 3**: `savings: 16_000`. YAML: `council_tax_reduction_tariff_income: 624`, `council_tax_reduction_applicable_income: 13_194`, `council_tax_reduction: 2_000`. RuleSpec: **12**.
- **E8, Case 10**: `state_pension: 15_000`, `savings: 16_000`. YAML: `council_tax_reduction_tariff_income: 624`, `council_tax_reduction_applicable_income: 15_138`, `council_tax_reduction: 1_634.80`. RuleSpec: **12**.
- **E9, Case 11**: `savings: 20_000`. YAML: `council_tax_reduction_tariff_income: 624`, `council_tax_reduction: 0`. RuleSpec: **12**, because para 37 counts capital "not exceeding £16,000"; reg 11(2) excludes the applicant, whose capital exceeds £16,000.
- **E10, Case 17**: `state_pension: 0`, `pension_contributions: 3_000`, `savings: 10_001`. YAML: `council_tax_reduction_tariff_income: 52`, `council_tax_reduction_applicable_income: 52`. RuleSpec: **1**. The module takes capital only, so pension contributions cannot reduce it.
- **E11, Case 12**: `state_pension: 8_000`, benunit `would_claim_pc: true`, `savings: 16_000`. YAML: `in_receipt_of_guarantee_credit: true`, `council_tax_reduction_assessable_capital: 0`, `council_tax_reduction_tariff_income: 0`, `council_tax_reduction_applicable_income: 0`, `council_tax_reduction: 2_000`. RuleSpec: para 13 applies (guarantee credit), so the precondition gives **0**.
- **E12, Case 13**: pensioner `age: 90`, `state_pension: 12_000`, `private_pension_income: 1_500`; benunit `claims_all_entitled_benefits: true` and no `would_claim_*` inputs; household `tenure_type: OWNED_OUTRIGHT`, `savings: 16_000`. YAML: `in_receipt_of_savings_credit_only: true`, `council_tax_reduction_tariff_income: 0`, `council_tax_reduction_applicable_income: 14_247.02`. RuleSpec: para 14 applies (savings credit only), so the precondition gives **0**.

### Wales companions (existing modules)

From `council_tax_reduction_pensioner_child_amounts.yaml`. Each case has household `country: WALES`, `local_authority: CARDIFF`.

- **W1, Case 6** (period 2026). Inputs: pensioner `age: 72`, `state_pension: 12_570`; benunit `would_claim_pc: false`, `would_claim_uc: false`; household `council_tax: 2_000`, `savings: 0`. YAML: `council_tax_reduction_pensioner_child_amounts: 0`, `council_tax_reduction_pensioner_family_premium: 0`, `council_tax_reduction_applicable_amount: 256.00 * 52`. RuleSpec: `pensioner_weekly_applicable_amount` with `personal_allowance_amount` 256.00 and the other inputs 0 gives **256.00**.
- **W2, Case 7** (period 2026). Inputs: as Case 6, plus child `age: 10`. YAML: `council_tax_reduction_pensioner_child_amounts: 4_569.76`, `council_tax_reduction_pensioner_family_premium: 1_051.44`, `council_tax_reduction_applicable_amount: 18_933.20`. RuleSpec, week of 6 April 2026: `child_or_young_person_amount` **87.88**; `family_amount_with_child_or_young_person` **20.22**; `pensioner_weekly_applicable_amount` with inputs 256.00, 87.88, 20.22 and 0 gives **364.10**.
- **W3, Case 13** (period 2021). Inputs: pensioner `age: 72`; child `age: 10`; benunit `would_claim_pc: false`, `would_claim_uc: false`; household `council_tax: 2_000`, `savings: 0`. YAML: `council_tax_reduction_pensioner_child_amounts: 66.90 * 52`, `council_tax_reduction_pensioner_family_premium: 17.45 * 52`. RuleSpec, week of 5 April 2021: `child_or_young_person_amount` **66.90**; `family_amount_with_child_or_young_person` **17.45**. Today's modules return 87.88 and 20.22, so this case fails until output 8's dated versions exist.
- **W4, Case 16** (period 2026). Inputs: grandmother `age: 80`, `is_household_head: true`; mother `age: 45`, `is_parent: true`, `is_household_head: false`; father `age: 46`, `is_parent: true`, `is_household_head: false`; child `age: 10`, `is_household_head: false`; benunit `would_claim_uc: false`, `would_claim_pc: false`; household `council_tax: 1_800`, `savings: 0`. YAML: `council_tax_reduction_head_applies_alone: true`, `council_tax_reduction_pensioner: true`, `council_tax_reduction_pensioner_child_amounts: 0`, `council_tax_reduction_pensioner_family_premium: 0`. RuleSpec: with no child or young person in the grandmother's family, `family_amount_with_child_or_young_person` gives **0** and the child amounts sum to **0**. This mapping rests on policyengine-uk's reading that the ten-year-old belongs to their parents' family, not to the grandmother's.

From `council_tax_reduction_pensioner_tariff_income.yaml`, for the Sch 1 para 31 module. Each case has benunit `would_claim_pc: false`, `would_claim_uc: false` (Case 14: `would_claim_uc: false` only); household `country: WALES`, `local_authority: CARDIFF`, `council_tax: 2_000`; period 2026.

- **W5, Case 7**: pensioner `age: 72`, `state_pension: 12_570`; `savings: 10_000`. YAML: `council_tax_reduction_tariff_income: 0`, `council_tax_reduction_applicable_income: 12_570`. RuleSpec `pensioner_weekly_income_from_capital`: **0**.
- **W6, Case 8**: as Case 7 with `savings: 10_001`. YAML: `council_tax_reduction_tariff_income: 1 * 52`, `council_tax_reduction_applicable_income: 12_570 + 52`. RuleSpec: **1**.
- **W7, Case 9**: as Case 7 with `savings: 16_000`. YAML: `council_tax_reduction_tariff_income: 12 * 52`, `council_tax_reduction_applicable_income: 12_570 + 12 * 52`, `council_tax_reduction: 2_000`. RuleSpec: **12**.
- **W8, Case 16**: as Case 7 with `savings: 20_000`. YAML: `council_tax_reduction_tariff_income: 624`, `council_tax_reduction: 0`. RuleSpec: **12**, because para 31 counts capital "not exceeding £16,000"; reg 30 excludes the applicant, whose capital exceeds £16,000.
- **W9, Case 14**: earner `age: 40`, `employment_income: 15_000`; `savings: 12_000`. YAML: `council_tax_reduction_pensioner: false`, `council_tax_reduction_tariff_income: 0`. RuleSpec: `applicant_is_pensioner` false gives **0**.

### Scotland companions

From `council_tax_reduction_pensioner_child_amounts.yaml`. Each case has household `country: SCOTLAND`, `local_authority: GLASGOW_CITY`, `council_tax: 2_000`, `savings: 0`; benunit `would_claim_pc: false`, `would_claim_uc: false`; period 2026.

- **S1, Case 4**: pensioner `age: 72`, `state_pension: 12_570`. YAML: `council_tax_reduction_pensioner_child_amounts: 0`, `council_tax_reduction_applicable_amount: 256.00 * 52`. RuleSpec: reg 20 `applicable_amount` with (a) 256.00, (b) 0, (d) 0 and no transitional family premium gives **256.00**. Encoder-ready with output 6's typed inputs.
- **S2, Case 5**: as Case 4, plus child `age: 10`. YAML: `council_tax_reduction_pensioner_child_amounts: 5_712.20`, `council_tax_reduction_pensioner_family_premium: 0`, `council_tax_reduction_applicable_amount: 19_024.20`. RuleSpec: Sch 1 para 3 `child_or_young_person_amount` **109.85** (blocked on ingest); reg 20 `applicable_amount` with (a) 256.00, (b) 109.85, (d) 0 and no transitional family premium gives **365.85** (encoder-ready with (b) typed).

From `council_tax_reduction_pensioner_tariff_income.yaml`, for the reg 27(2) module (blocked on ingest). Each case has benunit `would_claim_pc: false`, `would_claim_uc: false`; household `country: SCOTLAND`, `local_authority: GLASGOW_CITY`, `council_tax: 2_000`; period 2026.

- **S3, Case 4**: pensioner `age: 72`, `state_pension: 12_570`; `savings: 10_000`. YAML: `council_tax_reduction_tariff_income: 0`, `council_tax_reduction_applicable_income: 12_570`. RuleSpec weekly tariff: **0**.
- **S4, Case 5**: as Case 4 with `savings: 10_001`. YAML: `council_tax_reduction_tariff_income: 1 * 52`, `council_tax_reduction_applicable_income: 12_570 + 52`. RuleSpec: **1**.
- **S5, Case 6**: as Case 4 with `savings: 16_000`. YAML: `council_tax_reduction_tariff_income: 12 * 52`, `council_tax_reduction_applicable_income: 12_570 + 12 * 52`, `council_tax_reduction: 2_000`. RuleSpec: **12**.
- **S6, Case 15**: pensioner `age: 72`, `state_pension: 15_000`; `savings: 20_000`. YAML: `council_tax_reduction_tariff_income: 1_040`, `council_tax_reduction: 0`. RuleSpec: **20**, because reg 27(2) sets no ceiling: (20,000 − 10,000) / 500 = 20, and 20 × 52 = 1,040 a year. Reg 40 ends entitlement, because the applicant's capital exceeds £16,000.

### History companions (blocked until the amending instruments or point-in-time versions sit in a pinned release)

These cases pin the earlier-year rules. No pinned source supports them yet, so they stay outside the encoder-ready set; keep them with this issue for the run that follows the ingest. All come from `council_tax_reduction_pensioner_child_amounts.yaml`. Each has a pensioner `age: 72`, household `council_tax: 2_000`, `savings: 0` and benunit `would_claim_pc: false`, `would_claim_uc: false`. The England cases have household `country: ENGLAND`, `local_authority: MAIDSTONE`; H9 has `country: SCOTLAND`, `local_authority: GLASGOW_CITY`. Each RuleSpec value gives the weekly amount for a week in the named financial year.

- **H1, child Case 9** (2024, England): children aged 5, 7 and 9; benunit `would_claim_CTC: false`. YAML: `council_tax_reduction_pensioner_child_amounts: 8_656.96`. RuleSpec: SI 2012/2885 Sch 1 para 6(1)(b) as SI 2017/1305 reg 7 substituted it, "up to two", at 83.24: **166.48**.
- **H2, child Case 10** (2024, England): children aged 5, 7 and 9, each `is_CTC_child_element_included: true`; benunit `would_claim_CTC: true`, `is_CTC_eligible: true`. YAML: `council_tax_reduction_pensioner_child_amounts: 12_985.44`. RuleSpec: para 6(1B) and (1C), an award that includes the individual element for all three: **249.72**.
- **H3, child Case 18** (2024, England): pensioner `state_pension: 23_000`; children aged 10, 12 and 14; benunit `child_tax_credit: 9_800.95`. YAML: `is_CTC_eligible: false`, `child_tax_credit: 9_800.95`, `is_CTC_child_element_included: [false, true, true, true]`, `council_tax_reduction_pensioner_child_amounts: 12_985.44`. RuleSpec: an award with individual elements for three: **249.72**.
- **H4, child Case 19** (2024, England): pensioner `state_pension: 23_000`; children aged 10, 12 and 14; benunit `would_claim_CTC: true`. YAML: `is_CTC_eligible: false`, `child_tax_credit: 0`, `is_CTC_child_element_included: [false, true, true, true]`, `council_tax_reduction_pensioner_child_amounts: 8_656.96`. RuleSpec: a claim without an award does not engage para 6(1B), so up to two: **166.48**.
- **H5, child Case 20** (2024, England): pensioner `state_pension: 60_000`; children aged 10, 12 and 14; benunit `would_claim_CTC: true`, `is_CTC_eligible: true`. YAML: `child_tax_credit: 0`, `is_CTC_child_element_included: [false, true, true, true]`, `council_tax_reduction_pensioner_child_amounts: 12_985.44`. RuleSpec: para 6(1B)(a), an award "whether or not any amount is payable by way of such credit": **249.72**.
- **H6, child Case 11** (2025, England): children aged 5, 7 and 9. YAML: `council_tax_reduction_pensioner_child_amounts: 13_206.96`. RuleSpec: SI 2025/39 reg 5(2) removed the limit; 3 × 84.66: **253.98**.
- **H7, child Case 14** (2021, England): child aged 10. YAML: `council_tax_reduction_pensioner_child_amounts: 68.60 * 52`, `council_tax_reduction_pensioner_family_premium: 0`. RuleSpec: **68.60** and **0**.
- **H8, child Case 15** (2015, England): child aged 10. YAML: `council_tax_reduction_pensioner_child_amounts: 66.90 * 52`, `council_tax_reduction_pensioner_family_premium: 17.45 * 52`. RuleSpec, week of 6 April 2015: **66.90** and **17.45**.
- **H9, child Case 12** (2024, Scotland): children aged 5, 7 and 9. YAML: `council_tax_reduction_pensioner_child_amounts: 16_231.80`. RuleSpec: reg 20(b) has no two-child limit; 3 × 104.05: **312.15**.
- **H10, child Case 21** (2024, England): pensioner `state_pension: 23_000`; children aged 10, 12 and 14; benunit `would_claim_CTC: false`, `is_CTC_eligible: true`, `child_tax_credit: 0`. YAML: `child_tax_credit: 0`, `is_CTC_child_element_included: [false, true, true, true]`, `council_tax_reduction_pensioner_child_amounts: 8_656.96`. RuleSpec: entitlement depends on a claim (TCA 2002 s.3(1)), so without one the family has no award, para 6(1B) does not apply and para 6(1)(b) counts up to two: **166.48**.

Wales's 2021-22 case, W3, belongs to the same ingest.

### Cases not mapped

- Child Case 17 (a working-age Welsh parent, `council_tax_reduction_applicable_amount: 4_968.60`) tests that policyengine-uk adds no pensioner amounts at working age. The working-age amount comes from WSI 2013/3029 Sch 7, outside this issue.
- Child Cases 22 and 23 set policyengine-uk's `gov.dwp.tax_credits.active` to false for 2024-25, a reform with no counterpart in the law. Case 22 checks that a reported Child Tax Credit award then counts as no award, so the family gets two child amounts (8,656.96). Case 23 enters a final award of 9,800.95, which councils count under para 6(1B)(a) and (1C), so the family gets three (12,985.44); without the reform it asks what H3 (child Case 18) already asks.

## Operative excerpts bound to the proposed targets

### SI 2012/2885 Sch 1 para 6(1) (England, pensioners)

> The applicable amount for a pensioner for a week is the aggregate of such of the following amounts as apply in his case—
> (a) an amount in respect of his personal allowance, determined in accordance with paragraph 1 of Schedule 2 to these Regulations;
> (b) an amount determined in accordance with paragraph 2 of that Schedule in respect of children or young persons who are members of his family;
> (c) if he is a member of a family of which at least one member is a child or young person, an amount determined in accordance with paragraph 3 of that Schedule (family premium);
> (d) the amount of any premiums which may be applicable to him, determined in accordance with Parts 3 and 4 of that Schedule (premiums).

### SI 2012/2885 Sch 2 para 2(1)

> The amounts specified in column (2) below in respect of each person specified in column (1) are the amounts, for the relevant period specified in column (1), specified for the purposes of paragraph 6(1)(b) of Schedule 1.
> Person in respect of the period— beginning on that person's date of birth and ending on the day preceding the first Monday in September following that person's sixteenth birthday; | £87.88;
> beginning on the first Monday in September following that person's sixteenth birthday and ending on the day preceding that person's twentieth birthday. | £87.88.

### SI 2012/2885 Sch 2 para 3

> The amount for the purposes of paragraph 6(1)(c) of Schedule 1 in respect of a family of which at least one member is a child or young person—
> (a) is £20.22 in respect of a reduction week which begins in the period beginning with 1st April 2016 and ending with 30th April 2016;
> (b) is nil in respect of a reduction week which begins after 1st May 2016.

### SI 2012/2885 Sch 1 para 37

> The capital of an applicant, calculated in accordance with this Part, is to be treated as if it were a weekly income of—
> (a) £1 for each £500 in excess of £10,000 but not exceeding £16,000; and
> (b) £1 for any excess which is not a complete £500.

### SI 2012/2885 reg 11(2) (corpus row)

> Pensioners whose capital exceeds £16,000 are a class of person prescribed for the purposes of that paragraph and which must not be included in an authority’s scheme.

### SI 2026/27 reg 1(3) and reg 6(3) and (4)

> These Regulations apply in relation to council tax reduction schemes made by billing authorities for financial years beginning on or after 1st April 2026.

> In column (2) of the Table in paragraph 2(1) (child or young person amounts), in paragraphs (a) and (b), for “£84.66” substitute “£87.88”.

> In paragraph 3(a) (family premium) for “£19.48” substitute “£20.22”.

### SI 2017/1305 reg 7 (England, 2018-19 to 2024-25; history companions)

> (a) for sub-paragraph (1)(b), substitute— (b) an amount determined in accordance with paragraph 2 of that Schedule in respect of up to two individuals who are either children or young persons and who are members of his family;
> (1B) Sub-paragraph (1C) applies where— (a) (whether or not as part of a tax credit couple as defined in section 3(5A) of the Tax Credits Act 2002) the applicant has an award of child tax credit (whether or not any amount is payable by way of such credit) in respect of a child or young person who is a member of his family; and (b) the total amount to be included in the applicable amount under sub-paragraph (1)(b) as substituted by sub-paragraph (1C) would be higher than the total amount that would be included under paragraph (1)(b) apart from sub-paragraph (1C).
> (1C) Where this paragraph applies, for sub-paragraph (1)(b) substitute— (b) an amount determined in accordance with paragraph 2 of that Schedule in respect of any child or young person who is a member of his family and in respect of whom the individual element of child tax credit has been included in the determination of the maximum rate of that credit;

### SI 2025/39 reg 5(2)

> In paragraph 6 (applicable amounts)— (a) in sub-paragraph (1)(b) for the words from “up to two individuals” to the end substitute “children or young persons who are members of his family”; (b) omit sub-paragraphs (1A) to (1C).

### SSI 2012/319 reg 20 (Scotland, pension age)

> An applicant's applicable amount is the aggregate of each of the following amounts which apply in the applicant's case—
> (a) an amount in respect of the applicant's personal allowance, determined in accordance with paragraph 2 of Schedule 1;
> (b) an amount in respect of any child or young person who is a member of the applicant's family, determined in accordance with paragraph 3 of Schedule 1 (personal allowances);
> (c) . . .
> (d) the amount of any premium which may be applicable to the applicant, determined in accordance with Parts 3 and 4 of Schedule 1 (disability premiums), and
> (e) the amount of £19.48 if the applicant is entitled to an amount ("a transitional family premium") by virtue of regulation 2 (transitional provision) of the Council Tax Reduction (Scotland) Amendment Regulations 2016.

### SSI 2012/319 Sch 1 para 3

> The amount specified in column (2) below in respect of each person specified in column (1) is, for the relevant period specified in column (1), the amount specified for the purposes of regulation 20(b) (applicable amount)—
> A person in respect of the period— (a) beginning on that person's date of birth and ending on the day preceding the first Monday in September following that person's sixteenth birthday; | £109.85
> (b) beginning on the first Monday in September following that person's sixteenth birthday and ending on the day preceding that person's twentieth birthday. | £109.85

### SSI 2012/319 reg 27(2)

> For the purposes of these Regulations and subject to regulations 31(11)(b) (calculation of weekly income: capital disregards) and 41(2) (calculation of capital: capital to be disregarded), an applicant's capital is to be treated as if it was a weekly income of—
> (a) £1 for each £500 in excess of £10,000; and
> (b) £1 for any part of that excess which is not a complete £500.

### SSI 2012/319 reg 40

> No person is entitled to council tax reduction if that person's capital exceeds £16,000.

### SSI 2016/81 reg 18(1) and (2) (Scotland ends the family premium; history)

> In regulation 20 (applicable amount), omit paragraph (c).
> In Schedule 1, omit Part 2 (family premium).

### WSI 2013/3029 Sch 1 para 1(1) (Wales, pensioners; corpus row)

> The applicable amount for a pensioner for a week is the aggregate of such of the following amounts as apply in that person’s case—
> an amount in respect of the person’s personal allowance or if that person is a member of a couple, an amount in respect of both of them, determined in accordance with paragraph 1 of Schedule 2 (personal allowance);
> an amount in respect of any child or young person who is a member of the person’s family, determined in accordance with paragraph 2 of that Schedule (child or young person amounts);
> if the person is a member of a family of which at least one member is a child or young person, an amount determined in accordance with paragraph 3 of that Schedule (family premium);
> the amount of any premiums which may be applicable to the person, determined in accordance with Parts 3 and 4 of that Schedule (premiums).

### WSI 2013/3029 Sch 2 para 2(1) (corpus row)

> The amounts specified in column (2) below in respect of each person specified in column (1) are the amounts, for the relevant period specified in column (1), specified for the purposes of paragraph 1(1)(b) of Schedule 1.
> | Person in respect of the period — | |
> | beginning on that person’s date of birth and ending on the day preceding the first Monday in September following that person’s sixteenth birthday; | £87.88; |
> | beginning on the first Monday in September following that person’s sixteenth birthday and ending on the day preceding that person’s twentieth birthday. | £87.88. |

### WSI 2013/3029 Sch 2 para 3 (corpus row)

> The amount for the purposes of paragraph 1(1)(c) of Schedule 1 in respect of a family of which at least one member is a child or young person is £20.22.

### WSI 2013/3029 Sch 1 para 31 (corpus row)

> The capital of an applicant who is a pensioner, calculated in accordance with this Schedule, is to be treated as if it were a weekly income of—
> £1 for each £500 in excess of £10,000 but not exceeding £16,000; and
> £1 for any excess which is not a complete £500.

### WSI 2013/3029 reg 30(1) (corpus row)

> The class of person described in this regulation consists of any person whose capital exceeds £16,000.

### WSI 2021/34 reg 1(3) and reg 5 (Wales, 2021-22)

> These Regulations apply in relation to a council tax reduction scheme made for a financial year beginning on or after 1 April 2021.

> In Schedule 2 (applicable amounts: pensioners)— (a) in column (2) of the Table in paragraph 1 (personal allowance)— ... (b) in the Table in Part 4 (amounts of premium specified in Part 3), in the second column— ...

Regulation 5 amends paragraph 1 and Part 4 only; it does not touch paragraphs 2 or 3.

### review_finding (paste as-is)

> Encode the pension-age Council Tax Reduction child amounts, family premium and applicable amount at `uk/regulations/uksi/2012/2885/schedule/2/part/1/paragraph/2.yaml`, `uk/regulations/uksi/2012/2885/schedule/2/part/2/paragraph/3.yaml`, `uk/regulations/uksi/2012/2885/schedule/1/paragraph/6.yaml` and `uk/regulations/ssi/2012/319/20.yaml`, for parity with PolicyEngine/policyengine-uk#1933. Sign England's Sch 1 para 37 and Scotland's reg 27(2) under rulespec-uk#483, with the tariff cases below. Cite corpus `uk/regulation/uksi/2012/2885/schedule/1/paragraph/6`, `uk/regulation/uksi/2012/2885/schedule/2/part/1/paragraph/2`, `uk/regulation/uksi/2012/2885/schedule/2/part/2/paragraph/3`, `uk/regulation/uksi/2012/2885/schedule/1/paragraph/37` and `uk/regulation/ssi/2012/319/20`. SI 2012/2885 says:
>
> > The applicable amount for a pensioner for a week is the aggregate of such of the following amounts as apply in his case—
> > (a) an amount in respect of his personal allowance, determined in accordance with paragraph 1 of Schedule 2 to these Regulations;
> > (b) an amount determined in accordance with paragraph 2 of that Schedule in respect of children or young persons who are members of his family;
> > (c) if he is a member of a family of which at least one member is a child or young person, an amount determined in accordance with paragraph 3 of that Schedule (family premium);
> > (d) the amount of any premiums which may be applicable to him, determined in accordance with Parts 3 and 4 of that Schedule (premiums).
>
> Sch 2 para 3 says:
>
> > (b) is nil in respect of a reduction week which begins after 1st May 2016.
>
> Sch 1 para 37 says:
>
> > (a) £1 for each £500 in excess of £10,000 but not exceeding £16,000; and
> > (b) £1 for any excess which is not a complete £500.
>
> Required outputs, each with verbatim proof excerpts from the corpus provision:
>
> 1. `uk:regulations/uksi/2012/2885/schedule/2/part/1/paragraph/2#child_or_young_person_amount` (Person, Money, Week, GBP): 87.88 in either period of the table and 0 outside both, from 2026-04-01.
> 2. `uk:regulations/uksi/2012/2885/schedule/2/part/2/paragraph/3#family_premium` (Family, Money, Week, GBP): nil for a reduction week that begins after 1 May 2016. Leave para 3(a) out of the encoding, because the annual amending regulations substitute its figure each year.
> 3. `uk:regulations/uksi/2012/2885/schedule/1/paragraph/6#applicable_amount_for_pensioner` (Person, Money, Week, GBP): the sum of `personal_allowance_amount`, `child_or_young_person_amounts`, `family_premium_amount` and `applicable_premiums_amount`.
> 4. `uk:regulations/ssi/2012/319/20#applicable_amount` (Family, Money, Week, GBP): the aggregate of (a) `applicable_amount_for_regulation_20_a`, (b) `child_or_young_person_amounts`, (d) `disability_premiums_amount` and (e) this module's `transitional_family_premium_contribution`.
> 5. `uk:regulations/uksi/2012/2885/schedule/1/paragraph/37#pensioner_weekly_tariff_income_from_capital` (Person, Money, Week, GBP), under #483 step 3a: 0 where para 13 or para 14 applies.
>
> Take England's Sch 2 Parts 3 and 4 amounts, its personal allowance, and the two period Judgments of output 1 as supplied inputs. For Scotland's output 4, import `uk:regulations/ssi/2012/319/schedule/1/paragraph/2#applicable_amount_for_regulation_20_a`; supply `child_or_young_person_amounts` and `disability_premiums_amount` as typed inputs and use this module's `transitional_family_premium_contribution`. Scotland's Sch 1 para 3 amount and reg 27(2) tariff need an approved ingest and a new pin first, because the pinned release holds neither. Earlier years need the amending instruments or point-in-time versions in a pinned release.
>
> After that ingest and new pin, date the Welsh outputs `uk:regulations/wsi/2013/3029/schedule/2/paragraph/2#child_or_young_person_amount` and `uk:regulations/wsi/2013/3029/schedule/2/paragraph/3#family_amount_with_child_or_young_person`. Replace their `0001-01-01` versions with dated versions from the ingested law. Move their existing tests dated 5 January 2026 to the week of 6 April 2026, where the outputs remain 87.88 and 20.22.
>
> Companion tests (reduction week of Monday 6 April 2026; values computed by hand from the text):
>
> - E2. Child aged 10: `child_or_young_person_amount` 87.88; `family_premium` 0; `applicable_amount_for_pensioner` with 256.00, 87.88, 0 and 0 gives 343.88.
> - E1. No child: `applicable_amount_for_pensioner` with 256.00 and three zeros gives 256.00.
> - S2. Scotland, child aged 10: reg 20 `applicable_amount` with (a) 256.00, (b) 109.85, (d) 0 and no transitional family premium gives 365.85.
> - E5, E6, E7, E9. Capital 10,000 gives 0; 10,001 gives 1; 16,000 gives 12; 20,000 gives 12, because para 37 counts capital "not exceeding £16,000".
> - E11. Guarantee credit applies under para 13, capital 16,000: gives 0.
> - S6. Scotland, reg 27(2), once ingested: capital 20,000 gives 20, because reg 27(2) sets no ceiling and reg 40 ends entitlement separately.
>
> - W3 (history; blocked until ingest and a new pin). For the reduction week of Monday 5 April 2021, a family with a ten-year-old gets `child_or_young_person_amount` 66.90 and `family_amount_with_child_or_young_person` 17.45.

## Completion boundary

Create or link the tracking ticket, and keep the Axiom follow-up in the PolicyEngine PR, whose body carries `axiom: <rulespec-uk issue> queued` until this issue has a number.

Track the blocked work with the pinned target, proposed modules, corpus selectors, operative excerpts and companion cases above. Encoding, corpus ingest and paired parity evidence require separate approval and completion.

Coordinate with the open issues that own neighbouring modules, so that the encoder signs each module once:

- #483 owns SI 2012/2885 Sch 1 para 37 (step 3a) and SSI 2012/319 reg 27(2) (step 11(b)); add companions E5 to E12 and S3 to S6 to those steps.
- #378 owns SI 2012/2885 Sch 2 para 1. This pin cites the row as `uk/regulation/uksi/2012/2885/schedule/2/part/1/paragraph/1`; the release has no whole-Schedule `uk/regulation/uksi/2012/2885/schedule/2` row, which #378's block names.
- #374 owns the Pension Credit routes (SI 2012/2885 Sch 1 paras 13 to 15; WSI 2013/3029 Sch 1 paras 7 to 9; SSI 2012/319 regs 24 to 26).
- #432 and #474 own other parts of SSI 2012/319 reg 27.

### What stays unproven for Scotland

We read every artifact in this release, which settles that it lacks SSI 2012/319 reg 27 and Sch 1 para 3. The following stays unproven:

- No corpus row carries the text of reg 27(2) or Sch 1 para 3. The quotations above come from legislation.gov.uk (the versions in force from 1 April 2026), not from a pinned source. So no proof atom can bind £109.85 or the uncapped tariff until an approved ingest and a new release exist.
- The release's only £109.85 is SSI 2021/249 Sch 1 para 2, the working-age child premium ("The amount specified for the purposes of regulation 35(b) (the child premium) is £109.85 for each child or young person."). Do not bind the pension-age amount to this working-age premium.
- Reg 27(2) works "subject to regulations 31(11)(b) ... and 41(2)", and the Pension Credit routes in regs 24 to 26 decide when it applies. The release holds none of those regulations, so no one has checked those interactions against a pinned source.
- Scotland's earlier years (the 2013-14 to 2025-26 amounts, the family premium's removal by SSI 2016/81, and the £19.48 transitional family premium's history) have no pinned source.
- We checked axiom-corpus `main` at `3b59339d7abcdfd58ffe1c0dc7cd468a07671e7b` (2026-10-30) and found no lock for reg 27 or Sch 1 para 3 and no UK release newer than this pin. A later ingest may change that; check again before dispatch.
- An approved encoder can complete the reg 20 aggregate and run S1 and S2 with the child amount supplied as a typed input. Paired execution must then establish parity.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Generated by Claude Code

@MaxGhenis

MaxGhenis commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator Author

Ready for hub review

Head: 20a02e0338f3e9adff69483406010e6f125d5a62 on branch claude/ctr-tariff-income-merge-gvzvw1, which starts from 06e51a8ab and has no PR. I didn't push to #2826's branch.

Commits:

  • 8af34cab merges main at 9dd44e142 as its own commit.
  • aec20b61 deletes council_tax_reduction_pensioner_tariff_income and points its tests at council_tax_reduction_tariff_income.
  • 5821ea16 removes the £16,000 cap from the Scottish pensioner tariff.
  • 20a02e03 updates the changelog fragment.

The PR body, title and Axiom #522 text are in the three comments above.

Findings and resolutions

  1. The merge. I resolved all three conflicts to main's side:
  2. One tariff income. I deleted the variable and renamed every reference: the tariff YAML, the children property file, and the applicable income docstring at line 22. The pension credit YAML had already taken main's name in the merge. Three expected values changed, each worked by hand:
    • Tariff YAML Case 14, a Welsh earner aged 40 with £12,000 of capital: main's variable gives the Welsh working-age tariff. WSI 2013/3029 Sch 6 para 33 is the reference on main's parameter, at £1 for each £250 over £6,000: (12,000 − 6,000) / 250 = 24, and 24 × 52 = 1,248, in place of 0. The inputs stay the same and the name now says what it tests. Judgment call: the variable now carries working-age tariffs, so the old nil no longer follows from the law.
    • Children property test: test_no_new_amounts_… now checks nil working-age tariff only in England, where main gives nil. The same reason applies.
    • Frozen differential (ORIGIN_MAIN): the values were from 2da212abc. On main at 9dd44e142, 18 of the 69 rows differ. They are the Welsh and Scottish working-age families with savings of £12,000, £16,000 and £8,000, in 2019, 2024 and 2026. Each differs by the working-age tariff alone: +1,248, +2,080 and +416 to applicable income, and on £8,000 the award falls by 0.2 × 416 = 83.20 (969.07 → 885.87, 1,141.20 → 1,058, 1,193.72 → 1,110.52). I replaced those rows with values computed on a 9dd44e142 worktree, and every one matches the hand arithmetic. Judgment call: invariant 3 compares with main, and main now includes Treat income derived from capital as capital in the legacy means tests #1995.
  3. The Scottish ceiling. In council_tax_reduction_tariff_income.py:88-90, the Scottish pensioner branch now counts capital up to np.inf, and the docstring and references now cite reg 27(2) and reg 40. It keeps main's scheme parameters.
    • Parameter check: the England, Wales and Scotland pensioner tariff amount, step and threshold equal the Housing Benefit pension-age values (1, 500, 10,000) on 1 April and 30 April of every year from 2013 to 2035, and in every model year from 2014 to 2035. Model year 2013 has no scheme parameters. No year differs.
    • Awards: a Scottish 72-year-old with a State Pension of £12,570 gets an award of 2,000 at £16,000 of capital and 0 at £16,500 and £20,000, on main and on this head alike. Tariff income at £16,000, £16,500 and £20,000 is 624, 624 and 624 on main, and 624, 676 and 1,040 here.
    • Main's tests: none of main's tests' expected tariff income moved; both YAML directories pass unchanged. I edited the text only of invariant 5 in test_legacy_means_test_income_from_capital_properties.py. Its 2,088 bound still holds because the generated savings stop at £20,000, which gives at most 1,040.
    • New YAML case: income_from_capital.yaml gets one two-household case, a Scottish and an English pensioner at £20,000 of capital, giving 1,040 and 624, both with an award of 0. Judgment call: tariff Cases 11 and 15 already cover the same values in the pensioner file, so I put the new case beside main's tariff tests.
  4. The text. I updated PR_BODY.md, PR_TITLE.txt and AXIOM_522.md.

Tests at 20a02e033, clean runs

  • CTR YAML directory (25 files): 386 passed.
  • gov/dwp/legacy_means_tests: 79 passed.
  • The four property files in one run with -n 4: 31 passed. That is 9 for the pension credit file, 7 for children and tariff, 9 for legacy capital income and 6 for savings-credit-only, in 666 s.
  • policyengine_uk/tests/code_health -n 4: 3,158 passed.
  • .github/check_fix_pr.py on the new title and body, against the head's diff from main: PASS, with 9 changed executable tests.
  • uvx ruff@0.17.2 format --check ., check . and check --select F811,F821 policyengine_uk, plus git diff --check 06e51a8ab..HEAD: all clean.
  • git merge-tree --write-tree --name-only HEAD origin/main (still 9dd44e142): no conflicts.

Mutation and revert checks (scratch worktree)

  • Double count. Adding council_tax_reduction_pensioner_tariff_income back on the formula line fails the old line 544 case ("Capital of exactly 16,000 is within the limit for a pensioner without Pension Credit"): applicable income is 14,162 against 13,538.
  • Scottish cap restored. Tariff Case 15 fails (1 failed, 16 passed: 624 against 1,040), and so does the new income_from_capital.yaml case (1 failed, 69 passed).
  • Main's variable, all against the tariff YAML:
    • floor for ceil: 4 failed (Cases 2, 5, 8 and 17).
    • Tariff inside the income floor: 1 failed (Case 17).
    • Wales uncapped: 1 failed (Case 16).
    • England uncapped: 1 failed (Case 11).
    • Pension Credit gate dropped: 1 failed (Case 13).

Skipped

  • No survey-data tests.
  • I didn't re-run the child-amount mutations; the child code is unchanged from 06e51a8ab, and the PR body keeps those results with their original commits.
  • I didn't recompute the 2,145-value random differential against 9dd44e142; the body names it as run at 15f986ada against 2da212abc.
  • I didn't move Add pensioner CTR child amounts and uncap Scotland's tariff income #2826's branch or open a PR.

Generated by Claude Code

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>
@MaxGhenis MaxGhenis changed the title Add child amounts and tariff income to pensioner CTR Add pensioner CTR child amounts and uncap Scotland's tariff income Nov 4, 2026
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Thanks for the approval. Since then, #1995 added council_tax_reduction_tariff_income to main, on the same line of council_tax_reduction_applicable_income where this PR added its own pensioner tariff. Keeping both would have counted a pensioner's tariff income twice.

We merged main at 9dd44e142 into this branch, resolved the three conflicted files to main's tariff income, deleted council_tax_reduction_pensioner_tariff_income and pointed its tests at main's variable. We changed main's variable in one place: it now counts all of a Scottish pensioner's capital over £10,000, as SSI 2012/319 reg 27(2) reads. The Scottish Ministers bar a reduction above £16,000 (reg 40), so no award moves. A new assertion in test_tariff_income_is_the_tariff_and_never_falls_as_capital_rises checks that councils in all three nations give no award above £16,000.

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 9dd44e142, and the description works through each changed expectation and lists the runs. Could you take another look at 87cbc397e?

@MaxGhenis
MaxGhenis requested a review from juaristi22 November 4, 2026 13:51

@juaristi22 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

MaxGhenis added a commit that referenced this pull request Nov 4, 2026
#2826 moved from 06e51a8 to 87cbc39. The merge has no conflicts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juaristi22
juaristi22 added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit abca8f8 Nov 5, 2026
20 of 21 checks passed
@juaristi22
juaristi22 deleted the claude/ctr-pensioner-children-nits-7654i7 branch November 5, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants