Repository navigation
Test Winter Fuel Payment and PAWHP receipt per person - #2038
Merged
Merged
Conversation
Both payments pooled Pension Credit, Income Support, income-related ESA and income-based JSA across the household, so a non-dependant's award qualified a pensioner in the same household (2024) or exempted them from the income test (2025 on). The regulations entitle and pay a person: - a person is on a relevant benefit through their own award, or their couple's for the claimant and partner (is_on_* variables; Universal Credit, and tax credits of at least £26 for the 2024 week, now count); - a couple on a relevant benefit gets one payment; anyone else gets the full amount alone and a shared amount when living with another entitled person (SI 2000/729 reg 2; SI 2024/869 regs 2-4; SI 2025/969 regs 2-4; SSI 2024/351 regs 5, 9, 10); - the household variables add up their members' payments. Also pay the Winter Fuel Payment in Scotland up to the 2023 week and PAWHP only from 2024; pay PAWHP from 2025 at the legislated amounts (SSI 2025/282, 2025/100, 2026/170) instead of a flat £100; cite SSI 2024/351 rather than SSI 2024/250 (a planning instrument); register PAWHP in programs.yaml. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The £35,000 limit comes from the winter fuel payment charge (FA 2026 Sch 10), not SI 2025/969, and require_benefits stays true from 2025 only as the model's stand-in for that charge; say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…edit minimum Review findings on #2038: - The couple's payment went to the elder member. The law pays the person the relevant benefit is paid to (SI 2025/969 reg 4(2)(a); explanatory memorandum para 5.8), and that choice sets a third person's shared rate: an 82-year-old lodger gets £200 living with an entitled 70-year-old claimant, £150 with an entitled 85-year-old. The payee is now the member who reports the award, else the benefit-unit head, else the elder. - A tax credit award below £26 counted when entered on the benefit unit. Each scheme now has its own minimum_tax_credit_award (£26 for the 2024 week, infinite otherwise) applied to a new person-level tax_credit_award, replacing is_on_tax_credits. - Correct the SSI 2025/282 reg 17 comment and document the 2025 PAWHP couple rule as an interpretation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…HP cases Review round 2 on #2038: - A minimum_tax_credit_award of 0 made everyone qualify (0 >= 0); the tax credit route now needs a positive award as well. - Tests: PAWHP £26 on the couple's award; for both schemes, a pensioner who is neither claimant nor partner reporting £25 (nothing) and £26 (£200); a reform test with the minimum at 0. - Nits: cite NISR 2024/160 for the NI £26 minimum, reg 9(1)(d) as made for one PAWHP payment per couple in 2024, and SI 2000/729 and SSI 2024/351 for why the payee matters to others; fail loudly on an unmapped relevant benefit; rename a shadowing argument; mark the 2025 reg 9(d) test comment as the model's reading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 2, 2026
…rtner' into winter-heating-per-person-receipt
…ayments #2027 now names the one member of a couple an income-related award is paid to. The winter heating instruments use two readings: - SI 2000/729, SI 2025/969 and NISR 2025/142 ask whether a relevant benefit "has been, or falls to be, paid to" P: the payee only for IS, JSA(IB), ESA(IR) and Pension Credit; both members for UC and tax credits. - SI 2024/869 reg 2(5), NISR 2024/160 reg 2(5) and SSI 2024/351 (reg 7(2), 10(8), 2A) count a couple member as on one when the other member is. New `partner_receipt_counts` parameters pick the reading per scheme and year. A couple on a relevant benefit still gets one payment: the couple's receipt decides the exclusion (SI 2000/729 reg 3(1)(a)(i), SI 2025/969 reg 4(2)(a), SI 2024/869 reg 4(1)(a)(i), SSI 2024/351 reg 9(d)). `is_on_pension_credit` now names the payee, as the legacy readers do. Without this, an ESA couple of pensionable age got two Winter Fuel Payments after #2027's change. New YAML cases cover mixed-age IS/JSA/ESA and UC couples under each instrument; the Hypothesis reference states both readings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 5, 2026
MaxGhenis
changed the base branch from
legacy-award-readers-claimant-partner
to
main
October 9, 2026 22:23
…n-receipt Conflict in winter_fuel_allowance.py: main dated the Winter Fuel Payment age test (fcfcd41). Before the 2024 qualifying week SI 2000/729 reg 2(1)(b) tests the qualifying age for State Pension Credit, and from then SI 2024/869 reg 2(1)(a) and SI 2025/969 reg 2(a) test pensionable age. This branch replaces the household formula with the sum of the per-person winter_fuel_payment, so winter_fuel_allowance keeps the branch's adds and winter_fuel_payment_eligible now applies main's dated test, both to the person's own age condition and to the household income test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
October 10, 2026 15:26
The "paid to" and couple readings are part of this PR's new person-level receipt test, not a fix to released behaviour, so the receipt entries now state them. The added entry no longer says Pension Credit counts for both members of a couple: it names the member it is paid to. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oint payment Answers review r4 on 17ce236. P1: is_on_pension_credit took the payee to be whichever member of the couple reports the award, else the benefit-unit head. A Pension Credit claimant must have attained the qualifying age (SPCA 2002 s.1(2)(b)), so a 75-year-old in a mixed-age couple whose 60-year-old partner reported the award lost the relevant-benefit rate, and a lodger's shared rate followed. is_payee_of_couple_award gains an optional can_claim limit (default unchanged for the legacy readers); Pension Credit passes has_attained_state_pension_credit_qualifying_age. Where neither member has attained it, both are considered as before. Three YAML cases pin the payee rule. They kill the surviving mutant that read Pension Credit for both members, and the mutant without the age limit. The Hypothesis reference states the same rule. P3: Universal Credit is awarded to a couple jointly (WRA 2012 s.1(2)(b)) and paid into an account the joint claimants nominate (Universal Credit etc. (Claims and Payments) Regulations 2013 reg 47(4)); reg 47(6) pays it wholly to one member only by special arrangement. So it falls to be paid to both, unlike the legacy awards, which are the claimant's alone. The docstrings, the YAML case, the Hypothesis reference and the changelog now say this instead of "joint awards, paid to both". Tax credits count only under the 2024 instruments, which count the couple either way. Nit: the one-unit property's docstring now names its scope (a single person or a couple with no one else in the household). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Answers review r5 on 4f2758c. P1: the couple's payee was the member who reports any relevant-benefit award, whether or not it is paid. A partner aged 67 whose ESA report the model pays nothing on took the payment from the 80-year-old the couple's Pension Credit is paid to: £200 instead of £300 (SI 2025/969 regs 3(4) and 4(2)(a)). The payee is now the member a relevant benefit is paid to (paid_relevant_benefit, read through the is_on_* variables). Between two it is paid to (a joint award), the member who reports the award paid to them, then the benefit-unit head, then the elder. P1: is_on_universal_credit put both members of a couple on the award, including a partner who cannot be a joint claimant (uc_is_ineligible_partner). The other member then claims as a single person (Universal Credit Regulations 2013 reg 3(3)) and the award is theirs alone. Such a partner aged 72, living with a 75-year-old lodger, got £200 instead of £100 (reg 3(2)). Two YAML regressions fail on 4f2758c and pass here. The Hypothesis reference ranks the payee the same way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
added a commit
that referenced
this pull request
Oct 10, 2026
Brings in #2038 (winter heating payments) and #2258 (Test job limit 120 minutes). programs.yaml merged automatically: main's winter fuel and PAWHP entries, this branch's benefit cap entry. None of this branch's cap, LHA, UC or HB files changed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
winter_fuel_allowanceandpawhpdecided means-tested status for the whole household:That pools every benefit unit. So a non-dependant adult child's income-related ESA:
The law tests receipt person by person, and pays each person. This PR rewrites both payments that way.
It builds on #2027 (merged as
bbb9576e8). It uses #2027'sis_on_income_related_esa,is_on_income_based_jsaandis_on_income_support, which name the one member of a couple an award is paid to.The law
Fetched verbatim from legislation.gov.uk (
/data.xml) on 2026-10-02.What changed
Receipt, per person. New person variables:
is_on_pension_credit. Pension Credit is the claimant's entitlement and is paid to the claimant (SPCA 2002 ss.1 and 5). The claimant must have attained the qualifying age (s.1(2)(b)). So of the claimant and partner, the model puts on it a member who has attained that age: the one who reports the award, else the benefit-unit head, else the elder. Where neither has, the same order applies to both, as in Count only the claimant's and partner's legacy awards in means tests and passports #2027's readers. Anyone else is on it only through their own report.is_on_universal_creditandtax_credit_award. Both are claimed jointly (WRA 2012 s.2(1)(b); TCA 2002 s.3(3)(a)), so for the claimant and the partner they read the couple's award. Universal Credit is also awarded jointly (WRA 2012 s.1(2)(b)) and paid into an account the joint claimants nominate (Universal Credit etc. (Claims and Payments) Regulations 2013 reg 47(4)). Reg 47(6) pays it wholly to one member only by special arrangement. The exception is a partner who cannot be a joint claimant (uc_is_ineligible_partner): the other member then claims as a single person (Universal Credit Regulations 2013 reg 3(3)), so the award is not that partner's. Anyone else is on one only through their own report.is_on_winter_fuel_payment_relevant_benefitandis_on_pawhp_relevant_benefit. They read three new dated parameters for each scheme, undergov.dwp.winter_fuel_payment.eligibilityandgov.social_security_scotland.pawhp.eligibility:relevant_benefits, the list.minimum_tax_credit_award: £26 for the 2024 week and infinite otherwise. The winter threshold therefore stays at £26 even if the tax credit payment minimum is reformed.partner_receipt_counts: whether a member of a couple is on a relevant benefit when the other member is. It is false for the Winter Fuel Payment under the 2000 and 2025 regulations ("paid to"). It is true for the 2024 week (SI 2024/869 reg 2(5)) and for PAWHP throughout.Payments, per person; household totals kept. I kept
winter_fuel_allowanceandpawhpas the Household variables every reader uses: household benefits, HBAI,gov_spending, the cost-of-living pensioner payment anddisable_simulated_benefits. Each now adds up new person-level payments,winter_fuel_paymentandpension_age_winter_heating_payment, withwinter_fuel_payment_eligibleandpawhp_eligible. Shared logic is inpolicyengine_uk/utils/winter_heating.py.I did not keep the old £200/£300-per-household structure, because the law requires per-person payments. Every instrument entitles and pays a person, and sets the amount from that person's own receipt, age, partner's age and who they live with. A household rule matches the law only when one benefit unit holds every pension-age member. Otherwise it is wrong:
A relevant-benefit couple gets one payment whichever test applies: the couple's receipt decides who is excluded. The payment goes to the member the benefit is paid to. SI 2025/969 reg 4(2)(a) excludes the partner of the pension-age person paid, and the explanatory memorandum (para 5.8) names the lead claimant, or the partner when only the partner has reached pensionable age. Where a benefit is paid to both members (a joint award), the model takes the claimant to be the member who reports the award, failing that the benefit-unit head, failing that the elder. A report of an award the model does not pay does not count.
This matters beyond the couple. A Pension Credit claimant aged 70 with a partner aged 85 gets £300, and their 82-year-old lodger gets £200 (reg 3(5)). Paying the 85-year-old instead would give the lodger £150 (reg 3(6)).
Under the "paid to" test, the partner of an income-related ESA claimant who is under pensionable age is not on a relevant benefit, because the award is the claimant's alone. So under SI 2025/969 the partner is paid at their own rate: £200 alone, £100 beside another entitled person (reg 3(2)). Under SI 2024/869 they are entitled through the couple. Universal Credit falls to be paid to both joint claimants, so the pension-age member of a Universal Credit couple keeps the full £200 beside a lodger.
Everyone in a household is taken to live together; residential care, long hospital stays and custody are not modelled.
Age.
winter_fuel_payment_eligibleapplies the dated test from main (fcfcd4189), person by person. It uses the qualifying age for State Pension Credit up to the 2023 week and pensionable age from 2024, both for the person's own entitlement and in the household income test.pawhp_eligibleuses pensionable age.Residence. SI 2000/729 covered Great Britain up to the 2023 qualifying week. From 2024 the Winter Fuel Payment covers England and Wales (SI 2024/869 reg 1(2); SI 2025/969 reg 1(2)) and PAWHP Scotland. The old code excluded Scotland from the Winter Fuel Payment in every year and paid "PAWHP" in 2022-23. New parameters:
gov.dwp.winter_fuel_payment.eligibility.countriesandgov.social_security_scotland.pawhp.active. Northern Ireland pays under mirror regulations, and the existing parameters stand in for them as before.PAWHP amounts. From the 2025 week there is no relevant-benefit condition (SSI 2025/282 reg 5 omits reg 7), and the legislated amounts apply. The removed
pawhp.amount.basepaid £100 per household not on a relevant benefit; the regulations have no such amount. The higher and lower amounts were CPI projections (£206.80 / £310.20 for 2025); they are now the legislated £203.40 / £305.10 (SSI 2025/100) and £211.15 / £316.70 (SSI 2026/170). CPI uprating continues beyond 2026.Citations. The PAWHP parameters cited SSI 2024/250, which is the Town and Country Planning (Amendment of Local Development Plan) (Scotland) Regulations 2024. They now cite SSI 2024/351 and its amending instruments.
Registry.
programs.yamlgains a PAWHP entry, and the Winter Fuel Payment entry'svariable: winter_fuel_paymentnow exists.Kept as is. The Winter Fuel Payment income test (
taxable_income_test) still stands in for the s.681I charge. It applies to a household with any member of pensionable age under £35,000, in England and Wales only. The relevant-benefit exemption it gives is now per person: a non-dependant's award no longer exempts the pensioner. A per-person charge is #2066.Parameter dates follow the files' convention: PE-UK reads parameters at 30 April, so regime changes for a September qualifying week are dated 1 January of that year, with a comment giving the instrument's in-force date.
Invariants (property-tested)
policyengine_uk/tests/test_winter_heating_payment_properties.py:Mutation checks:
4f2758c5dand pass onc12f8200a.Tests
tests/policy/baseline/gov/dwp/winter_fuel_payment/relevant_benefit_receipt.yaml: 33 cases, 2023-2025. They include:tests/policy/baseline/gov/social_security_scotland/pawhp.yaml: 23 cases, 2024-2026.tests/policy/reforms/parametric/winter_fuel_allowance/minimum_tax_credit_award.yaml: 3 reform cases (a minimum of 0 still needs a positive award).winter_fuel_allowance.yamlasserted no Winter Fuel Payment in Scotland in 2023. SI 2000/729 paid it there that winter, so the case now uses 2024. Main's four dated age-test cases in that file pass unchanged.e89b8abcf), 35 of the 56 cases give a household total that differs from the law:e89b8abcf)c12f8200a:policyengine-core testontests/policy/baseline/gov,tests/policy/integrationandtests/policy/reforms/parametric/winter_fuel_allowance: 1,608 passed.pytest test_winter_heating_payment_properties.py: 3 passed. (test_legacy_award_readers_properties.py: 11 passed on4f2758c5d;c12f8200adoes not touch the legacy readers.)Testjob (make test: every YAML test and the wholepolicyengine_uk/testspytest suite) passed onc12f8200a.ruff format --check policyengine_uk: clean.Enhanced FRS impact
Real
Microsimulationruns, both trees clean, one run at a time. The base is main ate89b8abcf, the commit merged into this branch, which includes #2027. The branch isa2a1b0355. Each run used its own fresh private copy of a dataset; the H5 inputs and per-record arrays stay private.The branch was run again at
4f2758c5d(the round-4 fixes) and atc12f8200a(the round-5 fixes), each on fresh copies. In both, every per-record array matches thea2a1b0355run in every year, so the figures below are unchanged.e433e532…).4c2b5e41…).All figures are weighted totals in £m.
gov_spendingWhere it comes from (groups of fewer than 10 survey records are not reported):
winter_fuel_allowanceis in household benefits and HBAI income, andpawhpis only ingov_spending. So Scottish pensioners' winter payment now counts in household net income.winter_fuel_allowance, so it now reaches them: +£223.2m.pawhpis ingov_spendingbut not in household income (Count the Pension Age Winter Heating Payment in household and HBAI income #2047 adds it), so these do not change household net income or poverty.The 2022 qualifying week (Scotland's Winter Fuel Payment and the £300 pensioner cost-of-living payment) is not run: no 2022 dataset is at hand. policyengine-uk-data's OBR targets map the welfare line "Winter fuel payment" to
winter_fuel_allowance, so a rebuild will calibrate to the new totals.Interpretations
The model takes these readings where the law, or the data, leaves a choice. Each is documented in the code.
Review
subfleet run --task review --tier standard:Round 1, on
fe6aff256: REQUEST_CHANGES. Findings:All fixed in
816bd338b, with regressions.Round 2, on
816bd338b: REQUEST_CHANGES (P3).minimum_tax_credit_awardof 0 qualified everyone; the PAWHP £26 and own-report tax credit cases were untested.All fixed in
071d5170b. The reviewer's two surviving mutants now fail.Round 3, on
071d5170b: APPROVE, with no remaining findings.Since then:
4104aff94added the two receipt tests after Count only the claimant's and partner's legacy awards in means tests and passports #2027 made its readers name the payee. Without it, an income-related ESA couple of pensionable age got two payments.a2a1b0355merges main, and17ce2368afolds the changelog.Round 4, on
17ce2368a(the change since round 3): REQUEST_CHANGES.is_on_pension_creditcould make a partner under the qualifying age the payee, so a 75-year-old whose 60-year-old partner reported the award lost the relevant-benefit rate. Fixed in4f2758c5d, with three YAML cases and the Hypothesis reference.Round 5, on
4f2758c5d: REQUEST_CHANGES.All fixed in
c12f8200a, with two YAML regressions.Round 6, on
c12f8200a: APPROVE, with no P1-P3 findings. One nit, the one-unit invariant's income and country limits, is fixed here.Axiom
axiom: TheAxiomFoundation/rulespec-uk#420 queued
Of these provisions only SI 2025/969 reg 3 is in the corpus, encoded as amount parameters with no rule that selects a person's amount. Its composed pipeline (
uk/policies/winter_fuel_payment_composed_award_pipeline.yaml) treats the payment as a benefit-unit amount. SI 2025/969 regs 1, 2 and 4, SI 2024/869, SI 2000/729, SSI 2024/351 and its amending instruments, and FA 2026 Sch 10 are not ingested. The issue holds the verbatim law, the required outputs, a pasteablereview_findingand companion tests taken from this PR's YAML.Follow-ups
pawhpinhousehold_benefitsand HBAI income. Since Add the Scottish WFP #1000, Scottish pensioners' winter heating payment has been missing from household net income.🤖 Generated with Claude Code