Skip to content

Add the Childcare Offer for Wales - #2535

Merged
vahid-ahmadi merged 15 commits into
mainfrom
wales-childcare-offer-1644
Oct 24, 2026
Merged

vahid-ahmadi merged 15 commits into
mainfrom
wales-childcare-offer-1644

Conversation

@vahid-ahmadi

@vahid-ahmadi vahid-ahmadi commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

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_benefits and gov_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_offer and variables under variables/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_child and wales_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 by max_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 that gov.dfe.childcare_funding_rate uses. 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, as would_claim_extended_childcare).
  • Rows in programs.yaml (status partial) and data/fiscal_partition.yaml.

Wales gets its own weeks and rate parameters rather than reusing gov.dfe.weeks_per_year (38) and gov.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):

  • Person-level (income/gross_income_sources.yaml):
    • earnings: cash pay, statutory sick, maternity and paternity pay, salary and bonus sacrifice added back, and self-employment profit;
    • private pensions;
    • taxable benefits (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;
    • investment, property and subletting income, and taxable miscellaneous income;
    • child and spousal maintenance;
    • private transfers;
    • student support paid as income (Adult EMA, Access Fund, education grants). Parents' Learning Allowance and Adult Dependants' Grant are listed too, but their formulas are England-only, so they are zero in Wales unless entered.
  • Benefit-unit-level (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.
  • Not counted:
    • support that reimburses a specific cost or is given in kind (Childcare Grant, Care to Learn, Travel Grant, DSA, the 16 to 19 Bursary, Healthy Start, the childcare entitlements, Tax-Free Childcare);
    • one-off grants and lump sums, whether paid to a person or to the household (Sure Start Maternity Grant, 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;
    • loans (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_expenses input. The hub's independent reviews ran over nine rounds; round 9 approved 96f78cb.

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:

  • Childcare Offer for Wales: Guidance for Local Authorities, version 8.3 (April 2026): paras 1, 3, 6 to 9 (30 hours, 39 + 9 weeks, 10-hour nursery minimum), 48 and 54 (child aged 3 or 4 until a full-time school place), 57, 59, 62 to 71 (parent conditions, £100,000 gross, 16 hours at minimum wage, FE or HE course), 87 (exception benefits), 135 (£6.67 from 6 April 2026).
  • Version 8.0 (April 2025), para 129: £6.40 from 7 April 2025 (this replaced the £6.00 announced in December 2024).
  • Written statement, 22 February 2022: £4.50 to £5 an hour from April 2022.
  • Evaluation of the early implementation of the Offer (2018): £4.50 an hour and the 16-hour test from September 2017.
  • Assessing parents' income guidance, July 2020, questions 8 and 9: the £100,000 gross per parent limit, counting all income, including maintenance.
  • Written statement, 2 March 2022: the Offer extended to parents in further and higher education from September 2022.
  • Welsh Government release, 19 December 2019: in all 22 local authorities by August 2019.

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 named source taking a parent over it: maintenance, statutory sick and paternity pay, spousal maintenance, salary and bonus sacrifice, PIP, Child Benefit, UC;
      • the exact-£100,000 boundary with pay, statutory maternity pay, maintenance, spousal maintenance and salary sacrifice;
      • a couple's Child Benefit shared between them.

      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

  1. Nursery education hours. The model uses the 10-hour minimum for every local authority, which gives the largest childcare element. Many authorities provide more (guidance para 9), which reduces the childcare hours. A per-authority table needs a source.
  2. Nursery education is not valued. It is universal and funded by local authorities at local rates, with no national rate. England's universal 15 hours are valued; Wales's nursery education is not, so Welsh totals are not like for like with England's.
  3. Start date. The model starts in August 2019, when all 22 authorities had the Offer, so tax year 2019 (sampled at 30 April) gets nothing and the 2017 to 2019 pilot areas are left out. The £100,000 limit's earliest source is July 2020; it is applied from August 2019. The education and training route starts in September 2022, so it first applies in tax year 2023.
  4. Take-up and usage. Take-up defaults to true and usage to 30 hours, as in England. Neither has a Welsh source. CI's aggregate impact run at 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 and gov_spending rise 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.
  5. Rates after April 2026 follow the lagged calendar-year CPI projection, as England's DfE rates do. The Welsh Government now reviews the rate each year.
  6. Not modelled: statutory leave and sick pay exceptions, the newly self-employed exemption, the term-after-third-birthday start and the September school start (every child aged 3 or 4 counts for the whole year), course length and institution for parents in education, and the Armed Forces exceptions.
  7. Parents aged 16 to 19 count as in education by default. 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 supplies current_education, so this affects household calculations only; a test documents it.
  8. Gross income. See Gross income above. Three limits remain, all immaterial near £100,000:
    • the equal split of benefit-unit awards is a convention, not a legal reading;
    • for a Welsh student, the FRS education_grants residual can still hold Childcare Grant and DSA;
    • the FRS allpay2 amount reaches both taxable_miscellaneous_income and private_transfer_income (policyengine-uk-data#627).
  9. No netting against UC childcare costs or Tax-Free Childcare. Para 89 says parents cannot claim other support for hours the Offer funds. England's entitlements do not net either, so this mirrors them.
  10. Axiom. The guidance is the operative text, so the rulespec-uk issue quotes it verbatim from gov.wales rather than legislation.gov.uk, as rulespec-uk#381 does for Care to Learn.

🤖 Generated with Claude Code

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>
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Aggregate impact on certified data: pass

Base 29c5a0a98e against head 3b5e5131fd, both on enhanced_frs_2024_25.h5 (policyengine-uk-data 1.58.1, sha256 056e80fd8e91), fiscal years 2025-26 to 2031-32. Each year is a full microsimulation run on each side.

Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0 (thresholds in report_spec.yaml; a flag does not fail the job).

Workflow run and full report

Notes

  • This change edits the fiscal partition; review the partition diff alongside the moves it explains.
  • In the years a figure from fewer than 10 records is suppressed (spending.disabled_students_allowance), every total containing it, and the decile incomes, are rebuilt from their other components, so no published total includes it. Those totals are marked †. A change is withheld where the two sides leave out different figures and can't be lined up.
  • Childcare Offer for Wales (spending.wales_childcare_offer) is measured on the head only.
  • Childcare Offer for Wales (caseloads.wales_childcare_offer) is measured on the head only.

Moves flagged for review

None.

Spending by benefit and service

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Childcare Offer for Wales (new: head levels) £0.26bn £0.28bn £0.28bn £0.29bn £0.30bn £0.31bn £0.31bn
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Caseloads

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Childcare Offer for Wales (new: head levels) 39k 39k 39k 39k 39k 40k 40k
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Government balance, each component counted once

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government spending +£264.7m † +£276.9m † +£284.3m † +£291.2m † +£298.3m † +£305.7m † +£313.1m †
Government balance, each receipt once -£264.7m † -£276.9m † -£284.3m † -£291.2m † -£298.3m † -£305.7m † -£313.1m †

Model totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_spending +£264.7m † +£276.9m † +£284.3m † +£291.2m † +£298.3m † +£305.7m † +£313.1m †
household_benefits +£264.7m † +£276.9m † +£284.3m † +£291.2m † +£298.3m † +£305.7m † +£313.1m †
gov_balance -£264.7m † -£276.9m † -£284.3m † -£291.2m † -£298.3m † -£305.7m † -£313.1m †

Household income totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household net income +£264.7m † +£276.9m † +£284.3m † +£291.2m † +£298.3m † +£305.7m † +£313.1m †

Mean household net income in each side's own deciles

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household +£9.03 † +£9.22 † +£9.36 † +£9.48 † +£9.73 † +£9.94 † +£10 †
Decile 2: mean household_net_income per household +£11 † +£12 † +£12 † +£12 † +£12 † +£12 † +£13 †
Decile 3: mean household_net_income per household +£3.52 † +£3.08 † +£3.16 † +£3.23 † +£3.26 † +£3.32 † +£3.40 †
Decile 4: mean household_net_income per household +£4.44 † +£3.05 † +£3.28 † +£3.36 † +£3.44 † +£3.52 † +£3.57 †
Decile 5: mean household_net_income per household +£7.20 † +£9.27 † +£9.40 † +£9.76 † +£9.94 † +£10 † +£10 †
Decile 6: mean household_net_income per household +£7.92 † +£2.15 † +£2.23 † +£2.30 † +£2.28 † +£2.37 † +£2.45 †
Decile 7: mean household_net_income per household +£5.53 † +£12 † +£12 † +£12 † +£13 † +£13 † +£13 †
Decile 8: mean household_net_income per household +£16 † +£16 † +£17 † +£17 † +£19 † +£19 † +£20 †
Decile 9: mean household_net_income per household +£23 † +£24 † +£25 † +£25 † +£24 † +£25 † +£25 †

Standard reform costings (change in gov_balance)

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp -£1 -£18 +£5 -£34 -£5 -£26 -£7
Raise higher rate by 1pp 0 -£0 +£4 -£1 +£8 +£0 +£13
Raise personal allowance by ~800GBP/year -£0 -£9 +£6 -£11 +£15 -£9 -£0
Raise child benefit by 25GBP/week per additional child +£1 -£13 +£4 +£12 -£15 -£67 +£33
Reduce Universal Credit taper rate to 20% -£22 -£11 +£2 -£18 +£14 -£2 +£13
Raise Class 1 main employee NICs rate to 10% +£7 -£14 -£9 +£4 +£4 -£14 +£10
Raise VAT standard rate by 2pp +£0 +£6 +£3 -£20 -£4 +£3 +£15
Raise additional rate by 3pp 0 -£0 -£0 +£0 +£0 suppressed suppressed
Raise the Universal Credit standard allowance by 10% -£0 +£9 +£6 -£7 +£4 +£2 -£10
Raise the State Pension by 10% -£0 -£0 -£0 +£0 +£0 +£0 -£0

Standard reforms: change in each reform's target

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise additional rate by 3pp: change in income_tax 0 0 0 0 0 suppressed suppressed

Household net income by decile

Mean 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.

Base decile 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 2 fewer than 10 households change +£12 (+0.0%) +£12 (+0.0%) +£12 (+0.0%) +£12 (+0.0%) +£12 (+0.0%) +£13 (+0.0%)
Decile 3 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 4 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 5 fewer than 10 households change +£9 (+0.0%) fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 6 +£8 (+0.0%) +£2 (+0.0%) +£2 (+0.0%) +£2 (+0.0%) +£2 (+0.0%) +£2 (+0.0%) +£2 (+0.0%)
Decile 7 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 8 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change +£19 (+0.0%) +£20 (+0.0%)
Decile 9 +£23 (+0.0%) +£24 (+0.0%) +£25 (+0.0%) +£25 (+0.0%) fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 10 0 0 0 0 0 0 0
all +£8 (+0.0%) +£9 (+0.0%) +£9 (+0.0%) +£9 (+0.0%) +£9 (+0.0%) +£10 (+0.0%) +£10 (+0.0%)
Year People gaining over £1 People losing over £1
2025-26 0.2% 0.0%
2026-27 0.2% 0.0%
2027-28 0.2% 0.0%
2028-29 0.2% 0.0%
2029-30 0.2% 0.0%
2030-31 0.2% 0.0%
2031-32 0.2% 0.0%

No change in any year: receipts by tax head; population; poverty rates; people in poverty; inequality.

Checks failing on both base and head (1)
  • VAT is never negative (sign:vat): 2025-26: 76 units below zero, a weighted £-54,797,972 in total; 2026-27: 76 units below zero, a weighted £-56,271,349 in total; 2027-28: 76 units below zero, a weighted £-57,609,146 in total
Counted-once check

Each 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.

  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; gov_spending; not a failure)
  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; household_benefits; not a failure)
Provenance
Side Commit Runtime Environment hash Partition hash Time
base main 29c5a0a98e uk 2.151.2 (files 68f5044fddb1), core 3.33.2, py 3.13.17 aarch64 57815e229099 dfe9982f4005 1672.45s
head #2535 merged into main 3b5e5131fd uk 2.151.2 (files 0dd974712134), core 3.33.2, py 3.13.17 aarch64 57815e229099 24fc21b99b1a 1706.84s

Dataset: hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@2526edbbb687a3b54dbb11272e5389e4b62d2ac2, sha256 056e80fd8e9151d78f432a25cde863340baee81304c6216a37fb575ce8563784 (verified on both sides), policyengine-uk-data 1.58.1.

Receipts by tax head: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Income tax £299.29bn £319.01bn £336.54bn £351.69bn £367.24bn £385.36bn £403.66bn
National Insurance (employee and self-employed) £52.58bn £54.94bn £56.75bn £58.48bn £60.62bn £62.57bn £65.03bn
National Insurance (employer) £152.64bn £159.18bn £164.14bn £168.73bn £176.11bn £181.72bn £188.90bn
Employer NI change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Employer NI change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Capital gains tax £12.62bn £13.06bn £13.55bn £14.04bn £14.54bn £15.09bn £15.65bn
Student loan repayments £7.83bn £8.12bn £8.35bn £8.56bn £8.79bn £9.04bn £9.38bn
VAT £253.71bn £260.53bn £266.72bn £273.14bn £279.83bn £286.71bn £293.71bn
Change in VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
VAT on private school fees £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Fuel duties £24.53bn £24.64bn £26.64bn £26.69bn £26.42bn £25.76bn £26.35bn
Alcohol duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tobacco duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Vehicle excise duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Betting and gaming duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
TV licence fee £4.28bn £4.43bn £4.44bn £4.46bn £4.48bn £4.50bn £4.52bn
Council tax £49.21bn £51.88bn £54.97bn £58.29bn £61.55bn £64.92bn £68.49bn
High value council tax surcharge £0.00bn £0.00bn £0.00bn £0.48bn £0.49bn £0.51bn £0.52bn
Northern Ireland domestic rates £0.55bn £0.58bn £0.61bn £0.63bn £0.67bn £0.70bn £0.73bn
Business rates £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn
Stamp duty land tax on the household's own purchases £6.93bn £7.42bn £7.85bn £8.26bn £8.68bn £9.09bn £9.51bn
Stamp duty land tax paid by companies £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn
Land transaction tax (Wales) £0.08bn £0.08bn £0.09bn £0.09bn £0.10bn £0.10bn £0.11bn
Land and buildings transaction tax (Scotland) £0.31bn £0.32bn £0.34bn £0.36bn £0.37bn £0.39bn £0.40bn
Unspecified tax change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Unspecified tax change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax excluding the main residence £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Land value tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Carbon tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Spending by benefit and service: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension £122.15bn £126.64bn £127.76bn £129.65bn £133.46bn £137.40bn £141.47bn
Pension Credit £6.68bn £7.07bn £7.35bn £7.50bn £7.65bn £7.83bn £8.02bn
Winter Fuel Payment £1.70bn £1.68bn £1.59bn £1.57bn £1.57bn £1.55bn £1.52bn
Pension Age Winter Heating Payment (Scotland) £0.19bn £0.20bn £0.20bn £0.21bn £0.21bn £0.22bn £0.22bn
Universal Credit £75.54bn £80.75bn £83.40bn £85.21bn £86.21bn £87.61bn £88.91bn
Housing Benefit £8.59bn £8.93bn £9.22bn £9.37bn £9.64bn £9.91bn £10.20bn
Council Tax Reduction £1.98bn £2.03bn £2.07bn £2.12bn £2.17bn £2.22bn £2.26bn
Employment and Support Allowance (income-related) £0.79bn £0.81bn £0.83bn £0.85bn £0.87bn £0.89bn £0.91bn
Employment and Support Allowance (contribution-based) £5.22bn £5.36bn £5.49bn £5.62bn £5.76bn £5.90bn £6.04bn
Jobseeker's Allowance (income-based) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Jobseeker's Allowance (contribution-based) £0.29bn £0.30bn £0.30bn £0.31bn £0.32bn £0.33bn £0.33bn
Income Support £0.12bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Working Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Incapacity Benefit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Personal Independence Payment £27.05bn £28.19bn £29.28bn £30.02bn £30.75bn £31.51bn £32.28bn
Disability Living Allowance £7.52bn £7.83bn £8.14bn £8.34bn £8.55bn £8.76bn £8.97bn
Attendance Allowance £8.71bn £9.08bn £9.43bn £9.67bn £9.90bn £10.15bn £10.40bn
Carer's Allowance £4.50bn £4.69bn £4.87bn £4.99bn £5.11bn £5.23bn £5.36bn
Carer Support Payment (Scotland) £0.31bn £0.32bn £0.34bn £0.34bn £0.35bn £0.36bn £0.37bn
Carer's Allowance Supplement (Scotland) £0.00bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Severe Disablement Allowance £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn
Industrial Injuries Disablement Benefit £0.51bn £0.52bn £0.53bn £0.54bn £0.56bn £0.57bn £0.59bn
Armed Forces Compensation Scheme £0.61bn £0.62bn £0.64bn £0.65bn £0.67bn £0.69bn £0.70bn
War Widow's or Widower's Pension £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Benefit £16.23bn £16.91bn £17.53bn £17.96bn £18.39bn £18.84bn £19.29bn
Scottish Child Payment £0.50bn £0.52bn £0.54bn £0.56bn £0.56bn £0.58bn £0.59bn
Two Child Limit Payment (Scotland, counterfactual) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Healthy Start vouchers £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn
Maternity Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Maternity Pay £3.32bn £3.41bn £3.49bn £3.57bn £3.66bn £3.75bn £3.84bn
Statutory Paternity Pay £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Sick Pay £1.13bn £1.16bn £1.19bn £1.22bn £1.25bn £1.28bn £1.31bn
Sure Start Maternity Grant £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Bereavement Support Payment £0.67bn £0.69bn £0.70bn £0.72bn £0.74bn £0.76bn £0.78bn
Widowed Parent's Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tax-Free Childcare £0.55bn £0.56bn £0.57bn £0.58bn £0.60bn £0.61bn £0.59bn
Extended childcare entitlement £2.77bn £3.27bn £3.36bn £3.43bn £3.53bn £3.61bn £3.70bn
Universal childcare entitlement £2.26bn £2.45bn £2.51bn £2.58bn £2.64bn £2.72bn £2.78bn
Targeted childcare entitlement £0.47bn £0.49bn £0.50bn £0.51bn £0.52bn £0.53bn £0.47bn
Childcare Offer for Wales £0.26bn £0.28bn £0.28bn £0.29bn £0.30bn £0.31bn £0.31bn
Care to Learn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Childcare Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Parents' Learning Allowance £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn
Adult Dependants' Grant £0.06bn £0.06bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Travel Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
NHS spending £204.68bn £205.46bn £206.22bn £207.04bn £207.96bn £208.89bn £209.79bn
State education spending £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn
Transport subsidy spending £25.15bn £25.25bn £25.34bn £25.44bn £25.55bn £25.67bn £25.78bn
Cost-of-living support payment £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Bills Rebate £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Price Guarantee subsidy £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disability basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Other public spending budget change £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Caseloads: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension 11,308k 11,208k 10,906k 10,812k 10,860k 10,908k 10,955k
Pension Credit 1,491k 1,489k 1,488k 1,470k 1,473k 1,476k 1,475k
Winter Fuel Payment 7,091k 7,011k 6,600k 6,512k 6,493k 6,379k 6,248k
Pension Age Winter Heating Payment (Scotland) 806k 807k 807k 805k 809k 812k 816k
Universal Credit 6,361k 6,370k 6,404k 6,419k 6,390k 6,387k 6,368k
Housing Benefit 1,254k 1,252k 1,256k 1,242k 1,246k 1,250k 1,252k
Council Tax Reduction 3,187k 3,212k 3,225k 3,248k 3,266k 3,282k 3,295k
Employment and Support Allowance (income-related) 71k 71k 71k 72k 72k 72k 72k
Employment and Support Allowance (contribution-based) 722k 724k 727k 730k 733k 737k 740k
Jobseeker's Allowance (income-based) 0k 0k 0k 0k 0k 0k 0k
Jobseeker's Allowance (contribution-based) 67k 67k 68k 68k 68k 69k 69k
Income Support 25k 0k 0k 0k 0k 0k 0k
Working Tax Credit 0k 0k 0k 0k 0k 0k 0k
Child Tax Credit 0k 0k 0k 0k 0k 0k 0k
Incapacity Benefit 0k 0k 0k 0k 0k 0k 0k
Personal Independence Payment 3,581k 3,595k 3,608k 3,623k 3,639k 3,655k 3,671k
Disability Living Allowance 1,296k 1,301k 1,306k 1,311k 1,317k 1,323k 1,329k
Attendance Allowance 1,701k 1,708k 1,714k 1,721k 1,729k 1,736k 1,744k
Carer's Allowance 1,038k 1,042k 1,046k 1,050k 1,055k 1,059k 1,064k
Carer Support Payment (Scotland) 71k 72k 72k 72k 73k 73k 73k
Carer's Allowance Supplement (Scotland) 0k 72k 72k 72k 73k 73k 73k
Severe Disablement Allowance 4k 4k 4k 4k 4k 4k 4k
Industrial Injuries Disablement Benefit 137k 138k 139k 139k 140k 140k 141k
Armed Forces Compensation Scheme 94k 94k 94k 95k 95k 95k 96k
War Widow's or Widower's Pension 0k 0k 0k 0k 0k 0k 0k
Child Benefit 8,136k 8,165k 8,185k 8,215k 8,249k 8,282k 8,314k
Scottish Child Payment 352k 354k 355k 359k 357k 358k 357k
Two Child Limit Payment (Scotland, counterfactual) 0k 0k 0k 0k 0k 0k 0k
Healthy Start vouchers 200k 201k 202k 203k 204k 204k 205k
Maternity Allowance 0k 0k 0k 0k 0k 0k 0k
Statutory Maternity Pay 334k 335k 336k 338k 339k 341k 342k
Statutory Paternity Pay 0k 0k 0k 0k 0k 0k 0k
Statutory Sick Pay 182k 183k 183k 184k 185k 186k 186k
Sure Start Maternity Grant 26k 26k 26k 27k 27k 27k 27k
Bereavement Support Payment 98k 98k 99k 99k 100k 100k 101k
Widowed Parent's Allowance 0k 0k 0k 0k 0k 0k 0k
Tax-Free Childcare 1,018k 1,029k 1,028k 1,033k 1,034k 1,039k 1,023k
Extended childcare entitlement 718k 724k 728k 732k 737k 741k 743k
Universal childcare entitlement 986k 989k 992k 997k 1,002k 1,013k 1,015k
Targeted childcare entitlement 98k 98k 96k 96k 96k 97k 84k
Childcare Offer for Wales 39k 39k 39k 39k 39k 40k 40k
Care to Learn 0k 0k 0k 0k 0k 0k 0k
Childcare Grant 0k 0k 0k 0k 0k 0k 0k
Parents' Learning Allowance 98k 99k 99k 100k 100k 100k 101k
Adult Dependants' Grant 18k 18k 12k 13k 13k 13k 13k
Travel Grant 0k 0k 0k 0k 0k 0k 0k
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund 0k 0k 0k 0k 0k 0k 0k
Cost-of-living support payment 0k 0k 0k 0k 0k 0k 0k
Energy Bills Rebate 0k 0k 0k 0k 0k 0k 0k
Energy Price Guarantee subsidy 0k 0k 0k 0k 0k 0k 0k
Basic income 0k 0k 0k 0k 0k 0k 0k
Disability basic income 0k 0k 0k 0k 0k 0k 0k
Government balance, each component counted once: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government receipts, each component once £899.40bn £939.05bn £975.84bn £1,008.78bn £1,044.74bn £1,081.33bn £1,121.83bn
Government spending £530.85bn † £545.87bn † £554.09bn † £561.28bn † £569.86bn † £579.09bn † £588.21bn †
Government balance, each receipt once £368.55bn † £393.19bn † £421.76bn † £447.50bn † £474.88bn † £502.24bn † £533.62bn †
Benefits in household_benefits but not in gov_spending £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Model totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax £899.40bn £939.05bn £975.84bn £1,008.78bn £1,044.74bn £1,081.33bn £1,121.83bn
household_tax £493.05bn £519.34bn £544.98bn £566.91bn £588.80bn £612.89bn £639.22bn
pre_budget_change_household_tax £485.22bn £511.22bn £536.63bn £557.87bn £579.52bn £603.35bn £629.32bn
gov_spending £530.85bn † £545.87bn † £554.09bn † £561.28bn † £569.86bn † £579.09bn † £588.21bn †
household_benefits £530.85bn † £545.87bn † £554.09bn † £561.28bn † £569.86bn † £579.09bn † £588.21bn †
gov_balance £368.55bn † £393.19bn † £421.76bn † £447.50bn † £474.88bn † £502.24bn † £533.62bn †
Household income totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income £1,657.06bn £1,719.25bn £1,771.68bn £1,821.99bn £1,872.88bn £1,930.99bn £2,001.98bn
Household net income £1,655.59bn † £1,705.01bn † £1,738.90bn † £1,773.42bn † £1,809.87bn † £1,851.85bn † £1,903.92bn †
Household net income (HBAI definition) £1,462.17bn £1,509.90bn £1,544.25bn £1,577.67bn £1,612.09bn £1,651.53bn £1,702.40bn
Population: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People 69,514k 69,778k 70,036k 70,316k 70,626k 70,944k 71,249k
Benefit units 35,247k 35,381k 35,512k 35,654k 35,811k 35,972k 36,127k
Households 31,167k 31,285k 31,401k 31,526k 31,665k 31,808k 31,944k
Poverty rates: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 16.1% 15.2% 15.5% 15.6% 15.7% 15.8% 15.8%
Absolute poverty, before housing costs: children 24.2% 21.4% 21.6% 21.6% 21.7% 22.0% 21.8%
Absolute poverty, before housing costs: working-age adults 13.9% 13.5% 14.0% 14.2% 14.2% 14.3% 14.3%
Absolute poverty, before housing costs: pensioners 13.7% 13.2% 13.1% 13.4% 13.4% 13.5% 13.5%
Absolute poverty, after housing costs: everyone 21.6% 20.9% 21.3% 21.5% 21.8% 22.1% 22.2%
Absolute poverty, after housing costs: children 33.4% 30.9% 31.1% 31.1% 31.5% 32.0% 32.3%
Absolute poverty, after housing costs: working-age adults 19.9% 19.7% 20.3% 20.5% 20.8% 21.0% 21.1%
Absolute poverty, after housing costs: pensioners 12.8% 12.6% 12.4% 12.6% 12.7% 13.0% 13.0%
Relative poverty, before housing costs: everyone 17.2% 16.5% 16.5% 16.6% 16.3% 16.4% 16.4%
Relative poverty, before housing costs: children 26.4% 23.7% 23.4% 23.4% 22.9% 23.0% 22.9%
Relative poverty, before housing costs: working-age adults 14.7% 14.4% 14.7% 14.8% 14.7% 14.8% 14.8%
Relative poverty, before housing costs: pensioners 14.8% 14.8% 14.0% 14.2% 13.9% 14.0% 14.1%
Relative poverty, after housing costs: everyone 21.7% 21.1% 21.2% 21.2% 21.4% 21.4% 21.7%
Relative poverty, after housing costs: children 33.5% 31.3% 31.0% 30.8% 31.0% 31.1% 31.5%
Relative poverty, after housing costs: working-age adults 19.9% 19.8% 20.2% 20.3% 20.5% 20.5% 20.7%
Relative poverty, after housing costs: pensioners 13.0% 12.7% 12.4% 12.1% 12.0% 12.1% 12.4%
People in poverty: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 11,163k 10,583k 10,852k 11,004k 11,081k 11,222k 11,226k
Absolute poverty, before housing costs: children 3,629k 3,221k 3,260k 3,284k 3,310k 3,369k 3,350k
Absolute poverty, before housing costs: working-age adults 5,902k 5,806k 6,080k 6,197k 6,234k 6,304k 6,319k
Absolute poverty, before housing costs: pensioners 1,632k 1,556k 1,512k 1,523k 1,537k 1,550k 1,556k
Absolute poverty, after housing costs: everyone 15,000k 14,571k 14,945k 15,112k 15,392k 15,663k 15,804k
Absolute poverty, after housing costs: children 5,004k 4,656k 4,703k 4,723k 4,808k 4,897k 4,966k
Absolute poverty, after housing costs: working-age adults 8,476k 8,431k 8,812k 8,952k 9,130k 9,273k 9,341k
Absolute poverty, after housing costs: pensioners 1,520k 1,484k 1,430k 1,437k 1,455k 1,492k 1,497k
Relative poverty, before housing costs: everyone 11,974k 11,507k 11,535k 11,642k 11,544k 11,663k 11,712k
Relative poverty, before housing costs: children 3,963k 3,570k 3,543k 3,553k 3,489k 3,519k 3,522k
Relative poverty, before housing costs: working-age adults 6,246k 6,184k 6,378k 6,475k 6,460k 6,538k 6,563k
Relative poverty, before housing costs: pensioners 1,765k 1,753k 1,615k 1,613k 1,595k 1,606k 1,628k
Relative poverty, after housing costs: everyone 15,067k 14,732k 14,872k 14,931k 15,091k 15,202k 15,461k
Relative poverty, after housing costs: children 5,019k 4,715k 4,686k 4,669k 4,725k 4,754k 4,839k
Relative poverty, after housing costs: working-age adults 8,497k 8,516k 8,764k 8,884k 8,992k 9,060k 9,192k
Relative poverty, after housing costs: pensioners 1,551k 1,502k 1,422k 1,378k 1,374k 1,388k 1,429k
Inequality: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs 0.3088 0.3061 0.3067 0.3073 0.3077 0.3083 0.3093
Mean household net income in each side's own deciles: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household £17,840 † £18,022 † £18,044 † £18,091 † £18,444 † £18,647 † £18,801 †
Decile 2: mean household_net_income per household £28,097 † £29,032 † £28,813 † £29,261 † £29,515 † £29,937 † £30,632 †
Decile 3: mean household_net_income per household £34,364 † £35,680 † £36,236 † £36,729 † £37,058 † £37,684 † £38,304 †
Decile 4: mean household_net_income per household £38,780 † £40,954 † £42,031 † £42,704 † £43,428 † £44,164 † £44,663 †
Decile 5: mean household_net_income per household £43,910 † £44,803 † £45,873 † £46,631 † £47,817 † £48,695 † £50,059 †
Decile 6: mean household_net_income per household £48,445 † £49,773 † £50,851 † £51,837 † £51,935 † £53,556 † £54,583 †
Decile 7: mean household_net_income per household £56,354 † £57,584 † £58,388 † £58,840 † £60,115 † £60,706 † £62,325 †
Decile 8: mean household_net_income per household £69,294 † £70,776 † £72,247 † £73,341 † £74,902 † £76,043 † £78,321 †
Decile 9: mean household_net_income per household £79,833 † £82,212 † £83,326 † £84,783 † £86,333 † £87,909 † £90,941 †
Decile 10: mean household_net_income per household £117,846 † £120,681 † £122,638 † £124,783 † £127,004 † £129,363 † £132,261 †
Standard reform costings (change in gov_balance): head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp £6.22bn £6.50bn £6.70bn £6.90bn £7.11bn £7.34bn £7.62bn
Raise higher rate by 1pp £3.54bn £3.82bn £4.05bn £4.27bn £4.49bn £4.76bn £4.96bn
Raise personal allowance by ~800GBP/year £-3.83bn £-3.96bn £-4.03bn £-4.10bn £-4.19bn £-4.30bn £-2.02bn
Raise child benefit by 25GBP/week per additional child £-2.00bn £-1.76bn £-1.58bn £-1.48bn £-1.38bn £-1.28bn £-1.17bn
Reduce Universal Credit taper rate to 20% £-20.49bn £-21.05bn £-21.50bn £-21.94bn £-22.03bn £-22.40bn £-22.87bn
Raise Class 1 main employee NICs rate to 10% £11.07bn £11.51bn £11.84bn £12.14bn £12.49bn £12.83bn £13.23bn
Raise VAT standard rate by 2pp £25.01bn £25.68bn £26.29bn £26.92bn £27.58bn £28.26bn £28.95bn
Raise additional rate by 3pp £2.83bn £3.07bn £3.27bn £3.47bn £3.67bn suppressed suppressed
Raise the Universal Credit standard allowance by 10% £-3.03bn £-3.16bn £-3.28bn £-3.35bn £-3.39bn £-3.44bn £-3.51bn
Raise the State Pension by 10% £-7.81bn £-8.07bn £-8.06bn £-8.18bn £-8.43bn £-8.60bn £-8.96bn
Standard reforms: change in each reform's target: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax £6.36bn £6.65bn £6.86bn £7.07bn £7.28bn £7.52bn £7.80bn
Raise higher rate by 1pp: change in income_tax £3.55bn £3.83bn £4.06bn £4.28bn £4.50bn £4.77bn £4.97bn
Raise personal allowance by ~800GBP/year: change in income_tax £-3.96bn £-4.10bn £-4.19bn £-4.26bn £-4.36bn £-4.47bn £-1.77bn
Raise child benefit by 25GBP/week per additional child: change in child_benefit £2.34bn £2.15bn £1.96bn £1.85bn £1.74bn £1.63bn £1.51bn
Reduce Universal Credit taper rate to 20%: change in universal_credit £20.48bn £21.04bn £21.49bn £21.93bn £22.02bn £22.40bn £22.86bn
Raise Class 1 main employee NICs rate to 10%: change in national_insurance £11.33bn £11.79bn £12.13bn £12.44bn £12.78bn £13.13bn £13.62bn
Raise VAT standard rate by 2pp: change in vat £25.01bn £25.68bn £26.29bn £26.92bn £27.58bn £28.26bn £28.95bn
Raise additional rate by 3pp: change in income_tax £2.83bn £3.07bn £3.27bn £3.47bn £3.67bn suppressed suppressed
Raise the Universal Credit standard allowance by 10%: change in universal_credit £3.03bn £3.16bn £3.28bn £3.36bn £3.41bn £3.47bn £3.52bn
Raise the State Pension by 10%: change in state_pension £10.72bn £11.23bn £11.37bn £11.62bn £12.08bn £12.54bn £13.07bn

@juaristi22 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:13 enables 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:29 uses total_income, which omits maintenance_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:18 accepts bare uc_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>
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator Author

@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. education_stages.yaml is now empty from August 2019 and lists the stages from 1 September 2022, with the statement added as a reference. Years are sampled at 30 April, so 2021 and 2022 get nothing through this route and 2023 is the first year with it. Tests: your 2021 case (£0), the same family in 2022 (£0) and in 2023 (£5,250).

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 total_income (the ITA 2007 s.23 figure income tax uses); the test now sums a new parameter, income/gross_income_sources.yaml (total_income and maintenance_income). Tests: £99,000 pay plus £5,000 maintenance (£0) and the boundary, £95,000 plus £5,000 (£7,003.50).

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". uc_limited_capability_for_work is only the assessment and defaults from is_disabled_for_benefits. A new person variable, receives_uc_with_limited_capability_for_work, also needs a UC award in the benefit unit (built like receives_uc_carer_element), and it replaces the bare flag in exception_criteria.yaml. Tests: your £99,000 couple with a disabled non-working partner and no UC (£0), and a £20,000 earner with an LCW partner on a UC award (£7,003.50).

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 wales_childcare_offer.yaml pass. The full YAML policy suite (3,896) passes, as do test_build_metadata.py and test_aggregate_impact_partition.py (70 passed, 1 skipped), and ruff is clean. I have updated the PR body to match. It stays in draft.

🤖 Generated with Claude Code

@juaristi22 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator Author

@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. receives_uc_with_limited_capability_for_work now requires is_uc_single_or_joint_claimant as well as LCW and a UC award.

Tests. I added your case (2026, Wales, worker on £20,000, £6,000 council rent, disabled partner with uc_is_ineligible_partner: true, a three-year-old). At 39b1c40 it fails: the helper gives [false, true, false] and the Offer is £7,003.50. At 3a5b03d the claimant flags are [true, false, false], UC is still £7,569.90, the helper gives [false, false, false] and the Offer is £0. The earlier controls still pass, including the £20,000 earner with an LCW partner on a joint UC award (£7,003.50) and the £99,000 couple with no UC (£0). All 30 cases in wales_childcare_offer.yaml pass, as does the full YAML policy suite (3,897, England cases included). test_build_metadata.py, test_aggregate_impact_partition.py, test_parameter_metadata.py and test_uc_single_claim_properties.py give 78 passed, 1 skipped, and ruff is clean. I have updated the PR body to match. It stays in draft.

🤖 Generated with Claude Code

@juaristi22 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@MaxGhenis

Copy link
Copy Markdown
Collaborator

UK hub (Claude session, for Max): independent review (GPT-6.1 Sol) at 3a5b03dea. One P1 blocks.

[P1] Statutory pay is missing from the £100,000 gross-income cap. parameters/gov/welsh_government/childcare_offer/income/gross_income_sources.yaml:16 lists total_income and maintenance_income. Neither total_income nor its social_security_income part includes SSP, SMP or SPP. The reviewer's case (derived from the formulas, not run): a Welsh lone parent aged 30 with £99,000 of wages, £2,000 of SSP and a three-year-old passes the work test and is assessed on £99,000, so gets £7,003.50 in 2026 instead of £0. The guidance counts "all income" before deductions (income guidance, questions 8–9). Please count each statutory payment once, with regressions at the boundary (exactly £100,000), above the cap, and one showing the result doesn't depend on whether the pay is recorded as statutory pay or as wages.

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.

MaxGhenis and others added 2 commits October 23, 2026 14:02
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>
@MaxGhenis

Copy link
Copy Markdown
Collaborator

UK hub (Claude session, for Max): pushed the P1 fix at 9b4e0b371, on top of a clean merge of main (e65674423, which brings #2368's statutory paternity pay into employment_benefits).

  • gross_income_sources.yaml now adds employment_benefits (SSP, SMP and SPP). total_income counts only wages, so statutory pay is now counted exactly once.
  • Three regressions: £99,000 wages + £2,000 SSP gives £0; £95,000 wages + £5,000 SMP (exactly £100,000) gives £7,003.50; £100,000 wages + £1 SPP gives £0, the same as £100,001 of wages.

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>
@MaxGhenis

Copy link
Copy Markdown
Collaborator

UK hub (Claude session, for Max): pushed 9723e9c2a after round 3 of review (GPT-6.1 Sol), which found two more gaps in the £100,000 gross income list.

  • Salary and bonus sacrifice (P1, fixed). Guidance para 69 counts gross income "before any deductions", salary sacrifice schemes included, but employment_income is cash pay. The list now adds pension_contributions_via_salary_sacrifice_from_pay, which sums the salary and bonus routes for people with pay.
  • The list no longer reads total_income. That's an income tax aggregate, and it's being redefined (Max asked to split it into program-specific concepts). The list now names its own sources: cash pay, statutory pay, sacrifice, self-employment, pensions, taxable benefits, property, savings, dividends, other investment and miscellaneous income, and child and spousal maintenance. Each counts once.
  • Untaxed benefits (P1 in the review; reading taken, not changed). The hub reads the test as covering income from work and investments, which leaves out PIP, Child Benefit, UC and tax credits. Q8 frames it that way and aligns the limit with Tax-Free Childcare's taxable-income test. Q9's unearned examples are investments, maintenance and Guardian's Allowance, which the model doesn't have. The alternative reading and the reasoning are logged, and a regression pins it (PIP doesn't count).

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>
@MaxGhenis

Copy link
Copy Markdown
Collaborator

UK hub (Claude session, for Max): pushed 40b20f001 after round 4 of review (GPT-6.1 Sol).

  • Sacrifice regressions fixed (my error). The add-back counts only people with pay (employment_income_before_lsr), and the YAML runner doesn't fill that from employment_income, so CI rightly failed the two over-limit cases. All three cases now set both inputs, and assert the £2,000 add-back.
  • Untaxed benefits now count. Round 4 pointed out that question 9 names Guardian's Allowance, which is untaxed, so the hub's earlier taxable-only reading doesn't hold. The list adds PIP, DLA, Attendance Allowance, IIDB, SDA, Maternity Allowance, AFCS, War Widow's Pension and AFIP. Means-tested benefits stay out: they're nil near £100,000, and counting them would make the test depend on childcare support. Child Benefit is paid to the benefit unit, and the HICBC claws it back at this income. The PIP regression now expects £0 (£99,000 wages + £2,000 PIP = £101,000).

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>
@MaxGhenis

Copy link
Copy Markdown
Collaborator

UK hub (Claude session, for Max): pushed da3f8025a after round 5 of review (GPT-6.1 Sol), which showed the last two exclusions rest on false premises:

  • Child Benefit escapes the HICBC when relieved pension contributions bring adjusted net income down (£99,000 wages, £40,000 relieved contributions, so no charge).
  • Universal Credit can be paid near £100,000 when most income is child maintenance, which UC ignores.

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 (benunit_gross_income_sources.yaml). They're paid to the benefit unit and the limit is per parent, so each is shared equally between the claimant and any partner, with a lone parent counting all of it. That's a modelling convention, since the model doesn't know which parent is paid. None of them reads the Childcare Offer, and UC's childcare element reads the childcare_expenses input, so there's no cycle.

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>
@vahid-ahmadi

vahid-ahmadi commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator Author

@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 child_benefit: 0 in those five cases so they still test the boundary on the named income; no model change. All 43 Welsh Government YAML cases pass locally (5 fail without it).

@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 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@MaxGhenis

Copy link
Copy Markdown
Collaborator

UK hub (Claude session, for Max): thanks @vahid-ahmadi, your 8e43be08a was the right fix for the five boundary cases; I'd made the same change and dropped mine in favour of yours. On top of it, 7611591f6 closes round 6's other finding, which was cash income the model represents but the list still missed:

  • Added: Bereavement Support Payment, the Winter Fuel Payment, private transfers (which datasets use for absent-partner maintenance), and student and further-education support paid as income: Adult EMA, Access Fund, education grants, Parents' Learning Allowance, Adult Dependants' Grant and the 16 to 19 Bursary.
  • Left out: 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 and bill credits. This is stated in gross_income_sources.yaml.
  • No cycle: the student grants read the income-tax chain (net_income) and sponsor inputs, and the Winter Fuel Payment reads tax income and benefit receipt. None reaches the Offer.

Gaps with no model variable (Guardian's Allowance, adoption and shared parental pay) remain. The hub gets a delta review next.

@juaristi22 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@MaxGhenis

Copy link
Copy Markdown
Collaborator

Pushed f2ea30f on top of 7611591f6 (fast-forward; Vahid's commits untouched). It answers the hub's round 7 review.

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 child_benefit: 0, as the five boundary cases already did. Each now fails if its source leaves the list; the UC case, for example, is 99,000 without UC.

P2: no regression for the nine sources added in 7611591. The new policyengine_uk/tests/test_wales_childcare_offer_income_sources.py reads both parameter lists and runs one case per source, 40 in all. A lone parent with £99,000 of wages and Child Benefit at zero qualifies (£7,003.50). £1,001 more of the source, held by the parent or the benefit unit, gives £0. Any source dropped from either list fails its case.

P3s:

  • The 16 to 19 Bursary leaves the list. The model pays it as participation costs, which the scope rule excludes. PLA and ADG stay listed, and the comment says they are England-only in the model.
  • Data limits. The comments record that the FRS education_grants residual can still hold Childcare Grant and DSA for a Welsh student, and that allpay2 reaches two counted variables (policyengine-uk-data#627). Both are immaterial near £100,000.
  • The equal split's stated reason was wrong. Its comment now says that UC is joint, that the model has no payee rule for Child Benefit, tax credits or HB, and that the legacy four are shared the same way for consistency.
  • Unsettled flows.
    • sublet_income now counts, as Q9's rental income.
    • Excluded: one-off grants and lump sums paid to a person (ssmg, lump_sum_income) and loans (student_loans).
    • The hub's readings and the alternative for lump sums are logged in its RULINGS record.
  • PR body. It now has a Gross income section, the current test inventory (43 YAML cases plus the per-source test) and an updated open question 8.

Static checks: ruff clean, git diff --check clean, merge-tree clean against main. I ran nothing locally (UK Budget certification reservation); CI is running. A delta review follows. @juaristi22, your approval was at 7611591f6; this changes the source lists (one removed, one added) and the tests.

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>
@MaxGhenis

Copy link
Copy Markdown
Collaborator

UK hub: round 8 answered in 1aa0d63.

The round 8 review found two P2s, both fixed:

  1. The hourly rate's uprating index. Since d8aae1b, gov.benefit_uprating_cpi rises by September CPI. That suits s150 benefits, but the Welsh Government sets this rate in its own annual review. hourly_rate.yaml now uses gov.economic_assumptions.indices.obr.lagged_cpi, the projection gov.dfe.childcare_funding_rate uses, and the economic assumptions README lists it with the DfE rates. Rates up to April 2026 are unchanged. From 2027-28, projected spending falls by about 1.2% on the reviewer's hand estimate; the aggregate impact run at this head gives the figure.
  2. The per-source test does not catch a dropped source. My earlier comment (6377033909) and the PR body said it did, but the cases come from the lists, so a dropped source just lost its case. Two tests now back the claim:
    • test_each_list_holds_the_reviewed_sources_once pins each list to the reviewed set and checks it for duplicates, so a removal (or an addition) fails until the test changes too;
    • test_no_listed_source_adds_another walks adds and subtracts at any depth. A formula that reads another listed source is not covered, and the docstring says so.

The P3 comment fixes are also in this commit:

  • guardianship allowance is read as Guardian's Allowance, and the reading doesn't depend on that;
  • the survey data puts subletting in property_income, so rent entered in both inputs counts twice;
  • PLA and ADG are zero in Wales unless entered;
  • the lump-sum exclusion now gives Q10's reason, and notes that Q9's "all payments" points the other way;
  • 18- and 19-year-olds default to tertiary education, not post-secondary.

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>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 24, 2026 02:26
@MaxGhenis
MaxGhenis added this pull request to the merge queue Oct 24, 2026
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator Author

@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

@MaxGhenis

MaxGhenis commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

@juaristi22, the two hub commits since your approval at 7611591f6, to make the check quick (@vahid-ahmadi asked above):

  • f2ea30f33: each gross income regression test is now its own source. The tests change, and so does the source list.
    • Child Benefit counts towards the £100,000 limit, so the 3-year-old's automatic Child Benefit was pushing eight "X counts towards the limit" cases over the limit whatever X was. Those cases now set Child Benefit to zero, as the boundary cases already did.
    • A new parametrised test checks every listed source: £99,000 of wages qualifies, and £1,001 more of the source doesn't.
    • List changes:
      • the 16 to 19 Bursary leaves the list, because the model pays it as participation costs, which the scope rule excludes;
      • subletting income joins the list as rental income.
    • The two list changes can move who qualifies at the margin: a family with a bursary, or with subletting income, recorded apart from property income.
    • The remaining changes are comments.
  • 1aa0d63d1: the provider rate is uprated by lagged calendar-year CPI. The Welsh Government sets the rate in its own annual review, outside the s150 benefit review, so it follows the DfE funding rates rather than gov.benefit_uprating_cpi (September CPI). This moves spending from 2027-28 on, through the rate; 2026-27's £6.67 is stated, not uprated.
    • The source lists are pinned to the reviewed set. The test checks them for duplicates, and checks that no listed source adds another at any depth.
    • The other changes are comment fixes: Guardian's Allowance wording, subletting's survey home, and PLA and ADG being zero in Wales unless entered.

The hub's ninth review round approved head 96f78cbc5, and CI passes there. The PR is about 29th in the merge queue (about one merge an hour), so there's time. If anything in these two commits looks wrong to you, say so here and I'll take it out of the queue.

🤖 Generated with Claude Code

@juaristi22 juaristi22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@vahid-ahmadi
vahid-ahmadi removed this pull request from the merge queue due to a manual request Oct 24, 2026
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator Author

@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

@vahid-ahmadi
vahid-ahmadi added this pull request to the merge queue Oct 24, 2026
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator Author

@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 via the queue into main with commit f8782fe Oct 24, 2026
18 checks passed
@vahid-ahmadi
vahid-ahmadi deleted the wales-childcare-offer-1644 branch October 24, 2026 19:55
@MaxGhenis

Copy link
Copy Markdown
Collaborator

Merged by the UK hub (Claude session 8e19f9d5) at head 96f78cb, through the merge queue with the head pinned.

  • What it does: it adds the Childcare Offer for Wales: 30 hours a week for a 3- or 4-year-old in Wales, less the local authority's nursery education hours in term time, valued at the Welsh Government's hourly rate to providers (£6.67 from 6 April 2026, then the lagged calendar-year CPI projection). Each parent must work at least 16 hours a week at their minimum wage or be in further or higher education, with gross income of no more than £100,000, counted from 40 listed sources.
  • Reviews: nine rounds. Rounds 1 to 6 ran on GPT-6.1 Sol and rounds 7 to 9 on in-session Opus 5.5, because the Codex lanes were closed. The hub fixed each round's findings on Vahid's branch.
    • The gross-income test moved from taxable benefits to all income, as the income guidance's Q8 and Q9 read, with benefit-unit awards shared equally between the claimant and partner. The readings, and the alternatives not taken, are logged in the hub's rulings.
    • A per-source test runs one case for each of the 40 sources, pins both lists to the reviewed set, and checks that no listed source adds another at any depth.
    • Round 8 asked for the rate's uprating to follow the lagged calendar-year CPI projection rather than September CPI, since the Welsh Government reviews the rate itself, outside the s150 review. 1aa0d63 made the change, and 96f78cb merged main 29c5a0a98.
    • Round 9 approved this exact head. It found no P1 or P2. Its hand estimate of spending matched CI's to within £0.1m in every year.
    • @juaristi22's two change requests were followed by three approvals.
  • CI: every check passed at 96f78cb, including Test / Result, Lint and Aggregate impact.
  • Impact (CI's Aggregate impact run 40049043722, this head merged into main):
    • spending on the Offer is £264.7m and 39,000 benefit units in 2025-26 and £276.9m in 2026-27, rising to £313.1m and 40,000 benefit units in 2031-32;
    • gov_spending and household net income rise by the same amounts;
    • the report finds no change in tax receipts or poverty rates;
    • the PR body compares this with the Welsh Government's year 5 evaluation: full take-up and full use probably put the model at about twice the actual cost.
  • Follow-ups (in the hub's follow-up PR):
    • a pairwise-disjoint check on the sources' adds closures (none overlap today);
    • the Q8 note in the gross-income list's lump-sum comment;
    • rewrap parameters/gov/economic_assumptions/README.md:218, and one reflowed YAML comment line;
    • calibrating take-up to the Welsh caseload (open question 4).
  • Why now: current law for the Budget baseline, and Max asked on 22 Oct to clear the UK PR backlog before the Budget.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants