Repository navigation
Conversation
The pension-age Council Tax Reduction applicable amount now adds an amount for each child or young person in the family (England SI 2012/2885 Sch 1 para 6(1)(b) and Sch 2 para 2, with the 2018-19 to 2024-25 two-child limit and its Child Tax Credit exception; Wales WSI 2013/3029 Sch 2 para 2; Scotland SSI 2012/319 reg 20(b) and Sch 1 para 3) and the family premium where the scheme still has one (Wales; England and Scotland to April 2016). General-rule income now counts tariff income from capital over 10,000 (SI 2012/2885 Sch 1 para 37; WSI 2013/3029 Sch 1 para 31; SSI 2012/319 reg 27(2)), reusing the pension-age Housing Benefit tariff parameters. Four existing YAML expectations move with the law: the 16,000 capital case gains 624 a year of tariff income, and three pensioner cases with a child or young person gain the child amount. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…riff The new property tests check that tariff income is the statutory tariff and never falls as capital rises, that adding a dependent child never lowers the applicable amount, and that pensioners with no child and capital up to 10,000 and every working-age family get none of the new amounts. A frozen differential checks those households against values computed on origin/main at 2da212a. Two existing property tests move with the law: the Child Benefit test's State Pension range rises so its award stays interior above an applicable amount that now includes the children, and the Pension Credit test's recomputed general-rules income adds the statutory tariff income. Wales's 2013-14 child amount is 65.62, set by WSI 2013/112 reg 5(b). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
legislation.gov.uk serves SI 2012/2885 Schedule 2 paragraphs 2 and 3 under Parts 1 and 2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ption SI 2012/2885 Sch 1 para 6(1B)(a) asks whether the applicant has an award of Child Tax Credit "whether or not any amount is payable". The child amounts read an award only from would_claim_CTC and is_CTC_eligible, so an entered final child_tax_credit with three individual elements gave two child amounts. A positive final child_tax_credit now counts as an award too, and the claim-and-eligibility route stays for a nil-rate award. New YAML cases: the entered award (three amounts), a claim without eligibility (two), and a nil-rate award (three). Case 16's name uses "their". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SI 2012/2885 Sch 1 para 37 and WSI 2013/3029 Sch 1 para 31 count capital in excess of £10,000 "but not exceeding £16,000". SSI 2012/319 reg 27(2) has no such ceiling; reg 40 separately ends entitlement above £16,000. The tariff now caps capital only in England and Wales, so a Scottish pensioner with £20,000 has 20 * 52 = £1,040 of tariff income, not £624, and still no reduction. New YAML cases for Scotland and Wales at £20,000. The Pension Credit and children/tariff property tests' reference calculations cap only England and Wales. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The general-rules income floors cash income after tax, pension contributions and the earnings disregards, then adds tariff income as a separate source. A pensioner with no cash income, £3,000 of pension contributions and £10,001 of capital has applicable income of £52. Moving the tariff inside the floor would give nil. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Capital changes a savings-credit-only pensioner's applicable income through the Secretary of State's assessment, and a child who brings Universal Credit into payment for a mixed-age couple moves them to the working-age scheme. The property docstring now states each invariant for the route its generated families stay on, and names those route changes as model behaviour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The applicable amount comment now says we include the severe disability and carer premiums for pensioners, rather than that the pension-age schedules have only those (England's Sch 2 paras 7 and 8 have more). The applicable income comment uses "them", and the new documentation names the Ministers, councils or "we" that act. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tariff documentation and comments now say who acts (councils, the Scottish Ministers) rather than giving the verb to a regulation, and the "Nil for working-age families" fragments become sentences. No code changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The child-limit exception in council_tax_reduction_pensioner_child_amounts now reads the claim and eligibility only while gov.dwp.tax_credits.active holds, as has_tax_credit_award does. A supplied positive final award still counts. Case 21 covers eligibility without a claim, and Case 22 an inactive-scheme reform with a reported award. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tariff documentation and its Scottish comment now say councils apply the £16,000 limit to assessable capital after statutory disregards and disregard all capital for Guarantee Credit recipients. The property module's child invariant states England's Child Tax Credit exception. The changelog, documentation fields and test docstrings name who acts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Documentation and comments only: the child-amount award text names HMRC as the body that pays tax credit awards, the tariff text gives each Pension Credit route its reason, and Case 21's comment cites the claim requirement of TCA 2002 s.3(1). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Councils, the Secretary of State, the Welsh and Scottish Ministers, HMRC and the model now act in the documentation, docstrings, code and YAML comments and parameter descriptions that #1933 adds. The tariff text keeps the partner limb of the guarantee credit disregard. No formula or expected value changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Case 23 takes Case 22's reform and household and enters a final award of 9,800.95. Councils count the award under SI 2012/2885 Sch 1 para 6(1B)(a) and (1C), so all three children count: 3 * 83.24 * 52 = 12,985.44. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Name the award and the counting rule where the Case 23 comment said "it", and cite SI 2024/29 reg 6(3) for the 2024-25 child amount. Say that the pension-age Housing Benefit tariff amounts equal those each Council Tax Reduction scheme sets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LwQq6Gz4VGd6Cph9n66gKW
Aggregate impact on certified data: passBase Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0 (thresholds in Notes
Moves flagged for reviewNone. Spending by benefit and service
Caseloads
Government balance, each component counted once
Model totals
Household income totals
Inequality
Mean household net income in each side's own deciles
Standard reform costings (change in gov_balance)
Standard reforms: change in each reform's target
Household net income by decileMean change in household net income per household, and as a share of the decile's base income; households stay in the base run's deciles.
No change in any year: receipts by tax head; population; poverty rates; people in poverty. Checks failing on both base and head (1)
Counted-once checkEach of 92 components was raised by £1 per unit in 2026-27, and every head of its totals was read household by household: its own head must rise by exactly £1, no other tax head may move, no other benefit may rise, and the model's own total must move by what its heads moved. A head that breaks a rule is measured again twice: with every other head held at its baseline value, and with every other head held at its value after the first £1 while the component rises again. It fails where either still shows the response. 0 failed; 0 were skipped.
Provenance
Dataset: Receipts by tax head: head levels
Spending by benefit and service: head levels
Caseloads: head levels
Government balance, each component counted once: head levels
Model totals: head levels
Household income totals: head levels
Population: head levels
Poverty rates: head levels
People in poverty: head levels
Inequality: head levels
Mean household net income in each side's own deciles: head levels
Standard reform costings (change in gov_balance): head levels
Standard reforms: change in each reform's target: head levels
|
juaristi22
left a comment
There was a problem hiding this comment.
Reviewed 06e51a8ab57d5c2bce6f98c3b2f0f763b17b6a0a. COMPLETE; no findings or material evidence gaps within the disclosed scope.
Independent source review checked the historical child/family amounts, England's two-child limit and nil-rate CTC exception, the different tariff ceilings, and Pension Credit routing. In particular, England's paragraph 37 caps the capital counted for tariff income; Scotland's regulation 27 does not, with its separate capital-entitlement rule retained. The actual Axiom #522 dispatch includes the source excerpts, outputs, companion cases and signed-encoder/ingest blocker; completed encoding is not claimed.
100 local tests passed, zero failures/skips, in one bounded serial run: 81 YAML cases and 19 properties. Six ordinary-input calculations plus one explicitly supplied-award contract cover final CTR/household income, Guarantee Credit, savings-credit-only, positive/nil-rate CTC and closure. The Welsh native child/family/tariff case increases both CTR and household income by £1,113.84 against a control setting only the new components to zero; that is a component control, not a separate prior-branch run. Current-head hosted checks also pass.
The stated annual 30 April convention, transitional/protected-family and existing disability-premium exclusions remain scope qualifications; this approval does not certify those omitted histories or the author's private population results. Approving this head after a fresh activity/readiness/required-CI check.
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. We now add child amounts, family premiums and tariff income. We still leave out the enhanced disability and disabled child premiums for a pensioner's child (see Not modelled).Child or young person amounts and the family premium. Councils add a weekly amount for every child or young person in a pensioner applicant's family. The Welsh Ministers keep a family premium; the Secretary of State and the Scottish Ministers ended theirs in 2016:
For the 2018-19 to 2024-25 schemes, the Secretary of State limited England's child amounts to two children or young persons, or more where the applicant's Child Tax Credit award included the individual element for more (SI 2017/1305 reg 7, inserting para 6(1A)-(1C); removed for 2025-26 by SI 2025/39 reg 5(2)). Councils apply the exception where the applicant has an award of Child Tax Credit "whether or not any amount is payable" (para 6(1B)(a)). In
council_tax_reduction_pensioner_child_amounts, we count an award when finalchild_tax_creditexceeds zero, whether the model calculates it or the user enters it. While HMRC pays tax credit awards (gov.dwp.tax_credits.active), we also countwould_claim_CTCwithis_CTC_eligibleto retain nil-rate awards, ashas_tax_credit_awarddoes. HMRC paid no ongoing tax credit awards after 5 April 2025, and the Secretary of State removed England's limit for the 2025-26 schemes, so that condition changes no current-law result. It changes a result only under a reform that closes tax credits before 2025-26 or restores England's limit after it. We add the family premium throughcouncil_tax_reduction_pensioner_family_premiumand add both amounts for pensioners. When a household head applies alone, we assume their family includes no children because the model cannot identify those relationships.So the 72-year-old with a ten-year-old now has an applicable amount of £17,881.76 in England (13,312 + 87.88 × 52), £19,024.20 in Scotland (13,312 + 109.85 × 52) and £18,933.20 in Wales (13,312 + 87.88 × 52 + 20.22 × 52). In 2024-25, an English 72-year-old with three children born before April 2017 and an entered Child Tax Credit award of £9,800.95 gets three child amounts, £12,985.44 (3 × 83.24 × 52); without an award they get two, £8,656.96. Under a reform that ends tax credits for 2024-25, a family that reports Child Tax Credit has no award and also gets two; where the user enters the award HMRC made, we still count it, as councils do, and the family gets three.
Tariff income. Councils treat a pensioner's capital as a weekly income of £1 for each £500, or part of £500, over £10,000. The Secretary of State and the Welsh Ministers count the excess "not exceeding £16,000" (SI 2012/2885 Sch 1 para 37; WSI 2013/3029 Sch 1 para 31). The Scottish Ministers set no ceiling in SSI 2012/319 reg 27(2). All three bar a reduction where capital exceeds £16,000 (SI 2012/2885 reg 11(2); WSI 2013/3029 reg 30; SSI 2012/319 reg 40). Councils apply the £16,000 limit to assessable capital after statutory disregards (SI 2012/2885 reg 11(3); WSI 2013/3029 reg 30(2); SSI 2012/319 reg 41), and disregard all of an applicant's capital where the applicant or their partner receives guarantee credit (England Sch 1 para 13, Wales Sch 1 para 7, Scotland reg 24). In the new
council_tax_reduction_pensioner_tariff_incomewe apply the tariff tocouncil_tax_reduction_assessable_capital, the capital the model already represents (this PR does not widen it; #1936 tracks that). We add 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.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 we add no tariff income. On a savings-credit-only award they use the Secretary of State's assessment of income and capital (England Sch 1 para 14, Wales Sch 1 para 8, Scotland reg 25). The Secretary of State already counts Pension Credit's deemed income from capital in that assessment (
pension_credit_incomesums the sources ingov.dwp.pension_credit.guarantee_credit.income, which listspension_credit_deemed_income), so we add no tariff income on top. A savings-credit-only pensioner with £16,000, incouncil_tax_reduction_pension_credit.yaml, keeps applicable income of £14,247.02.Reuse of Housing Benefit parameters
Tariff income. We reuse the pension-age Housing Benefit tariff parameters (
gov.dwp.housing_benefit.means_test.capital.pension_age.tariff_income: £1 for each £500 over £10,000, SI 2006/214 reg 29(2)). The Secretary of State, the Welsh Ministers and the Scottish Ministers set the same step, amount and threshold, so this PR adds no tariff parameter. For the £16,000 ceiling in England and Wales we read each scheme's existing capital limit.Child amounts. The model's Housing Benefit has no child allowance parameter to reuse:
housing_benefit_applicable_amountadds no child amounts at all. We put the new parameters under each scheme. England's amounts equal the pension-age Housing Benefit amounts (SI 2006/214 Sch 3 para 2) in every year; Wales and Scotland differ:The Welsh Ministers did not raise the child amount or the family premium for 2020-21 or 2021-22: in WSI 2020/16 reg 8 and WSI 2021/34 reg 5 they amended only Sch 2 para 1 and Part 4. For each value we cite the version of the schedule in force on 30 April, or the amending regulations where legislation.gov.uk's revised text lags them (WSI 2013/112 reg 5(b) for Wales in 2013-14; SSI 2025/24 for Scotland in 2025-26).
Family premium. Housing Benefit's family premium parameter holds the protected premium for legacy awards, which
housing_benefit_family_premiumgates on a protection category. Welsh councils add the premium for every pensioner family with a child or young person, and the Secretary of State and the Scottish Ministers ended theirs in 2016, so each scheme has its own parameter.Which years
The change reaches model years 2015 onward. Each new parameter starts on 1 April 2013, the first Council Tax Reduction scheme year, but the model annualises parameters only from 2015:
_fiscal_year_conversion_yearsinpolicyengine_uk/utils/parameters.pykeeps the years from 2015 (lines 108 and 126), andconvert_to_fiscal_year_parametersgives each ordinary parameter its value on 30 April of the year (line 171). The Housing Benefit personal allowance that the CTR applicable amount reads starts on 1 April 2015, so the model has no applicable amount before then, as on main. A run of the parameter tree on this branch gives:Two dates limit the change. The Secretary of State made England's family premium nil, and the Scottish Ministers removed Scotland's, from 1 May 2016, after the 30 April reading, so we keep both premiums for the whole of model year 2016 and drop them from 2017. England's two-child limit covers model years 2018 to 2024. After 2026-27 we uprate the child amounts and the Welsh family premium by September CPI (
gov.benefit_uprating_cpi), as we uprate the Housing Benefit family premium. We count tariff income in every model year from 2015; the Housing Benefit tariff threshold reads £10,000 from 2 November 2009.Not modelled
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": the award moves from £2,000 to £1,954.80. 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. The old comment named this as the Pensioner council tax reduction: applicable amount (post-April-2021 allowance, children, severe disability premium) and income (Child Benefit, tariff income) #1933 gap.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 recomputes general-rules income from its components rather than reading the variable. The recomputation now adds the pensioner tariff income, written out from the law: 52 × ceil((capital − 10,000) / 500) where positive, capping capital at £16,000 in England and Wales and leaving it uncapped in Scotland. Families off Pension Credit with savings over £10,000 still match. Its assertions stay the same.Overlap with open PRs and issues
We ran
git merge-tree --write-tree --name-onlyof each head against this branch (06e51a8ab) and against main (2da212abc) to find the conflicts this PR adds:1b8f2dedecouncil_tax_reduction_pension_credit.yaml3efa8bd60, #2077cf0475ddb6df59cdb4779f5dcfdCHANGELOG.md,tests/test_means_test_income_properties.py,pyproject.toml); the two commits have more than one merge basecf381c188, #230298a473909, #2688798491cb73a3241cf6, #200797f792542, #2756c34662736, #27761d4a3e475, #280843a545dcbfix-2120-uc-carer-awards260f6a77e, which has no PR#1995 (legacy capital-derived income) and this PR both move the £16,000 capital case in
council_tax_reduction_pension_credit.yamlto £1,954.80. #1995 also addscouncil_tax_reduction_tariff_income(the pensioner tariff plus the Scottish and Welsh working-age tariffs) on the line ofcouncil_tax_reduction_applicable_incomewhere this PR addscouncil_tax_reduction_pensioner_tariff_income, and widenscouncil_tax_reduction_assessable_capitalfrom savings to savings plus land and property other than the home. To merge it after this PR, keep one tariff addition after the income floor, with this branch's uncapped Scottish pensioner tariff and applicant-family Pension Credit gate, and let #1995's wider assessable capital feed that calculation. Its working-age tariff stays its own. #2002 builds on #1995, so #1995 has to merge first.Issue #2090 (CTR income deducts the family's whole income tax) has no PR. A fix would change the tax we deduct from general-rule income before the floor. Keep the tariff as a separate addition after the deductions, and change the reference income in
test_council_tax_reduction_pension_credit_properties.pywith it (MAIN_DEDUCTIONSat line 291 and the recomputation at lines 374-396).#1966 adds working-age child amounts and tariff income 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.
Off those routes, capital and a child can both move these amounts. A savings-credit-only pensioner aged 90 with a State Pension of £13,500 has no tariff income at £10,000 or £16,000 of capital, but the Secretary of State counts Pension Credit's deemed income in the assessment, so their Pension Credit income rises from £13,314 to £13,938 and their applicable income from £13,872.62 to £14,247.02. A couple aged 72 and 50 with a State Pension of £10,000 who claim Universal Credit get none of it until a ten-year-old joins them. With the child, the couple gets £2,226.20 of Universal Credit and moves to the working-age scheme, and their applicable amount falls from £19,934.20 to £7,807.80.
Test plan
council_tax_reduction_pensioner_child_amounts.yaml(23 cases) andcouncil_tax_reduction_pensioner_tariff_income.yaml(17 cases), with the arithmetic worked in comments.make formatequivalent on the changed files (see below).changelog.d/1933.fixed.md.Results
Every run used small hand-built situations; no survey data. Since
36f1dd17e, this branch changes one formula, the tax-credit closure condition incouncil_tax_reduction_pensioner_child_amounts, and adds child Cases 21, 22 and 23. Its other changes touch documentation, comments, docstrings, parameter descriptions and the changelog.c5b07aec7has this head's code. From it to this head,06e51a8ab, the Python syntax trees match once we strip docstrings and documentation, and the parsed YAML matches apart from Case 23 and four parameter descriptions. Unless a bullet names a commit, the run usede8831fb6b.council_tax_reduction_pensioner_child_amounts.yaml: 23 passed at06e51a8ab. Atc5b07aec7, before Case 23, 22 passed.council_tax_reduction_pensioner_tariff_income.yaml: 17 passed at06e51a8ab.council_tax_reduction_pensioner_child_benefit.yaml: 8 passed.policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/, all 24 files in one run: 371 passed, and no case raised aCycleError.entitledto_scenarios.yaml,ctc_child_element_eligibility.yaml, the Housing Benefit, legacy award reader, Pension Credit and winter fuel files among them): 293 passed atc91e960cf. The closure condition changes a result only wheregov.dwp.tax_credits.activereads false while England's limit runs. Outside the child amounts file, onlyclaims_universal_credit.yamlsets that parameter, to true, for 2026.test_council_tax_reduction_pensioner_children_tariff_properties.py: 7 passed (the three Hypothesis properties, the Northern Ireland check and the frozen origin/main differential for 2019, 2024 and 2026). Its generated families report no Child Tax Credit, so the closure condition never applies to them.test_council_tax_reduction_pension_credit_properties.py: 9 passed ate8831fb6b, including the two route tests whose reference income adds the tariff (test_awards_follow_the_pension_credit_routes,test_savings_credit_only_awards_use_the_pension_credit_assessment).test_council_tax_reduction_child_benefit_properties.py, with its higher State Pension range: 3 passed.test_claims_all_entitled_benefits.py, which runs its tax credit families in 2024, while England's limit runs: 19 passed, 1 skipped ate8831fb6b.test_survey_takeup_follows_reports_in_microdatacarries themicrosimulationmark, and with no survey dataset configured the suite skips it.test_parameter_descriptions.py: 24 passed at06e51a8ab.test_savings_credit_only_receipt_properties.py: 6 passed (1,901 seconds) atf5c75cbfc.e8831fb6b:test_council_tax_reduction_claimant_family_scheme_properties.py3 passed,test_legacy_award_readers_properties.py18 passed,test_council_tax_reduction_carer_income_properties.py4 passed,test_council_tax_reduction_applicant_properties.py2 passed andtest_council_tax_reduction_prescribed_benefits_properties.py4 passed.c5b07aec7: we ran an English 72-year-old with three children who reports Child Tax Credit in each model year from 2015 to 2030, and in 12 runs under reforms. The reforms close tax credits from 2018-19, for 2024-25, or from a date before or after the 30 April reading; extend England's limit past 2025-26 with tax credits closed or open; or close tax credits for 2024-25 and enter a final award, or a claim and eligibility without a report. In all 28 runs, the claim-and-eligibility route that the condition counts equalshas_tax_credit_award.child_limitreads 2 for model years 2018 to 2024, and infinity from 2014 to 2017 and from 2025 on.council_tax_reductionraisesParameterNotFoundErrorongov.dwp.pension_credit.mixed_age_couplesin all three nations, on main and on this branch alike, so the new variable's failed read ofchild_limitbefore model year 2014 adds no failure.c5b07aec7and at2da212abc. For private renters who claim Housing Benefit, with and without a ten-year-old,housing_benefitand the amounts it reads match. For a 72-year-old homeowner, only the Council Tax Reduction outputs move: with a ten-year-old, the applicable amount rises from 13,312.00 to 17,881.76 in England, 18,933.20 in Wales and 19,024.20 in Scotland, and with £24,000 of pensions the award rises from 319.60 to 1,233.55 in England, from 319.60 to 1,443.84 in Wales and from 311.67 to 1,454.11 in Scotland.e8831fb6bas atc91e960cf.06e51a8ab:ruff format --checkandruff check(ruff 0.17.2) on the changed Python files,ruff check --select F811,F821 policyengine_ukandgit diff --check: clean.Fails on origin/main. On
2da212abc, child Cases 1-17 and tariff Cases 1-14 (we removed the new variables' outputs, since main lacks them) give 12 failed, 12 passed. The 12 failures cover 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). The cases that should not move (no child, capital of £10,000, Guarantee Credit, savings credit only, working age) pass. The new property file's child and tariff tests (test_adding_a_dependent_child_never_lowers_the_applicable_amount,test_tariff_income_is_the_tariff_and_never_falls_as_capital_rises) fail on origin/main too (2 failed), because main has nocouncil_tax_reduction_pensioner_child_amountsorcouncil_tax_reduction_pensioner_tariff_income.Differential against origin/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 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 differs. We ran that comparison at15f986ada. We changed the Child Tax Credit award route and the uncapped Scottish tariff after that commit, and both affect only pensioners with children or with capital over £16,000. The compared households include neither, andtest_matches_origin_main_on_unchanged_householdsreruns the 23 fixed ones against frozen origin/main values on this head.Mutations. Each mutant, a scratch copy of this branch, ran against the YAML file it targets under a 2 GB memory cap, and every one fails:
gov.dwp.tax_credits.activegov.dwp.tax_credits.activereads falsechild_tax_credit, dropping nil-rate awardswould_claim_CTC, so eligibility alone countswould_claim_CTCand dropsis_CTC_eligiblenp.floorfornp.ceil)The first six ran on this head's code: the first five at
c5b07aec7, which had 22 child cases, and the sixth ate8831fb6b. Atc5b07aec7the sixth passed all 22, because no case entered an award under a closed scheme; Case 23 enters one and fails under it. The other eight ran on the code before the closure condition, and their failing cases set no reform. The condition changes a result only wheregov.dwp.tax_credits.activereads false while England's limit runs, which current-law parameters never combine, so it leaves those cases unchanged.Reproducer
Reproducer:
policyengine_uk/tests/test_council_tax_reduction_pensioner_children_tariff_properties.py::test_adding_a_dependent_child_never_lowers_the_applicable_amount,policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner_child_amounts.yaml,policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner_tariff_income.yamlaxiom: TheAxiomFoundation/rulespec-uk#522 queued
The Welsh child amount, family premium and tariff modules in rulespec-uk agree for 2026-27. The child and family-premium modules apply 87.88 and 20.22 from
0001-01-01, so they cannot reproduce the 2021-22 amounts of 66.90 and 17.45. In the queued issue we cover that history, England's child amount, family premium and applicable amount, and Scotland's corresponding outputs. A signed encoder run needs separate approval. The pinned release holds England's provisions, including Sch 1 para 37; Scotland's reg 27 and Sch 1 para 3, and all earlier-year versions, need ingest and a new pin.Generated by Claude Code