Skip to content

Stop trusting the compromised eMudhra CA certificates - #632

Draft
anth-volk wants to merge 2 commits into
mainfrom
emudhra-ca-trust-update
Draft

anth-volk wants to merge 2 commits into
mainfrom
emudhra-ca-trust-update

Conversation

@anth-volk

@anth-volk anth-volk commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #634

Why

On 2026-10-20 it was disclosed that eight intermediate certificate authority certificates operated by eMudhra (emSign) have private keys that anyone can recover from the public certificates (incident site). Anyone can therefore issue a certificate for any domain that is accepted by clients trusting the root "emSign ECC Root CA - G3", which allows interception of HTTPS traffic on the network path. Browsers and current operating systems already block these certificates; software that ships its own CA list does not until it is updated.

What in this repository trusted the affected roots

uv.lock pinned two packages that carry their own CA list. CI installs exactly these versions (uv sync --frozen --all-extras in the Pull request and Push workflows) and then downloads inputs from Hugging Face, uploads releases to Hugging Face and Google Cloud Storage, and runs the tests with HUGGING_FACE_TOKEN and Google Cloud credentials loaded:

  • certifi 2025.11.12, the CA list used by requests, httpx (through huggingface_hub) and the Google Cloud client libraries. It includes "emSign ECC Root CA - G3". With certifi 2025.11.12, requests returned HTTP 200 from the test endpoint https://dv-g3b-emudhra.we-have-a-problem.com/.
  • hf-xet 1.2.0, the Rust extension huggingface_hub uses for Xet-backed file transfers. It compiles in its own CA list; the string emSign ECC Root CA - G3 is present in the Linux x86_64 wheel's hf_xet.abi3.so. It ignores certifi and the operating-system store.

No other locked package carries a CA list (no grpcio, httplib2 or similar), and the code sets no custom CA bundle and does not turn off certificate verification. No Vercel project or container image deploys from this repository.

Changes

  • uv.lock: certifi 2025.11.12 → 2026.10.19, which removes "emSign ECC Root CA - G3".
  • uv.lock: hf-xet 1.2.0 → 1.7.0, which verifies certificates against the operating-system CA store (through rustls-platform-verifier) and no longer contains the emSign root.
  • uv.lock: the project's own version entry moves from 1.58.2 to 1.59.1 to match pyproject.toml; this is what uv lock writes for the current pyproject.toml and changes no installed package.
  • changelog.d/emudhra-ca-trust-update.fixed.md: the changelog fragment required for a change to uv.lock.

Generated with uvx uv@0.13.4 lock --upgrade-package certifi --upgrade-package hf-xet. No other package changed.

Checks

  • uvx uv@0.13.4 lock --locked: passes on this branch (it failed on main only because of the stale project version entry).
  • python .github/check_changelog_fragment.py HEAD^1 HEAD: passed.
  • requests 2.32.5 against https://dv-g3b-emudhra.we-have-a-problem.com/: HTTP 200 with certifi 2025.11.12, certificate verification error with certifi 2026.10.19. https://pypi.org/ and https://huggingface.co/ returned HTTP 200 with both. The Sectigo cross-signed test endpoint (https://dv-g3b-aaa-emudhra.we-have-a-problem.com/) was rejected by both certifi versions.
  • hf-xet Linux x86_64 wheels: 1.2.0 contains emSign ECC Root CA - G3; 1.7.0 does not and links rustls-platform-verifier.
  • huggingface_hub 1.1.5 (the locked version) with hf-xet 1.7.0 downloaded a Xet-backed public file (hf-internal-testing/tiny-random-bert, pytorch_model.bin, 540,217 bytes) correctly.

The full dataset build and test suite are left to CI.

After merge

Merging adds a fixed fragment, so, as for any fragment, the Versioning workflow bumps the patch version and the Push workflow rebuilds, tests and uploads a data release using the updated lockfile. No manual step is needed. The PyPI package's dependency ranges are unchanged; users resolve their own certifi and hf-xet versions.

Apart from the comment step below, this PR changes no workflow, container definition or other deployment configuration. That step still reads only GH_TOKEN (the job's GITHUB_TOKEN, with issues: write and pull-requests: write) and PR (the pull request number from the event); it adds no environment variables.

CI fix: the fit comparison's comment step

The first run's comparison passed, but its "Post or update the pull request comment" step failed with unexpected end of JSON input: GitHub's API answered the comment POST with an error status and an empty body, which the GitHub CLI reports only as that JSON parse error. The step passed in other pull requests' runs before and after, and this run's comment (56,987 characters) was under GitHub's 65,536-character limit, so the failure came from the API, not from this PR's changes.

  • .github/workflows/pull_request.yaml: the step makes up to three attempts, 20 and 40 seconds apart. Each attempt searches for the existing comment again, so a retry after a write that GitHub applied but reported as failed updates that comment instead of posting a second one. set -o pipefail makes a failed search fail the attempt instead of posting a new comment.
  • policyengine_uk_data/tests/test_workflow_artifacts.py: the search command's reviewed text changes by its new indentation and || return 1. The PATCH and POST commands are unchanged.

The step's script, taken from the workflow file, was run with gh 2.102.0 (the runner's version) against a local server that imitates the comment endpoints. The old script reproduces the CI error. The new one recovers from a failed POST, a failed search and a POST that was applied but reported as failed (it then updates the comment rather than posting another), and exits 1 after three failures. The workflow tests pass and actionlint reports nothing.

CI: the base build's failed download (run 39825717667)

After 39b2448, "Build the base for comparison" failed in its "Download data inputs" step, and "Calibration fit against the base" failed because the base build had produced no fit summary, distribution report or dataset (the FileNotFoundError for base/policyengine_uk_data/storage/enhanced_frs_2024_25.h5).

  • Cause: the remote end reset the connection to the Hugging Face Hub during the TLS handshake of huggingface_hub's file-metadata request (httpx.ConnectError: [Errno 104] Connection reset by peer, then LocalEntryNotFoundError). huggingface_hub 1.1.5, which this PR does not change, does not retry that request after a network error. It was not a certificate rejection, which would read CERTIFICATE_VERIFY_FAILED, and no hf-xet transfer had started.
  • This PR did not cause it. The job had the same inputs (base e1acdf9, this branch's uv.lock, the same job definition) in the first run on 4f8d527, where it passed; 39b2448 changed only the comment step and its test. In the same run, the Test job downloaded the same files with the same lockfile.
  • Fix: no repository change. On 2026-10-30 the two failed jobs were re-run unchanged and the base build, download included, passed. The calibration fit and distribution comparisons passed. The aggregate comparison then failed only because the re-run base build got CPython 3.13.17 from a newer runner image, while the head build from 2026-10-22 had 3.13.16, and that comparison requires the same Python version on both sides. A full re-run of the workflow, which builds both sides on the same image, is needed for these two checks.

🤖 Generated with Claude Code

Upgrade certifi from 2025.11.12 to 2026.10.19 and hf-xet from 1.2.0 to
1.7.0 in uv.lock. certifi 2026.10.19 removes "emSign ECC Root CA - G3";
hf-xet 1.2.0 compiles in a CA list that includes it, while 1.7.0 reads the
operating-system CA store. The lockfile's own package version also moves
from 1.58.2 to 1.59.1 to match pyproject.toml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GitHub's API answered the comment POST in run 39685708223 with an error
status and an empty body, which the GitHub CLI reports only as
"unexpected end of JSON input", so the job failed although the comparison
passed. The step now makes up to three attempts, 20 and 40 seconds apart.
Each attempt searches for the existing comment again, so a retry after a
write that GitHub applied but reported as failed updates that comment
instead of posting a second one. pipefail makes a failed search fail the
attempt; before, a failed search left the comment ID empty and the step
posted a new comment.

The PATCH and POST commands are unchanged. The search command's reviewed
text in test_workflow_artifacts.py changes only by the indentation inside
the new function and the added "|| return 1".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Calibration fit against the base build: pass

Targets within 10% (those both builds have) Base Head Change
National (647) 64.5% 65.1% +0.6pp
Local (11,228) 75.1% 75.1% +0.0pp

A drop of more than 2.0% fails.

Notes

  • 14 national targets are in a better band on the head.

National targets in a worse error band on the head (9)

Target Base Head
dwp/uc/claimants_with_5+_children within 10% 25-50%
dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_4_800_to_6_000 within 10% 10-25%
dwp/uc_payment_dist/LONE_PARENT_annual_payment_20_400_to_21_600 within 10% 10-25%
dwp/uc_payment_dist/SINGLE_annual_payment_2_400_to_3_600 10-25% 25-50%
hmrc/dividend_income_count_income_band_50_000_to_70_000 10-25% 25-50%
hmrc/property_income_count_income_band_500_000_to_1_000_000 within 10% 10-25%
hmrc/property_income_income_band_15_000_to_20_000 within 10% 10-25%
ons/north_east_age_10_19 within 10% 10-25%
voa/council_tax/SCOTLAND/H within 10% 10-25%

Flags are for review: builds of the same code move 2 to 12 national targets to a worse band (#598). Bands are of |estimate / target - 1|; no target's estimate or error is published.

Workflow run

Income distribution and single ages against the base build: pass

HBAI FYE 2025 (DWP), period 2024: equivalised income in £ a week, rates and Gini in per cent. A value outside HBAI's 95% interval is marked (outside).

Measure Base Head HBAI 95% interval
median_bhc 678.48 (outside) 678.78 (outside) 719.48 703.57 to 735.58
median_ahc 584.44 (outside) 584.61 (outside) 623.14 605.21 to 637.07
mean_bhc 800.14 (outside) 802.26 (outside) 854.98 836.37 to 870.35
mean_ahc 691.54 (outside) 693.51 (outside) 749.82 732.33 to 764.50
gini_bhc 33.13 33.21 32.74 31.89 to 33.98
gini_ahc 38.43 (outside) 38.47 (outside) 36.78 35.90 to 38.29
relative_low_income_bhc_all 18.20 (outside) 17.95 (outside) 15.91 14.45 to 17.64
relative_low_income_bhc_children 23.88 23.21 20.52 17.36 to 23.96
relative_low_income_bhc_working_age 17.47 (outside) 17.23 (outside) 14.28 12.91 to 16.02
relative_low_income_bhc_pensioners 13.78 14.01 15.90 13.69 to 17.99
relative_low_income_ahc_all 23.46 (outside) 23.15 (outside) 19.64 17.99 to 21.27
relative_low_income_ahc_children 33.52 (outside) 32.60 (outside) 27.41 23.49 to 30.64
relative_low_income_ahc_working_age 23.16 (outside) 22.88 (outside) 18.58 17.01 to 20.34
relative_low_income_ahc_pensioners 12.07 12.38 13.87 11.62 to 15.90
Single ages against the ONS projection Base Head
Mean error, ages 0 to 79 11.0% 11.0%
Largest error, ages 0 to 79 43.9% 44.0%
Largest error, ages 15 to 19 36.8% 37.7%

Flags

None.

These measures report and flag but do not fail yet: their same-code spread is unmeasured (#598).

Aggregate impact of the data change: pass

Base dataset enhanced_frs_2024_25.h5 (the base's build, sha256 c6ae0cbed13a) against head dataset enhanced_frs_2024_25.h5 (this pull request's build, sha256 ce855a409f8e), both measured with policyengine-uk 2.122.2, fiscal years 2025-26 to 2031-32. Each year is a full microsimulation run on each side.

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

Workflow run and full report

Notes

  • In the years a figure from fewer than 10 records is suppressed (spending.dfe_education_spending, spending.disabled_students_allowance, spending.sda), 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.

Moves flagged for review

Measure Year Base Head Change
Extended childcare entitlement 2030-31 837k 805k -32.3k
Disability Living Allowance 2031-32 1,403k 1,364k -38.7k
Disability Living Allowance 2029-30 1,390k 1,352k -38.3k
Disability Living Allowance 2030-31 1,397k 1,358k -38.5k
Disability Living Allowance 2028-29 1,384k 1,346k -38.2k
Disability Living Allowance 2025-26 1,369k 1,331k -37.7k
Disability Living Allowance 2027-28 1,379k 1,341k -38.0k
Disability Living Allowance 2026-27 1,374k 1,336k -37.9k
Personal Independence Payment 2031-32 £35.44bn £35.87bn +£428.1m
Personal Independence Payment 2030-31 £34.60bn £35.02bn +£417.9m
Personal Independence Payment 2029-30 £33.77bn £34.18bn +£407.9m
Personal Independence Payment 2028-29 £32.96bn £33.36bn +£398.2m
Personal Independence Payment 2027-28 £32.19bn £32.58bn +£388.8m
Personal Independence Payment 2026-27 £31.35bn £31.73bn +£378.7m
Personal Independence Payment 2025-26 £30.08bn £30.44bn +£363.4m
Carer's Allowance 2031-32 924k 940k +16.1k
Carer's Allowance 2030-31 920k 936k +16.0k
Carer's Allowance 2029-30 916k 932k +16.0k
Carer's Allowance 2028-29 912k 928k +15.9k
Carer's Allowance 2027-28 909k 924k +15.8k
Carer's Allowance 2026-27 905k 921k +15.8k
Carer's Allowance 2025-26 902k 918k +15.7k
Income tax 2025-26 £297.35bn £298.28bn +£930.0m
Income tax 2026-27 £316.79bn £317.76bn +£966.9m
Income tax 2027-28 £332.72bn £333.71bn +£986.2m
Income tax 2028-29 £347.08bn £348.10bn +£1.02bn
Income tax 2029-30 £363.02bn £364.05bn +£1.03bn
Income tax 2030-31 £380.39bn £381.43bn +£1.04bn
Income tax 2031-32 £400.22bn £401.30bn +£1.08bn
Disability Living Allowance 2031-32 £9.81bn £9.56bn -£255.1m
Disability Living Allowance 2030-31 £9.58bn £9.33bn -£249.0m
Extended childcare entitlement 2031-32 835k 823k -12.3k
Extended childcare entitlement 2026-27 795k 783k -12.3k
Personal Independence Payment 2025-26 4,085k 4,135k +50.1k
Personal Independence Payment 2027-28 4,116k 4,166k +50.5k
Personal Independence Payment 2028-29 4,132k 4,183k +50.7k
Personal Independence Payment 2026-27 4,101k 4,151k +50.3k
Personal Independence Payment 2030-31 4,169k 4,220k +51.2k
Personal Independence Payment 2029-30 4,151k 4,201k +50.9k
Personal Independence Payment 2031-32 4,187k 4,239k +51.4k

91 more flags are in the report artifact.

Receipts by tax head

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Income tax +£930.0m +£966.9m +£986.2m +£1.02bn +£1.03bn +£1.04bn +£1.08bn
National Insurance (employee and self-employed) +£58.3m +£58.2m +£60.9m +£61.1m +£65.0m +£65.1m +£66.7m
National Insurance (employer) +£283.8m +£294.3m +£302.3m +£309.8m +£320.3m +£329.2m +£341.9m
Capital gains tax -£54.7m -£56.3m -£58.2m -£60.3m -£62.3m -£64.5m -£66.9m
Student loan repayments +£10.4m +£10.8m +£11.1m +£11.4m +£11.7m +£12.0m +£16.3m
VAT -£466.7m -£479.2m -£490.6m -£502.4m -£514.7m -£527.4m -£540.2m
Fuel duties -£55 +£569 +£368 -£741 -£572 -£573 +£983
TV licence fee -£5.6m -£6.8m -£6.1m -£6.0m -£6.2m -£6.3m -£6.0m
Council tax -£3.0m -£3.2m -£3.2m -£3.2m -£3.3m -£3.4m -£3.5m
High value council tax surcharge 0 0 0 -£3.3m -£3.4m -£3.5m -£3.6m
Northern Ireland domestic rates -£0.8m -£0.8m -£0.9m -£0.9m -£1.0m -£1.0m -£1.0m
Business rates -£3,619 +£716 +£4,183 -£773 +£4,054 -£1,255 -£820
Stamp duty land tax (own purchases, and corporate until the -£66.1m -£71.1m -£74.7m -£78.2m -£82.1m -£85.5m -£89.0m
Land transaction tax (Wales) -£0.4m -£0.4m -£0.4m -£0.5m -£0.5m -£0.6m -£0.6m
Land and buildings transaction tax (Scotland) +£0.5m +£0.5m +£0.5m +£0.5m +£0.5m +£0.6m +£0.6m

Spending by benefit and service

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension +£231.9m +£235.2m +£238.4m +£243.4m +£250.6m +£258.0m +£265.6m
Pension Credit -£8.6m -£7.7m -£11.4m -£10.1m -£11.7m -£13.0m -£19.8m
Winter Fuel Payment +£3.5m +£5.2m +£2.9m +£2.4m +£2.4m +£3.1m +£3.2m
Pension Age Winter Heating Payment (Scotland) -£0.7m -£0.6m -£0.8m -£0.8m -£0.8m -£0.8m -£0.8m
Universal Credit -£21.0m +£8.9m +£24.9m +£67.2m +£85.7m +£23.3m +£17.3m
Housing Benefit -£6.7m -£6.8m -£8.7m -£9.0m -£9.4m -£9.8m -£7.9m
Council Tax Reduction -£17.1m -£16.6m -£18.4m -£19.7m -£20.1m -£16.9m -£16.4m
Employment and Support Allowance (income-related) -£7.6m -£7.8m -£8.0m -£8.1m -£8.3m -£8.6m -£8.8m
Employment and Support Allowance (contribution-based) -£6.0m -£6.1m -£6.3m -£6.4m -£6.6m -£6.8m -£6.9m
Jobseeker's Allowance (income-based) +£2.1m 0 0 0 0 0 0
Jobseeker's Allowance (contribution-based) -£2.1m -£2.2m -£2.2m -£2.3m -£2.3m -£2.4m -£2.4m
Income Support +£7.4m 0 0 0 0 0 0
Personal Independence Payment +£363.4m +£378.7m +£388.8m +£398.2m +£407.9m +£417.9m +£428.1m
Disability Living Allowance -£216.5m -£225.6m -£231.7m -£237.3m -£243.1m -£249.0m -£255.1m
Attendance Allowance +£67.8m +£70.7m +£72.6m +£74.3m +£76.1m +£78.0m +£79.9m
Carer's Allowance +£68.1m +£70.9m +£72.8m +£74.6m +£76.4m +£78.3m +£80.2m
Carer Support Payment (Scotland) -£8.4m -£8.7m -£8.9m -£9.2m -£9.4m -£9.6m -£9.8m
Carer's Allowance Supplement (Scotland) 0 -£1.2m -£1.2m -£1.2m -£1.2m -£1.2m -£1.2m
Severe Disablement Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Industrial Injuries Disablement Benefit -£2.8m -£2.8m -£2.9m -£3.0m -£3.0m -£3.1m -£3.2m
Armed Forces Compensation Scheme +£46.3m +£47.5m +£48.6m +£49.8m +£51.0m +£52.3m +£53.6m
Child Benefit -£30.4m -£30.8m -£33.1m -£33.8m -£34.7m -£35.2m -£34.4m
Scottish Child Payment +£8.7m +£8.9m +£9.1m +£9.4m +£9.4m +£9.7m +£10.4m
Healthy Start vouchers -£1.2m -£1.2m -£1.2m -£1.2m -£1.2m -£1.2m -£1.2m
Statutory Maternity Pay +£5.6m +£5.8m +£5.9m +£6.1m +£6.2m +£6.4m +£6.5m
Statutory Sick Pay -£24.6m -£25.3m -£25.9m -£26.5m -£27.2m -£27.8m -£28.5m
Sure Start Maternity Grant -£14,728 -£14,784 -£14,839 -£14,898 -£14,963 -£15,031 -£15,095
Bereavement Support Payment -£26.9m -£27.6m -£28.2m -£28.9m -£29.6m -£30.4m -£31.1m
Tax-Free Childcare +£1.8m -£3.8m -£3.6m -£3.7m -£3.9m -£10.9m -£11.0m
Extended childcare entitlement -£47.0m -£58.3m -£50.4m -£57.5m -£58.4m -£112.4m -£67.1m
Universal childcare entitlement -£14.7m -£10.6m -£10.9m -£9.9m -£10.2m -£10.5m -£10.8m
Targeted childcare entitlement -£6.9m -£7.1m -£7.3m -£7.5m -£7.7m -£7.3m +£4.5m
Parents' Learning Allowance +£0.4m +£0.4m +£0.4m +£0.4m +£0.4m +£0.4m +£0.4m
Adult Dependants' Grant +£52,134 +£52,334 -£0.4m -£0.4m -£0.4m -£0.4m -£0.4m
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
NHS spending -£60.9m -£61.1m -£61.3m -£61.6m -£61.9m -£62.1m -£62.4m
State education spending suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Transport subsidy spending -£12 +£15 +£23 +£9 -£57 -£8 +£7

Caseloads

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension +4.1k +3.4k +3.8k +4.2k +4.2k +4.3k +4.3k
Pension Credit +1.4k +8.2k +2.1k +1.4k +2.1k +2.9k +1.8k
Winter Fuel Payment +16.2k +22.8k +14.0k +10.6k +10.4k +14.4k +15.8k
Pension Age Winter Heating Payment (Scotland) -2.6k -2.4k -3.0k -3.1k -3.1k -3.1k -3.2k
Universal Credit -12.0k -10.4k -8.2k -10.2k -10.2k -7.3k -10.0k
Housing Benefit -1.6k -1.6k -1.7k -1.7k -1.7k -1.7k -1.4k
Council Tax Reduction -3.2k -1.3k -5.6k -8.1k -4.1k -2.0k +5.7k
Employment and Support Allowance (income-related) +467 +469 +470 +476 +478 +480 +482
Employment and Support Allowance (contribution-based) -994 -998 -1.0k -1.0k -1.0k -1.0k -1.0k
Jobseeker's Allowance (income-based) +484 0 0 0 0 0 0
Jobseeker's Allowance (contribution-based) -391 -393 -394 -396 -398 -399 -401
Income Support +368 0 0 0 0 0 0
Personal Independence Payment +50.1k +50.3k +50.5k +50.7k +50.9k +51.2k +51.4k
Disability Living Allowance -37.7k -37.9k -38.0k -38.2k -38.3k -38.5k -38.7k
Attendance Allowance +10.9k +10.9k +11.0k +11.0k +11.1k +11.1k +11.2k
Carer's Allowance +15.7k +15.8k +15.8k +15.9k +16.0k +16.0k +16.1k
Carer Support Payment (Scotland) -1.9k -1.9k -1.9k -2.0k -2.0k -2.0k -2.0k
Carer's Allowance Supplement (Scotland) 0 -1.9k -1.9k -2.0k -2.0k -2.0k -2.0k
Severe Disablement Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Industrial Injuries Disablement Benefit +615 +618 +620 +623 +625 +628 +631
Armed Forces Compensation Scheme +5.4k +5.4k +5.4k +5.4k +5.5k +5.5k +5.5k
Child Benefit -24.3k -24.1k -24.6k -24.7k -24.8k -24.8k -24.0k
Scottish Child Payment +6.2k +6.1k +6.1k +6.1k +6.0k +6.1k +6.4k
Healthy Start vouchers -6.0k -6.0k -6.1k -6.1k -6.1k -6.1k -6.2k
Statutory Maternity Pay -1.3k -1.3k -1.3k -1.3k -1.3k -1.3k -1.3k
Statutory Sick Pay -4.8k -4.8k -4.8k -4.9k -4.9k -4.9k -4.9k
Sure Start Maternity Grant -29 -30 -30 -30 -30 -30 -30
Bereavement Support Payment -3.1k -3.1k -3.2k -3.2k -3.2k -3.2k -3.2k
Tax-Free Childcare +1.6k -3.3k -4.3k -4.5k -5.1k -10.9k -10.2k
Extended childcare entitlement -11.0k -12.3k -10.5k -11.5k -11.5k -32.3k -12.3k
Universal childcare entitlement -4.3k -3.0k -3.0k -2.7k -2.7k -2.7k -2.8k
Targeted childcare entitlement -1.4k -1.4k -1.4k -1.4k -1.4k -1.3k +808
Parents' Learning Allowance +183 +184 +185 +185 +186 +187 +188
Adult Dependants' Grant +15 +15 -105 -106 -106 -106 -119
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 receipts, each component once +£685.7m +£712.9m +£726.9m +£747.0m +£754.1m +£759.5m +£792.3m
Government spending +£297.2m † +£320.1m † +£341.8m † +£387.8m † +£415.3m † +£307.9m † +£370.5m †
Government balance, each receipt once +£388.6m † +£392.8m † +£385.2m † +£359.2m † +£338.8m † +£451.6m † +£421.8m †

Model totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax +£685.7m +£712.9m +£726.9m +£747.0m +£754.1m +£759.5m +£792.3m
household_tax +£868.6m +£897.8m +£915.2m +£939.6m +£948.5m +£957.6m +£990.7m
pre_budget_change_household_tax +£858.2m +£887.0m +£904.1m +£931.5m +£940.2m +£949.1m +£977.9m
gov_spending +£297.2m † +£320.1m † +£341.8m † +£387.8m † +£415.3m † +£307.9m † +£370.5m †
household_benefits +£297.2m † +£320.1m † +£341.8m † +£387.8m † +£415.3m † +£307.9m † +£370.5m †
gov_balance +£388.6m † +£392.8m † +£385.2m † +£359.2m † +£338.8m † +£451.6m † +£421.8m †

Components the model counts twice

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
corporate_sdlt, counted again inside expected_sdlt -£337 +£75 +£406 -£82 +£416 -£137 -£97

Household income totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income +£1.95bn +£2.03bn +£2.08bn +£2.14bn +£2.21bn +£2.27bn +£2.36bn
Household net income +£2.19bn † +£2.29bn † +£2.38bn † +£2.47bn † +£2.57bn † +£2.54bn † +£2.69bn †
Household net income (HBAI definition) suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Population

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People -39.6k -39.8k -39.9k -40.1k -40.3k -40.5k -40.6k
Benefit units -45.0k -45.2k -45.4k -45.5k -45.7k -45.9k -46.1k
Households -23.0k -23.1k -23.1k -23.2k -23.3k -23.4k -23.5k

Poverty rates

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed

People in poverty

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Inequality

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs suppressed suppressed suppressed suppressed suppressed suppressed suppressed

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 suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 2: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 3: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 4: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 5: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 6: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 7: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 8: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 9: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 10: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed

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 +£10.6m +£10.1m +£10.0m +£10.1m +£9.7m +£9.6m +£10.9m
Raise higher rate by 1pp +£23.6m +£25.4m +£26.8m +£27.9m +£29.3m +£30.6m +£32.0m
Raise personal allowance by ~800GBP/year -£7.0m -£37,854 +£0.9m -£1.4m +£2.1m +£1.2m +£0.4m
Raise child benefit by 25GBP/week per additional child -£19.0m -£16.4m -£16.5m -£18.3m -£17.5m -£17.2m -£16.7m
Reduce Universal Credit taper rate to 20% -£14.6m -£11.7m -£17.8m -£14.9m -£33.1m -£36.2m -£55.9m
Raise Class 1 main employee NICs rate to 10% +£7.9m +£8.5m +£9.1m +£6.3m +£6.5m +£5.8m +£8.1m
Raise VAT standard rate by 2pp -£46.3m -£47.5m -£48.6m -£49.8m -£51.0m -£52.3m -£53.6m
Raise additional rate by 3pp +£22.0m +£22.3m +£22.6m +£23.6m +£22.5m +£21.8m +£22.4m
Raise the Universal Credit standard allowance by 10% -£4.4m -£4.2m -£7.6m -£12.0m -£14.5m -£15.0m -£15.8m
Raise the State Pension by 10% -£29.6m -£23.9m -£30.8m -£34.5m -£35.2m -£36.2m -£39.5m

Standard reforms: change in each reform's target

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax +£9.0m +£9.1m +£8.7m +£8.3m +£8.5m +£8.6m +£8.7m
Raise higher rate by 1pp: change in income_tax +£23.7m +£25.6m +£27.1m +£28.0m +£29.4m +£30.7m +£31.8m
Raise personal allowance by ~800GBP/year: change in income_tax -£6.6m -£54,693 +£1.0m -£1.4m +£1.9m +£0.7m +£0.3m
Raise child benefit by 25GBP/week per additional child: change in child_benefit +£1.1m +£1.2m +£0.8m +£0.8m +£0.8m +£0.7m +£0.8m
Reduce Universal Credit taper rate to 20%: change in universal_credit +£14.7m +£11.7m +£17.8m +£15.0m +£33.2m +£36.4m +£56.0m
Raise Class 1 main employee NICs rate to 10%: change in national_insurance +£6.1m +£5.7m +£6.0m +£5.9m +£6.8m +£6.4m +£6.4m
Raise VAT standard rate by 2pp: change in vat -£46.3m -£47.5m -£48.6m -£49.8m -£51.0m -£52.3m -£53.6m
Raise additional rate by 3pp: change in income_tax +£22.0m +£22.3m +£22.6m +£23.6m +£22.5m +£21.8m +£22.4m
Raise the Universal Credit standard allowance by 10%: change in universal_credit +£4.7m +£4.5m +£8.0m +£12.4m +£15.0m +£15.6m +£16.3m
Raise the State Pension by 10%: change in state_pension +£23.2m +£23.5m +£23.8m +£24.3m +£25.1m +£25.8m +£26.6m

Household net income by decile

The datasets hold different households, so households are not matched; compare the mean income in each side's own deciles.

Checks failing on both base and head (4)
  • Each model total's components are exactly the partition's heads and declared double counts (closure): gov_spending: the partition puts 'healthy_start_vouchers' in this total, but the model does not add it; gov_spending: the partition puts 'scottish_child_payment' in this total, but the model does not add it; gov_spending: the partition puts 'statutory_paternity_pay' in this total, but the model does not add it
  • VAT is never negative (sign:vat): 2025-26: 67 units below zero, a weighted £-80,922,607 in total; 2026-27: 67 units below zero, a weighted £-83,098,412 in total; 2027-28: 67 units below zero, a weighted £-85,073,992 in total
  • The partition's heads and declared double counts add up to gov_spending (identity:gov_spending): 2025-26: 358 households differ, by a weighted £539,700,874 in total (households holding a figure from fewer than 10 records aren't checked this year); 2026-27: 360 households differ, by a weighted £560,865,331 in total (households holding a figure from fewer than 10 records aren't checked this year); 2027-28: 360 households differ, by a weighted £574,533,319 in total (households holding a figure from fewer than 10 records aren't checked this year)
  • The partition's heads and declared double counts add up to household_benefits (identity:household_benefits): 2025-26: 1,819 households differ, by a weighted £92,052,815 in total (households holding a figure from fewer than 10 records aren't checked this year); 2026-27: 1,791 households differ, by a weighted £93,975,139 in total (households holding a figure from fewer than 10 records aren't checked this year); 2027-28: 1,739 households differ, by a weighted £94,323,388 in total (households holding a figure from fewer than 10 records aren't checked this year)
Counted-once check

Counted-once check not run: not requested.

Provenance
Side Commit Runtime Environment hash Partition hash Time
base policyengi uk 2.122.2 (files 0cb87d75a516), core 3.32.13, py 3.13.17 x86_64 776bffbcdc16 e8ea8a019873 212.71s
head policyengi uk 2.122.2 (files 0cb87d75a516), core 3.32.13, py 3.13.17 x86_64 776bffbcdc16 e8ea8a019873 184.67s

Base dataset: enhanced_frs_2024_25.h5, sha256 c6ae0cbed13a537d5807323ee9717a70d06778413fc6be427aa9c613314f1922, the base's build.

Head dataset: enhanced_frs_2024_25.h5, sha256 ce855a409f8ecc5bd77da4453d0820b12b85b3826d1711df68db180b9ffd16de, this pull request's build.

Receipts by tax head: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Income tax £298.28bn £317.76bn £333.71bn £348.10bn £364.05bn £381.43bn £401.30bn
National Insurance (employee and self-employed) £51.17bn £53.37bn £55.12bn £56.70bn £58.61bn £60.42bn £62.75bn
National Insurance (employer) £151.22bn £157.66bn £162.55bn £167.07bn £173.79bn £179.23bn £186.28bn
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 £25.05bn £25.90bn £26.85bn £27.82bn £28.78bn £29.84bn £30.92bn
Student loan repayments £7.71bn £8.00bn £8.22bn £8.43bn £8.65bn £8.90bn £8.29bn
VAT £323.74bn £332.44bn £340.34bn £348.54bn £357.08bn £365.86bn £374.78bn
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.04bn £24.14bn £26.10bn £26.16bn £25.89bn £25.24bn £25.82bn
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
TV licence fee £4.50bn £4.66bn £4.68bn £4.70bn £4.72bn £4.74bn £4.77bn
Council tax £48.71bn £51.54bn £54.80bn £58.34bn £61.86bn £65.54bn £65.82bn
High value council tax surcharge £0.00bn £0.00bn £0.00bn £0.69bn £0.71bn £0.73bn £0.74bn
Northern Ireland domestic rates £1.12bn £1.18bn £1.23bn £1.29bn £1.35bn £1.42bn £1.42bn
Business rates £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn
Stamp duty land tax (own purchases, and corporate until the £19.63bn £20.51bn £21.48bn £22.45bn £23.46bn £24.57bn £25.77bn
Land transaction tax (Wales) £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Land and buildings transaction tax (Scotland) £0.06bn £0.06bn £0.06bn £0.07bn £0.07bn £0.07bn £0.08bn
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 £133.40bn £138.48bn £140.72bn £143.10bn £147.32bn £151.68bn £156.14bn
Pension Credit £6.53bn £7.13bn £7.02bn £7.07bn £7.17bn £7.28bn £7.29bn
Winter Fuel Payment £1.69bn £1.66bn £1.62bn £1.59bn £1.58bn £1.58bn £1.57bn
Pension Age Winter Heating Payment (Scotland) £0.09bn £0.09bn £0.09bn £0.10bn £0.10bn £0.10bn £0.10bn
Universal Credit £78.84bn £83.06bn £84.88bn £86.42bn £87.34bn £84.55bn £85.05bn
Housing Benefit £8.33bn £8.66bn £8.85bn £9.06bn £9.33bn £9.57bn £9.54bn
Council Tax Reduction £2.17bn £2.23bn £2.30bn £2.36bn £2.42bn £2.49bn £2.46bn
Employment and Support Allowance (income-related) £3.19bn £3.28bn £3.36bn £3.43bn £3.51bn £3.60bn £3.68bn
Employment and Support Allowance (contribution-based) £4.74bn £4.87bn £4.98bn £5.10bn £5.23bn £5.36bn £5.49bn
Jobseeker's Allowance (income-based) £0.05bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Jobseeker's Allowance (contribution-based) £0.29bn £0.29bn £0.30bn £0.31bn £0.32bn £0.32bn £0.33bn
Income Support £0.17bn £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 £30.44bn £31.73bn £32.58bn £33.36bn £34.18bn £35.02bn £35.87bn
Disability Living Allowance £8.11bn £8.45bn £8.68bn £8.89bn £9.11bn £9.33bn £9.56bn
Attendance Allowance £7.78bn £8.10bn £8.32bn £8.52bn £8.73bn £8.94bn £9.16bn
Carer's Allowance £3.97bn £4.14bn £4.25bn £4.35bn £4.46bn £4.57bn £4.68bn
Carer Support Payment (Scotland) £0.31bn £0.32bn £0.33bn £0.34bn £0.35bn £0.35bn £0.36bn
Carer's Allowance Supplement (Scotland) £0.00bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Severe Disablement Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Industrial Injuries Disablement Benefit £0.62bn £0.64bn £0.65bn £0.67bn £0.69bn £0.70bn £0.72bn
Armed Forces Compensation Scheme £0.59bn £0.61bn £0.62bn £0.64bn £0.65bn £0.67bn £0.69bn
Child Benefit £16.35bn £16.99bn £17.41bn £17.81bn £18.23bn £18.67bn £19.07bn
Scottish Child Payment £0.48bn £0.50bn £0.51bn £0.53bn £0.54bn £0.55bn £0.56bn
Two Child Limit Payment (Scotland, counterfactual) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Healthy Start vouchers £0.06bn £0.06bn £0.06bn £0.06bn £0.06bn £0.06bn £0.06bn
Maternity Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Maternity Pay £3.84bn £3.94bn £4.03bn £4.13bn £4.23bn £4.34bn £4.44bn
Statutory Paternity Pay £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Sick Pay £0.97bn £1.00bn £1.02bn £1.04bn £1.07bn £1.10bn £1.12bn
Sure Start Maternity Grant £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Bereavement Support Payment £1.13bn £1.16bn £1.18bn £1.21bn £1.24bn £1.27bn £1.30bn
Tax-Free Childcare £0.45bn £0.44bn £0.44bn £0.45bn £0.46bn £0.47bn £0.47bn
Extended childcare entitlement £3.76bn £4.17bn £4.29bn £4.41bn £4.52bn £4.69bn £4.82bn
Universal childcare entitlement £1.51bn £1.59bn £1.64bn £1.68bn £1.72bn £1.75bn £1.79bn
Targeted childcare entitlement £0.37bn £0.38bn £0.39bn £0.40bn £0.41bn £0.41bn £0.41bn
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.19bn £0.19bn £0.19bn £0.19bn £0.19bn £0.20bn £0.20bn
Adult Dependants' Grant £0.06bn £0.06bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn
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 £208.36bn £209.16bn £209.93bn £210.77bn £211.70bn £212.65bn £213.56bn
State education spending suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Transport subsidy spending £25.15bn £25.25bn £25.34bn £25.44bn £25.55bn £25.67bn £30.94bn
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,743k 11,636k 11,388k 11,301k 11,350k 11,401k 11,450k
Pension Credit 1,367k 1,390k 1,344k 1,326k 1,326k 1,324k 1,305k
Winter Fuel Payment 7,149k 7,026k 6,804k 6,669k 6,646k 6,615k 6,604k
Pension Age Winter Heating Payment (Scotland) 707k 700k 688k 681k 684k 687k 690k
Universal Credit 6,371k 6,401k 6,426k 6,428k 6,403k 6,393k 6,369k
Housing Benefit 1,209k 1,206k 1,200k 1,197k 1,202k 1,202k 1,199k
Council Tax Reduction 3,611k 3,638k 3,680k 3,704k 3,726k 3,746k 3,721k
Employment and Support Allowance (income-related) 310k 311k 312k 313k 314k 316k 317k
Employment and Support Allowance (contribution-based) 667k 669k 672k 675k 678k 681k 684k
Jobseeker's Allowance (income-based) 9k 0k 0k 0k 0k 0k 0k
Jobseeker's Allowance (contribution-based) 60k 60k 60k 61k 61k 61k 61k
Income Support 26k 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 4,135k 4,151k 4,166k 4,183k 4,201k 4,220k 4,239k
Disability Living Allowance 1,331k 1,336k 1,341k 1,346k 1,352k 1,358k 1,364k
Attendance Allowance 1,537k 1,543k 1,548k 1,555k 1,562k 1,569k 1,575k
Carer's Allowance 918k 921k 924k 928k 932k 936k 940k
Carer Support Payment (Scotland) 71k 71k 72k 72k 72k 72k 73k
Carer's Allowance Supplement (Scotland) 0k 71k 72k 72k 72k 72k 73k
Severe Disablement Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Industrial Injuries Disablement Benefit 158k 159k 159k 160k 161k 162k 162k
Armed Forces Compensation Scheme 66k 67k 67k 67k 68k 68k 68k
Child Benefit 7,954k 7,968k 7,982k 8,008k 8,035k 8,066k 8,080k
Scottish Child Payment 340k 342k 343k 344k 343k 344k 343k
Two Child Limit Payment (Scotland, counterfactual) 0k 0k 0k 0k 0k 0k 0k
Healthy Start vouchers 231k 232k 233k 234k 235k 236k 237k
Maternity Allowance 0k 0k 0k 0k 0k 0k 0k
Statutory Maternity Pay 304k 305k 306k 307k 309k 310k 311k
Statutory Paternity Pay 0k 0k 0k 0k 0k 0k 0k
Statutory Sick Pay 152k 152k 153k 153k 154k 155k 155k
Sure Start Maternity Grant 22k 22k 22k 23k 23k 23k 23k
Bereavement Support Payment 183k 183k 184k 185k 186k 186k 187k
Tax-Free Childcare 966k 951k 952k 957k 934k 945k 934k
Extended childcare entitlement 792k 783k 790k 793k 795k 805k 823k
Universal childcare entitlement 438k 449k 451k 453k 455k 453k 456k
Targeted childcare entitlement 76k 77k 77k 77k 78k 76k 75k
Care to Learn 0k 0k 0k 0k 0k 0k 0k
Childcare Grant 0k 0k 0k 0k 0k 0k 0k
Parents' Learning Allowance 95k 95k 95k 96k 96k 97k 97k
Adult Dependants' Grant 17k 18k 15k 15k 15k 15k 14k
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 £986.96bn £1,028.96bn £1,066.89bn £1,102.10bn £1,140.76bn £1,179.73bn £1,220.49bn
Government spending £554.00bn † £568.68bn † £576.11bn † £583.53bn † £592.51bn † £598.04bn † £611.57bn †
Government balance, each receipt once £432.96bn † £460.28bn † £490.78bn † £518.56bn † £548.25bn † £581.69bn † £608.92bn †
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 £990.09bn £1,032.09bn £1,070.02bn £1,105.23bn £1,143.89bn £1,182.86bn £1,223.62bn
household_tax £515.13bn £541.98bn £567.13bn £589.61bn £613.02bn £637.78bn £662.56bn
pre_budget_change_household_tax £507.42bn £533.98bn £558.91bn £580.49bn £603.66bn £628.15bn £653.53bn
gov_spending £554.00bn † £568.68bn † £576.11bn † £583.53bn † £592.51bn † £598.04bn † £611.57bn †
household_benefits £554.00bn † £568.68bn † £576.11bn † £583.53bn † £592.51bn † £598.04bn † £611.57bn †
gov_balance £436.09bn † £463.41bn † £493.91bn † £521.69bn † £551.38bn † £584.82bn † £612.05bn †
Components the model counts twice: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
corporate_sdlt, counted again inside expected_sdlt £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn
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,661.61bn £1,723.86bn £1,776.64bn £1,827.33bn £1,892.83bn £1,951.38bn £2,023.38bn
Household net income £1,660.01bn † £1,708.55bn † £1,742.45bn † £1,777.00bn † £1,812.67bn † £1,850.64bn † £1,908.87bn †
Household net income (HBAI definition) suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Population: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People 70,720k 70,989k 71,251k 71,536k 71,851k 72,175k 72,485k
Benefit units 38,909k 39,057k 39,201k 39,358k 39,531k 39,709k 39,880k
Households 32,049k 32,171k 32,290k 32,419k 32,562k 32,708k 32,849k
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 suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
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 suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
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 suppressed suppressed suppressed suppressed suppressed suppressed suppressed
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 suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 2: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 3: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 4: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 5: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 6: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 7: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 8: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 9: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 10: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
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.04bn £6.31bn £6.52bn £6.71bn £6.91bn £7.14bn £7.40bn
Raise higher rate by 1pp £3.76bn £4.06bn £4.30bn £4.52bn £4.78bn £5.07bn £5.29bn
Raise personal allowance by ~800GBP/year £-3.59bn £-3.69bn £-3.79bn £-3.86bn £-3.91bn £-3.98bn £-1.67bn
Raise child benefit by 25GBP/week per additional child £-2.05bn £-1.82bn £-1.69bn £-1.59bn £-1.48bn £-1.37bn £-1.26bn
Reduce Universal Credit taper rate to 20% £-16.78bn £-17.42bn £-17.66bn £-17.85bn £-17.91bn £-18.12bn £-18.15bn
Raise Class 1 main employee NICs rate to 10% £10.63bn £11.04bn £11.34bn £11.60bn £11.88bn £12.19bn £12.63bn
Raise VAT standard rate by 2pp £31.92bn £32.78bn £33.56bn £34.37bn £35.21bn £36.08bn £36.96bn
Raise additional rate by 3pp £3.29bn £3.54bn £3.75bn £3.95bn £4.20bn £4.45bn £4.81bn
Raise the Universal Credit standard allowance by 10% £-2.97bn £-3.11bn £-3.17bn £-3.22bn £-3.24bn £-3.28bn £-3.33bn
Raise the State Pension by 10% £-9.77bn £-10.02bn £-10.09bn £-10.19bn £-10.43bn £-10.68bn £-10.97bn
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.15bn £6.43bn £6.64bn £6.84bn £7.05bn £7.28bn £7.54bn
Raise higher rate by 1pp: change in income_tax £3.77bn £4.07bn £4.30bn £4.53bn £4.79bn £5.08bn £5.30bn
Raise personal allowance by ~800GBP/year: change in income_tax £-3.69bn £-3.81bn £-3.91bn £-3.97bn £-4.03bn £-4.11bn £-1.73bn
Raise child benefit by 25GBP/week per additional child: change in child_benefit £2.50bn £2.29bn £2.17bn £2.05bn £1.94bn £1.82bn £1.70bn
Reduce Universal Credit taper rate to 20%: change in universal_credit £16.82bn £17.46bn £17.70bn £17.90bn £17.95bn £18.16bn £18.19bn
Raise Class 1 main employee NICs rate to 10%: change in national_insurance £10.81bn £11.23bn £11.54bn £11.82bn £12.11bn £12.42bn £12.87bn
Raise VAT standard rate by 2pp: change in vat £31.92bn £32.78bn £33.56bn £34.37bn £35.21bn £36.08bn £36.96bn
Raise additional rate by 3pp: change in income_tax £3.29bn £3.54bn £3.75bn £3.95bn £4.20bn £4.45bn £4.81bn
Raise the Universal Credit standard allowance by 10%: change in universal_credit £2.97bn £3.12bn £3.17bn £3.22bn £3.25bn £3.29bn £3.33bn
Raise the State Pension by 10%: change in state_pension £13.34bn £13.85bn £14.07bn £14.31bn £14.73bn £15.17bn £15.61bn

This branch has not been deployed

No deployments
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.

Stop trusting the compromised eMudhra CA certificates

1 participant