Repository navigation
Add the Childcare Offer for Wales - #2535
Conversation
Model the childcare element of the Childcare Offer for Wales for working parents, and parents in education, of 3- and 4-year-olds, valued at the Welsh Government's hourly rate to providers, and count it in household benefits and government spending. Part of #1644. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the registry start year Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Aggregate impact on certified data: passBase Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0 (thresholds in Notes
Moves flagged for reviewNone. Spending by benefit and service
Caseloads
Government balance, each component counted once
Model totals
Household income totals
Mean household net income in each side's own deciles
Standard reform costings (change in gov_balance)
Standard reforms: change in each reform's target
Household net income by decileMean change in household net income per household, and as a share of the decile's base income; households stay in the base run's deciles.
No change in any year: receipts by tax head; population; poverty rates; people in poverty; inequality. Checks failing on both base and head (1)
Counted-once checkEach of 87 components was raised by £1 per unit in 2026-27, and every head of its totals was read household by household: its own head must rise by exactly £1, no other tax head may move, no other benefit may rise, and the model's own total must move by what its heads moved. A head that breaks a rule is measured again twice: with every other head held at its baseline value, and with every other head held at its value after the first £1 while the component rises again. It fails where either still shows the response. 0 failed; 0 were skipped.
Provenance
Dataset: Receipts by tax head: head levels
Spending by benefit and service: head levels
Caseloads: head levels
Government balance, each component counted once: head levels
Model totals: head levels
Household income totals: head levels
Population: head levels
Poverty rates: head levels
People in poverty: head levels
Inequality: head levels
Mean household net income in each side's own deciles: head levels
Standard reform costings (change in gov_balance): head levels
Standard reforms: change in each reform's target: head levels
|
juaristi22
left a comment
There was a problem hiding this comment.
Review status: COMPLETE
Review severity: REQUEST_CHANGES
Reviewed head: c8f6cb5
Three newly introduced eligibility paths award the full childcare benefit to ineligible families:
- C1 — Date the education route from September 2022.
education_stages.yaml:13enables it from August 2019. A nonworking lone parent aged 30 in tertiary education, with a three-year-old in Wales, receives £4,725 in 2021; expected £0. The Welsh Government's March 2022 statement introduces this extension from September 2022. Gate the route and retain a historical regression. - C2 — Include maintenance in the £100,000 gross-income test.
wales_childcare_offer_parent_condition.py:29usestotal_income, which omitsmaintenance_income. A lone parent with £99,000 pay plus £5,000 maintenance and a three-year-old receives £7,003.50 in 2026; gross income is £104,000, so expected £0. Official income guidance, question 9, physical page 7 expressly includes maintenance allowance. Use the Offer's gross-income definition and test this boundary. - C3 — Establish qualifying benefit entitlement for the LCW exception.
exception_criteria.yaml:18accepts bareuc_limited_capability_for_work, which defaults from disability. In a 2026 couple aged 30 with one parent earning £99,000, a nonworking disabled partner and a three-year-old, the model awards £7,003.50 despite zero UC and every other exception criterion being false/zero. The case has no NI-credit claim or qualifying overlapping-benefit entitlement. April 2026 guidance, paragraph 87, physical page 21 requires the specified benefit/underlying-entitlement condition; disability alone is insufficient. Expected £0.
All three cases were executed from actual demographic/income inputs at this commit, without forcing eligibility or intermediate awards. The erroneous payments reach household benefits and government spending.
Validation: 142 relevant Wales/England YAML tests and 70 fiscal/metadata Python tests pass; one optional bundle-contract test skips. Ruff passes on 8 changed Python files. The ordinary Welsh award reaches benefits, spending and net income once, and England childcare remains zero in Wales. Nine official sources checked; no material evidence gaps. Disclosed annual term approximations, minimum nursery hours and take-up assumptions remain limitations, rather than additional confirmed defects. No population simulation was run locally.
- Date the education and training route from September 2022 (Welsh Government written statement, 2 March 2022), not August 2019. - Count maintenance in the £100,000 gross income test (July 2020 income guidance, question 9) through a new gross_income_sources parameter. - Require a Universal Credit award for the limited capability for work exception (guidance para 87), via receives_uc_with_limited_capability_for_work, rather than the bare assessment flag that defaults from disability. Adds regression tests for each case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@juaristi22 thanks. You were right on all three; the PR had each of them wrong. Fixed in 39b1c40. C1, education route date. The written statement of 2 March 2022 says "from September of this year we will be expanding the Offer to enable parents who are in education and training to also benefit", so before then only working parents qualified. C2, maintenance in gross income. Question 9 of the July 2020 income guidance lists "maintenance allowance" as unearned income that counts. I did not change C3, LCW exception. Para 87 of the April 2026 guidance lists "Universal Credit where the individual has been assessed as having limited capability for work". Tests. Before the fix, the four new cases expecting £0 (C1 2021 and 2022, C2, C3) failed at c8f6cb5 and the other 24 passed. After it, all 29 in 🤖 Generated with Claude Code |
juaristi22
left a comment
There was a problem hiding this comment.
Review status: COMPLETE
Review severity: REQUEST_CHANGES
Reviewed head: 39b1c40
C1 and C2 are resolved. The education route now starts in September 2022; the actual-input historical cases return £0 in 2021/2022 and £5,250 in 2023 under the annual sampling convention. Maintenance now counts once in each parent's gross income: £99,000 pay plus £5,000 maintenance produces £0, while the inclusive £100,000 boundary still qualifies.
C3 remains open: require the individual parent to be a UC claimant. The original high-pay/no-UC case now passes, but the new receives_uc_with_limited_capability_for_work.py:18–20 checks any benefit-unit UC award and can attribute the other parent's award to an excluded partner.
Executed 2026 case: two parents aged 30 and a three-year-old in Wales, £20,000 employment income for the worker and £6,000 council rent. The nonworking disabled partner is resident but subject to immigration control, represented by the documented uc_is_ineligible_partner: true input. They have no other listed qualifying benefit, credit or overlapping-benefit entitlement. No award, claimant flag or final eligibility was overridden.
is_uc_single_or_joint_claimant = [true, false, false].- The eligible worker's UC award is £7,569.90.
- The new LCW receipt helper returns [false, true, false], wrongly treating the excluded partner as receiving UC.
- The resulting Childcare Offer is £7,003.50; expected £0.
UC regulation 3(3)(e) permits the eligible parent to claim singly in this situation. Welsh guidance paragraph 87, physical page 21 requires the nonworking parent's qualifying receipt or underlying entitlement; immigration exclusion is not nonpayment because of overlapping benefits. Include the individual's claimant condition alongside LCW status and a UC award, and retain this excluded-partner regression. The existing is_uc_single_or_joint_claimant distinguishes the two parents.
Validation: 29 updated Wales YAML cases and 70 affected fiscal/metadata Python tests pass; one existing optional bundle-contract test skips. All seven original source-backed cases and controls pass. The additional claimant-role case above demonstrates the remaining defect. A qualifying positive award still reaches household benefits, government spending and net income exactly once. Eleven official sources were checked, nine from the verified cache; no material evidence gaps. Remote CI is still pending, and this remains a draft.
A partner excluded from Universal Credit (UC Regulations 2013 reg 3(3), for example subject to immigration control) was treated as receiving UC with limited capability for work through the other parent's single award. receives_uc_with_limited_capability_for_work now also needs is_uc_single_or_joint_claimant. Adds the excluded-partner regression. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@juaristi22 thanks, you were right: my C3 fix checked the benefit unit's award, not the parent's own claim, so it gave the excluded partner credit for the worker's single award. Fixed in 3a5b03d. C3. UC Regulations 2013 reg 3(3)(e) lets a member of a couple claim as a single person where the other member is excluded by section 115 of the Immigration and Asylum Act 1999, so the award belongs to that claimant alone. Para 87 of the April 2026 guidance needs the nonworking parent's own receipt, or underlying entitlement under the overlapping benefits rule, and exclusion is neither. Tests. I added your case (2026, Wales, worker on £20,000, £6,000 council rent, disabled partner with 🤖 Generated with Claude Code |
juaristi22
left a comment
There was a problem hiding this comment.
Review status: COMPLETE
Review severity: APPROVE
Reviewed head: 3a5b03d
C3 is resolved. The UC receipt helper now requires the individual parent to be a single or joint claimant, alongside limited capability for work and a positive benefit-unit UC award. This matches UC regulation 3(3)(e) and Welsh guidance paragraph 87, physical page 21.
The excluded-partner regression now retains the worker's £7,569.90 UC award while returning [false, false, false] for the receipt helper and £0 for the Childcare Offer. The qualifying joint-claim control still receives £7,003.50. Both use household inputs rather than overriding the final award or claimant condition.
C1 and C2 remain resolved. No new confirmed findings or material evidence gaps in this incremental scope.
Validation at this exact head: 88 tests passed in one completed batch (30 Wales, 33 UC-claimant and 22 benefit-cap YAML cases, plus three fiscal Python tests), with zero failures or skips. Eleven retained official sources and their extracts were independently verified. The prior whole-program approximations remain documented in the PR; this follow-up covers the C3 repair and affected dependencies.
|
UK hub (Claude session, for Max): independent review (GPT-6.1 Sol) at [P1] Statutory pay is missing from the £100,000 gross-income cap. Everything else checks out. Every parameter value and date matches Welsh Government sources: ages 3–4, 30 hours with 10 of nursery, 39 term and 9 holiday weeks, the 2022 education extension, the exceptions list, and hourly rates of £4.50 / £5 / £6.40 / £6.67. Full use gives (30 − 10) × 39 + 30 × 9 = 1,050 hours, or £7,003.50 at £6.67. All 30 YAML cases check by hand, and María's three earlier corrections are in. Nonblocking: the earliest evidence for the £100,000 cap is July 2020, so backdating it to the 2019 rollout is a gap to note. Property tests (bounded award, child additivity, counted once) would help. The PR body already discloses the other approximations: whole-year ages, a uniform nursery minimum, annual earnings averaging, the leave and new-business exceptions, and full take-up. @vahid-ahmadi, can you take the P1? With it fixed, the hub re-reviews and lands it once you mark it ready. |
Brings in #2368, which adds statutory paternity pay to employment_benefits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The £100,000 gross income test counts all earned income (income guidance questions 8 and 9). total_income adds only wages (employment_income), so statutory sick, maternity and paternity pay were left out: a lone parent with £99,000 of wages and £2,000 of SSP was tested on £99,000 and got £7,003.50 instead of nothing. Add employment_benefits to the gross income sources, with regressions above the limit, at exactly £100,000, and for £1 of statutory pay on top of £100,000 of wages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
UK hub (Claude session, for Max): pushed the P1 fix at
No local tests ran (the host is reserved), so CI is the check. The hub gets a delta review, then lands it once it's ready. |
…e limit #2573 split maintenance into maintenance_income (child maintenance) and spousal_maintenance_income. The £100,000 gross income test counts all maintenance (income guidance questions 8 and 9), so add the spousal input, with regressions above the limit and at exactly £100,000. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The £100,000 test counts gross income before any deductions, salary sacrifice included (guidance para 69). Build it from its own sources rather than total_income, an income tax aggregate: cash pay plus statutory pay and salary and bonus sacrifice (pension_contributions_via_salary_sacrifice_from_pay), self-employment, pensions, taxable benefits, property, savings, dividends, other investment and miscellaneous income, and child and spousal maintenance. Untaxed benefits such as PIP stay out: the guidance frames the test around income from work and investments and aligns it with Tax-Free Childcare's taxable-income test. Regressions cover salary and bonus sacrifice over the limit, sacrifice at exactly £100,000, and PIP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
UK hub (Claude session, for Max): pushed
New regressions: salary sacrifice and bonus sacrifice each take £99,000 of pay over the limit (£0); pay plus sacrifice of exactly £100,000 qualifies (£7,003.50); PIP doesn't count. The hub gets a delta review, then lands it once it's ready. |
- The guidance counts all unearned income and names Guardian's Allowance, which is untaxed, so the taxable-only reading doesn't hold. Add the untaxed non-means-tested person-level benefits: PIP, DLA, Attendance Allowance, IIDB, SDA, Maternity Allowance, AFCS, War Widow's Pension and AFIP. Means-tested benefits stay out (nil near £100,000, and counting them would make the test depend on childcare support); Child Benefit is paid to the benefit unit and clawed back by the HICBC at this income. - The salary and bonus sacrifice add-back counts only people with pay (employment_income_before_lsr), which the YAML runner does not fill from employment_income: set both, and assert the £2,000 add-back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
UK hub (Claude session, for Max): pushed
The reading and the withdrawn one are logged. The hub gets a delta review, then lands it once it's ready. |
Round 5 showed both remaining exclusions rest on false premises: Child Benefit escapes the HICBC when relieved pension contributions bring adjusted net income down, and Universal Credit can be paid near £100,000 when most income is child maintenance. Question 9 counts all unearned income, so count Child Benefit, UC, tax credits, Housing Benefit and the legacy income-related benefits too. They're paid to the benefit unit and the limit is per parent, so each is shared equally between the claimant and any partner. None reads the Childcare Offer, so there's no cycle. Regressions: a lone parent's Child Benefit and UC each take them over the limit; a couple's Child Benefit is shared, within and over the limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
UK hub (Claude session, for Max): pushed
Question 9 counts all unearned income, so the test now counts Child Benefit, UC, tax credits, Housing Benefit and the legacy income-related benefits too ( New regressions: a lone parent's Child Benefit (£1,406.60) and UC (£5,732.08 on £14,000 of pay and £85,000 of child maintenance) each take them over the limit; a couple's Child Benefit is shared, within the limit at £99,000 + £703.30 and over it at £99,500 + £703.30. The hub's logged reading is updated. Delta review next. |
da3f802 counts Child Benefit towards each parent's gross income, so the five boundary cases picked up a share of the computed Child Benefit and went over the limit. Each now sets child_benefit to 0, so it still tests the £100,000 boundary on the named income. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@MaxGhenis the YAML job failed at da3f802 on the five "exactly £100,000 still qualifies" cases (0 against £7,003.50). Counting Child Benefit gave each parent a share of the computed Child Benefit, which took them over the limit. 8e43be0 sets @juaristi22 your approval was at an earlier head; five commits since then widen the gross income list (statutory pay, spousal maintenance, sacrifice, untaxed and benefit-unit benefits), so a quick look at the delta would be worth it before this lands. 🤖 Generated with Claude Code |
juaristi22
left a comment
There was a problem hiding this comment.
Re-reviewed and approved 8e43be08a0583714dac8ee256ee356463e8e3aec.
The previous C1–C3 findings remain resolved: the education route starts in September 2022, maintenance counts in gross income, and the UC/LCW exception requires the individual parent to be a claimant. The excluded-partner case returns £0 while the qualifying claimant control retains £7,003.50.
The additional sacrificed-pay gross-income finding C4 is also resolved on this latest commit. Welsh guidance paragraph 69, physical page 18 includes salary sacrifice in the £100,000 gross-income limit. A lone parent with £99,000 cash pay and £5,000 sacrificed pay now receives £0. An actual Child Benefit opt-out isolates £95,000 cash plus £5,000 sacrifice at exactly £100,000 and retains £7,003.50. With Child Benefit claimed, the higher gross total correctly fails the limit. The expanded gross-income sources were checked for overlap.
Validation: 45 targeted checks passed on this commit, including the Wales YAML suite, claimant controls and final fiscal identities. Earlier broader validation at the prior head was 221 passed with one permitted optional bundle skip. The source/queue records revalidate. Review status: COMPLETE; C1–C4 resolved, no open critical findings or material evidence gaps. Annual eligibility, nursery-hours, usage and take-up conventions remain the disclosed modeling limitations. Hosted CI was still running at capture, so this approval does not certify a completed merge gate.
Round 6 found represented cash still missing. Add Bereavement Support Payment, the Winter Fuel Payment, private transfers and student and further-education support paid as income (Adult EMA, Access Fund, education grants, Parents' Learning Allowance, Adult Dependants' Grant, 16 to 19 Bursary). Support that reimburses a specific cost or is given in kind (Childcare Grant, Care to Learn, Travel Grant, DSA, Healthy Start, the childcare entitlements, Tax-Free Childcare) and household-level one-off payments stay out. None of the added sources reads the Offer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
UK hub (Claude session, for Max): thanks @vahid-ahmadi, your
Gaps with no model variable (Guardian's Allowance, adoption and shared parental pay) remain. The hub gets a delta review next. |
juaristi22
left a comment
There was a problem hiding this comment.
Re-reviewed and approved 7611591f63a3bb549ac6910facf026cf9a3c24d6.
The sole new change adds nine income sources to the Welsh gross-income test. They are distinct person-level annual amounts and do not duplicate the existing taxable-benefit, statutory-pay or benefit-unit aggregates. The broad gross-income definition remains supported by the retained Welsh guidance. C1–C4 remain resolved.
Executed native 2026 controls with Child Benefit payment opted out: £99,500 pay plus a £1,000 private transfer produces £100,500 gross income and £0 Offer; £99,000 pay plus the same transfer produces exactly £100,000 and retains £7,003.50. The award reaches benefits, government spending and net income once. The previous salary-sacrifice boundaries still pass.
Optional S1: clarify the comment's distinction between cash income and reimbursement of specific costs. It excludes the latter but includes the 16–19 bursary, whose variable measures actual participation costs. Explain that classification; this wording issue does not establish a legal exclusion or a wrong-award finding.
Validation: 2 native tests covering six families passed, with prior unchanged-rule tests retained under their recorded commit provenance. All eight source records and derivatives revalidate; no source downloads or full-suite rerun. Review status: COMPLETE; no open critical findings or material evidence gaps. Hosted YAML/Python CI was still running at capture, so the approval does not certify completed merge checks.
Since Child Benefit counts towards the £100,000 limit, the automatic Child Benefit for the 3-year-old took eight "X counts towards the limit" cases over the limit whatever X was. They now set Child Benefit to zero, as the boundary cases already do. A new parametrised test checks every listed source, person- or benefit-unit-level: £99,000 of wages qualifies, and £1,001 more of the source does not. The 16 to 19 Bursary leaves the list: the model pays it as participation costs, which the scope rule excludes. Subletting income joins it as rental income. The comments now say that PLA and ADG are England-only in the model, name the one-off grants, lump sums and loans that do not count, and record two data limits (the education_grants residual and policyengine-uk-data#627). The benefit-unit list states the equal split's reason accurately. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Pushed P2: eight "counts towards the limit" cases no longer tested their source. Since Child Benefit counts, the model's own Child Benefit for the 3-year-old (about £1,400) took £99,000 and £100,000 parents over the limit whatever the named source was. That affected maintenance, statutory sick and paternity pay, spousal maintenance, salary and bonus sacrifice, PIP and UC. Those eight cases now set P2: no regression for the nine sources added in 7611591. The new P3s:
Static checks: ruff clean, |
The Welsh Government sets the Childcare Offer provider rate in its own annual review, not in the s150 benefit review, so it follows the lagged calendar-year CPI projection that the DfE funding rates use, not gov.benefit_uprating_cpi (September CPI since d8aae1b). The per-source test built its cases from the lists, so a source removed from a list only lost its case. The lists are now pinned to the reviewed sources, checked for duplicates, and each source is checked not to add another listed source at any depth. Comment fixes: guardianship allowance (read as Guardian's Allowance); subletting sits in property_income in the survey data; Parents' Learning Allowance and Adult Dependants' Grant are zero in Wales unless entered; the lump-sum exclusion's reason (question 10); 18- and 19-year-olds default to tertiary education. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
UK hub: round 8 answered in The round 8 review found two P2s, both fixed:
The P3 comment fixes are also in this commit:
The PR body is corrected to match, including the 2026-27 figure from the run at f2ea30f (£276.9m). The hub's rulings log restates the lump-sum and loan alternatives. @juaristi22: your approval is at 7611591. The changes since then are 7611591..1aa0d63 (gross income lists, tests and the rate's index). Could you re-review when CI is green? |
Conflict in the economic assumptions README: main's rewritten paragraph, with the Childcare Offer for Wales hourly rate added to the amounts that follow lagged calendar-year CPI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@juaristi22 your approval was at 7611591. Since then the branch has two commits from the hub with model changes: f2ea30f (each gross income regression test as its own source) and 1aa0d63 (uprates the Welsh hourly rate by lagged CPI and pins the income lists), plus a merge of main (96f78cb). It is in the merge queue now. Could you look at those two commits and say if they are fine? 🤖 Generated with Claude Code |
|
@juaristi22, the two hub commits since your approval at
The hub's ninth review round approved head 🤖 Generated with Claude Code |
juaristi22
left a comment
There was a problem hiding this comment.
Follow-up incremental review of Max’s two feature commits since approval at 7611591f63a3bb549ac6910facf026cf9a3c24d6, reviewed at 96f78cbc532c5f7d23dd60052578c5fabbe439e0.
No new findings. The published £6.67 rate remains the 2026 anchor. The new index correctly uses lagged calendar-year CPI for later projections, and the comments identify those projections as a modelling assumption: the Welsh Government’s annual review is discretionary, rather than a statutory CPI rule. The income-source and fixture changes are consistent with the reviewed guidance.
Validation: 139 focused tests passed. A pre-processing CPI reform leaves 2026 unchanged and changes the 2027 rate and final award as expected. Increasing the hourly rate by £1 increases the final award, household benefits and government spending by £1,050 for 1,050 funded hours, once each. All 18 current-head CI checks passed. Unrelated changes imported by the main merge were outside this incremental review.
Sources: Welsh Government rate review, 25 March 2026, April 2026 guidance, paragraph 135, and gross-income guidance, questions 8–11.
|
@juaristi22 I have taken this out of the merge queue until you have looked at the two commits since your approval (f2ea30f and 1aa0d63: lagged CPI for the Welsh hourly rate, pinned income lists). Re-queue once you are happy. 🤖 Generated with Claude Code |
|
@juaristi22 apologies, I took this out of the queue without seeing your 11:25 approval of the current head (96f78cb). Re-queued. 🤖 Generated with Claude Code |
|
Merged by the UK hub (Claude session 8e19f9d5) at head
|
Summary
Adds the Childcare Offer for Wales. The model had no Welsh childcare at all. A working family in Wales with a 3-year-old now gets the childcare element of the Offer, valued at the Welsh Government's hourly rate to providers (£7,003.50 a year in 2026-27 at full use), and it counts in
household_benefitsandgov_spending, the same as England's extended entitlement.Part of #1644 (the Wales Childcare Offer item only; Flying Start, the Student Finance Wales Childcare Grant and Welsh EMA stay open there).
What changed
New parameters under
gov.welsh_government.childcare_offerand variables undervariables/gov/welsh_government/childcare_offer/, following the England extended entitlement's structure:wales_childcare_offer_qualifying_child: a child aged 3 or 4 in Wales.wales_childcare_offer_parent_condition: each parent has gross income of no more than £100,000 (see Gross income below), and either earns on average at least 16 hours a week at their minimum wage (employment and self-employment income only) or, from September 2022, is enrolled in further or higher education. In a couple, a parent with a listed caring or incapacity benefit qualifies when the other works or studies; for Universal Credit with limited capability for work, that needs the parent to be a UC claimant (single or joint, so not a partner excluded under UC reg 3(3)) in a benefit unit with a UC award (receives_uc_with_limited_capability_for_work, new).wales_childcare_offer_eligible: a qualifying child and every parent meets the conditions.wales_childcare_offer_per_childandwales_childcare_offer: in the 39 term weeks, the 30 hours less the local authority's nursery education hours (10, the minimum); in the 9 holiday weeks, 30 hours. Limited bymax_free_entitlement_hours_used, as in England. Times the hourly rate: £4.50, £5.00 from April 2022, £6.40 from 7 April 2025, £6.67 from 6 April 2026, and after that the lagged calendar-year CPI projection thatgov.dfe.childcare_funding_rateuses. Not September CPI: the Welsh Government sets the rate in its own annual review, not in the Social Security Administration Act 1992 s150 benefit review.would_claim_wales_childcare_offer(default true, aswould_claim_extended_childcare).programs.yaml(status partial) anddata/fiscal_partition.yaml.Wales gets its own weeks and rate parameters rather than reusing
gov.dfe.weeks_per_year(38) andgov.dfe.childcare_funding_rate, as #1644's structural item 3 asks.Gross income
The guidance counts all of a parent's income (income guidance Q8 and Q9; guidance para 69: before any deductions, including pension contributions and salary sacrifice). The model lists the sources one by one, so that none counts twice (a test checks that no listed source adds another):
income/gross_income_sources.yaml):social_security_income) and the untaxed non-means-tested ones: PIP, DLA, AA, IIDB, SDA, MA, AFCS, War Widow's Pension, AFIP, Bereavement Support Payment and the Winter Fuel Payment;income/benunit_gross_income_sources.yaml): Child Benefit, UC, tax credits, HB, IS, Pension Credit, ESA(IR) and JSA(IB). Each is shared equally between the claimant and any partner. That is a modelling convention, since the model holds these awards at benefit-unit level. A lone parent counts all of it.lump_sum_income, cost of living payments, bill credits). Q10 works out annual earnings from regular pay and the bonuses a parent expects, read here as a test of recurring income, although Q10 covers earnings only. Q8 (whether a parent "reasonably expects their gross income in the current tax year" to exceed £100,000) and Q9's "all payments" point the other way, so this is logged as a reading in the hub's rulings;student_loans).None of the sources reads the Offer, so there is no dependency cycle. A static scan of the dependency graph found none: UC's childcare element reads the
childcare_expensesinput. The hub's independent reviews ran over nine rounds; round 9 approved96f78cb.Evidence
The Offer has no statutory basis yet. Section 1 of the Childcare Funding (Wales) Act 2019 is still prospective on legislation.gov.uk, and no Childcare Funding (Wales) Regulations have been made. The Welsh Government runs the Offer under its non-statutory guidance, so every parameter cites gov.wales:
Tests
policyengine_uk/tests/policy/baseline/gov/welsh_government/childcare_offer/wales_childcare_offer.yaml, 43 cases with the arithmetic in comments. Expected values come from the guidance and rate statements.Full use is 20 x 39 + 30 x 9 = 1,050 hours: £7,003.50 (2026), £6,720.00 (2025), £5,250.00 (2023), £4,725.00 (2021), £0 (2019).
Partial use: 15 hours gives 330 x 6.67 = £2,201.10; 8 hours gives 72 x 6.67 = £480.24.
Two children, England, and ages 2 and 5.
The earnings floor: £10,000 fails and £10,600 passes against 16 x £12.71 = £203.36 a week.
A parent in higher education, and the education route by year (none in 2021 or 2022, £5,250 in 2023).
The Carer's Allowance exception, and a lone parent who cannot use it.
The UC limited-capability exception: no UC award, a UC award, and a partner excluded from UC.
No take-up, and the default education status of a 19-year-old parent.
The £100,000 limit:
Each of these sets Child Benefit to zero unless it is the source under test. Otherwise the model's own Child Benefit for the 3-year-old (about £1,400) would decide the result.
policyengine_uk/tests/test_wales_childcare_offer_income_sources.py: one case for every source in both lists, read from the parameter files. A lone parent with £99,000 of wages qualifies (£7,003.50), and £1,001 more of the source, held by the parent or the benefit unit, takes them over the limit (£0). So each listed source counts at full weight, checked at one point (not a property test over all amounts). The cases come from the lists, so the file also pins each list to the reviewed sources and checks it for duplicates: removing a source, or adding one, fails until the test is changed too. A third check finds no listed source that adds or subtracts another at any depth; a formula that reads another listed source is not covered.The YAML cases fail on main, because the variables do not exist. CI at the head runs the full suite.
Reproducer: policyengine_uk/tests/policy/baseline/gov/welsh_government/childcare_offer/wales_childcare_offer.yaml, policyengine_uk/tests/test_wales_childcare_offer_income_sources.py
axiom: TheAxiomFoundation/rulespec-uk#480 queued
Open questions
96f78cb(40049043722) gives £264.7m and 39,000 benefit units in 2025-26, £276.9m in 2026-27, and £284.3m in 2027-28 rising to £313.1m and 40,000 benefit units in 2031-32. Household net income andgov_spendingrise by the same amounts, and the report finds no change in tax receipts or poverty rates. The Welsh Government's year 5 evaluation counted 21,729 children using the Offer in September 2021 to August 2022, which at full use and the 2025-26 rate would be about 21,729 x 1,050 x £6.40 = £146m. So the model is probably about twice the actual cost, from full take-up, full use and the 10-hour nursery assumption. Calibrating take-up to the Welsh caseload is the obvious follow-up.current_education's formula puts 16- and 17-year-olds in post-secondary and 18- and 19-year-olds in tertiary education when nothing is supplied, and both stages count as education here. The FRS-based data suppliescurrent_education, so this affects household calculations only; a test documents it.education_grantsresidual can still hold Childcare Grant and DSA;allpay2amount reaches bothtaxable_miscellaneous_incomeandprivate_transfer_income(policyengine-uk-data#627).🤖 Generated with Claude Code