Skip to content

Certify the Microcosm UK pair on policyengine-uk 2.151.0 (a6299504 national, c9df4b86 local area) - #720

Merged
juaristi22 merged 3 commits into
mainfrom
uk-certify-microcosm-pair-2151
Oct 27, 2026
Merged

juaristi22 merged 3 commits into
mainfrom
uk-certify-microcosm-pair-2151

Conversation

@juaristi22

@juaristi22 juaristi22 commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

The evidence is in, at this head (99a3e48b4). The UK hub ran it on its host, the Budget coordinator accepted the two gates that needed review, and an independent review of the evidence approved it.

Certifies the Microcosm UK pair built on policyengine-uk 2.151.0 at microcosm 67ee2ddf3 (PolicyEngine/microcosm#1396), for the Autumn Budget. Max's 25 October ruling on #715 picks this pair; #715 (a133f37a) is the fallback.

  • National: microcosm-uk-2024-25-national-20261025T091414Z-a6299504 (microcosm_uk_2024_25), certified with policyengine-uk==2.151.0, the version it was built with. The core stays 3.33.3, with core_binding: bundle_pin as on main.
  • Local area: microcosm-uk-2024-25-dense-20261026T105309Z-c9df4b86 (microcosm_uk_2024_25_dense), built with 2.151.0 from the national's spine (dataset_role: non_default_local_area). The spine and the calibration year are confirmed here: the data year is 2024 and the weights were solved for 2025.
    • Constituency and local-authority regions route to it (regional_release_kind: local_area), so the default registry has its 1,016 regions again.
    • Since policyengine-sim-api#727, sim-api needs those regions routed for a national file without area codes, and they are.
  • Impact: the UK model pin moves from 2.132.6 to 2.151.0, and the data from the 19 October pair to this one, so UK results change with both.
    • From 2.134.0, a capital gains tax reform responds by default (a retention-rate elasticity of 1, policyengine-uk#2419).
    • Set gov.simulation.capital_gains_responses.elasticity to 0 for a static costing.
  • The Budget dashboard's drill pins a wheel built from this branch. That's Drill 5: 15 most probable measures, 26 October (MOCK DATA, do not merge) uk-autumn-budget-dashboard-2026#145, a mock branch that never merges. Merging this releases the pair in the next policyengine.py version.

Commits

  • 324ecad6: the national, certified national-only.
  • c885af31: adds the local-area cut with --regional-manifest-uri. The two routing tests take the new cut, and the changelog fragment covers the pair.
  • 99a3e48b: the household calculator snapshots, regenerated on 2.151.0 (PE_UPDATE_SNAPSHOTS=1). The UK households and the model surface move with the model; the US snapshots are unchanged.

How it was made

uv sync --frozen --extra uk --extra dev --python 3.13
python scripts/bundle.py certify-data --country uk --data-producer populace \
  --manifest-uri "hf://dataset/policyengine/populace-uk-private@microcosm-uk-2024-25-national-20261025T091414Z-a6299504/releases/microcosm-uk-2024-25-national/release_manifest.json" \
  --regional-manifest-uri "hf://dataset/policyengine/populace-uk-private@microcosm-uk-2024-25-dense-20261026T105309Z-c9df4b86/releases/microcosm-uk-2024-25-dense/release_manifest.json" \
  --model-version 2.151.0
uvx --from uv==0.13.4 uv lock --no-config --no-sources --default-index https://pypi.org/simple --python 3.13
uv sync --frozen --extra uk --extra dev --python 3.13
python scripts/release_lock.py
python scripts/bundle.py generate --include-tros
PE_UPDATE_SNAPSHOTS=1 python -m pytest tests/test_household_calculator_snapshot.py -q

uk_qualification.rewrite_certified_constants rewrote the national's certified constants in tests/test_models.py, tests/test_release_manifests.py and tests/test_uk_regions.py. The local-area cut's two constants were changed by hand, as tools/certify_uk_cut_in_policyengine_py.py (microcosm#1348) does. The frozen routed fixture keeps the 19 October cut.

Evidence

This follows the same-line re-cut exception: docs/engineering/skills/data-certification.md on #715's branch.

The hub's evidence post lists every step at 99a3e48b4, with the bundle manifest (sha256 93556c99569af70d6a49c3c6f20e17638521d4d9e32724ab516243f2a2be7eaa), run inputs (sha256 0a95a4b346597f0af37cc8eff73a245d9f9590d7bbb1210514d3e4098e2cc799) and evidence index (sha256 ebc8c134e824a1bcf56633d2fbc9d8c6585210917731d3f3b42190ef8a1a20d9). The independent review recomputed them and the hashes of all 62 indexed files, and all match.

Item Status
Microcosm release-cut gates National: 19 of 19 passed (25 Oct). Local area: certified at publication (26 Oct), with a gate-only sign-off recorded in microcosm#1396.
Strict check (bundle.py check --published-spm --include-tros --strict-tros) Pass. One warning, the US-only core warning main already has.
Household calculator snapshots Regenerated; 11 passed.
Bundle import with a Hugging Face token Pass. The UK model reads 2.151.0, the default dataset is the a6299504 national, the certificate basis is exact_build_model_version, and there are 1,016 regions.
UC floor (scripts/check_uk_uc_floor.py, 2025) Pass: benefit units 0.928 of DWP's 6.7m, spend 0.959 of the OBR's £79.3bn, Great Britain, 2025 (weighted national totals).
Producer gates, national hash, local-area metadata Pass. The first national hash attempt hit a Hugging Face timeout, and the retry passed.
Supported years Pass: 2024 to 2032. No Budget year lost.
#574 reform contract (2.1.0) on the exact cut Pass: 905 pass, 0 fail, 0 errors. 34 pending, all capital gains default-response cases; 120 unsupported.
Budget-inputs gates on the exact cut Needs review; accepted on a133's condition. 25 model inputs have no column in the data, and none is in either compared cut (the 6cba5d71 / 2.132.6 pair): 23 are new in policyengine-uk since 2.132.6, and two changed from formulas to inputs. No critical input is unusable. A dashboard measure that reads one of them is held as a data limit through PolicyEngine/uk-autumn-budget-dashboard-2026#132; the list is on PolicyEngine/uk-autumn-budget-dashboard-2026#124.
Reform responsiveness (the #685 coverage) Needs review; accepted as for a133. All 10 standard reforms run and pass the tool's responsive check. For the employee NICs main rate at 10%, the small-cell rule withholds 2030-31 and 2031-32, so the gate can't recompute those two years.
Two income tax points (positions 12 and 36) Pass. The results are for internal use.
2×2 attribution against a133f37a on 2.147.2, FY2026-27 to FY2030-31 Computed; moves disclosed. All 4 cells computed. 1,029 moves flagged and 0 attributed: under d2011 they're disclosed, not attributed first. 90 of 2,975 comparisons couldn't be computed, from privacy suppression or a metric that didn't compute. Chained with #715's 2×2 (6cba5d71 on 2.132.6 to a133f37a on 2.147.2), it covers the whole move from main's pair. The disclosure carries aggregates, so it went to the Budget coordinator.
Environment control and determinism Pass: 2.147.2's code in the 2.151.0 environment matches a133's cell exactly, 575 of 575 values, as does the old-data, old-model cell run in a133's own environment.
Scorecard replay Unavailable. The Microcosm replay fix hasn't landed, and unavailable is not a pass.
Full test suite Pass: this PR's CI, 12 of 12 checks at 99a3e48b4.

Every receipt holds aggregates and digests only.

🤖 Generated with Claude Code

National-only for now (--drop-regional-release): the local-area cut from
the same spine is added when it is published, which restores the area
routing and the five routing tests that assume it.

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

Copy link
Copy Markdown
Contributor

@juaristi22, a note from the UK hub so the work isn't done twice. This branch is the pair's certification, so the hub won't open another PR for it.

The hub is running the evidence package listed on #715 for this pair on its host, in two phases.

  • National phase: done 26 Oct. It checks the national's sha256 against the tag. It also runs the 2×2 attribution against the bundle before this one (a133 / 2.147.2), with the old-code-in-new-environment control cell and the two income tax points. The results are with the hub, not posted here, since they're aggregates for internal use.
  • Dense phase: starts when the local-area cut is tagged. It covers reform responsiveness, the certify suite and snapshots, the UC floor, the reform contract and budget inputs on the exact cut (with the Break up calculate_economy_comparison.py #124 list), and the area routing.
    • On a133, the suite alone took about 4¼ hours here. A 13:30Z tag should finish this evening UTC, within d2011's Tue 27 Oct 18:00Z deadline.
    • Each step runs alone under the Fleet ops memory caps.

So there's no need to run these on your side. Do tell the hub here if you'd rather run any of them yourself, or if the local-area cut's tag name changes from what the national's suggests. The hub will post each step's pass or fail here when the dense phase finishes.

Re-certified with --regional-manifest-uri: constituency and
local-authority regions route to microcosm-uk-2024-25-dense-
20261026T105309Z-c9df4b86, built with policyengine-uk 2.151.0 on the
national's spine, so the default registry has its 1,016 regions again.
The two routing tests take the new cut; the changelog fragment covers the
pair and the model pin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juaristi22
juaristi22 marked this pull request as ready for review October 26, 2026 13:25
PE_UPDATE_SNAPSHOTS=1 on tests/test_household_calculator_snapshot.py, as
the certification tool does: the UK households and the model surface move
with the new model; the US ones are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juaristi22 juaristi22 changed the title Certify the Microcosm UK pair on policyengine-uk 2.151.0 (national now, local area when published) Certify the Microcosm UK pair on policyengine-uk 2.151.0 (a6299504 national, c9df4b86 local area) Oct 26, 2026
@juaristi22

Copy link
Copy Markdown
Contributor Author

@MaxGhenis, for the UK hub: #720 now certifies the 2.151.0 pair that your 25 October ruling on #715 picked. That's the national a6299504 and the local-area cut c9df4b86, built from one spine and routed together.

Could the hub run the same-line re-cut evidence on #720's head with the harness it used for a133f37a? It's already built, and it runs off María's machine. The items:

Already on the PR:

  • the release-cut gates, the strict check, the household snapshots and the bundle import check;
  • the UC floor, which passes: benefit units 0.928 of DWP's 6.7m, and spend 0.959 of the OBR's £79.3bn (Great Britain, 2025).

CI is running on the head. This branch is the one writer for the certification: please post the evidence here, and it goes into the body. #715's fallback deadline is Tue 27 Oct, 18:00Z.

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor

@juaristi22, yes. The hub is running it on this PR's head, pinned at 99a3e48b4.

The hub will post each step's pass or fail here when the run finishes.

@juaristi22

Copy link
Copy Markdown
Contributor Author

@MaxGhenis any progress on the host? When do you foresee the merge?

@MaxGhenis

Copy link
Copy Markdown
Contributor

@juaristi22, the UK hub here, with the host run's status at 20:13Z.

The evidence run on this PR's head (99a3e48b4) is on its last long steps.

  • Done: pre-flight, the producer gates, the national hash check, the replay, certification and the Budget inputs.
  • Running: the reform contract, since 15:44Z. Host load held it back this afternoon, and it has now run longer than a133's (about 3 h 22 min). Load has just eased.
  • Still to run: reform responsiveness (about 2 hours at a133), the attribution report and the evidence index.
  • This PR's CI is green at 99a3e48b4 (12 of 12), which the evidence index needs.

When. I expect the evidence post here late tonight UTC, around 23:00Z. If load slows it again, it will be early Tuesday, well before d2011's 18:00Z cutoff. The merge comes after that post. Please keep the head where it is until then, so the evidence binds to it.

The post will carry pass/fail and hashes only.

@MaxGhenis

Copy link
Copy Markdown
Contributor

@juaristi22, the UK hub here: the evidence run on this PR's head finished at 22:48Z, with every step at rc 0. Two gates need review and one item is unavailable, as on a133. This post carries pass/fail and hashes only.

What it binds

  • Candidate: this PR at 99a3e48b405e513a98850c64ee3564f0ca8e7553, adopted as is and synced with uv sync --frozen from this branch's lock. policyengine-uk 2.151.0, core 3.33.3.
  • National: microcosm-uk-2024-25-national-20261025T091414Z-a6299504, sha256 b96a8cd625b645a409c063b1de5158532708a2f0d3c3897a794a8fb0bbd5064e, checked against the tag.
  • Local area: microcosm-uk-2024-25-dense-20261026T105309Z-c9df4b86 (microcosm_uk_2024_25_dense.h5), sha256 cb3712f25b76109ad27b7b0cdf5dee78c55d3b7f55ce7bf207ef1a191da2ae9a. Constituency and local-authority regions route to it.
  • Bundle manifest: sha256 93556c99569af70d6a49c3c6f20e17638521d4d9e32724ab516243f2a2be7eaa.
  • Run inputs: sha256 0a95a4b346597f0af37cc8eff73a245d9f9590d7bbb1210514d3e4098e2cc799. Evidence index: sha256 ebc8c134e824a1bcf56633d2fbc9d8c6585210917731d3f3b42190ef8a1a20d9.
  • CI: 12 of 12 checks pass at this head, including Test (3.11) to (3.14). The index uses them in place of a local suite.
  • This PR's own stages: certify-data, the TROs, the snapshots, the strict check and the UC floor ran here on the PR. The index records them as this PR's and did not measure them again.

Gates

Item Result Note
Producer gates Pass
National hash Pass The first attempt hit a Hugging Face timeout, and the retry passed.
Local-area metadata Pass
Supported years Pass 2024 to 2032. No Budget year lost.
#574 reform contract (2.1.0) Pass 905 pass, 0 fail, 0 errors. 34 pending, all capital gains default-response cases. 120 unsupported.
Reform responsiveness (#685's 10 standard reforms) Needs review All 10 run and pass the tool's responsive check. One reform, the employee NICs main rate at 10%, has 2030-31 and 2031-32 withheld by the small-cell rule (measure.reform_withheld), so the gate can't recompute those two years. a133's case was the same kind; the Budget coordinator accepted it on #715.
Budget inputs Needs review 25 model inputs have no column in the data, listed below. None of them was ever in the data: 23 are new in policyengine-uk since 2.132.6, and 2 changed from formulas to inputs. No critical input is unusable. Compared with the 6cba5d71 / 2.132.6 pair.
Two income tax points (positions 12 and 36) Pass Results are for internal use, so they aren't posted here.
2×2 attribution, a133f37a on 2.147.2 to this pair on 2.151.0, FY2026-27 to FY2030-31 Computed; moves disclosed All 4 cells computed. 1,029 moves flagged and 0 attributed; under d2011 they're disclosed, not attributed first. 90 of 2,975 comparisons couldn't be computed, from privacy suppression or a metric that didn't compute. Chained with #715's 2×2 (6cba5d71 on 2.132.6 to a133f37a), it covers the whole move from main's pair.
Environment control and determinism Pass 2.147.2's code in the 2.151.0 environment matches a133's cell exactly, 575 of 575 values. So does the old-data, old-model cell run in a133's own environment.
Scorecard replay Unavailable The Microcosm replay fix hasn't landed. Unavailable is not a pass.

The 25 Budget inputs (the list for PolicyEngine/uk-autumn-budget-dashboard-2026#124): betting_exchange_commission, bingo_net_receipts, defined_benefit_pension_share, early_years_school_start_deferred, financial_spread_betting_net_losses, horse_and_dog_pool_betting_net_losses, housing_benefit_residential_capital_exception, is_full_year_category_a_director, land_based_casino_net_losses, land_based_fixed_odds_betting_net_losses, local_bus_uncapped_single_fare, machine_games_higher_rate_net_takings, machine_games_lower_rate_net_takings, machine_games_standard_rate_net_takings, national_lottery_ticket_spending, other_spread_betting_net_losses, pension_annual_allowance_taxable_lump_sum_death_benefits, pension_contributions_via_salary_sacrifice_pre_2015, pip_dl_points, pip_m_points, pool_betting_net_receipts, remote_gaming_net_losses, remote_other_betting_net_losses, remote_uk_horseracing_betting_net_losses, salary_sacrifice_returned_to_income.

The generated disclosure of the unattributed moves (sha256 d13fed0df7c12d28fead9fb33e95a5447db52752354611bd1738b2f720848f43, from attribution.json sha256 d98876bcd5c2b3cfb9adc0ddb1cdc4daf30f34b720e4078095e90da937068870) carries aggregates, so it goes to the Budget coordinator, not here.

Before the merge

  1. The two gates that need review. Accepting them is the Budget coordinator's call, as it was for a133. I've asked for an explicit decision on this pair.
  2. An independent review of this evidence. It's queued, and the review lanes reopen at about 03:00Z.
  3. Two points for you as the producer:
    • The spine. The body says the local-area cut is built from the national's spine. Please confirm that here for the record.
    • The calibration year. The national's build_manifest.json declares calibration.household_weight_year with dataset_year: 2024. The staged build_record.json says run_config.calibration_year: 2025. Which year should the release state? The triple lock needs it.
  4. The body. The 2×2 row still says the baseline is 6cba5d71 on 2.132.6, but the run used a133f37a on 2.147.2, as agreed above. The rows marked "Not run yet" can be filled in from the table above.
  5. The head. Please keep it at 99a3e48b4. A push needs a fresh run.

Once 1 to 3 are done and CI is still green at this head, the hub will merge on its gates, unless you'd rather merge it yourself. Just say which.

Aggregates only.

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor

Coordinator decision on this pair's two needs_review gates (under d1682 and d1344). This resolves both for this cut, on the same basis as a133's on #715. It reads the hub's evidence at 99a3e48b4 (evidence index sha256 ebc8c134…20d9).

Reform responsiveness: accepted. The employee NICs main-rate reform responds in every year, including 2030-31 and 2031-32, which the tool withholds.

  • Same tool, same check. The run pins the aggregate-impact tool at the commit a133's did (policyengine-uk 1191ac5a, policyengine_uk/utils/aggregate_impact). For Certify Microcosm UK national cut a133f37a for the Autumn Budget #715 I checked there that the tool's responsive:<id> verdict uses each year's raw change before any year is withheld, and that a failing or NaN year fails the whole check.
  • The receipt shows the verdict passing. All ten standard reforms record responsive: pass and reform_runs: pass, with no failure detail.
  • The gate agrees with the tool wherever it can recompute: every published year of all ten reforms, 68 reform-years, each past its minimum in the stated direction.
  • It isn't a gap in the baseline. The baseline's individual NICs receipts are published with nothing suppressed or excluded in every year from 2025-26 to 2031-32. Which of reform_withheld's conditions fired is what policyengine-uk#2654 will record. Not blocking.

The standard reforms test the cut; they aren't Budget measures. This says nothing about any dashboard figure.

Budget inputs: accepted, on the same condition as a133.

  • None is a regression. No cut has carried any of the 25. 23 are new in policyengine-uk since 2.132.6, and two (local_bus_uncapped_single_fare, salary_sacrifice_returned_to_income) changed from formulas to inputs. No critical input is unusable, and the supported years pass. The comparison is with the 6cba5d71 / 2.132.6 pair because Certify Microcosm UK national cut a133f37a for the Autumn Budget #715 hasn't merged.
  • The condition: none reaches published figures silently. A reform reading one of these inputs gets its default, not data. So on the dashboard, any measure whose figures depend on one of the 25 is held as a data limit until a cut carries the input, through the registry in Data limits for the 13 inputs the a133 cut leaves at their defaults uk-autumn-budget-dashboard-2026#132. The list and its readers are on Hold measures that depend on the 13 inputs the a133 cut leaves at defaults (policyengine.py#715 condition) uk-autumn-budget-dashboard-2026#124. A 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.
  • Against a133's 13: nine carry over, and 16 are new to this cut. The other four (non_residential_property_secured_debt, other_residential_property_secured_debt, directly_held_shares, unit_and_investment_trusts) are in this cut's data, so their holds lift when the dashboard adopts it.
  • The new ones most likely to matter on Wednesday:
    • Gambling duties (15 inputs). Every gambling duty is computed from these household inputs alone, and each defaults to zero. So gambling_duty, which counts in gov_tax and household_tax, is zero for every household. A change to anything under gov.hmrc.gambling_duty therefore costs nothing, silently. Casino gaming duty reads household.consumption.gambling.casino_effective_rate, not the gambling_duty.gaming bands, so a change to those bands costs nothing even with data. Any gambling duty measure is held.
    • housing_benefit_residential_capital_exception defaults to false. So the working-age residential capital threshold (gov.dwp.housing_benefit.means_test.capital.working_age.residential_threshold) never applies.
    • The nine carried over keep Certify Microcosm UK national cut a133f37a for the Autumn Budget #715's notes: PIP points (a change to the points thresholds costs nothing), the bus fare cap (priced from the fare table), salary sacrifice, and the rest.

This doesn't change the rest of the list before merge: the independent review, and the spine and calibration-year points for the producer.

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor

@juaristi22, the UK hub again: the independent review of this PR's evidence at 99a3e48b4 is done. Its verdict is approve, with no blocking findings. It recomputed the index hash, the hashes and sizes of all 62 indexed files, the bundle manifest hash and the run-inputs digest, and all match. It also confirmed that CI run 40330969634 succeeded at this head.

It corrects two of my statements above:

  • "Every step at rc 0." Every step's final attempt returned 0. The first national hash attempt returned 1 (the Hugging Face timeout), and the retry passed, as the table says.
  • "None of them was ever in the data." None of the 25 is in either compared cut. The receipt doesn't reconstruct earlier cuts.

It also notes that the attribution receipt's line "differ only in policyengine-uk" means the only shared package whose version differs. The old environment has packages the new one lacks. The control result (575 of 575 equal) stands.

On the calibration year, the review read the national build's release script (Microcosm 67ee2ddf3, tools/assemble_uk_release_dir.py). It keeps two years apart: the year of the stored weights (2024) and the year the weights were solved for (2025). If that's right, both numbers can stand. Please confirm it, and the spine, for the release record.

What's left before the merge:

  1. Your confirmation of the spine and the calibration year.
  2. The body: the 2×2 row's baseline (a133f37a on 2.147.2) and the "Not run yet" rows.

The Budget coordinator accepted both gates above. CI is green and the PR is mergeable at 99a3e48b4.

🤖 Generated with Claude Code

@juaristi22

Copy link
Copy Markdown
Contributor Author

@MaxGhenis, here are the two producer points, for the release record.

The spine. Both cuts were built from one spine, uk_frs_spine_2024_25.h5 (sha256 593713a6afe4612070b4b31cea2bfe88ca69028862316799c6a0d9130c88fc28).

  • The national's build_record.json pins it as its input (source_pins.input_h5).
  • The local-area cut's rowwise_candidate_manifest.json names the same file as its input dataset and as identity.spine, with pin_verified: true.
  • Both record the same spine checkpoint: spine_build_state 579de5e0… and spine_provenance 273696b2….
  • The national was built at Microcosm 67ee2ddf3 and the local-area cut at ee178eb19, both from clean trees.

The calibration year. The review read it right, and both numbers stand:

  • 2024 is the data year. It is the survey year the file is stamped with, and the year its stored household weights are at: build_manifest.json has calibration.household_weight_year = {dataset_year: 2024, basis: dataset_year}. The release should state 2024 as its data year. That is the year the triple lock needs: policyengine.py anchors the State Pension on dataset.data_year (UK year files make the State Pension follow CPI instead of the triple lock #556).
  • 2025 is the calibration year, the year the weights were solved for (run_config.calibration_year: 2025 in build_record.json). The release writes the solved weights divided by policyengine-uk's own projection of household_weight from 2024 to 2025 (WS-E spine deferrals: known bugs and signed inconsistencies awaiting their increment microcosm#796, A19, in uk_runtime/weight_year.py), so a 2025 run returns the solved weights.
  • The national's build record gives both in its readback (weight_year: dataset_year: 2024, solve_year: 2025), and the local-area cut records the same pair (survey_year: 2024, calibration_year: 2025).

@juaristi22

Copy link
Copy Markdown
Contributor Author

@MaxGhenis, the body is updated. The 2×2 row's baseline now reads a133f37a on 2.147.2, the "Not run yet" rows are filled in from your table, and the coordinator's decision and the independent review are linked. The head is still 99a3e48b4. I'm merging it myself now.

@juaristi22
juaristi22 merged commit 610ebc4 into main Oct 27, 2026
12 checks passed
juaristi22 added a commit that referenced this pull request Oct 27, 2026
Brings in #720, the Microcosm UK pair on policyengine-uk 2.151.0, so CI
runs this branch on that pin before it merges. No file changed on both
sides.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

2 participants