Repository navigation
Conversation
The part of a reported State Pension above the type's full rate (additional pension for the basic State Pension, protected payments for the new) was uprated by the full rate's own triple-lock rise. Each Up-rating Order raises it by September CPI instead (SSAA 1992 ss.150(1)(c), 151 and 151A; SI 2026/148 arts 4(3) and 6(3)(b): 3.8% against 4.8% for the full rates; SI 2025/295: 1.7% against 4.1%). Uprate it by gov.economic_assumptions.indices.september_cpi_uprating from the data year, read from the simulation's own parameters, so a reform to the full rates or the triple lock no longer moves it and a price scenario does. Fixes #1941. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SSCBA 1992 s.79(1) and (3) and Sch 4 Part III para 8 give a person over 80 who is entitled to a retirement pension under that Act 25p a week, which each Up-rating Order leaves out (SI 2026/148 art 3(2)(a)). A new State Pension does not count (s.79(1) as amended by the Pensions Act 2014 Sch 12 para 85). Add gov.dwp.state_pension.age_addition (amount, age) and state_pension_age_addition, and count it in state_pension. The survey's State Pension amount is taken to include the addition, so state_pension_reported_excluding_age_addition takes the data year's legislated addition off before basic_state_pension, new_state_pension and additional_state_pension split it: it is neither counted twice nor uprated as additional pension. It never reduces a carer benefit (SI 1979/597 reg 4(3), Sch 1 row 4), so overlapping_state_pension leaves it out. Fixes #2139. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rms as a reform CI found two test faults (run 38161065391): the differential against main's formula compared the model's float32 arrays with a float64 reference at rtol 1e-12, which fails for any reported amount float32 cannot hold exactly (e.g. £169.00 a week, aged 98); and a Scenario cannot take the reform dictionary's "2026-01-01.2100-12-31" period, so that case passes it as a reform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er overlap tests A simulation given basic or additional State Pension directly, with no reported amount, now gets the age addition at 80 too. The carer overlap tests' 80-year-olds report amounts that include the 25p: it moves from additional pension to the age addition, and in case 8 it no longer reduces Carer's Allowance (SI 1979/597 reg 4(3); Sch 1 row 4). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in the docs At 5% September CPI the triple lock also rose 5%, so the scenario test passed on main. At 1%, below the triple lock's 2.5% floor, the add-on rises 1% and the full rates at least 2.5%. The docs record the change in the model's State Pension against DWP's forecast, from full runs on the certified dataset. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pect none on a new State Pension CI run 38170838155 failed three of the age addition tests. None was a model defect: - The two components-add-up properties drew a weekly amount of 8.3e-246 (and 2.2e-313). state_pension_reported is a float variable, stored in float32, so the simulation holds it as nil and rightly pays no age addition; the reference read the float64 draw and expected 25p. The reference now reads each report as the simulation holds it, and the two CI examples (and a tiny amount float32 does hold) are pinned as examples. - The age addition reform test expected £10 a week for both records in 2030-31. Held at 77, the second record is on the new State Pension by then, and the age addition belongs only to a retirement pension under the 1992 Act (s.79(1)), reformed or not. The test now asserts each year's type and expects the addition only on the basic State Pension. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…branch Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ITEPA 2003 s.577(2) lists the SSCBA 1992 retirement pension sections but not s.79, so the docs now say the model taxes the age addition as part of the pension it increases (s.79(1)), and that s.677 does not exempt it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Fixes #2139
Stacked on #2336. This branch starts from #2336's head (both change the State Pension split), so until #2336 merges this diff includes it; review only the second commit ("Model the 25p State Pension age addition at 80"). The base is
mainso CI runs.WIP: draft. Tests, fail-on-main evidence and the impact on the certified pair are running; this body will be replaced with the full write-up.
Plan
gov.dwp.state_pension.age_addition.amount(£0.25 a week, SSCBA 1992 s.79(3) and Sch 4 Part III para 8, no uprating) and.age(80, s.79(1), s.173).state_pension_age_addition: £13 a year for a basic State Pension recipient aged 80 or over (age on 6 October); none on the new State Pension (s.79(1) "under this Act", inserted by the Pensions Act 2014 Sch 12 para 85).state_pension_reported_excluding_age_addition: the reported amount less the data year's legislated addition, which basic, new and additional State Pension now split.state_pension; excluded fromoverlapping_state_pension(SI 1979/597 reg 4(3), Sch 1 row 4).🤖 Generated with Claude Code
Reproducer:
policyengine_uk/tests/policy/baseline/gov/dwp/carers_allowance_overlapping_benefits.yaml::Case 5, the additional pension in an old State Pension does not overlap.,policyengine_uk/tests/policy/baseline/gov/dwp/carers_allowance_overlapping_benefits.yaml::Case 7, the model splits a reported old State Pension at the full basic rate and only the basic part overlaps.,policyengine_uk/tests/policy/baseline/gov/dwp/carers_allowance_overlapping_benefits.yaml::Case 8, a reported old State Pension below the allowance.,policyengine_uk/tests/policy/baseline/gov/dwp/state_pension_age_addition.yaml,policyengine_uk/tests/test_state_pension_components.py::test_protected_payment_above_new_state_pension_follows_period_type,policyengine_uk/tests/test_state_pension_components.py::test_unchanged_type_splits_at_its_own_flat_rate