You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Split War Widow's Pension (FRS code 9) out of bsp_reported #1222
bsp_reported is built from FRS benefit codes 6 and 9 (packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py:825, benefit.isin((6, 9))). The FRS 2024-25 data dictionary labels code 6 "Bereavement Support Payment / Widowed Parent's Allowance" and code 9 "War Widow's/Widower's Pension". These are uprated differently:
Bereavement Support Payment (BSP) rates have been frozen since April 2017 (SI 2017/410 reg 3; SI 2026/148 art 19 says each amount "remains unchanged").
Widowed Parent's Allowance rises with CPI under art 18 of the same order (£150.90 to £156.65 a week for 2026/27).
In the raw FRS 2024-25 benefits table, grossed with gross4, code 9 is £1,077m a year and code 6 is £123m, of which about £100m is at the BSP monthly rates (£23.01 and £80.55 a week) and £16m at the 2024/25 WPA rate (£148.40). So about 92% of bsp_reported is benefits that are uprated by CPI.
PolicyEngine/policyengine-uk#2381 has the full evidence. PolicyEngine/policyengine-uk#2382 adds war_widows_pension_reported, a CPI-uprated input counted wherever bsp is. bsp_reported stays on CPI until the datasets carry the split, because freezing it now would understate war widow's pension by about £84m in 2029-30.
What this repo needs
Write code 9 to war_widows_pension_reported and only code 6 to bsp_reported in frs_spine.py. bsp_reported is also listed in frs_spine.py:258, graph.py (lines 309, 859 and 979), spi_benefit_coherence.py:122 (SPI_RESTORED_REPORT_COLUMNS), spi_spine.py:217 and spi_support.py:164; war_widows_pension_reported should be carried the same way.
Ideally, also take WPA out of bsp_reported so it is BSP only. VAR2 on code 6 rows is meant to carry the Wid question (1 BSP, 2 WPA), but in the 2024-25 EUL file it does not match the amounts (most £23.01 rows have VAR2 = 2), so check it before relying on it; matching the amount to the WPA rate is a fallback.
Keep the split in step with policyengine-uk-data, which needs the same change, so both builds give the same columns.
The policyengine-uk freeze should only follow a dataset release that does step 1.
At that bump: step 1 above. Code 9 leaves bsp_reported (now uk_runtime/frs_spine.py:977-978) in the same commit that writes the new column, so the benefit is not counted twice. Land it in step with uk-data.
Still open: step 2, whether Widowed Parent's Allowance also leaves code 6.
Step 2, taking Widowed Parent's Allowance out of code 6, now waits on PolicyEngine/policyengine-uk#2572, section 3: its own input, taxable and counted by Universal Credit, apart from Bereavement Support Payment. Step 1 is in #1333.
Activity
juaristi22 commentedon Oct 20, 2026
Update, 20 October: PolicyEngine/policyengine-uk#2382 merged on 18 October and is released in policyengine-uk 2.135.7.
bsp_reportedkeeps its CPI uprating until the datasets carry the split (PolicyEngine/policyengine-uk#2381).bsp_reported(nowuk_runtime/frs_spine.py:977-978) in the same commit that writes the new column, so the benefit is not counted twice. Land it in step with uk-data.Give War Widow's Pension its own input beside bereavement support
Give War Widow's Pension its own input beside bereavement support
juaristi22 commentedon Oct 22, 2026
Step 2, taking Widowed Parent's Allowance out of code 6, now waits on PolicyEngine/policyengine-uk#2572, section 3: its own input, taxable and counted by Universal Credit, apart from Bereavement Support Payment. Step 1 is in #1333.
🤖 Generated with Claude Code