Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
cbd3128
Bind ONS single years of age 3-6 for the UK and 0-6 for England
juaristi22 Oct 22, 2026
179e759
Nest universal childcare take-up and re-draw the copies' childcare draws
juaristi22 Oct 22, 2026
c8436d6
Fit the conditional universal rate and leave reception out of the DfE…
juaristi22 Oct 22, 2026
c4ef887
Run the copies' childcare re-draw before the private-school attendance
juaristi22 Oct 22, 2026
31a979a
Bind DfE funded childcare by single year of age for England
juaristi22 Oct 22, 2026
11d0115
Refit the four childcare take-up rates on the fixed spine (tool versi…
juaristi22 Oct 22, 2026
4dfced0
Sign out the age-4 DfE cells: their December ages do not match the mo…
juaristi22 Oct 22, 2026
872ab8d
Count the childcare copy stage in the UK spine fixture tool
juaristi22 Oct 22, 2026
b5f9818
Refuse a nested take-up rate fitted before the conditional basis
juaristi22 Oct 22, 2026
2fdeb89
Re-lock policyengine-uk 2.147.2, the release with #2570
juaristi22 Oct 22, 2026
7bf92ba
Measure the DfE funded childcare rows at the spring term
juaristi22 Oct 22, 2026
bb21768
Count DfE spring-term receipt on the gross working-parent hours
juaristi22 Oct 22, 2026
68f2cba
Fit the childcare rates at the spring term, with an under-2 usage sha…
juaristi22 Oct 22, 2026
4d86a2d
Bind the DfE funded childcare rows at the spring term, with 9 to 11 m…
juaristi22 Oct 22, 2026
fe4ccde
Count the 9 to 11 months reference in the remaining reference counts
juaristi22 Oct 22, 2026
6aea1ec
Give children under 2 their own working-parent take-up
juaristi22 Oct 22, 2026
3549ae3
Re-pin the UK gate-battery digests after the take-up and export-surfa…
juaristi22 Oct 22, 2026
7c865a9
Report the childcare take-up a built file realises at its final weights
juaristi22 Oct 22, 2026
eeee865
Give children aged 0 and 1 a usage rate each
juaristi22 Oct 22, 2026
b150129
Refit the childcare take-up rates on the spring-term basis (tool vers…
juaristi22 Oct 22, 2026
f05f6ec
Say that Carer Support Payment now applies its earnings limit
juaristi22 Oct 22, 2026
148d045
Declare the under-2 usage draws on the synthetic FRS spine's take-up …
juaristi22 Oct 23, 2026
9427392
Regenerate the UK compile-parity receipts, coverage manifest and spin…
juaristi22 Oct 23, 2026
829c1bc
Allow war_widows_pension_reported on the UK release export surface
juaristi22 Oct 23, 2026
a12885f
Key the under-2 childcare usage draw on the DfE age and refit (tool v…
juaristi22 Oct 23, 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
1 change: 1 addition & 0 deletions changelog.d/uk-childcare-dfe-single-ages.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The national UK contract binds four more DfE funded-childcare counts by single year of age, England, from the January 2025 census (María's ruling of 2026-10-21: bind every DfE childcare count the model can carry, even on few records, and sign out only those with a real reason; microcosm#1278, #1095): working parent registrations at ages 1, 2 and 3 (`dfe.funded_childcare.working_parent_children_age_<n>`) and universal registrations in nursery at age 3 (`universal_nursery_children_age_3`). Each counts persons in English households with whole-year age `n`; from age 2 the rows leave out children in primary education, as DfE's registrations leave out reception. The working parent 2 to 4 row (the take-up fitter's anchor) and the universal-only row stay bound beside them, unaffected. The contract's accounting notes sign out the rest of the table, each for its reason: the three age-4 cells, the working parent and universal nursery registrations at age 4 and the 4-year-olds in reception (DfE's January census reports ages as at 31 December, when about two-thirds of funded 4-year-olds are already in reception, while the model's whole-year age is the age at interview spread over the survey year, with fewer 4-year-olds in primary education, so binding the single age-4 cells would move weight between 4-year-olds in school and in nursery because of the reference date, not the data); the 9 to 11 months cell (policyengine-uk gives whole-year age 0 no working parent hours); reception at age 3 (no FRS 3-year-old is in primary education); the totals and multi-age cells that sum or copy bound cells or include an uncarried or signed-out cell; the universal all-provision cells (nursery plus reception); DfE's eligible-children and all-children estimates (built from population and survey-based inputs); and the registered percentages. The contract has 436 targets (432 before) and the registry scope 377 (373): four more contract-only declarations (191). A signed `in_year_snapshot` hold covers the four rows, the national references give 1,337 active references (1,333), and the compile-parity tool signs the four as `ledger_only`, with their rationale.
1 change: 1 addition & 0 deletions changelog.d/uk-childcare-dfe-spring-term.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The DfE funded-childcare rows are measured at the spring term, as DfE's January census counts them: each row counts the children funded in the term that starts on 1 January of the model year's April-to-March span, by their age on 31 December, through four person measures (`uk_runtime/dfe_spring_term.py`) built on policyengine-uk 2.147.2's date-of-birth school start and working-parent term start. No row reads `current_education`. The universal and early-learning measures count every child of the DfE age, as the term after the birthday does, where the engine still gates them on the age on 6 October; DfE's rule of one entitlement per child holds at age 2. The working parent registrations at 9 to 11 months (January 2025) are bound with their own approved uprating hold, beside ages 1, 2 and 3, universal nursery age 3, and the working parent 2 to 4, early learning and universal-only rows, which also move to the spring term; the age-4 cells stay signed out, as the bound rows fix them. The ONS single-year note names the mid-2025 estimates' release date (1 October 2026).
1 change: 1 addition & 0 deletions changelog.d/uk-childcare-nested-rate-guard.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The UK take-up contract refuses a nested rate (`nested_under`) unless its fitting receipt is from childcare fitter tool version 5 or later, the first to fit the conditional rate; an earlier receipt fitted the marginal rate.
1 change: 1 addition & 0 deletions changelog.d/uk-childcare-ons-ages-0-6.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The national UK contract binds eleven more ONS single years of age for all persons, for the £100k childcare costing fixes (item 6; microcosm#1278, #1095): the UK's ages 3 to 6, so the UK rows run from age 0 to age 6, and England's ages 0 to 6 (`ons.population.england_age_<n>`, pinned to E92000001, counting persons in households with `country == ENGLAND`). With ages 0 to 2 bound, calibration still moved the single years inside the 0-4 and 5-9 sex bands, holding too many 5-year-olds and too few 4-year-olds, and England's funded childcare is costed on England's children. Each row reads the ONS mid-2025 estimate by single year of age, the series the sex bands and the region 0-9 cells sum, and counts people with `age >= n` and `age < n + 1`; every band stays bound beside them. Wales, Scotland and Northern Ireland get no single-year rows, because each nation's single year rests on too few FRS households; the UK rows bind their sum, and Scotland's age 0 keeps its own row. The contract has 432 targets (421 before) and the registry scope 373 (362): eleven more contract-only declarations (187) beside the same 186 mapped targets. The national references and membership give 1,333 active references (1,322), and the compile-parity tool signs the eleven rows as `ledger_only`, with their rationale.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The UK childcare take-up draws now nest the universal 15 hours under the working-parent entitlement, re-draw the copies' childcare take-up, and fit and calibrate the DfE childcare rows without children in reception. `frs_take_up` keeps the extended draw unchanged and draws `would_claim_universal_childcare` as `would_claim_extended_childcare` OR u < the contract's `universal_childcare` rate, which is now the rate among benefit units not claiming the extended hours (the operation declares `nested_under`, and the stage refuses a manifest that drops it). Independent draws let a family over the £100k limit hold extended-yes and universal-no, and policyengine-uk then allocated its child's first 15 hours to the universal entitlement only once the limit was removed. The take-up signal gate targets the nested marginal, r_e + (1 - r_e) * r_u, and fails on any benefit unit claiming the extended hours without the universal ones. A new spine stage, `childcare_copy_take_up`, which runs after every copy stage and before `private_school_attendance` (whose net-income ranking counts the childcare entitlements), re-draws `would_claim_tfc`, the extended, universal (nested) and targeted flags and `maximum_extended_childcare_hours_usage` for the SPI support, high-value home support and CGT copies on their own `benunit_id`, through `frs_take_up`'s helper at the same rates, seed and salts, so a copy no longer inherits its host's draws; native units keep theirs, and the anchored flags and `would_claim_uc_childcare` are untouched. The roster moves from 46 to 47 stages. `tools/fit_uk_childcare_takeup.py` (tool version 5) fits the universal rate on the conditional basis, E = r_e * sum(with extended) + (1 - r_e) * r_u * sum(without), with no allocated term, and leaves children in primary education out of the working-parent and universal-only rows, as DfE's January registrations leave out reception; the two calibration bindings carry the same `current_education != PRIMARY` filter. The contract's numeric rates are unchanged until the fitter refits them.
1 change: 1 addition & 0 deletions changelog.d/uk-childcare-under-2-usage.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Children under 2 take their own working-parent take-up, one rate per DfE age (the age on 31 December of the model year, as DfE counts registrations; computed without the engine from the stored age and months since the last birthday, as policyengine-uk places the date of birth). `frs_take_up` draws, for each child of DfE age 0 or 1 in a benefit unit that claims the working-parent hours, whether it uses them, at its age's contract rate (`extended_childcare_age_0_usage`, `extended_childcare_age_1_usage`; keyed on `person_id`, seed 0, salt the output); a child that does not gets `max_free_entitlement_hours_used` 0, so policyengine-uk funds it no hours, and every other person keeps the engine's default of 30. DfE registers far fewer of the youngest eligible children than of those aged 2 to 4, and fewer at 9 to 11 months than at age 1 (mostly parental leave), so one family rate fitted at 2 to 4, or one rate for both ages, funded the wrong number of them. `childcare_copy_take_up` re-draws the copies' children against their own unit's re-drawn flag. The take-up signal gate measures the share over the children of DfE age under 2 in claiming units against their ages' weighted rate; the column is allowed on the export surface. The tool-version-7 childcare refit fits both rates against DfE's working parent rows at 9 to 11 months and age 1, each child counted at its DfE age.
1 change: 1 addition & 0 deletions changelog.d/uk-policyengine-uk-2-147.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The UK lock moves from policyengine-uk 2.145.0 to 2.147.2, the release that carries pe-uk#2570 (early years hours stop at school start; working-parent hours start the term after the minimum age), with policyengine-core still at 3.33.3: the uprating pins' stamp, the concept coverage (311 to 314 inputs), the coverage manifest, the H2 fixture, the cited versions and `APPROVED_UV_LOCK_SHA256` re-derive. The concept mapping's liquid-asset reason follows 2.147.0, where Universal Credit and Pension Credit count `share_like_capital`, which is `corporate_wealth` unless its components add up to more. The build leaves the three new inputs at their defaults: `directly_held_shares` and `unit_and_investment_trusts` (the WAS stage's `corporate_wealth` already holds the shares and funds, so `share_like_capital` equals it) and `early_years_school_start_deferred` (the FRS records no deferred or council-funded independent reception start, so every child starts school on the date its date of birth implies).
1 change: 1 addition & 0 deletions changelog.d/uk-war-widows-pension-export-surface.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The release export surface allows `war_widows_pension_reported`, which the FRS spine writes since #1222 and the enhanced FRS lacks (it still adds FRS benefit code 9 into `bsp_reported`); without it, release-cut certification blocked every build from main. A new engine-free test runs the export-surface gate on the spine's declared columns, so a stage output outside the enhanced-FRS inputs and the allow-list now fails CI instead of certification.
Loading
Loading