Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0dff777
Re-pin the UK feed onto Chronicle main after chronicle#423, #424 and …
juaristi22 Nov 7, 2026
31b9aa5
Draw apprentices only outside full-time education (Vahid's review of …
juaristi22 Nov 7, 2026
713a0d0
Store the trading allowance claim status in three outcomes (microcosm…
juaristi22 Nov 7, 2026
5b63760
Measure HMRC's Scottish NSND income tax outturn 2024-25 as held-out d…
juaristi22 Nov 7, 2026
40f9354
Level Scotland's council tax bills to its published 2024-25 liability…
juaristi22 Nov 7, 2026
63e2344
Re-fit the trading allowance claimant rates on control C2's release (…
juaristi22 Nov 8, 2026
9d5977a
Regenerate PR2's derived surfaces on the 8045b13 feed
juaristi22 Nov 8, 2026
4f7269f
Measure DWP's people on Universal Credit aged 16 to 24 as held-out di…
juaristi22 Nov 8, 2026
eb14662
Measure DWP's PIP cases for England and Wales as held-out diagnostics…
juaristi22 Nov 8, 2026
220457f
Measure ONS's NEET young people on a quarterly window (Y3)
juaristi22 Nov 8, 2026
6f48121
Review the plain-column variables PR2's new rows read
juaristi22 Nov 8, 2026
77b7895
Regenerate the national references for PR2's held-out diagnostics
juaristi22 Nov 8, 2026
dc75e65
Fit young UC claimants by age in the take-up redraw (Y4, microcosm#1095)
juaristi22 Nov 9, 2026
bace978
Regenerate the derived surfaces for uc_take_up's age fit
juaristi22 Nov 9, 2026
bc4be7f
Record María's signatures of 9 November 2026 on PR2's texts
juaristi22 Nov 9, 2026
a859ac7
Pass UC take-up shortfalls only to units with no young claimant (Y4)
juaristi22 Nov 9, 2026
e7f8223
Pin the two tests T1 and Nit 3 left stale
juaristi22 Nov 9, 2026
92462e5
Store PIP points for every recipient, drawn within the stored awards …
juaristi22 Nov 9, 2026
2e0dc57
Regenerate the derived surfaces for the pip_points stage
juaristi22 Nov 9, 2026
6e83d7d
Store DWP's limited capability status on linked UC claims (Y1)
juaristi22 Nov 9, 2026
ecf6e61
Regenerate the derived surfaces for the uc_limited_capability stage
juaristi22 Nov 9, 2026
daa359a
Record María's signatures of 9 November 2026 on P1 and Y1
juaristi22 Nov 9, 2026
b835be1
Bind Y4's two UC age bands and the PIP award split (P2)
juaristi22 Nov 10, 2026
33c2737
Record María's signature of 10 November 2026 on 16 to 24's exclusion
juaristi22 Nov 10, 2026
09add32
Pin uc_limited_capability's place before the legacy-closure redraw
juaristi22 Nov 10, 2026
e418562
Test an allowance above £3,000 on the stored claim status (#1439)
juaristi22 Nov 10, 2026
8780aa3
Pin uc_limited_capability straight after the UC capital check
juaristi22 Nov 10, 2026
a0c6d8b
Count PIP recipients by country in the points receipt
juaristi22 Nov 10, 2026
b4250eb
Record María's signature of 10 November 2026 on texts A and B
juaristi22 Nov 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions changelog.d/1095-uk-feed-repin-8045b13.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
The UK Chronicle feed is re-pinned to 8045b13, Chronicle main after PolicyEngine/chronicle#423, #424 and #425 (2,091,616 rows), for PR2 of the November event-data plan (microcosm#1095).

**What it adds.** PolicyEngine/chronicle#420's facts for the November UK events:
- young people: ONS NEET, the LFS A06 tables, PAYE RTI by age, ASHE Table 6, HMRC's employer NICs age reliefs and DWP's UC people by age and conditionality regime;
- PIP: DWP's Pathways to Work PIP points and PIP cases with entitlement;
- Scotland: HMRC's Scottish income tax outturn statistics 2024-25 and the Scottish Government's social security caseloads and spending.

It also carries what Chronicle main merged after 6475380:
- PolicyEngine/chronicle#413's UK area inputs;
- #415's land value inputs: VOA's council tax stock of properties 2026, MHCLG's council tax collection and QRC4 for 2025-26, EPC, land value estimates, dwelling density and the market value survey, and ONS land under buildings;
- #421's NRS data zone dwelling bands.

**What moves.** A row-by-row diff of the two artifacts finds no row dropped and no value moved.
- 506,321 rows are new: VOA 222,588, NRS 118,272, MHCLG 101,981, DWP 40,457, ONS 17,496, HMRC 2,809, the Scottish Government 2,410 and the Welsh Government 308.
- 14,784 NRS data zone rows change only their record-set spec hash.

No compiled value moves on either surface:
- Both reference files and both compile-parity receipts are byte-identical.
- The vendored resources and the DESNZ constituency resource carry the same rows under the new feed identity.
- The national membership's MHCLG band-stock candidates count VOA's new facts, but none of them resolves to one.
7 changes: 7 additions & 0 deletions changelog.d/1095-uk-neet-quarterly-window-diagnostic.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ONS's NEET estimates (Young people not in education, employment or training, UK: August 2026, NEET Table 1, PolicyEngine/chronicle#420 item 1) join the contract as a measured diagnostic for the young people work review (Y3 of the November event-data plan, microcosm#1095):

- `ons.neet.people_aged_16_to_24`: the United Kingdom's young people aged 16 to 24 who were NEET, as the mean of the four Labour Force Survey quarters inside calendar 2025 (January to March up to October to December), not seasonally adjusted, since the four quarters' mean carries the whole year's season.

The model counts people aged 16 to 24 who are neither employed nor self-employed (`employment_status`), nor in full-time education (`is_in_full_time_education`, the FRS answer since Y2), nor in approved training. The FRS records no part-time study or other training, which ONS counts as education, so the proxy and ONS's count measure different things. A signed exclusion holds the row out of the solve; María signed it on 9 November 2026.

The ledger compiler gains `quarterly_window_average` (María's call of 8 November 2026): the mean of one series over an explicit, ordered list of `YYYY-Qn` quarters, one fact per quarter, under the `source_window` policy. Each quarter of an LFS table is its own record set, so the window's series check reads record-set ids and layout values with their quarter dropped. That reading is confined to the window, so no other reference's series identity moves. Like the monthly windows, it needs no uprating hold. The contract's allowed operations, the reference authoring list and the UK hold rules carry it.
9 changes: 9 additions & 0 deletions changelog.d/1095-uk-pip-cases-diagnostics.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
DWP's PIP cases with entitlement (Stat-Xplore PIP_Monthly_new, PolicyEngine/chronicle#420 item 6) join the contract as 94 rows, the source of the award-mix check (P3 of the November event-data plan, microcosm#1095). England and Wales are separate rows, since no England-and-Wales fact exists. Each country has:

- `dwp.pip.cases_<country>`, every award and age;
- `dwp.pip.cases_<country>_daily_living_<award>` and `dwp.pip.cases_<country>_mobility_<award>`, for the standard, enhanced and nil award of each component;
- `dwp.pip.cases_<country>_aged_<low>_to_<high>` from 16 to 19 up to 70 to 74, and `dwp.pip.cases_<country>_aged_75_and_over`. DWP's cube carries no case above 79, so its 75 to 79 band meets the model's recipients aged 75 and over.

The nine English regions follow by each award of each component (`dwp.pip.cases_<region>_<component>_<award>`). Every row takes the mean of the four quarter-end points inside calendar 2025 (January, April, July, October) under the new `dwp_pip` monthly family. The model counts people with `pip` above zero by their reported `pip_dl_category` and `pip_m_category`.

The breakdowns are single, María's call of 8 November 2026: the award-by-age cross would rest on fewer than three survey households in many Welsh and some English cells. Each country's six award rows bind, the award split (P2, María's call of 10 November 2026). Eighty-two signed exclusions hold the other rows out of the solve; María signed them on 9 November 2026. The committed references come with the integration's regeneration.
25 changes: 25 additions & 0 deletions changelog.d/1095-uk-pip-points-stage.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
The UK spine now stores PIP assessment points for every recipient (P1 of the November event-data plan, microcosm#1095), so a reform to the PIP points thresholds can move people's awards.

policyengine-uk 2.174.1 decides a PIP component's rate from `pip_dl_points` and `pip_m_points` (8 points for the standard rate, 12 for the enhanced) wherever no category is supplied for the year. The release used to store `pip_dl_category` and `pip_m_category`, which the engine copies into every projected year, so no change to the thresholds moved anyone.

- **The stage.** A new late stage, `pip_points`, just before `trading_allowance_receipts`, draws each recipient's daily living and mobility points within their stored award, by age group.
- Its source is DWP's Pathways to Work evidence pack, chapter 2, Tables 2.9 and 2.10: the PIP caseload's points in England and Wales at the end of January 2025 (PolicyEngine/chronicle#420 item 5). The tables are vendored from the pinned feed as `dwp_pip_points_facts.json`.
- A recipient of one component draws the other component's points below 8. A person with neither keeps -1, policyengine-uk's "not assessed".
- **The release.**
- It drops the two categories (`UK_RELEASE_EXPORT_DROPPED_COLUMNS`), so policyengine-uk derives them from the points.
- The spine keeps them for the VED exemption and the severe disability flag.
- With unchanged thresholds, the engine's categories equal the stored ones for every person. The stage asserts it, and an engine test checks it from 2024 to 2030.
- **The registers.**
- The export allow-list carries the points instead of the categories, and the categories' reviewed export exclusions say why.
- The coverage manifest restates the categories as engine-derived. The eFRS reference's engine (2.89.0) treated them as plain inputs, so the manifest tool admits them through a reviewed list of inputs the pinned engine derives since the reference.
- The points join the manifest through their own family.
- **The receipt.** By age group in England and Wales, it gives the weighted shares by DWP's cells against DWP's own, with support bands, cells on fewer than three source households withheld, and every table row's published total. Table 2.9's whole percentages add to between 92 and 102 per row as ported. It also gives each UK country's recipients, with a support band, and withholds the weighted count of a country on fewer than three source households.
- **What the points can and can't score** (Vahid's review of #1550; the stage notes say both, signed by María on 10 November 2026):
- A threshold reform reaches Scotland's Adult Disability Payment recipients and Northern Ireland's PIP recipients too. The FRS codes ADP as PIP (codes 117 and 118), and policyengine-uk 2.174.1 has one set of thresholds. But their awards follow Scotland's and Northern Ireland's own regulations, which a DWP reform doesn't change. So net them out by country; the receipt's counts by country help.
- The points are each component's total, drawn independently. They can score a change to the 8 or 12 thresholds. They can't score a rule on one activity's points, such as at least 4 points in one daily living activity, and they keep no link between a person's daily living and mobility points.
- **Signed by María on 9 November 2026:**
- within a band the points spread evenly over its integers, and the open band (41 and over) sits at 41;
- Scotland's and Northern Ireland's recipients use England and Wales's tables;
- pension-age recipients take the 60-and-over row, which carries them;
- the draws are seeded on `person_id`;
- the categories leave the release, and the coverage manifest's two engine-derived entries are dated 9 November 2026.
11 changes: 11 additions & 0 deletions changelog.d/1095-uk-scottish-council-tax-level.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
The FRS council tax stage now levels Scotland's bills to the Scottish Government's own measure of the 2024-25 liability before council tax reduction (S2(a) of the November event-data plan, microcosm#1095).

- **The measure:** the sum over the 32 council areas of CTAXBASE 2025's Band D equivalent dwellings before council tax reduction at September 2024 (the middle of 2024-25), times CTAS 2026's average Band D council tax for 2024-25. Both are vendored from the pinned feed into `scotgov_band_d_liability_facts.json`.
- **The level:** one factor, the measure over the Scottish households' derived bills at the spine design weights, applied to every Scottish household's `council_tax`.
- **Why the bills and not the weights:** the bound Scottish band stock already fixes the household mix, and the gap is in the amounts. `obr.council_tax_scotland` stays a held-out diagnostic.
- **Receipts:** the stage records the measure, the stored total, the factor and the Scottish households' support as a band.
- **Synthetic frames:** a frame with no Scottish bill to level keeps its bills as derived, and the receipt says so.
- **Dwellings no FRS household occupies** (Vahid's review of #1550; the stage notes say so, signed by María on 10 November 2026):
- The level counts the liability of every chargeable dwelling, including about 21,600 second homes and 43,500 liable empty homes in September 2024 (Scottish Government, Second Homes and Empty Properties in September 2025). They are roughly 2 to 3% of the chargeable stock.
- So the factor may carry 2 to 5% of the level that belongs to no FRS household, depending on their bands and on the second-home and empty-home premiums.
- Netting them out needs CTAXBASE's counts by class in Chronicle, a follow-up.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Two national rows from HMRC's Scottish Income Tax Outturn Statistics 2024-25 (9 July 2026) join the contract as measured diagnostics for the Scottish Budget 2027-28 income tax costing (S4 of the November event-data plan, microcosm#1095):

- `hmrc.scottish_income_tax.nsnd_outturn`: Table 1's final non-savings, non-dividend revenue of Scottish taxpayers (GBP 18,635m), on `earned_income_tax + property_income_tax` over `pays_scottish_income_tax`. It is uprated to 2025 by the engine's OBR average earnings index;
- `hmrc.scottish_income_tax.nsnd_taxpayers`: Table 2's All rates count (3,036,400), on people taxed at the Scottish rates with `earned_income_tax` above zero. It is read at 2025 without uprating, under a reviewed hold in `uk/uprating_holds.json`, since no pinned index counts taxpayers.

Both select feed 8045b1383's 2024-25 record sets for Scotland (S92000003). The taxpayer row pins the layout's `all` value, since the six rows by marginal rate share its record set and measure. The bound SPI rows hold Scotland's tax on all income, not its NSND split, so these rows show the split's fit. Two signed exclusions hold both rows out of the solve. María signed them and the hold on 9 November 2026, and the rows bind only if the measured gap passes the plan's 3 percent rule and a calibrate-only solve keeps the weight-ratio fence.
14 changes: 14 additions & 0 deletions changelog.d/1095-uk-uc-limited-capability.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
The UK spine now stores DWP's limited capability for work status on linked Universal Credit claims (Y1 of the November event-data plan, microcosm#1095). This follows María's NS6 ruling of 9 November 2026, which revisits her ruling of 29 October to keep the engine's proxy.

policyengine-uk 2.174.1 gives limited capability for work and work-related activity to anyone flagged `is_disabled_for_benefits` (any reported disability benefit or ESA), unless their own ESA award lacks the support component. The FRS 2024-25 links most UC claims to DWP's records, and BENEFITS.UCLCW gives the claim's own status. SN 9563's UKDA data dictionary codes it 0 None, 1 LCFW Group and 2 LCFWRA Group, and it is blank where the claim has no linked record.

- **The carrier.** `frs_spine` carries the status as `frs_uc_lcw_status` on the UC row's person; the FRS keeps one UC row per claim, couples included. The release drops it.
- **The stage.** A new engine-backed stage, `uc_limited_capability`, just before `uc_take_up`, stores `uc_limited_capability_for_WRA` and `uc_limited_capability_for_work` for every person. Everyone starts from the locked engine's own proxy, and linked FRS claims take DWP's status:
- NONE sets every claimant false.
- LCWRA keeps the claimants the proxy flags. If it flags none, both flags go to the UC row's person, or to the partner when the UC row's person cares and the partner doesn't, so a carer keeps the carer element.
- LCW does the same for limited capability for work, with WRA false for every claimant.
- Unlinked reporters, the take-up redraw's entrants, the legacy-closure movers and every SPI row keep the proxy.
- **The registers.**
- The export allow-list carries both flags, and the coverage manifest gains the stage's family.
- The bound LCWRA households row's note records the ruling. It no longer says the carer and childcare rows sit on the measure-exclusion register, since neither does.
- **Signed by María on 9 November 2026:** the restated NS6 note, the code mapping, the joint-claim rule, NONE overriding the proxy, and who keeps the proxy.
5 changes: 5 additions & 0 deletions changelog.d/1095-uk-uc-people-by-age-diagnostics.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Three national rows from DWP's People on Universal Credit (Stat-Xplore UC_Monthly, PolicyEngine/chronicle#420 item 3) join the contract for the young people work review (Y4 of the November event-data plan, microcosm#1095). Two of them bind:

- `dwp.uc.people_aged_16_to_24`, `dwp.uc.people_aged_16_to_21` and `dwp.uc.people_aged_22_to_24`: Great Britain residents with an open claim at those ages, every conditionality regime. Each sums DWP's single years of age at the four quarterly points inside calendar 2025 (February, May, August, November) and takes their mean (`monthly_window_sum_average`, as the State Pension rows by age do).

The model counts claimants and partners (`is_claimant_or_partner`) in benefit units with positive Universal Credit, in the Great Britain regions. The rows are 16 to 24, 16 to 21 and 22 to 24, so the 16 to 17 count never appears alone or by difference (María's call of 8 November 2026). The split by conditionality regime waits for her mapping of DWP's regimes to `uc_work_related_group_apart_from_earnings`. The solve binds the 16 to 21 and 22 to 24 rows (María's call of 10 November 2026, after calibrate-only arms that bound them with and without P2's award split). An exclusion holds 16 to 24, their sum, out of the solve as the check on it; María signed its restated text on 10 November 2026. The committed references for the rows come with the integration's regeneration.
13 changes: 13 additions & 0 deletions changelog.d/1095-uk-uc-take-up-age-fit.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
The UK spine's Universal Credit take-up redraw (`uc_take_up`, microcosm#1334) now fits young claimants by age (Y4 of the November event-data plan, microcosm#1095; María's call of 9 November 2026).

Y2's full-time education flag takes full-time students off Universal Credit, but the redraw refits each family type's award-band pools to DWP's caseloads without reading age. So it refilled the single caseload with other entitled singles. Claimants and partners aged 16 to 24 in Great Britain stayed well above DWP's count of people on Universal Credit at those ages, already at the spine's design weights.

Within each pool, the drawn units with a claimant or partner aged 16 to 24 (`is_claimant_or_partner`, at the stored age that policyengine-uk carries to the entitlement year) claim at one odds ratio against the pool's other drawn units, and the two rates realize the pool's count together. The ratio is solved over Great Britain, at the stage's household weights, so that those young claimants and partners in entitled units that claim come as near DWP's count as the redraw allows. That count is DWP Stat-Xplore's People on Universal Credit aged 16 to 24, every conditionality regime, with the single years summed in February, May, August and November 2025 and averaged: 762,585, the value the `dwp.uc.people_aged_16_to_24` diagnostic compiles. Where no ratio reaches DWP's count, the ratio holds at the nearer end of its range and the receipt says so.

A shortfall that a pool passes to its neighbours, where DWP's count exceeds every unit it entitles, now fills only the receiving pools' drawn units with no claimant or partner aged 16 to 24 (María's second call of 9 November 2026). On the November arm's spine the passed shortfalls had filled the single pools around the under-25 standard allowance to every drawn unit, so the young count could not fall to DWP's whatever the ratio. What no pool can take with older units stays unplaced, so the family type's caseload falls short of DWP's count by it. A pool's own count still draws on all its drawn units.

- The facts are vendored from the pinned feed into `dwp_uc_people_by_age_facts.json`: Great Britain's rows of the four months' every-regime record sets, which the stage verifies against the pin.
- The stage receipt's `age_fit` block records the rule, DWP's count, the young claimants and partners before and after the fit, the ratio (withheld where fewer than three source households carry the drawn young units) and each family type's unplaced shortfall.
- The manifest declares the new artifact, its verify operation and three new keys on `assign_award_band_take_up_residual` (`young_people`, `age_targets`, `age_fit`), which the sources schema now carries.
- Each pool's own count is unchanged. Only a passed shortfall is limited to older units, and the stage's gate still holds each family type no further from DWP's count than before the redraw.
- The fit can't take young claimants below what fixed claims and pools' own counts leave: units that report Universal Credit, units moved off or kept on their legacy benefits, and pools whose own count needs more claims than their other drawn units can give keep young units claiming whatever the ratio. So the count can still stay above DWP's at the spine's design weights. The solve binds the 16 to 21 and 22 to 24 rows (María's call of 10 November 2026), and the 16 to 24 diagnostic stays a held-out check on their sum.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
The `frs_person_draws` stage no longer draws `is_apprentice` for full-time students (Vahid's review of microcosm#1535, nit 3). The FRS's full-time education question never codes an apprentice as in full-time education, so an employee aged 21 to 24 with `is_in_full_time_education` (from `frs_education`) is not one. The draw's target is unchanged, r times everyone aged 21 to 24 at the frame's weights; only the pool it flags from narrows, and the receipt names the excluded flag. The stage refuses a frame without the flag, and the graph node declares it.

In policyengine-uk 2.174.1 the flag on these ages changes only the s.9B employer NICs relief: the apprentice minimum wage applies under 19 or in a first year the build never sets, Care to Learn ends at 20, the build stores `is_in_non_advanced_education` itself, and the 16 to 19 Bursary Fund's qualifying-education test reads a `current_education` the build never writes. The stage's signed eligibility text is restated; María signed it on 9 November 2026.
Loading
Loading