Skip to content

Count the Pension Age Winter Heating Payment in household and HBAI income - #2047

Merged
MaxGhenis merged 9 commits into
mainfrom
pawhp-household-income
Oct 13, 2026
Merged

MaxGhenis merged 9 commits into
mainfrom
pawhp-household-income

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #2313

This was stacked on #2038, which pays the Winter Fuel Payment in Scotland up to the 2023 qualifying week and the Pension Age Winter Heating Payment (PAWHP) per person from 2024. #2038 has merged (40121430). This branch targets main and includes it at 1d3abecef (merge commit 0276467dd, no conflicts).

Summary

#1000 (merged 5 December 2024) stopped paying winter_fuel_allowance in Scotland and added pawhp to gov_spending. It did not add it to household_benefits, hbai_household_net_income or hbai_benefits, which all count winter_fuel_allowance. Since then, Scottish pensioners' winter heating payment has been counted as government spending but never reached household net income or HBAI income. PolicyEngine/impact-iran-war-living-standards works around it (BENEFITS_OUTSIDE_HOUSEHOLD_BENEFITS = ["pawhp"]).

This PR adds pawhp next to winter_fuel_allowance in all three lists.

disable_simulated_benefits

Checking how the reform treats PAWHP showed that the reform could not run at all:

  • Simulation.__init__ never set tax_benefit_system.simulation. Core applies a reform by calling its apply() with the tax-benefit system as self, so the reform's self.simulation raised AttributeError. Core's own Simulation.__init__ sets the attribute, but PolicyEngine UK's __init__ replaces core's. It is now set before the structural reforms are applied. (adjust_budgets reads self.simulation the same way.)
  • Five list entries had no reported amount: attendance_allowance, dla_m, dla_sc, pip_dl and pip_m (ValueError: Variable attendance_allowance_reported does not exist). policyengine-uk-data converts their reported amounts into award categories (aa_category, …; add_disability_benefit_categories_from_reported_amounts), and the model pays the category's rate, so they already follow the reported award. They are dropped from the list. A code-health test now requires every listed benefit to have a _reported variable, and every simulated benefit with one to be listed or excluded with a reason, and never both. Maternity Allowance is excluded because it already adds maternity_allowance_reported.

Treatment of PAWHP. There is no pawhp_reported. The survey records one winter heating payment, FRS benefit code 62, which policyengine-uk-data loads into winter_fuel_allowance_reported for every respondent, Scotland included. Had winter_fuel_allowance stayed set from it while pawhp stayed simulated, Scottish households would have counted the payment twice now that both are household income. The reform now sets both from the one report, year by year. A Scottish household's report becomes its pawhp in the years PAWHP is paid (gov.social_security_scotland.pawhp.active, from the 2024 qualifying week) and its winter_fuel_allowance before then. Every other household's report stays winter_fuel_allowance. Each report is counted once, under the scheme that pays it, and the programme totals match the simulated definitions.

The reform runs whether its parameter is set before the data load (Scenario(applied_before_data_load=True, ...)) or through an ordinary reform= dict. Since #2305, parameter changes set after the data load are applied before the structural reforms are created. Tests cover both routes.

Overlap with #2075. #2075 owns the generic repair of this reform: the tax_benefit_system.simulation line, the AA/DLA/PIP removal, and claimant-or-partner scoping of ESA, JSA and Income Support. This PR carries the same two generic fixes so it can run and test its winter heating treatment on its own stack. Whichever PR lands second keeps #2075's structure, takes winter_fuel_allowance out of its BENEFITS, and keeps the winter heating split here after the generic loop, so the one reported payment is counted once. test_no_benefit_is_both_listed_and_excluded fails if winter_fuel_allowance is left in BENEFITS, and the conservation tests fail if the split is lost.

Cost-of-Living Payments

Unchanged. The pensioner payment (£300 in 2022-23 and 2023-24, £0 from 2024) is keyed on winter_fuel_allowance > 0, which this PR does not change. #2038 pays the Winter Fuel Payment in Scotland up to the 2023 week. Under the reported-benefits reform, Scottish reports stay winter_fuel_allowance in 2022 and 2023, when PAWHP is inactive. Evidence: a 2023 YAML case, a reform test (the pensioner payment moves with the report only in 2023), and the Enhanced FRS run (largest change in cost_of_living_support_payment in any household, 2024-30: £0).

Invariants

  1. Income identity. For every household, switching PAWHP off lowers household_benefits, household_gross_income and hbai_benefits by exactly its pawhp, and household_net_income and hbai_household_net_income by its pawhp less the change in its income tax. That change is zero today; the term keeps the property true once the winter fuel payment charge (ITEPA 2003 s.681I) is modelled in income tax. Switching PAWHP off changes neither winter_fuel_allowance nor cost_of_living_support_payment. Tested as a Hypothesis differential property over households in every country, 2023-27, at float32 precision. Two explicit examples always run with it: a single Scottish pensioner in 2025 and a Scottish couple on Pension Credit in 2024, each checked to receive PAWHP. On the Enhanced FRS, the base-to-branch change equals pawhp for every household in every year 2024-30. For household_benefits, hbai_benefits and both HBAI net income measures it holds to within 1p in every household. For household_net_income and household_gross_income, the records more than 1p off all have household income above £60k, and each is within 2 float32 spacings (at most 1.71) of the larger of its net and gross income, at most 1.6 parts in 10 million of gross income.
  2. No spending change. gov_spending, gov_balance, pawhp, winter_fuel_allowance and cost_of_living_support_payment are unchanged in every Enhanced FRS household, 2024-30 (largest absolute change: 0).
  3. List consistency (code health). Every gov_spending item is in household_benefits except other_public_spending_budget_change, a contrib budget lever. Both winter heating payments appear exactly once in household_benefits, the HBAI net income list, hbai_benefits and gov_spending.
  4. Reported mode. In each of the reform's years, winter_fuel_allowance + pawhp equals the household's reported winter heating payment (conservation). The report is pawhp exactly where the household is in Scotland and PAWHP is paid (placement). household_benefits and hbai_household_net_income exceed those of the same dataset with no report by the report plus the pensioner Cost-of-Living Payment it brings (differential). Conservation and placement are tested with Hypothesis over datasets in every region starting 2022-25, under Simulation. Example tests check them under Simulation and Microsimulation, for datasets starting 2023 and 2025, and with the reform set before and after the data load.

Tests

  • tests/policy/baseline/household/income/winter_heating_payments_in_income.yaml: 5 cases.
    • A Scottish single pensioner in 2025 and a couple in 2026 (shared amounts), and a Pension Credit recipient in 2024. On main (1d3abecef), household_benefits, household_net_income, hbai_benefits and hbai_household_net_income miss the PAWHP, so these three cases fail there and the two controls pass (run 2026-10-13).
    • Two controls: an English pensioner in 2025 (Winter Fuel Payment), and a Scottish pensioner in 2023 (Winter Fuel Payment and the £300 pensioner Cost-of-Living Payment, no PAWHP).
  • tests/code_health/test_household_income_lists.py: invariant 3.
  • tests/test_pawhp_household_income_properties.py: invariant 1, with its two explicit PAWHP recipients.
  • tests/test_disable_simulated_benefits_winter_heating.py: the reform runs under Simulation and Microsimulation and from a reform= dict; its list matches the reported variables, and no benefit is both listed and excluded; invariant 4. With the reform off, the new reform= dict test's check fails, as it should.
  • Mutation check: all 9 mutants killed on 27f5fdb0f, an earlier head (no Hypothesis shrinking): pawhp dropped from each of the three lists, listed twice, the reform putting every report in winter_fuel_allowance, double counting Scotland, splitting a year late, Simulation not setting tax_benefit_system.simulation, and attendance_allowance back in the reform's list.
  • Local, on 0276467dd: the YAML suites for household income, the Winter Fuel Payment, PAWHP and the Treasury (212 passed); pytest over tests/code_health, both PAWHP property files and the reform tests (2302 passed). On 371ff4605: the reform tests (13 passed); ruff format --check and ruff check clean with ruff 0.17.0.
  • Full suites: the PR checks on 371ff4605 (see the checks).

Impact (Enhanced FRS)

One real microsimulation per package state on a private copy of enhanced_frs_2024_25.h5 (sha256 e433e532b17b…), 2024-30, run on 2026-10-13. Base: main at 1d3abecef. Branch: 0276467dd (this PR merged with that main; the later 371ff4605 changes only a test). Aggregates only. A poverty change that rests on fewer than 10 households is shown as such. The change moves no spending (gov_spending and gov_balance unchanged in every household), so the whole effect is on income and poverty.

Year PAWHP (£m) Change in household net income (£m) Change in HBAI net income, BHC and AHC (£m) Households gaining (thousands, all in Scotland)
2024 34.7 +34.7 +34.7 135
2025 201.1 +201.1 +201.1 842
2026 208.2 +208.2 +208.2 839
2027 211.2 +211.2 +211.2 833
2028 215.5 +215.5 +215.5 833
2029 220.7 +220.7 +220.7 836
2030 226.2 +226.2 +226.2 840

Absolute poverty (HBAI line, 60% of the FYE 2025 median held constant in real terms; percentage points, people in thousands):

Year All, BHC All, AHC Pensioners, BHC Pensioners, AHC Scottish pensioners, BHC Scottish pensioners, AHC
2024 0 fewer than 10 households 0 fewer than 10 households 0 fewer than 10 households
2025 -0.005 (-3.2k) -0.006 (-4.5k) -0.026 (-3.2k) -0.037 (-4.5k) -0.307 (-3.2k) -0.432 (-4.5k)
2026 -0.001 (-0.9k) -0.007 (-5.2k) -0.007 (-0.9k) -0.037 (-4.5k) -0.086 (-0.9k) -0.437 (-4.5k)
2027 -0.002 (-1.6k) -0.004 (-2.8k) -0.011 (-1.3k) -0.024 (-2.8k) -0.129 (-1.3k) -0.277 (-2.8k)
2028 -0.003 (-2.0k) -0.004 (-3.0k) -0.014 (-1.7k) -0.026 (-3.0k) -0.164 (-1.7k) -0.293 (-3.0k)
2029 -0.002 (-1.5k) -0.003 (-2.3k) -0.012 (-1.4k) -0.019 (-2.3k) -0.139 (-1.4k) -0.220 (-2.3k)
2030 -0.003 (-2.2k) -0.004 (-2.7k) -0.018 (-2.1k) -0.021 (-2.5k) -0.204 (-2.1k) -0.242 (-2.5k)

Relative poverty (60% of the contemporary median):

Year All, BHC All, AHC Pensioners, BHC Pensioners, AHC Children, AHC Working age, AHC
2024 fewer than 10 households 0 fewer than 10 households 0 0 0
2025 -0.017 (-12.2k) -0.007 (-5.0k) -0.099 (-12.0k) -0.055 (-6.6k) 0 fewer than 10 households
2026 -0.114 (-79.8k) -0.016 (-11.0k) -0.665 (-79.7k) -0.089 (-10.7k) 0 fewer than 10 households
2027 -0.102 (-71.6k) -0.000 (-0.3k) -0.608 (-71.5k) -0.007 (-0.9k) 0 fewer than 10 households
2028 -0.006 (-4.4k) -0.014 (-10.1k) -0.038 (-4.4k) -0.086 (-10.1k) 0 fewer than 10 households
2029 -0.073 (-51.6k) +0.006 (+4.5k) -0.440 (-51.6k) -0.072 (-8.4k) fewer than 10 households +0.017 (+7.3k)
2030 -0.073 (-52.2k) -0.106 (-75.7k) -0.443 (-52.2k) -0.643 (-75.7k) 0 0

Each poverty change shown rests on 10 to 36 households. Relative poverty moves in large, irregular steps because incomes are bunched near the line. A diagnostic on the run counted 25k to 182k Scottish people (by year) with equivalised income below the base BHC line by less than the largest equivalised PAWHP gain (£8.61 to £9.84 a week). Their incomes take only 29 to 44 distinct values. A gaining household receives £239 to £269 a year on average (about £5 a week), which moves whole blocks across the line: 80k Scottish pensioners in 2026, 72k in 2027, and 52k in each of 2029 and 2030 (BHC). The BHC median does not move. The AHC median rises by at most £0.39 a week, in 2029, which raises the AHC line by £0.24 a week. That year 15.1k people outside Scotland, in 14 households, fall below the raised line, so relative AHC poverty rises overall (+4.5k) even though it falls for Scottish pensioners. The absolute measures, whose line is fixed, are the cleaner read of the effect: Scottish pensioner AHC poverty falls by 0.22 to 0.44 points a year from 2025. The 2024 effect is small because the model pays PAWHP in 2024 only to recipients of a relevant benefit (gov.social_security_scotland.pawhp.eligibility.require_benefits is false from 2025).

Scripts, logs and diagnostics: dataset_impact.py, compare_impact.py, diagnose.py, diagnose_gross_ulp.py and pr_tables_suppressed.py (kept privately with the run; the per-record arrays are not published).

Axiom

axiom: n/a: aggregation only (PAWHP's place in household and HBAI income lists) plus a contrib reform; PAWHP itself is TheAxiomFoundation/rulespec-uk#420 queued (from #2038)

Follow-ups

  • PolicyEngine/impact-iran-war-living-standards adds pawhp on top of household_benefits unconditionally. Once its policyengine bundle reaches a release with this PR, the PAWHP change would be counted twice there. A follow-up makes the adjustment conditional.
  • hbai_benefits omits scottish_child_payment and council_tax_benefit, which household_benefits counts. A follow-up will verify these and reconcile them. (gov_spending has counted Scottish Child Payment, Healthy Start and the Two Child Limit Payment since Land six reviewed pull requests together (rollup B) #2380.)
  • adjust_budgets runs for the first time with this PR's tax_benefit_system.simulation fix. It scales spending by the budget change over spending.sum(), which is weighted for a Microsimulation (a MicroSeries) but unweighted for a Simulation (a NumPy array). A follow-up fixes the Simulation case.
  • Under disable_simulated_benefits, a Scottish carer's reported Carer's Allowance is counted twice from 2025: carers_allowance is set from the report while carer_support_payment stays simulated. The list entry predates this PR, and Fix disable_simulated_benefits and read one claimant-or-partner award #2075 owns the generic list; reported there with a synthetic-household probe (comment).

Reproducer: policyengine_uk/tests/policy/baseline/household/income/winter_heating_payments_in_income.yaml, policyengine_uk/tests/code_health/test_household_income_lists.py::test_winter_heating_payments_are_counted_in_every_income_list

🤖 Generated with Claude Code

MaxGhenis and others added 3 commits October 2, 2026 07:42
pawhp was in gov_spending but not in household_benefits,
hbai_household_net_income or hbai_benefits, so once the Winter Fuel
Payment stopped covering Scotland (2024 qualifying week), Scottish
pensioners' winter heating payment fell out of household net income and
HBAI income. Add it to the three lists next to winter_fuel_allowance.

disable_simulated_benefits could not run: Simulation never set
tax_benefit_system.simulation (core's __init__ does, this one replaces
it), and the reform named five _reported variables that no longer exist
(AA, DLA and PIP follow the reported award through their categories).
Set the attribute, drop the five, and count the one reported winter
heating payment (FRS code 62, Scotland included) once: as pawhp in
Scotland while PAWHP is paid, as winter_fuel_allowance otherwise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Matches the constant name used by the parallel disable-simulated-benefits
rework, and keeps the two branches from adding the same test file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Net measures fall by pawhp less the change in the household's income tax
(zero today), so the property still holds once the winter fuel payment
charge (ITEPA 2003 s.681I) is modelled in income tax. Compare at float32
precision: a 1p tolerance failed on a household with net income of about
150,000, where one float32 step is 1.6p.

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

Copy link
Copy Markdown
Collaborator Author

#2038 merged into main as 4012143, so this PR's base is now main. It branches from #2038 at 071d5170b. Since then #2038 gained the following, and this branch needs a merge of main before its tests and impact numbers count:

  • partner_receipt_counts ("paid to" versus couple receipt);
  • a payee-only is_on_pension_credit limited to members over the qualifying age;
  • paid_relevant_benefit / reports_paid_relevant_benefit for the couple's payee, replacing reports_relevant_benefit;
  • is_on_universal_credit excluding uc_is_ineligible_partner;
  • main's dated age test in winter_fuel_payment_eligible.

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 11, 2026 15:00
Main added bus_fare_spending_reported (c8d1f89), household bus and coach
spending kept as a fallback for journey data. It is not a benefit, so the
check that every simulated benefit with a reported amount is set by
disable_simulated_benefits lists it with the other non-benefits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 3 commits October 11, 2026 23:44
… apart

The differential property drew six derandomised populations, and nothing
made one of them include a household that receives PAWHP. Two explicit
examples now always run: a single Scottish pensioner in 2025 and a Scottish
couple on Pension Credit in 2024. The fixed check that used to build its own
population now checks that each example receives PAWHP.

A new check fails if a benefit is both in disable_simulated_benefits'
BENEFITS and excluded from it. winter_fuel_allowance in particular must stay
out of BENEFITS: the winter heating split sets it, and a generic entry as well
would be harmless only while the split runs after the generic loop (relevant
when #2075 meets this branch).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Since #2305, parameter changes set after the data load are applied before
the structural reforms are created, so disable_simulated_benefits now runs
from an ordinary reform= dict as well as from a Scenario applied before the
load. A new test checks that the winter heating report is still counted once
on that route, under Simulation and Microsimulation, and the module docstring
no longer says the reform needs the parameter before the load.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis added this pull request to the merge queue Oct 13, 2026
Merged via the queue into main with commit e9e1f5d Oct 13, 2026
15 of 16 checks passed
@MaxGhenis
MaxGhenis deleted the pawhp-household-income branch October 13, 2026 07:59
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Landed through the merge queue at head 371ff4605a41a44104b79db3e59db6b81458828b by the scheduled landing job (launchd pe-uk-2047-after-2038), under Max's standing rule for PE-UK PRs of 2026-10-02: every check on the head passes, an independent review approves that exact head, the impact comes from a real microsimulation run, and the stack allows (#2038 merged as 40121430).

  • Checks: gh pr checks passed on 371ff4605 (run 38354663522: Lint, Test / Result, Python shards 1-4, YAML, docs, smoke imports on 3.11-3.14; Fix evidence 38358858085), and the merge group's CI passed before the queue merged it.
  • Reviews:
    • r2 (Opus 5.5, Subfleet) approved 32dfbc0a6 and asked for the body to be regenerated, small cells suppressed and two side findings recorded.
    • The review after the merge of main (GPT-6.1 Sol, Subfleet job 20261013-020651-pawhp-2047-review-371ff4605) approved 371ff4605. It found r2's findings 1-6 resolved. One stale follow-up sentence it found was fixed in the body (gov_spending now counts the three benefits, since Land six reviewed pull requests together (rollup B) #2380).
  • Impact: Enhanced FRS run on base main 1d3abecef and branch 0276467dd (the later commit changes only a test). Household and HBAI net income rise by £34.7m in 2024 and £201m to £226m a year in 2025-30, all in Scotland, with no spending change. Details are in the body.
  • Follow-ups recorded:

🤖 Generated with Claude Code

MaxGhenis added a commit that referenced this pull request Oct 13, 2026
#2047's winter heating split (merged in 6f0148a) reads
gov.social_security_scotland.pawhp.active through the parameters the reform
class was built from. When the parameter switches the reform on, that is the
applying simulation's own tree (create_structural_reforms_from_parameters is
given self.tax_benefit_system.parameters), so nothing changes there. A
reform class built from other parameters and applied later (the PR's
clone, branch and reform= tests build it from a stand-in that only switches
it on) raised AttributeError: 'types.SimpleNamespace' object has no
attribute 'social_security_scotland' (a probe applying the class to a situation).
The split now reads the switch from the system of the simulation applying
the reform, which is also the tree a later parameter change would be in.
The rule itself (#2047's) is unchanged.

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

disable_simulated_benefits set carers_allowance from carers_allowance_reported
in every country and left carer_support_payment simulated, so from 2025, when
the model pays a carer in Scotland Carer Support Payment in place of Carer's
Allowance, a Scottish carer was paid the report and a simulated Carer Support
Payment (Vahid Ahmadi's review of 5366cf0, finding 2; #2047's note).

Like #2047's winter heating split, the report now becomes a Scottish carer's
carer_support_payment from CARER_SUPPORT_PAYMENT_FROM (2025, the year both
pre-overlap formulas switch on) and their carers_allowance before, and
everyone else's carers_allowance. The pre-overlap entitlements stay the
model's for both schemes.

New tests (test_disable_simulated_benefits_carers.py): the reported case,
conservation and placement in every year on both simulation classes and the
reform= route, a differential against the model's own scheme choice with the
reform off, household_benefits counting the report once, and a Hypothesis
property.

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

Merges origin/main (1a31ef1).

- conftest: main's --shard selection and shard header now sit in the same
  hooks as the data plan, instead of two definitions of each hook. The pin
  is found through the installed package, so CI's tests that copy conftest
  into a scratch directory still load it.
- Pin: the certified pair is now policyengine-uk 2.130.1 with uk-data
  1.58.1 (policyengine.py bundle uk-6.4.3): enhanced_frs_2024_25.h5 at
  Hugging Face commit 2526edbb, sha256 056e80fd. The reform-cost fixtures
  are recomputed on it with this model (2.132.6), each new value added as a
  receipt.
- Partition: Scottish Child Payment, Healthy Start and the Two Child Limit
  Payment are now in gov_spending (#2366), Statutory Paternity Pay is a new
  spending head (#2365), and the Pension Age Winter Heating Payment is in
  household_benefits (#2047). Closure caught each one.
- The SSP/SMP Universal Credit interaction is fixed on main (#2365), so the
  certified test no longer expects it to fail.
- The workflow test moves to code_health/ and skips in an installed wheel,
  which has no .github, as the other CI-script tests do.
- The dataset is projected to 2032 (#2376), so 2031-32 is no longer
  extrapolated differently; the README says so.

Refs #2334.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 15, 2026
Main now has the PAWHP household-income lines (#2047) and UC and benefit
cap earnings tests that deduct each person's own tax on earnings, so the
fragments no longer claim them. The property election compares income_tax,
which includes the charge, since 1024887.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 17, 2026
Review r11 (Opus and GPT-6.1 Sol) on 871e46d: main's benefit cap
readers (#2076, #2089) called award_of_members on esa_income and
jsa_income. Under disable_simulated_benefits the held total matches
neither of its readings after the dataset year, so another member's held
award was read as the couple's: it raised benefit_cap_welfare_benefits
and could exempt a claimant with an ESA support component who receives
no ESA.

- utils/benefit_unit.py: award_of_couple reads claimant_or_partner_*
  wherever the rule's couple is the claimant and partner, and
  award_of_members for any other couple (a UC couple with is_uc_claimant
  entered). CLAIMANT_OR_PARTNER_AWARDS moves here; the reform imports it.
- benefit_cap_welfare_benefits and both specified-benefit exemptions read
  award_of_couple.
- The reform's docstring says it reads its inputs when it is applied, so
  a region a scenario's after-load modifier or set_input changes later is
  not followed; applying the reform after the change reads it (r11 Sol
  finding 2, Opus nit 4). New test for that route.
- Changelog: the first bullet no longer claims what #2047 shipped (r11
  Opus finding 2); new bullet for the benefit cap.
- New test_disable_simulated_benefits_benefit_cap.py: metamorphic (another
  member's report never changes the cap, reform on), differential against
  main's replaced reader (reform off), the fallback couple, and an entered
  award reaching the cap. Each reader's mutant fails it.

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.

Pension Age Winter Heating Payment is missing from household and HBAI income

1 participant