Repository navigation
Conversation
Fleet ops lets budget-certify start once Route A's reservation releases (expected 19:30-20:30Z on 23 Oct), not at a fixed 00:30Z. The reservation check in guard() is now the only start gate; load and disk checks are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#704 dropped its job hand-off note (463c3a9). This merge takes that, and stops tracking the preparation tooling (.job/, pr-body.md, run-heavy.sh) so the certification commit built on this preparation carries only the data-certification skill's re-cut exception and the generated files. The tooling stays in the workspace, untracked; run-heavy.sh reads it from disk. A durable copy is in ~/reviews/uk-hub/jobs/budget-certify-a133/prep/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…9Z-a133f37a Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This cut is national-only (--drop-regional-release), so the manifest routes no constituency or local-authority regions. The region, manifest and geography-disclosure tests now assert that routing: with no local_area release the area regions are absent and their lookups return nothing; with one, the earlier assertions stand. A new test checks that a routed area's error still names its dataset, whatever the packaged routing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Coordinator decision on the budget-inputs gate (same-line re-cut exception, under d1682 and d1344). This is the explicit decision the exception requires for the 13 newly missing inputs. Accepted for this cut. None is a regression: no Microcosm cut has ever carried any of them. Eleven are new variables in policyengine-uk 2.147.2, and two became inputs there. No critical input is unusable, and the supported years pass. The condition: they must not reach published figures silently. A reform reading one of these inputs gets its default value, not data. On the dashboard, any measure whose figures depend on one of the 13 is therefore held as a data limit until a cut carries the input. The hold follows the measure's own variables, as the existing data-limit checks do. Before the release is adopted, the dashboard registers the 13 as a data limit. The ones most likely to matter this Budget:
Each held measure can be released by a named person at the Treasury check (G3), with the default stated in its public text, or by a later cut that carries the input. This doesn't change the rest of the evidence package. The 2×2 is still required before merge. Corrected 24 Oct ~07:10Z: the PIP and bus lines. The earlier bus line was wrong: a cap change does produce figures, from the fare table. The PIP line understated the problem. Both now follow the UK hub's reading of the policyengine-uk 2.147.2 code, which I checked. |
|
UK hub: the local reruns behind this PR's test claims, at
The final-head CI still has to pass. It is the full-suite evidence the evidence index requires. routing-changed-tests.logrouting-three-files.logreform-contract-83.log🤖 Generated with Claude Code |
|
Coordinator decision on the reform-responsiveness gate (under d1682 and d1344). This resolves its Accepted. The additional-rate reform responds in every year, including the four that are withheld. The gate returns
The standard reforms are the qualification's test of the cut, not Budget measures. This decision says nothing about any dashboard figure. Follow-up for the aggregate-impact tool (policyengine-uk#2335), not blocking: the receipt doesn't say which of With this decision, the evidence index's gates stand as follows:
The budget-inputs condition still applies before adoption, and the independent review of the index is still running. |
Fixes #714
Certifies Saturday's Microcosm UK national cut for the Autumn Budget (28 Oct):
microcosm-uk-2024-25-national-20261023T075039Z-a133f37aonpolicyengine-uk==2.147.2and core 3.33.3, national-only (--drop-regional-release).budget-local-data-manifest,463c3a953), under the same-line re-cut exception thatdocs/engineering/skills/data-certification.mdrecords (the Budget coordinator's 23 October decision under d1682 and d1344).Draft until the 2×2 attribution has run and its result is reviewed. The Budget coordinator asked for this PR to open now, so the review of the rest of the evidence and CI on the test fixes can start. The 2×2 runs in Fleet ops' reservation, from the end of the PolicyBench booking (Sat 22:00Z at the latest) to Sun 10:00Z.
Impact: this changes the certified UK default dataset to a new cut of the same Microcosm line, and the UK model pin from 2.132.6 to 2.147.2. Area regions drop out of the default registry until Monday's cut. The new pin also brings in policyengine-uk#2396's default capital gains realisation response, a retention-rate elasticity of 1 (first released in 2.134.0, so 2.132.6 lacks it). On this candidate the reform contract finds that default on every route. The country routes read the elasticity as 1.0, and the wrapper routes' realised gains and CGT changes match an elasticity of 1. So CGT reforms costed through policyengine.py respond by default once this lands. #602 tracks what follows. Its step 6 makes the contract's default-response cases gate (they report as pending until then). Its step 7 updates the app's methodology page with policyengine-api's bump. The 2×2 attribution, still to come, will separate the model and data effects on the Budget headline figures for FY2026-27 to FY2030-31.
Mechanical handoff; wrapper qualification pending unless reviewed receipts cover this exact candidate pair, commit and bundle. Microcosm's 19 producer release-cut gates and passing pytest do not establish wrapper qualification.
--drop-regional-releasebuilt_with_model_packagetools/certify_uk_cut_in_policyengine_py.pyin PolicyEngine/microcosm at0788c00c7.Evidence package (same-line re-cut exception)
docs/engineering/skills/data-certification.md("Same-line re-cut exception") lists what this exception needs. The status of each item ate02d41b:producer-gates.json(producer evidence only)certification.uc_floor.jsonbundle.py check --published-spm --include-tros --strict-tros)holds: true; for example, the default elasticity reads 1.0 against an expected 1.0). The 120 unsupported are route and case pairs the contract excludes by design. The counts match the 21 Oct qualification run on the enhanced FRS (job 119239815076). Ran 05:48Z to 09:10Z on 24 Oct (3 h 22 min).reform-contract.jsonbudget-inputs.json6cba5d71on pe-uk 2.132.6, FY2026-27 to FY2030-31attribution.json(rebuilt from the run's own cells with the reviewed mappings, no rerun; sha256e636bc7f…)reform_responsivenessgate (data/qualification/uk.json): the pinned metrics tool costs its ten standard reforms, 2025–2031, and each must move its target in the stated direction by at least its minimum in every year. All ten ran, and the tool's responsive check passes for all ten. Nine are published in every year. The tenth, raise the additional rate by 3pp, is withheld in 2027-28 to 2030-31 under the tool's small-cell rule (reform_withheld: a reform's costing is withheld in a year it would come from a small cell). There the gate can't recompute the tool's verdict, so it returnsneeds_review, notpass. In the published years its income tax change is +£3.9bn to +£5.5bn, against a £0.55bn minimum. Recording which small-cell condition withheld a year is a non-blocking follow-up: policyengine-uk#2654.reform-responsiveness.jsonreplay.jsontestsstage keeps return code 2). The 6 routing failures are fixed ine02d41b, and the 82 tests the run never reached pass when run alone (logs). The full-suite evidence is this PR's CI on the exact head: the evidence index records it infinal-head-ci.jsonand refuses to index unless every check, including the four Test jobs, has passed at the candidate commit. CI one02d41bpassed all 12 checks (run, 24 Oct). The four Test jobs each collected 4,315 tests, with no failures: 3.11 passed 4,275 and skipped 40; 3.12 and 3.14 passed 4,296 and skipped 19; 3.13 passed 4,301 and skipped 14. In each, the qualification-fallback test passed, andtest_uk_budget_reform_contract.pyran 139 tests, all passing.final-head-ci.json(to come)The evidence receipts hold aggregates and digests only; per-record logs stay outside Git. Two harness fixes were needed during the run, and neither touches the repository:
checked_datain the budget-inputs and reform-contract steps resolveddata/old.h5anddata/new.h5to Hugging Face cache blobs, whose names have no.h5suffix, and policyengine-uk refused that path.After the first review, three more harness changes, none in the repository: a
reform-responsivenessstep; an evidence index that requires its receipt and binds the final-head CI; and an atomic write ofattribution.json, so an interrupted write can't leave a truncated receipt. After the 2×2's first pass (02:01Z), a fourth: that pass's whole-year suppression hid every money total, because two heads have fewer than ten cases. The rerun suppresses only those two heads, and the first pass's receipts are kept.Test failures in the certification run, classified
The certification suite ran with four workers (
-n 4) for 4 h 05 m. Its progress line reached 98% after about 2 h 10 m and stayed there for about two hours. The UK hub then interrupted pytest (SIGINT, 05:32Z, 24 Oct), as the Budget coordinator had ruled at 04:50Z.6 failed, 4,211 passed, 14 skipped; 82 never ran. The session collected 4,313 tests.
tests/test_uk_budget_reform_contract.py. Worker gw0 had run that file's first 38 tests in order.test_the_capital_gains_cases_hold_on_every_in_process_routepassed, gw0 reported nothing more.e02d41bin one process, in file order and after the capital-gains test, as gw0 would have run them (-p no:xdist -o faulthandler_timeout=300). All 83 passed in 3 m 54 s (05:41–05:45Z; log), so the stall did not reproduce.All six failures come from the national-only route (
--drop-regional-release). This cut's manifest setsregional_release_kindto none, and itsregion_datasetshold onlynational. Soarea_regions_routed_to_local_release()is false, the default registry holds no constituency or local-authority regions, anduk_area_dataset_hintreturns an empty string. All six tests assumed the previous bundle'slocal_arearouting:test_uk_regions.py::…children_are_countries_and_areas{'country': 4} == {'country': 4, 'constituency': 650, 'local_authority': 361}test_uk_regions.py::…national_and_area_regions_have_datasets1 == 1 + 1011test_uk_regions.py::…countries_and_areas_filter4 == 4 + 1011test_uk_regions.py::…has_1016_regions5 == 5 + 1011test_release_manifests.py::…area_regions_route_to_local_releaseNone == 'local_area'test_uk_geography_disclosure.py::test_a_missing_area_column_names_the_dataset_that_carries_it'microcosm_uk_2024_25_dense' in ''e02d41bmakes each test assert the bundle's own routing, as the coordinator ruled, rather than skipping it:local_arearouting:constituency/E14001063andlocal_authority/N09000011return None;{"national": "microcosm_uk_2024_25.h5"}, and it bundles no dense dataset;local_arearouting: the earlier assertions stand unchanged.test_a_routed_area_names_its_dataset_in_the_errorpatches in a routed manifest. It checks that the error still names the area's dataset, whatever the packaged routing.At
e02d41b, the changed tests pass single-process: 75 passed, and 119 across all three files (logs).ruff formatandruff checkare clean on them.No other failures.
test_uk_qualification_pipeline.py::test_the_certification_environment_falls_back_to_the_packaged_certificatepassed in this run. The log holds one FAILED line for it, from an earlier attempt that started at 21:29Z on 23 Oct. That attempt was stopped before pytest printed its summary, so the line has no traceback. Run on its own, the test's subprocess takes about 14 s of its 60 s budget. Per the coordinator's ruling, it blocks this PR if CI fails it.Budget-inputs gate: needs review
budget_inputsreturns needs_review: the new pair has 13 model inputs that the data doesn't carry and the previous pair didn't flag. None of them is data the earlier cut had and this one lost:previous_input_status:in_datafalse for all 13). The receipt does not reconstruct cuts before that one; its limitations say so.defined_benefit_pension_share,directly_held_shares,early_years_school_start_deferred,is_full_year_category_a_director,non_residential_property_secured_debt,other_residential_property_secured_debt,pension_annual_allowance_taxable_lump_sum_death_benefits,pension_contributions_via_salary_sacrifice_pre_2015,pip_dl_points,pip_m_pointsandunit_and_investment_trusts.local_bus_uncapped_single_fareandsalary_sacrifice_returned_to_incomewere in 2.132.6, but not as inputs.unusable_criticalis empty). The cut supports 2024–2032, which covers the required years 2025–2030 and the Budget horizon 2026–2031 (supported_years: pass).Each of the 13 takes its model default on this cut. What that means differs by input (policyengine-uk 2.147.2):
local_bus_uncapped_single_fare: a bus fare cap change is priced from the parameter table's three uncapped-fare bands,gov.dft.bus.uncapped_single_fares(person_bus_fare_spending.py:89–98), instead of each person's own fare.pip_dl_pointsandpip_m_points: the cut stores PIP categories, and the loader copies them into every later year (data/economic_assumptions.py:216–242).pip_category(utils/pip.py:18–72) runs only when no category is supplied, so a reform to the points thresholds has no effect and raises no error. Reforms to PIP rates are unaffected.salary_sacrifice_returned_to_income: a legacy input that defaults to zero. The salary-sacrifice cap works throughsalary_sacrifice_pension_ni_excess, which doesn't read it.pension_contributions_via_salary_sacrifice_pre_2015: read only bypension_annual_allowance_threshold_income(:29), so it affects only the tapered annual allowance.Receipts (from the certification tool)
scripts/check_uk_uc_floor.py):passed; measured/benchmark ratios: benefit_units=0.925245, spend=0.957813How it was made (the tool's commands)
uv sync --frozen --extra uk --extra dev --python 3.13 /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python scripts/bundle.py certify-data --country uk --data-producer populace --manifest-uri hf://dataset/policyengine/populace-uk-private@microcosm-uk-2024-25-national-20261023T075039Z-a133f37a/releases/microcosm-uk-2024-25-national/release_manifest.json --drop-regional-release --model-version 2.147.2 --core-version 3.33.3 uv lock --no-config --no-sources --default-index https://pypi.org/simple --python /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python uv sync --frozen --extra uk --extra dev --python 3.13 /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python scripts/release_lock.py /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python scripts/bundle.py generate --include-tros /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python -c 'import json, sys; from pathlib import Path; from policyengine.provenance.uk_qualification import certified_constant_replacements as r, rewrite_certified_constants as w; old, new = json.loads(sys.argv[1]), json.loads(sys.argv[2]); print(json.dumps(w(Path('"'"'.'"'"'), r(old, new))))' '{"build_id": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "bundle_id": "uk-6.10.1", "certification": {"built_with_model_version": "2.132.6", "certified_by": "policyengine.py bundle certification", "certified_for_model_version": "2.132.6", "compatibility_basis": "built_with_model_package", "core_binding": "bundle_pin", "data_build_id": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71"}, "certified_data_artifact": {"build_id": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "data_package": {"name": "microcosm-data", "version": "0.1.0"}, "dataset": "microcosm_uk_2024_25", "sha256": "810ba980005a8b907cb51464279fa5e0125464b7af9a4871b7f6744c30951ece", "uri": "hf://policyengine/populace-uk-private/microcosm_uk_2024_25.h5@microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71"}, "country_id": "uk", "data_package": {"name": "microcosm-data", "release_manifest_path": "releases/microcosm-uk-2024-25-national/release_manifest.json", "release_manifest_revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "repo_id": "policyengine/populace-uk-private", "repo_type": "dataset", "version": "0.1.0"}, "data_producer": "populace", "datasets": {"calibration_diagnostics": {"path": "releases/microcosm-uk-2024-25-national/calibration_diagnostics.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "sha256": "34978e2bfde3f2641769c9c3a8f60455c59ecae5a50524b359d74388d7edc888"}, "microcosm_uk_2024_25": {"path": "microcosm_uk_2024_25.h5", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "sha256": "810ba980005a8b907cb51464279fa5e0125464b7af9a4871b7f6744c30951ece"}, "microcosm_uk_2024_25_calibration": {"path": "microcosm_uk_2024_25_calibration.npz", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "sha256": "104a8253bf1aebc91147c9bbb40e2603d1025317ba8c6b991383d5e4d91852c2"}, "microcosm_uk_2024_25_dense": {"path": "microcosm_uk_2024_25_dense.h5", "repo_id": "policyengine/populace-uk-private", "repo_type": "dataset", "revision": "microcosm-uk-2024-25-dense-20261019T000432Z-ee5c2dbe", "sha256": "8e10e130d0260e0b52e2e29902f0502ebdff76a14a3e57d2c876bf4cd8db5872"}, "release_certification": {"path": "releases/microcosm-uk-2024-25-national/release_certification.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "sha256": "6a68cc93595fc5a7ad451d75a902523c25659de27014f50431dd5e19af5bd959"}, "release_cut_gates": {"path": "releases/microcosm-uk-2024-25-national/release_cut_gates.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "sha256": "c91c1364d9c3be98493039d4e1dd8c2256881a434c1f124dd2ed0701bfaf7751"}, "score_vs_enhanced_frs": {"path": "releases/microcosm-uk-2024-25-national/score_vs_enhanced_frs.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "sha256": "ba8a675f36e7c836bf5521e5933e21bb689442734b7340e05cabd3e0cc55323d"}, "spine_gates": {"path": "releases/microcosm-uk-2024-25-national/spine_gates.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "sha256": "6dbba976dd1304c07da531382cecb11c9cb69512de0ee65126b71f032a0f37d6"}, "terminal_gates": {"path": "releases/microcosm-uk-2024-25-national/terminal_gates.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "sha256": "e29439d5ce0ea098d32579284ac06f26f086feba2fb8d12d1e88ac9a54840808"}}, "default_dataset": "microcosm_uk_2024_25", "default_dataset_uri": "hf://policyengine/populace-uk-private/microcosm_uk_2024_25.h5@microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71", "model_package": {"name": "policyengine-uk", "sha256": "cc54025f2a3bc54be4f8d024d1e6f11ed29fed75ca513b214f2d2963c5bf4354", "version": "2.132.6", "wheel_url": "https://files.pythonhosted.org/packages/11/f2/c003cd7a95cb499737a5b8af0d619ba4e759c8bc7e55a2bb5c7efa46abd1/policyengine_uk-2.132.6-py3-none-any.whl"}, "policyengine_version": "6.10.1", "region_datasets": {"constituency": {"path_template": "microcosm_uk_2024_25_dense.h5"}, "local_authority": {"path_template": "microcosm_uk_2024_25_dense.h5"}, "national": {"path_template": "microcosm_uk_2024_25.h5"}}, "regional_release_kind": "local_area", "regional_release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-uk-private/resolve/microcosm-uk-2024-25-dense-20261019T000432Z-ee5c2dbe/releases/microcosm-uk-2024-25-dense/release_manifest.json", "regional_source_manifest_uri": "hf://dataset/policyengine/populace-uk-private@microcosm-uk-2024-25-dense-20261019T000432Z-ee5c2dbe/releases/microcosm-uk-2024-25-dense/release_manifest.json", "release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-uk-private/resolve/microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71/releases/microcosm-uk-2024-25-national/release_manifest.json", "schema_version": 1, "source_manifest_uri": "hf://dataset/policyengine/populace-uk-private@microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71/releases/microcosm-uk-2024-25-national/release_manifest.json", "version": "microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71"}' '{"build_id": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "bundle_id": "uk-6.10.1", "certification": {"built_with_model_version": "2.147.2", "certified_by": "policyengine.py bundle certification", "certified_for_core_version": "3.33.3", "certified_for_model_version": "2.147.2", "compatibility_basis": "built_with_model_package", "core_binding": "certified", "data_build_id": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a"}, "certified_data_artifact": {"build_id": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "data_package": {"name": "microcosm-data", "version": "0.1.0"}, "dataset": "microcosm_uk_2024_25", "sha256": "64f83900ca3a1242fb017585234844ce89f743d32e41cd2b6558057777f914aa", "uri": "hf://policyengine/populace-uk-private/microcosm_uk_2024_25.h5@microcosm-uk-2024-25-national-20261023T075039Z-a133f37a"}, "country_id": "uk", "data_package": {"name": "microcosm-data", "release_manifest_path": "releases/microcosm-uk-2024-25-national/release_manifest.json", "release_manifest_revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "repo_id": "policyengine/populace-uk-private", "repo_type": "dataset", "version": "0.1.0"}, "data_producer": "populace", "datasets": {"calibration_diagnostics": {"path": "releases/microcosm-uk-2024-25-national/calibration_diagnostics.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "sha256": "0c975ad04a2d1c0207c3be480d68f645c3a1b24f786c3eef76d6e984dfea0637"}, "microcosm_uk_2024_25": {"path": "microcosm_uk_2024_25.h5", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "sha256": "64f83900ca3a1242fb017585234844ce89f743d32e41cd2b6558057777f914aa"}, "microcosm_uk_2024_25_calibration": {"path": "microcosm_uk_2024_25_calibration.npz", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "sha256": "074872730ad5678cdb4e483d0141ece912be65d6bc032d01bf756f2c3868f2a7"}, "release_certification": {"path": "releases/microcosm-uk-2024-25-national/release_certification.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "sha256": "633661c40492645236c0d286576c6206d1fe87609ac7ce90234f625397b9260c"}, "release_cut_gates": {"path": "releases/microcosm-uk-2024-25-national/release_cut_gates.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "sha256": "19f9b8bde4cafcfd179607541c5c8fa4247c97858a4ace7a1838bbacd223bc17"}, "score_vs_enhanced_frs": {"path": "releases/microcosm-uk-2024-25-national/score_vs_enhanced_frs.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "sha256": "cb4dcde88bf016e0646cdc46a9ab9adf9973c77b16a0cb9e1a25987d57b212ab"}, "spine_gates": {"path": "releases/microcosm-uk-2024-25-national/spine_gates.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "sha256": "7959f2a19b6535e67f8d9cb2c37ee68f027892ca10d9d8422be18a8261798f34"}, "terminal_gates": {"path": "releases/microcosm-uk-2024-25-national/terminal_gates.json", "repo_id": "policyengine/populace-uk-private", "revision": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "sha256": "dac50ba94464ca4e2b494fd8ffcd04e47da6dd6e49e9f53bdb7384de7983097f"}}, "default_dataset": "microcosm_uk_2024_25", "default_dataset_uri": "hf://policyengine/populace-uk-private/microcosm_uk_2024_25.h5@microcosm-uk-2024-25-national-20261023T075039Z-a133f37a", "model_package": {"name": "policyengine-uk", "sha256": "4b48ab1008b00610abc38192927ac9d4bb22037b6bbd9578926c2899e639f972", "version": "2.147.2", "wheel_url": "https://files.pythonhosted.org/packages/96/dd/54ddc9226756877e630a3f9fcda4dbf2ae142635e96a564cab3a062ced62/policyengine_uk-2.147.2-py3-none-any.whl"}, "policyengine_version": "6.10.1", "region_datasets": {"national": {"path_template": "microcosm_uk_2024_25.h5"}}, "release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-uk-private/resolve/microcosm-uk-2024-25-national-20261023T075039Z-a133f37a/releases/microcosm-uk-2024-25-national/release_manifest.json", "schema_version": 1, "source_manifest_uri": "hf://dataset/policyengine/populace-uk-private@microcosm-uk-2024-25-national-20261023T075039Z-a133f37a/releases/microcosm-uk-2024-25-national/release_manifest.json", "version": "microcosm-uk-2024-25-national-20261023T075039Z-a133f37a"}' /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python -c 'import faulthandler, os, sys diagnostic_stream = os.fdopen(os.dup(2), '"'"'w'"'"') faulthandler.dump_traceback_later(300.0, repeat=True, file=diagnostic_stream) try: import pytest raise SystemExit(pytest.main(sys.argv[1:])) finally: faulthandler.cancel_dump_traceback_later() diagnostic_stream.close() ' tests/test_household_calculator_snapshot.py -q /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python scripts/bundle.py check --published-spm --include-tros --strict-tros /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python scripts/check_uk_uc_floor.py --dataset microcosm_uk_2024_25 --year 2025 --output /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification.uc_floor.json /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python -c 'import xdist' uv pip install --python /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python pytest-xdist /Users/maxghenis/.subfleet/worktrees/20261023-110044-budget-certify-a133-prep/.job/certification/.venv/bin/python -c 'import faulthandler, os, sys diagnostic_stream = os.fdopen(os.dup(2), '"'"'w'"'"') faulthandler.dump_traceback_later(300.0, repeat=True, file=diagnostic_stream) try: import pytest raise SystemExit(pytest.main(sys.argv[1:])) finally: faulthandler.cancel_dump_traceback_later() diagnostic_stream.close() ' -n 4 -vv --durations=20 -o faulthandler_timeout=300 -p no:cacheproviderBefore this leaves draft
reform-responsiveness.json), reviewed, with any non-pass resolved by an explicit decision. It returnsneeds_review(the additional-rate reform's withheld years, above); the Budget coordinator accepted it for this cut (comment). Follow-up: policyengine-uk#2654.attribution.json,reform-responsiveness.jsonand green final-head CI (final-head-ci.json), and it is reviewed. It was written at 05:03Z on 25 Oct (evidence-index.json: 35 files; status "evidence collected; review required; replay unavailable"). It indexes the mappedattribution.json(e636bc7f…), the reform-responsiveness receipt and Certify Microcosm UK national cut a133f37a for the Autumn Budget #715's CI ate02d41b(run 40071835088). Its gates: budget_inputs needs_review (accepted), supported_years pass, reform_contract pass, reform_responsiveness needs_review. The independent review of the index is running.needs_review: accepted for this cut, with the dashboard data-limit condition (coordinator decision). The receipt staysneeds_review.🤖 Generated with Claude Code