Repository navigation
Conversation
…on Chapter 8 income - HBAI household net income adds energy_bills_rebate as miscellaneous income (DWP HBAI QMI FYE 2023); the Council Tax Rebate is paid in 2022-23 only (payments by 30 September 2022). - The trading allowance relieves income not otherwise charged (ITTOIA 2005 s. 783AB), sharing one allowance with trade receipts. New optional input income_not_otherwise_charged (default 0), deduction miscellaneous_income_trading_allowance_deduction, flag uses_trading_allowance for the loss opt-out, and miscellaneous_income_before_trading_allowance for means tests. Fixes #2724, fixes #2725. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… income YAML cases for miscellaneous_income_trading_allowance_deduction worked from ITTOIA 2005 Part 6A, Hypothesis properties for both fixes (a statutory differential, one allowance, bounds, monotonicity, trade parity, the loss election), and the Energy Bills Rebate docs: the monthly EBSS, the one-off Council Tax Rebate and its HBAI treatment as miscellaneous income. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It declares the GDP-per-capita index, so dataset projection needs it in uprating_indices.yaml (test_uprating_declarations), in the block that grows miscellaneous_income, which it is part of. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The trades-first split of the allowance charges the least income tax only without trade losses brought forward. With them, a smaller trade share can charge less now but uses up a loss that otherwise carries forward (ITA 2007 ss. 83-84) and raises Class 4 profits. The helper now says so instead of claiming every split is tax-neutral, and YAML Case 14 pins the split. The property tests draw losses brought forward and negative profits. The statutory reference returns the trades-first figure, which the model must match, and the lowest figure any split under s. 783AK allows, which it must never undercut and must equal without losses brought forward. The docs state the zero-receipts reading for a loss-making trade, and that ordinary treatment is an election out of full relief (s. 783AL) or no election for partial relief (s. 783AM). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n relief - HBAI counts the Energy Bills Rebate by financial year, as DWP does: hbai_energy_bills_rebate sums the monthly credit from April to the next March, so the whole £400 (Northern Ireland's January 2023 payment too) counts in 2022-23 and nothing in 2023-24. energy_bills_rebate keeps the calendar-year sum for household net income and government spending. - The Welsh childcare offer's reviewed source set now names miscellaneous_income_before_trading_allowance (CI's only failure). - The trading allowance docstring no longer claims every split charges the same income tax without losses brought forward: pension relief reads the trade's share too. YAML Case 15 pins the trades-first result. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ction - hbai_energy_bills_rebate now picks the scheme by the household's nation in the financial year, reading eligibility and the schedule month by month. Before, January to March read the next model year's country, so a move (or a country set for one year only) mixed the two schemes: £599 or £201 where 2022-23 should hold £400. The monthly credit's scheme choice moves into ebss_credit, shared by both. YAML Cases 8-10 and the financial-year property test (now with households that move) pin it. - The aggregate-impact report counts the financial-year rebate's own records and suppresses it like a head (measure.HBAI_ONLY_COMPONENTS): HBAI income, its deciles, poverty and inequality leave it out in a year it is suppressed. HBAI no longer holds the calendar-year head by name, so suppressing that head left the payment in. New measure tests, including a differential over awards, pin it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review r4 showed that a second, financial-year figure for the 2022 Energy Bills Rebate lets published calendar-year and financial-year totals, or a reform change, give back a suppressed small-cell award. Withdraw that copy instead of adding cross-window suppression: - Delete hbai_energy_bills_rebate and the ebss_credit helper; restore monthly_ebr_energy_bills_credit, the aggregate-impact measure, privacy notes, README and measure tests to main. - HBAI income adds energy_bills_rebate itself, which the report already protects as a fiscal-partition head. - Restore the r1 rebate YAML and property tests, and note the calendar-year sum (GBP 349 in 2022 and GBP 201 in 2023 against HBAI's GBP 550 in 2022-23) in the docs, the HBAI list and the YAML header. The docs also state how a one-year country input selects the scheme. Whether to sum the EBSS and EPG by financial year is a methodology choice across household net income, gov spending and HBAI, outside this PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
epg_subsidy counts in household net income and government spending but not in HBAI income, so only the Energy Bills Support Scheme's timing would move all three measures. Correct the docs page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uel Payment England's £150 Council Tax Rebate applied to England only (billing authority guidance, paragraph 2); Scotland and Wales paid their own £150 to bands A-D. Northern Ireland levies domestic rates, not council tax, and had no rebate, but ebr_council_tax_rebate had no country check and the enhanced FRS gives every Northern Ireland household band A, so the model paid all of them £150 in 2022. Northern Ireland's households instead received one £600 payment from January 2023: £400 of Energy Bills Support Scheme support and a £200 Alternative Fuel Payment, to each domestic electricity customer on 2 January 2023 (EBSS AFP NI Direction, 23 December 2022, paragraph 3 and footnote 1). The model paid the £400 only. ebr_alternative_fuel_payment adds the £200 with the same eligibility and month. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
Standard reform costings (change in gov_balance)
Standard reforms: change in each reform's target
Household net income by decileNo household's net income changes in any year. No change in any year: receipts by tax head; government balance, each component counted once; model totals; household income totals; population; poverty rates; people in poverty; inequality; mean household net income in each side's own deciles. Checks failing on both base and head (1)
Counted-once checkEach of 91 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
|
The property tests now draw a nation for each year as well as for the whole period, so they check that each payment follows the household's nation in the year it applies. Invariant 3 now states the £600 per year, and the whole-scheme £600 only for households in Northern Ireland in both years. New YAML cases cover moves in both directions and a Northern Ireland input for 2022 alone. The docs no longer say suppliers paid every Northern Ireland payment by 31 March 2023: the direction set that as the normal deadline and let reissued vouchers and cheques run to 30 June 2023. They describe Great Britain's Alternative Fuel Payment by the fuels GOV.UK names, and say where the Northern Ireland band A comes from. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s do The docs and test comments now say the Northern Ireland payments' main rollout began on 16 January 2023, as GOV.UK's announcement does, and give the Council Tax Rebate guidance's 30 September 2022 date as the deadline for the payments the government would reconcile, not a date by which every household had its payment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hand-off to the UK hubHead: 63febc4 (ready for review, mergeable). Independent review: GPT-6.1 Sol, three rounds, APPROVE at this head.
Passed locally:
Pending: CI. Python shards, YAML and Aggregate impact were still running when I posted this; Lint, smoke-import and docs passed. Aggregate impact should show no change, because both payments are nil from 2025-26 to 2031-32. Depends on: #2726. This branch starts from its head (9d4f759), so land #2726 first; this PR's own change is Holds:
Impact (real runs):
Follow-ups owed (not in this PR; briefs in
Axiom parity: TheAxiomFoundation/rulespec-uk#505, queued. |
Fixes #2734
Depends on #2726. This branch starts from #2726's head (9d4f759), because both change the same rebate files, tests and docs page. Until #2726 merges, the diff below includes its commits; this PR's own change is 9d4f7591b...ni-ctr-afp-oct-2026. Like #2726, it waits for the end of the Budget-week merge hold and for Max's ruling on d2161 (no automatic agent merges in policyengine-uk).
What and why
1. No Council Tax Rebate in Northern Ireland
ebr_council_tax_rebatepaid the 2022 £150 rebate to every household in council tax bands A to D, with no country check. Northern Ireland levies domestic rates, not council tax (Rates (Northern Ireland) Order 1977), and had no Council Tax Rebate:The enhanced FRS gives every Northern Ireland household band A, in the 2022-23, 2023-24 and certified 2024-25 files alike. policyengine-uk-data's FRS build fills a missing band with code 1, which
categoricalmaps to band A. So the model paid all of them £150. The formula now pays nothing in a year the household'scountryis Northern Ireland, whatever the band. The Great Britain rule doesn't change.2. Northern Ireland's £200 Alternative Fuel Payment
Northern Ireland's households received one £600 payment from January 2023. The EBSS AFP NI Direction (23 December 2022, made under section 22 of the Energy Prices Act 2022) defines it as "a support payment of £600.00", and its footnote 1 says it combines £400 of Energy Bill Support Scheme support with a £200 Alternative Fuel Payment. Its eligible customers are the domestic electricity customers at 08:00 on 2 January 2023, with no heating-fuel condition. GOV.UK says the main rollout began on 16 January 2023, with the AFP going "to all households". The model paid the £400 only.
New:
gov.treasury.energy_bills_rebate.alternative_fuel_payment_northern_ireland: £200 in January 2023, nothing in any other month.monthly_ebr_alternative_fuel_payment(MONTH): the payment for households in Northern Ireland that year with a qualifying electricity supply (ebr_energy_bills_credit_eligible), the same eligibility and month as the £400.ebr_alternative_fuel_payment(YEAR): the calendar-year sum, asebr_energy_bills_creditsums the £400 (Correct Energy Bills Support Scheme amounts and timing #2103's convention; the timing question is d2155).energy_bills_rebateadds it, so it reaches household net income, government spending and HBAI income with the rest of the rebate.Great Britain's Alternative Fuel Payment, for households that heat with heating oil, LPG, biomass and other alternative fuels (GOV.UK), stays unmodelled. Suppliers paid it to the meters the government named (direction, paragraph 6), so modelling it means choosing a heating-fuel proxy (follow-up below).
Also:
programs.yamlregisters the Energy Bills Rebate (it had no entry), and the docs page (cost-of-living-payments.md) describes both changes and what the model leaves out.Invariants
Each holds for every input, and a Hypothesis property test checks it over generated households in every nation and band, 2015 to 2030, with random monthly electricity eligibility. Some generated households stay in one nation; others draw a nation for each year, so they move between 2022 and 2023 (
test_energy_bills_rebate_northern_ireland_properties.py):energy_bills_rebateequals the sum of its three parts, and no part is negative.#2726's property tests still hold, with two updates: the rebate-paid-once test now expects nothing in Northern Ireland, and the parts test lists the new variable. Its HBAI identity (HBAI income rises by exactly
energy_bills_rebate) now covers the Alternative Fuel Payment too.Test plan
energy_bills_rebate/33 cases pass, including 5 new Council Tax Rebate cases (each Great Britain nation pays; Northern Ireland gets nothing in any band or on the default band; the 2022 nation decides, for moves both ways), 9 Alternative Fuel Payment cases (including moves both ways and a Northern Ireland input for 2022 alone), and 2 changed or new HBAI cases (Northern Ireland's £600 in 2023; nothing in 2022).test_program_registry.py,test_fiscal_partition.pyand the aggregate-impact partition tests: 161 pass.energy_bills_rebate, paid without a qualifying supply, paid at £400, and paid on the previous year's nation (the mutant review r1 found surviving the first property tests).Aggregate impact
CI's aggregate-impact report covers 2025-26 to 2031-32, where both payments are nil, so it should show no change. The change falls in 2022 and 2023. I measured those on the base (9d4f759) and head (4da9f37; the review fixes since change no formula) with real model runs of the rebate variables:
England, Scotland and Wales don't change in either year. The current model can't load the 2022-23 file whole (its stored enums predate the model's), so the 2022 run loads only the structure, weights, region, council tax band and the columns uprating reads, with 332 blank Great Britain bands set to D; the Northern Ireland figures don't depend on those.
For scale:
Scripts, outputs and saved sources:
~/reviews/pe-uk-ni-ctr-afp/(measure_impact.py,impact_{base,head}_{2022,2023}.json,sources/).Review
GPT-6.1 Sol r1 at 4da9f37: APPROVE with two minor findings, both fixed in 574fc9b. (1) The property tests kept each household in one nation, so a previous-year-nation mutant survived them; they now draw a nation per year, invariant 3 states the £600 per year, and YAML covers moves. (2) The docs said suppliers paid every Northern Ireland payment by 31 March 2023; they now give the direction's normal deadline and the 30 June 2023 limit for reissued vouchers and cheques. It also listed three claims its offline sources couldn't confirm; the links above now cite each (Annex A, the uk-data band fill, GOV.UK's description of Great Britain's AFP). Sol r2 (delta at 574fc9b): APPROVE; both findings resolved, and both test layers caught two further mutants it tried (the AFP on the previous year's nation only, the rebate on the following year's nation). Its three wording points (the 16 January date is the main rollout's start; the mover example needs a qualifying supply; the 30 September date is the deadline for reconciled payments, inherited from #2726) are fixed in 63febc4. Sol r3 (wording delta at 63febc4): APPROVE, no new findings.
Reports:
~/reviews/pe-uk-ni-ctr-afp/review-r{1,2,3}-full.md.axiom: TheAxiomFoundation/rulespec-uk#505 queued (no module encodes the 2022 Energy Bills Rebate; neither source is in the corpus yet)
Follow-ups (not in this PR)
Reproducer:
policyengine_uk/tests/policy/baseline/gov/treasury/energy_bills_rebate/council_tax_rebate.yaml::Northern Ireland households get no rebate, in any band.;policyengine_uk/tests/policy/baseline/gov/treasury/energy_bills_rebate/alternative_fuel_payment.yaml::Case 6, Northern Ireland's full 2023 rebate is the direction's £600.;policyengine_uk/tests/test_energy_bills_rebate_northern_ireland_properties.py::test_northern_ireland_never_gets_the_council_tax_rebate🤖 Generated with Claude Code