Skip to content

Disregard guarantee credit recipients' income and capital in pensioner council tax reduction - #1909

Merged
MaxGhenis merged 5 commits into
mainfrom
ctr-pension-credit-disregard
Oct 1, 2026
Merged

MaxGhenis merged 5 commits into
mainfrom
ctr-pension-credit-disregard

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The national council tax reduction (CTR) formula covers England's pensioner scheme and all of Scotland and Wales. It tapers every claimant at 20% on income after tax, and zeroes the award when household savings exceed £16,000. Nothing in it treats Pension Credit recipients differently: council_tax_reduction_applicable_income does not count Pension Credit, and the passport variable (council_tax_reduction_relevant_income_based_benefit) is read only by the legacy local schemes. That produces two errors.

Guarantee credit recipients whose CTR income exceeds the applicable amount are tapered. This is the uk-triple-lock symptom (PolicyEngine/uk-triple-lock#6, step 4). The case is a single 70-year-old owner, council tax £2,000, receiving guarantee credit because an earnings-linked minimum guarantee (£18,500) sits above the £13,312 CTR applicable amount:

2026, State Pension £18,712 → £18,639.30 main this PR
Income tax £1,228.40 → £1,213.86 (−£14.54) same
Guarantee credit £1,016.40 → £1,074.56 (+£58.16) same
CTR applicable income £17,483.60 → £17,425.44 £0 → £0
CTR £1,165.68 → £1,177.31 (+£11.63) £2,000 → £2,000
Household net income +£11.63 unchanged

The deltas match the repo's central 2039-40 example to the cent (run on main). Wales gives the same result and Scotland gives +£11.63 as well. On baseline parameters the applicable amount (£256/week) is above the standard minimum guarantee (£238/week), so the taper bites only when something else pushes a guarantee credit recipient's CTR income above it: an earnings-linked guarantee path, a guarantee reform, or income that CTR counts and Pension Credit does not.

Guarantee credit recipients with savings over £16,000 get no CTR at all. Pension Credit has no capital limit. A single 70-year-old on State Pension £9,000 with £20,000 savings gets guarantee credit of £2,336 (after £1,040 deemed income from capital) and CTR of £0. The law gives £2,000. This happens today in England, Wales and Scotland on baseline parameters.

Law

All texts were read in their current revised versions on legislation.gov.uk on 2026-09-30. Each was re-fetched by an independent verifier, and none has an unapplied amendment affecting these provisions.

  • England: SI 2012/2885 Sch 1 para 13. "In the case of an applicant who is in receipt, or whose partner is in receipt, of a guarantee credit, the whole of his capital and income must be disregarded."
    • Reg 11(3) calculates capital for the £16,000 exclusion "in accordance with Part 6 of Schedule 1", which contains para 13, so the limit cannot apply.
    • Nil income puts the applicant in class A (Sch 1 para 2(e)), which gets the maximum reduction (para 10(2)).
    • The maximum is 100% of liability less non-dependant deductions (para 7(1)), and para 8 gives no exemption for guarantee credit.
  • England, savings credit only: Sch 1 para 14. The authority "must use the calculation or estimate of the applicant's … income and capital made by the Secretary of State". It may adjust net income only to take account of "(a) the amount of any savings credit payable" and items (b)-(h).
    • Para 14(3) switches off the scheme's own income rules for that figure.
    • Para 15 routes everyone else to the general rules.
  • Wales: WSI 2013/3029 Sch 1 para 7 and para 8. Same wording, for "an applicant who is a pensioner".
    • Reg 30(2) calculates capital "in accordance with Schedule 1".
    • WSI 2013/3029 replaced SI 2012/3144 from 1 April 2014.
  • Scotland: SSI 2012/319 reg 24 and reg 25 (Council Tax Reduction (State Pension Credit) (Scotland) Regulations 2012). Same rules.
    • Reg 25(4) applies the reg 40 limit to the Secretary of State's capital figure.

"In receipt" is receipt, not entitlement. guarantee_credit is positive for anyone whose income is below the minimum guarantee, including working-age people and non-claimants. For example, a Welsh 35-year-old earning £10,000 has guarantee_credit £2,376 and pension_credit £0. Keying on it would give that person maximum CTR under the all-ages Welsh and Scottish formula.

Change

  • in_receipt_of_guarantee_credit (new, BenUnit): is_pension_credit_eligible & would_claim_pc & (guarantee_credit > 0). Under the freeze_pension_credit reform it keeps the baseline's receipt.
  • in_receipt_of_savings_credit_only (new, BenUnit): the same pattern, with guarantee_credit <= 0 and savings_credit > 0.
  • council_tax_reduction_applicable_income:
    • 0 when in receipt of guarantee credit;
    • in savings-credit-only cases, pension_credit_income plus the Pension Credit actually paid, which is the savings credit payable. Under the freeze_pension_credit reform that is the frozen baseline amount;
    • unchanged otherwise.
  • council_tax_reduction_assessable_capital (new, BenUnit), which now feeds the capital limit in simulated_council_tax_reduction_benunit:
    • 0 on guarantee credit;
    • pension_credit_assessable_capital in savings-credit-only cases;
    • household savings otherwise (the previous proxy). That proxy under-counts the capital the schemes count (Part 6 Chapter 3 includes second homes and investments), so a pensioner who does not claim Pension Credit can pass the limit on assets that a savings-credit-only claimant is tested on. A YAML case pins this; see the review response below.
  • Non-dependant deductions are still subtracted.
  • Local working-age schemes (Merton, Kingston, Newham, Westminster, Oxford and the legacy helpers) are unaffected: they apply only when the claimant's benefit unit has no one over State Pension age, and Pension Credit needs every adult to be over it.
  • Parameter references. The nine national CTR parameter files now cite the provisions in force: England Sch 1 paras 7(1) and 3(f)(ii) and reg 11(2); Wales WSI 2013/3029; Scotland SSI 2012/319, plus SSI 2021/249 for working age. They keep the superseded instruments as dated references. The Welsh files cited only the revoked SI 2012/3144, and the Scottish files cited only SSI 2012/303. Values are unchanged.
  • Other files: a programs.yaml note and a changelog fragment.

Invariants (property-tested in test_council_tax_reduction_pension_credit_properties.py)

L is liability, ND is non-dependant deductions, A is the applicable amount.

  1. 0 ≤ CTR ≤ L. The two receipt routes are mutually exclusive, and each requires Pension Credit eligibility and take-up.
  2. A guarantee credit recipient gets exactly max(0, L − ND).
  3. A savings-credit-only recipient gets max(0, L − 0.2 × max(0, PC income + savings credit − A) − ND) if the Pension Credit capital is within £16,000, and 0 otherwise.
  4. Differential: everyone else keeps the previous formula, max(0, L − 0.2 × max(0, I − A) − ND) × [household savings ≤ £16,000]. I is main's CTR income definition, recomputed in the test from its components (a frozen copy of main's lists) rather than read from the variable under test.
  5. Metamorphic: a guarantee credit recipient's CTR does not change when the State Pension changes (±£3,000).
  6. Metamorphic: nor when savings rise (by up to £30,000).
  7. Metamorphic: not claiming Pension Credit never raises a guarantee credit recipient's CTR, and every non-claimant satisfies invariant 4.
  8. Freeze: under freeze_pension_credit, a savings-credit-only award counts the frozen savings credit actually paid. A plain test checks that a savings credit rate rise gives 869.89 in the reform but 558.62 paid and counted.

Generators.

  • Families are drawn in four shapes: single pensioner, pensioner couple, mixed-age couple, and single working-age. The draws cover England, Wales and Scotland; savings and a second property; take-up on or off; and an optional working-age non-dependant.
  • Half the populations get a standard minimum guarantee of £240-£450 a week, applied as a population-wide reform, so guarantee credit recipients can have income above A.
    • It is not applied as a per-family minimum_guarantee input. That was the first design, and review exposed it: an input on some benefit units sets the variable to 0 on every other one.
  • The metamorphic tests' populations always include 3-6 families drawn to receive guarantee credit, and they assert that recipients are present.
  • A dedicated strategy covers the savings-credit range: a single person aged 80 or over, just above the minimum guarantee.

Settings and coverage.

  • Hypothesis derandomize=True, 10 examples each. The six property tests and two freeze tests take about 2 minutes.
  • Since be53176 the generator also draws children, UC take-up, self-employment, property income and Carer's Allowance. In the route test's own examples, 148 non-recipient benefit units fall under a national scheme. Of those, 103 have Child Benefit, 28 are on UC, 68 have Carer's Allowance, 37 have self-employment income and 68 have property income. These counts are from the delta reviewer's run.
  • In a probe run of the same strategies (10 examples, a different seed from the tests themselves) there were 266 families:
    • 75 guarantee credit recipients: 7 with CTR income above A, 11 with savings over £16,000, and 16 with a non-dependant;
    • 8 savings-credit-only units;
    • 20 entitled non-claimants;
    • 104 working-age or mixed-age units with a calculated but unreceived guarantee credit.

Mutation checks. Eight deliberate bugs were applied one at a time to 8e32d3f, and the round-2 reviewer's four survivors to be53176. Every one is now caught. The table shows YAML failures (out of 17, or 21 for the last four rows) and which property tests fail (run with shrinking off):

Mutation YAML Failing property tests
Capital limit reads household savings for everyone 5 routes (2), savings-credit routes, savings invariance (6)
No income disregard on guarantee credit 5 routes (2), State Pension invariance (5)
Receipt = bare guarantee_credit > 0 5 routes, take-up (7)
Savings-credit-only income omits the savings credit 1 routes (3), savings-credit routes, freeze (8)
Savings-credit-only capital reads household savings 1 savings-credit routes (3)
Receipt ignores Pension Credit take-up 2 routes, take-up (7)
Non-recipients' income zeroed 5 routes (4), savings-credit routes, take-up (7)
Savings credit payable = entitlement, not amount paid 0 freeze (8)
Capital limit <= → < (round 2 survivor) 2 (boundary cases) none (not expected: the boundary is a single point)
Freeze branch removed from guarantee credit receipt (round 2 survivor) 0 both freeze-flip tests
Freeze branch removed from savings-credit-only receipt (round 2 survivor) 0 freeze-flip test
Child Benefit dropped from CTR income (round 2 survivor) 0 routes (4), take-up (7)

Tests

council_tax_reduction_pension_credit.yaml: 21 cases with hand-checked values. 11 of the original 16 fail on main (run with the new variables removed from the outputs).

  • England:
    • the triple-lock pair: CTR £2,000 both before and after a £72.70 State Pension cut; main gives £1,165.68 → £1,177.31;
    • entitled but not claiming: keeps the £1,165.68 taper;
    • a non-Pension-Credit pensioner: keeps the taper;
    • guarantee credit with £20,000 savings: £2,000 (main £0);
    • the same, not claiming: £0;
    • a couple with £25,000 savings: £2,000 (main £0);
    • guarantee credit with a working non-dependant: £2,000 − £1,060.80 = £939.20;
    • a mixed-age couple: not in receipt, so the capital limit applies.
  • Wales and Scotland:
    • the capital case and the taper case, £2,000 each;
    • a Welsh working-age earner with a calculated guarantee credit: keeps the £993.72 taper.
  • Savings credit only:
    • income £13,314 + savings credit £558.62: CTR 2,000 − 0.2 × (13,872.62 − 13,312) = £1,887.88 (main £1,999.60);
    • Pension Credit capital (savings £10,000 + a £7,000 second property) over the limit: £0 (main £1,999.60);
    • the same pensioner not claiming Pension Credit: tested on household savings only, so CTR stays £1,999.60. This pins the proxy gap.
  • Capital-limit boundary: exactly £16,000 is within the limit and £16,000.01 is excluded, both for a pensioner without Pension Credit and for a savings-credit-only recipient (£1,813.00 at the limit).

Existing tests (all pass):

  • policyengine-core test on everything under local_authorities, consumption, dwp/pension_credit and the entitledto scenarios: 108 passed.
  • Every other policy YAML file that touches council tax, Pension Credit, household net income or HBAI: 135 passed.
  • Code-health, parameter-metadata, build-metadata, stock-capital and determinism pytest: 36 passed, 1 skipped.

Cycle check. A traced simulation of every Pension Credit variable CTR now reads, across four household situations, reaches no council tax, CTR, Housing Benefit or Universal Credit variable. Every test above computes CTR on this branch without a cycle error.

Dataset impact (Enhanced FRS 2024-25, current weights, real runs of main vs this branch)

2026 main this PR change
Council tax reduction £2.3465bn £2.3458bn −£0.64m
of which guarantee credit recipients £714.7m £716.8m +£2.08m (4 records, 1.9k benefit units, all above the capital limit)
of which savings-credit-only recipients £18.6m £15.9m −£2.73m (29 records, 20.3k units)
of which everyone else £0 (no record changes)
Pension Credit £6.989bn £6.989bn 0
Household net income −£0.64m (= the CTR change)

In 2029 the net change is −£0.19m: guarantee credit +£1.91m and savings credit only −£2.11m.

The income disregard has no 2026 survey effect. All 4 guarantee credit records that gain are the savings-over-£16,000 group (1.9k units). The triple-lock case is a future or reform scenario, driven by an earnings-linked guarantee above the CTR applicable amount.

Why the survey effect is small. Survey take-up of CTR is reported-only: claims_all_entitled_benefits is False for every Enhanced FRS benefit unit. So the fix changes amounts for existing claimants and brings in no new claimants. Of the 708k guarantee credit recipients who claim CTR, 1.9k hold savings over £16,000. The income-side taper bites in household calculations and on earnings-linked guarantee paths such as uk-triple-lock's, not at 2026 survey incomes.

Savings-credit-only losses have two sources:

  • Income route: 21 records, 18.6k units, −£0.77m. Savings credit now counts as income, at 20% of the savings credit, an average of −£41 a year.
  • Capital route: 8 records, 1.7k units, −£1.96m. Pension Credit's capital exceeds £16,000 while household savings do not.
    • The 8 records are 4 families, each appearing twice with different weights.
    • Their Pension Credit capital (£17,150-£28,751) is entirely corporate_wealth, apart from £215 in one case.
    • That bundle is mostly imputed pension wealth, which the schemes disregard (Exclude corporate_wealth from Universal Credit countable capital pending a pension split #1837, policyengine-uk-data#452), and Pension Credit's capital sources still count it.
    • The law is followed, since the rule uses the Secretary of State's capital figure. But this whole loss rests on that proxy, and it would largely disappear once pension wealth is split out.
    • In the same run, everything outside this route nets +£1.31m: guarantee credit +£2.08m and the savings-credit income route −£0.77m.

Independent review

Round 1 was an Opus 5.5 review on a Subfleet lane. It returned REQUEST_CHANGES with one blocking finding and seven non-blocking ones. It confirmed the law fidelity, the scope (no leak to working-age, local schemes, non-head units or Northern Ireland) and every hand-checked YAML value. The responses are in commit 8e32d3f:

  • F1 (blocking): savings-credit-only claimants are tested on broader capital than other pensioners.
    • The law does not draw this line. The non-Pension-Credit proxy (household savings only) under-counts the capital the schemes count. The Pension Credit route follows para 14(1), para 8(1) and reg 25(1).
    • Widening the other route now would count corporate_wealth, which is mostly pension wealth.
    • Resolved by disclosure and a pinning test. The changelog now says savings-credit-only CTR can fall. A follow-up covers counting all capital for non-Pension-Credit pensioners once pension wealth is split out.
  • F2 (the non-dependant test encodes HB rates): commented. Follow-up filed.
  • F3 (the differential was not independent): it now recomputes main's income definition.
  • F4 (vacuity): guarantee credit recipients are now always present and asserted. This exposed the minimum_guarantee input bug in the test harness, now fixed.
  • F5 (freeze): savings-credit-only income uses the Pension Credit paid. Test added.
  • F6 (carer's allowance in Pension Credit income): follow-up filed.
  • F7 (names): fixed.
  • F8: noted above.

Round 2 was run on 8e32d3f, with execution access, and returned APPROVE. Checked in that round:

  • all eight round-1 findings are resolved, and the F1 answer (disclosure plus a pinning test) is adequate given the law;
  • 17 YAML and 6 property tests pass;
  • a differential of main against the branch on 400 households and 518 benefit units under four reforms found 0 changes for non-recipients, including Merton, Kingston, Newham, Westminster, Oxford and Northern Ireland;
  • five freeze cases are consistent;
  • all the capital-route loss comes from corporate_wealth.

It raised six non-blocking points, addressed in be53176:

  • N1: the attribution above.
  • N2: freeze tests where the reform alone would flip which credit is received.
  • N3: the generator adds children, UC take-up, self-employment, property income and Carer's Allowance, so the differential covers Child Benefit, UC and the rest of main's income definition.
  • N4: YAML cases at exactly £16,000 and £16,000.01 on both routes.
  • N5: the changelog says "can fall".
  • N6: the follow-ups are now issues.

Its three surviving mutations are now caught (see the mutation table).

Delta check was an in-session Opus review of be53176 (tests and changelog only). It returned APPROVE:

  • it re-derived the boundary values;
  • it confirmed that removing the freeze branch now fails both freeze-flip tests;
  • it confirmed that dropping Child Benefit is caught;
  • it found no partial-input or index misalignment in the broader generator.

Its non-blocking notes are addressed in 2936fec:

Its suggestion to turn off Hypothesis shrinking was not taken: minimal counterexamples are worth a slower failure.

Not in this PR (follow-up issues)

axiom: SI 2012/2885 Sch 1 paras 13-14 (+ WSI 2013/3029 Sch 1 paras 7-8, SSI 2012/319 regs 24-25) — TheAxiomFoundation/rulespec-uk#374 queued

Also filed: TheAxiomFoundation/axiom-oracles#577 (the CTR oracle grid feeds PolicyEngine's untransformed applicable income and savings, and its capital-over-limit case is a guarantee credit recipient).

🤖 Generated with Claude Code

…r CTR

The England pensioner, Wales and Scotland council tax reduction schemes
disregard the whole income and capital of an applicant who, or whose
partner, is in receipt of Pension Credit guarantee credit (SI 2012/2885
Sch 1 para 13; WSI 2013/3029 Sch 1 para 7; SSI 2012/319 reg 24). PE-UK
tapered them on income after tax and applied the 16,000 capital limit to
household savings, so a guarantee credit recipient's CTR rose when their
State Pension fell and they lost all CTR with savings over 16,000.

In savings-credit-only cases the schemes use the Secretary of State's
Pension Credit assessment of income, adjusted for the savings credit
payable, and of capital (para 14; para 8; reg 25).

- in_receipt_of_guarantee_credit (shared with the HB passport fix) and
  in_receipt_of_savings_credit_only test receipt: Pension Credit
  eligibility, take-up and a positive component. guarantee_credit alone
  is positive for working-age and non-claiming units.
- council_tax_reduction_applicable_income is 0 on guarantee credit and
  pension_credit_income + savings_credit on savings credit only.
- New council_tax_reduction_assessable_capital feeds the capital limit:
  0 on guarantee credit, pension_credit_assessable_capital on savings
  credit only, household savings otherwise.
- Point the national CTR parameters at the provisions in force.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… harness

- Savings-credit-only CTR income adds the Pension Credit actually paid
  (the savings credit payable), so under the Pension Credit freeze it
  counts the frozen amount, consistent with the receipt flags. Test added.
- The property differential recomputes main's CTR income definition from
  its components instead of reading the variable under test.
- Apply the raised minimum guarantee as a population-wide reform: a
  minimum_guarantee input on some benefit units set it to zero on every
  other one, which hollowed out guarantee credit coverage.
- Metamorphic tests always include guarantee credit recipients and
  assert they are present; the take-up test also checks non-claimants
  against the differential.
- Pin that a non-claimant with the same assets is tested on household
  savings only (a proxy gap, documented); note the non-dependant test
  pins the deduction's presence, not its Housing Benefit-rate size.
- Legal local names; changelog says savings-credit-only CTR falls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Round 2 review follow-ups (all tests, no model change):
- YAML cases at exactly 16,000 and 16,000.01 of capital for a pensioner
  without Pension Credit and for a savings-credit-only recipient; the
  limit excludes capital that exceeds 16,000.
- Freeze tests where the reform alone would change which credit is
  received (savings credit only to guarantee credit, and guarantee
  credit to none); receipt follows the frozen award.
- The generator adds children, UC take-up, self-employment, property
  income and Carer's Allowance, so the differential against main's
  income definition covers Child Benefit, UC and the other components.
- The changelog says savings-credit-only CTR can fall.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits September 30, 2026 11:31
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…4 saving)

Doc-only; the formula is unchanged. Keeps the file byte-identical with #1927.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Sep 30, 2026
SI 2019/37 art 4 disapplies SPCA 2002 s.4(1A) for a mixed-age couple
entitled to Pension Credit or Housing Benefit as that couple on 14 May 2019,
and PolicyEngine gives Housing Benefit to a mixed-age couple only on a
continuing award, which housing_benefit_eligible treats as standing in for
that saving. is_pension_credit_eligible omits the saving, so it pays those
couples no Pension Credit and the passport now drops for them, although in
law they may be entitled to a guarantee credit. The mixed-age test cases,
docs paragraph and changelog now say so instead of calling the change a
legal correction.

The two mixed-age cases no longer assert the computed guarantee credit,
which #1896 makes 0 for a family not eligible
for Pension Credit; their passport and Housing Benefit assertions stay.

in_receipt_of_guarantee_credit takes the shared v2 text also carried by
#1909: documentation and references only (SSAA 1992 s.1, SI 2019/37 art 4).
The three Housing Benefit call sites now cite reg 26, NI reg 24 and reg 2(5),
under which "in receipt" includes a person who would be but for SPC Regs 2002
reg 13, which PolicyEngine does not model. The tariff-income passport,
redundant with the zero assessable capital, is kept for parallelism with
reg 26's "capital and income" and says so. The capital test's comment calls
11,536.20 PolicyEngine's 2025 parameter, not the minimum guarantee.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator

Reviewed: approve with nits (remove the record-level details from the description before merge).

The implementation follows the law. A guarantee credit recipient gets nil income and nil capital (England SI 2012/2885 Sch 1 para 13, Wales WSI 2013/3029 Sch 1 para 7, Scotland SSI 2012/319 reg 24). Savings-credit-only cases use the Pension Credit assessment plus the savings credit payable (para 14(1)-(2)(a), reg 25). Receipt is keyed on take-up, not on bare entitlement.

  1. Should fix: the description includes record-level survey details that should be removed. Keep only the aggregate totals.
  2. Should fix: council_tax_reduction_pension_credit.yaml:15, :75, :105, :507 hard-code the £256 allowance for a 70-year-old. A 70-year-old in 2026 reached State Pension age after 1 April 2021, so once Split pension-age Housing Benefit allowances by when State Pension age was attained #1913 merges all four cases fail. I merged the two branches locally: the applicable amount comes out at 12,376 instead of 13,312, and CTR at 978.48 instead of 1,165.68, and 1,892.40 instead of 2,000. Fix: make these claimants 72 (they then reached State Pension age in 2019), or assert council_tax_reduction_applicable_amount explicitly. After Split pension-age Housing Benefit allowances by when State Pension age was attained #1913 the description's "£256 is above the £238 minimum guarantee" point also stops holding for that cohort.
  3. Should fix: council_tax_reduction_assessable_capital.py:42. All of the capital-route loss comes from corporate_wealth, which is mostly imputed pension wealth that the schemes disregard. That loss is larger than the PR's net change. Either leave corporate_wealth out of this test until Pensioners without Pension Credit are tested on household savings only for the council tax reduction capital limit #1936 or Exclude corporate_wealth from Universal Credit countable capital pending a pension split #1837 lands, or say plainly in the changelog that this loss is an artefact of the proxy.
  4. Nit: in_receipt_of_guarantee_credit.py has the same hash as Key the Housing Benefit Guarantee Credit passport on receipt #1927's file. The two branches merge cleanly (git handles an identical add/add), so neither PR needs to drop its copy.

Verified: I read the current text on legislation.gov.uk of SI 2012/2885 Sch 1 paras 13-14, WSI 2013/3029 Sch 1 para 7 and SSI 2012/319 regs 24-25. pension_credit_income includes deemed income from capital, so the savings-credit-only figure matches the Secretary of State's assessment. Northern Ireland is outside the national schemes, so it is unaffected. Tests at 6469786: 21/21 YAML, 8/8 property tests. CI: 6/6 green.

@MaxGhenis
MaxGhenis merged commit 3779c6d into main Oct 1, 2026
6 checks passed
@MaxGhenis
MaxGhenis deleted the ctr-pension-credit-disregard branch October 1, 2026 13:52
MaxGhenis added a commit that referenced this pull request Oct 1, 2026
#1909 added in_receipt_of_guarantee_credit.py with the same contents, so
the file drops out of this PR's diff.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 1, 2026
Resolve council_tax_reduction_applicable_income: keep #1909's guarantee
credit and savings-credit-only rules and this branch's income-from-capital
rules, documentation and references.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 1, 2026
Cherry-picks #2007 (59c7082: HB reg 74 / SPC
reg 55 bands, remunerative-work test, couple rule and exemptions; national
CTR own scales and exemptions) onto the in-unit non-dependant change (#2014)
and the #2006 rent shares, as agreed with #2007's author:

- HB and national CTR aggregation: one deduction for a non-dependant couple
  (the claimant and partner of a non-dependant family, the higher amount;
  both for a Welsh working-age couple on UC), any other adult in that family
  counted separately, in-unit non-dependants pooled and apportioned by rent
  share (HB) or joint-liability share (CTR), and the claimant's exemption.
- Joint income for the bands is the couple's only (reg 74(4), para 8(4));
  another adult is banded on their own income.
- The IS, income-based JSA, income-related ESA, Pension Credit and UC
  exemptions apply only to the award's claimant and partner.
- The HB claimant exemption reads is_claimant_or_partner, not is_adult.

Drops council_tax_reduction_pension_credit.yaml and the
in_receipt_of_guarantee_credit output, which depend on #1909 (main only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 1, 2026
Cherry-picks #2007 (59c7082: HB reg 74 / SPC
reg 55 bands, remunerative-work test, couple rule and exemptions; national
CTR own scales and exemptions) onto the in-unit non-dependant change (#2014)
and the #2006 rent shares, as agreed with #2007's author:

- HB and national CTR aggregation: one deduction for a non-dependant couple
  (the claimant and partner of a non-dependant family, the higher amount;
  both for a Welsh working-age couple on UC), any other adult in that family
  counted separately, in-unit non-dependants pooled and apportioned by rent
  share (HB) or joint-liability share (CTR), and the claimant's exemption.
- Joint income for the bands is the couple's only (reg 74(4), para 8(4));
  another adult is banded on their own income.
- The IS, income-based JSA, income-related ESA, Pension Credit and UC
  exemptions apply only to the award's claimant and partner.
- The HB claimant exemption reads is_claimant_or_partner, not is_adult.

Drops council_tax_reduction_pension_credit.yaml and the
in_receipt_of_guarantee_credit output, which depend on #1909 (main only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
Applies #2007 at 6257277 (59c7082 plus the
r1 review commit) onto #2017 (in-unit non-dependants, #2006 rent shares):

- One definition of claimant or partner: #1896's is_claimant_or_partner
  variable. #2007's proxy helper (benefit-unit head or any member who is not
  a Child Benefit child or QYP) is removed and its call sites read the
  variable.
- HB and national CTR aggregation: another family's non-dependants per
  deduction_per_family (the couple's higher amount, both for a Welsh
  working-age UC couple, and each other member's own), counted once per
  family and apportioned by rent share (HB) or joint-liability share (CTR);
  a family's own in-unit non-dependants in full (LHA Guidance Manual 2.093;
  HBGM A5 5.622); the claimant exemptions. charged_to_other_families
  ("household minus own family") is no longer used and is removed.
- #2007's property oracle reads is_claimant_or_partner; the in-unit
  property oracle counts a couple once and applies the claimant exemptions.
- Drops council_tax_reduction_pension_credit.yaml and the
  in_receipt_of_guarantee_credit output (#1909, main only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
Conflicts resolved: ESA/IS/JSA/HB/UC assessable capital keep the
claimant-and-partner household share and add main's person-level capital
(Lifetime ISA, #1983) for the claimant or partner; CTR applicable income keeps
member-based deductions and adds main's guarantee-credit and savings-credit-only
rules (#1909); progression.py keeps both imports.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
…it in the CTR tests

The CTR tests from #1909 asserted a calculated guarantee credit for a
working-age non-dependant, a mixed-age couple and a Welsh working-age earner.
This branch defines guarantee_credit only for Pension Credit-eligible benefit
units, so those are 0; the CTR outcomes the tests pin are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
…nd partners

The property tests merged from #1958 and #1909 build couples such as 42 and 18
or 67 and 18 without relationship inputs, which this branch's presumption reads
as a parent and child. Set is_claimant_or_partner from each generated role
(adults True, children False, a separate non-dependant True for their own
benefit unit), as the FRS supplies it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
…lify the 20% invariant

After merging main, a pension-age couple on Guarantee Credit has its whole
income disregarded for Council Tax Reduction (SSI 2012/319 reg 24, modelled
since #1909), so the case now expects applicable income of 0 and checks the
Carer Support Payment itself. The property docstring says the 20% fall holds
where claiming leaves the applicable amount unchanged, as the review of
1f361a3 asked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 2, 2026
- Count land and property other than the home in council tax reduction
  capital (national schemes and the modelled local schemes), so a let
  property worth more than 16,000 ends CTR now that its rent is not income
  (SI 2012/2885 Sch 1 para 31(1); WSI 2013/3029 reg 30). Shares stay out
  pending the pension-wealth split (#1936).
- Deduct only the Step 4 tax on counted income (ITA 2007 s.23), less its
  pro-rata share of Step 6 reductions; Step 7 charges (HICBC, annual
  allowance charge; s.30) are not tax on counted income.
- Select the Scottish working-age scheme under SSI 2021/249 reg 3 (under
  pensionable age, or over it with UC or a qualifying income-related
  benefit) and date its exclusion of sub-tenant rent from 1 April 2022;
  before then SSI 2012/303 Sch 4 para 25 counted it less 20.
- Count only the claimant's and partner's sublet rent; give the pension-age
  disregard its pre-October-2003 value (4) so early years compute.
- Update #1909's CTR property test to the new income and capital rules, hold
  Marriage Allowance fixed in the invariance property, qualify the isolated
  HB fixture, and add YAML cases for each fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants