Conversation
Audited every parameter under gov/dwp against DWP's "Benefit and pension rates" publications (each fiscal year 2019-20 to 2026-27 appears in two editions) and, for 2025-26 and 2026-27, the Social Security Benefits Up-rating Orders (SI 2025/295, SI 2026/148). Tax credit rates were checked against HMRC's rates page and the Tax Credits Up-rating Regulations. - 2025-26 values written as 2024-25 x 1.017 without DWP's rounding, or on the wrong basis, now match the Order: Pension Credit standard minimum guarantee 227.10/346.60 (earnings-linked, not CPI), savings credit threshold, the pension-age Housing Benefit allowances 244.40/366.00, working-age HB allowances, carer premium and addition, AA, DLA, PIP, Carer's Allowance, SDA. - Parameters uprated from a fixed start_instant (legacy disability premiums, Constant Attendance Allowance, Pension Credit child and severe disability additions) had every later published rate overwritten by projections and jumped when projections began. Their full published history is written out and start_instant removed. - Income Support personal allowances held the 2020-21 rate from 2015 and were CPI-uprated from there: 8-10% too high every year. - The carer premium for two carers is paid for each carer, so twice the rate. - Housing Benefit non-dependant deductions: 2019-20, 2020-21 and 2025-26 bands and amounts added, and the 2022 bands moved off 2021-22 (the 2021 Order left them unchanged). - WTC childcare limits (175/300, also Housing Benefit's childcare limit) and the CTC family element (545) are fixed in law and no longer projected. - UC 2020-21 standard allowances and child element, UC non-dependant deduction, IIDB, and the unread ESA/JSA amount parameters also corrected. - The pension-age HB allowances cite SI 2006/214 Sch 3 para 1 (and NI SR 2006/406) instead of the working-age SI 2006/213. Tests: test_dwp_published_rates.py checks every audited parameter against a fixture of the published rates for each year, that no fixed-start uprating remains, and that projections continue from the last published rate; YAML tests check the 2025-26 amounts through the variables that use them. Existing tests that pinned the old projected values are updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ctions
- Income Support personal allowances and the ESA couple rate: set the 2015 keys
to the 2015-16 rates (frozen to 2019-20), so 2015-18 no longer use the
2020-21 rate; IIDB 2015-18 set to the published rates. The fixture covers
these years.
- Housing Benefit non-dependant deductions: bands include their lower edge
("not less than", HB Regs 2006 reg 74(2)), and a non-dependant with no
income pays the lowest deduction (reg 74(1)(b)). The HB and CTR formulas no
longer call the scale with right=True, which put £183.00 in the band below
and gave £0 income no deduction. The scale is now uprated after 2026-27
instead of frozen.
- The income-related ESA personal allowances cite the Universal Credit Act
2025 s.5 for 2026-27, not SI 2026/148.
- Tests: the two-carer premium is twice the one-carer premium in every year;
the non-dependant table, edges and monotonicity for 2019-20 to 2026-27;
derived fixture rows are labelled.
- Removed the carer premium's 2010 key (the one-carer rate) and titled a bare
GOV.UK reference.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Response to the independent review (Opus, subfleet job 20260930-092129-review-1925), addressed in 45290f3:
Re-run after the changes:
The review didn't run tests or the impact itself, so those are this session's runs. |
|
Reviewed: approve with nits. Every value I checked is right. I checked every 2024-2026 test value against DWP's 2025-26 and 2026-27 "Benefit and pension rates" pages. 113 of 131 appear there, and the other 18 are explained (doubled or combined rows, HMRC tax credits, a percentage). Checked by hand:
The two-carer doubling is correct (
CI Test and two smoke-import jobs were still pending when I looked. |
The follow-up review (GPT-6.1 Sol) found that making zero income pay the lowest non-dependant deduction charges non-dependants whom HB Regs 2006 reg 74(7) exempts (e.g. a full-time student with no income): the eligibility variable checks only age and rent liability, and the old strict banding had been giving zero income no deduction. The correct fix applies the reg 74(6)-(7) exemptions together with the inclusive bands, in HB and CTR, so it moves to its own PR. This PR keeps the published non-dependant bands and amounts and their uprating, and restores the formulas and their tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Follow-up review (GPT-6.1 Sol, subfleet job 20260930-114706-rereview2-1925-1913, which ran the tests and reproduction scripts) on 45290f3:
Impact re-run at 1233fe4; the body table is from that run. 2025-26 is unchanged (net income +£606m). 2026-27 is +£0.2m. 2027-28 on is about −£10m a year. The tests pass: 1,335 in |
Codex review — historical-source verification remainsReviewed commit No actionable code defect or mismatch was found in the independently checked rate samples. The earlier non-dependant banding formula change is absent from this head, so that old regression should not block this PR. The new regression fixture exercises loaded model parameters and future uprating; it is authored in this PR and therefore is not independent proof of every historical value. Source checks corroborated the named current rates in DWP 2025/26 and 2026/27, plus ESA/IIDB/carer samples using the official 2019/20, 2021/22 and 2023/24 tables. No mismatch was found in those samples. Complete historical reconciliation is still needed before I can give a fresh source-based merge recommendation; existing human approval is separate evidence. Outstanding evidence/decision:
Validation: 1,404 focused tests passed, with 61 expected skips for inapplicable uprating/ended series. Tests include the loaded parameter fixture and final Pension Credit/household-income integration. Five official HTML originals were inspected and their cached bytes verified. The full 2015–2026 historical table was not independently reconciled cell by cell. Focused tests used an existing cached Python 3.13 environment (Core 3.32.9, NumPy 2.1.3, pandas 2.3.1, microdf-python 1.2.1, Hypothesis 6.168.2, pytest 8.4.2) with this PR’s isolated source snapshot. No dependencies were installed; this was not a freshly synced lock environment or a full-suite/population run. This is a review comment, not a formal GitHub review vote. Live check before posting (2026-10-02T10:41:02.821043+00:00): same commit, CLEAN; all reported CI checks pass. |
|
Review pass (Claude Code, on Vahid's behalf) at Short version: still approve, with one small should-fix on the historical years. The open question on this PR is whether the 2015–2018 cells are reconciled. They are, for the 21 parameters the fixture covers from 2015. Two series it doesn't cover still carry a later rate back into 2015–2018, and the 2018-19 DWP rates PDF shows the right values. Round-1 items
Historical-source verification (the outstanding request) I evaluated the parameters at 30 April of each year from 2015 to 2027 on this branch and compared them with the fixture and with DWP's own tables.
Should-fix
Nit
Checked and correct
|
Summary
An agent reported on 2026-09-29 that PolicyEngine UK's 2025-26 DWP parameters look CPI-projected rather than announced. I audited every parameter under
parameters/gov/dwp/(254 series) against DWP's Benefit and pension rates publications, and fixed the values and their references.Each fiscal year from 2018-19 to 2026-27 appears in two editions: that year's, and the next year's previous-year column. I checked both. For 2025-26 and 2026-27 I also checked the Social Security Benefits Up-rating Orders (SI 2025/295, SI 2026/148). Tax credits were checked against HMRC's rates page and the Tax Credits Up-rating Regulations. An independent verifier re-derived every published amount. As a differential check, the fixture was also compared with a separate extraction from DWP's rate PDFs (2014-15 to 2026-27) and the 2010-2013 Up-rating Orders. That extraction was made by another session for its own uprating work, and all 367 overlapping values agree.
The report was right, and the problem was wider than 2025-26.
start_instant, so projections overwrote every later published rate and jumped by up to 12% when projections beganReferences.
allowances/{single,couple,lone_parent}/aged.yaml) cited SI 2006/213 Sch 3, the working-age regulations. They now cite SI 2006/214 Sch 3 para 1(1)(b)/(2)(b), plus NI SR 2006/406 Sch 4 para 1, and their descriptions say they are the rates for people who reached State Pension age before 1 April 2021.Not in this PR:
right=True, so a lower edge falls in the band below and zero income pays nothing, and they don't apply the reg 74(6)-(7) exemptions (e.g. full-time students). Fixing the banding without the exemptions charges exempt people, so both go in a separate PR.gov.benefit_uprating_cpifrom 2027-28. The September-CPI uprating work and its follow-up chip (PC SMG earnings) cover the basis.housing_benefit/means_test/income_disregard/*): owned by Take Housing Benefit earnings disregards from net earnings only #1908.housing_benefit/takeup.yaml: owned by Abolish working-age Housing Benefit from 1 July 2026 (NI 1 October 2026) #1910.LHA.means_test.*parameters.start_instant(e.g.agedholds £181 for 2015-18, the 2019-20 rate).Tests
test_dwp_published_rates.py+fixtures/dwp_benefit_and_pension_rates.yaml: 131 parameters, each with its published rate per fiscal year and a source URL per year, plus the non-dependant deduction table (1,335 test cases). Derived rows (two carers, SDA with age addition) are labelled. Invariants:benefit_rates_2025_26.yaml: YAML tests of 2025-26 amounts through the variables that use them: PC minimum guarantee, HB allowances (working-age and pension-age), IS allowances, disability and carer premiums, AA/DLA/PIP, CA.Impact (Enhanced FRS 2024-25)
These are two real runs over the same dataset:
main(1c5b4d0) and this PR (1233fe4), fiscal years 2025-26 to 2030-31. Nothing is scaled.Axiom
axiom: 2025-26 rates (SI 2025/295) queued TheAxiomFoundation/rulespec-uk#382 | 2026-27 rates encoded-correct where encoded (uk/regulations/uksi/2026/148/*, HB/PC/ESA pipelines) | IS and income-based JSA personal allowances queued TheAxiomFoundation/rulespec-uk#382uk/regulations/uksi/2026/148/article/{4,6,14}.yaml,schedule/1.yamland the program pipelines). No module has a 2025-26 amount:git greponorigin/main932390f finds none of 227.10, 346.60, 244.40, 366.00, 92.05, 144.65, 72.90, 43.20, 61.65, 83.30, 46.40, 198.27 or 314.34.effective_from: '0001-01-01'versions:uksi/2002/1792/6.yaml(PC minimum guarantee and additions) andgovuk/carers-allowance.yaml. For 2025-26 they are wrong, not just missing.review_findingand companion tests whose expectations are this PR's fixture values.🤖 Generated with Claude Code