Skip to content

UK: make the promoted national line the default load (#823) - #1432

Merged
juaristi22 merged 2 commits into
mainfrom
uk-823-default-load
Nov 2, 2026
Merged

juaristi22 merged 2 commits into
mainfrom
uk-823-default-load

Conversation

@juaristi22

@juaristi22 juaristi22 commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

microcosm.data.load("uk") now follows latest-national.json (#823). That pointer names the certified national cut promoted on 26 October (microcosm-uk-2024-25-national-20261025T091414Z-a6299504, built on policyengine-uk 2.151.0). The default used to be the June 2023 populace_uk_2023 artifact, which stays at load("uk", 2023). The national variant key retires.

This changes the default UK load for every consumer of microcosm.data. It moves out of #1422 so that it can land on its own (Vahid's review of #1422), and it depends on nothing there.

Tests

  • On this branch (main at 98aef7529 plus 003dbd006; 45df16363 changes only a changelog fragment), the 18 test files that resolve or load a UK dataset or name the default variant: 1,246 tests pass.

🤖 Generated with Claude Code

microcosm#823 (tracked in #1095). The registry kept the UK 2024-25 national
line off the default variant until its first certified cut existed on the
Hub, so that resolve("uk") never chased an absent pointer; its comment named
the flip a one-line follow-up after promotion (review of #966, Max's #823
ruling). Checked on 2026-10-29: latest-national.json on
policyengine/populace-uk-private names
microcosm-uk-2024-25-national-20261025T091414Z-a6299504 (updated
2026-10-26), with its release certification, built on policyengine-uk
2.151.0, the version #1095 names for the flip.

The entry's variant becomes DEFAULT_VARIANT, so resolve("uk") and
load("uk", 2025) follow latest-national.json, and load("uk", 2023) stays on
latest.json. This changes the default UK load for every consumer of
microcosm.data; no other local repository names the retired national
variant. The registry, loader and assembler tests and the release runbook
follow; the live pointer test now branches on the line pointer, not the
variant, and resolves the promoted cut. The unreleased changelog entry from
#966 that described the opposite state goes.

It moves out of #1422 on its own, so that it can land now (Vahid's review
of #1422).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
juaristi22 added a commit that referenced this pull request Oct 31, 2026
Vahid's review of #1422 (its fourth point): pointing load("uk") at
latest-national.json and retiring the national variant changes the default
load for every consumer and depends on nothing in this PR. It moves to
#1432, which can land now and also removes #966's unreleased changelog
entry that described the opposite state.

This reverts commit 5c7a40d.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
823-uk-2025-registry.changed.md ended by saying the UK default stays on the
June 2023 line until the national line's promotion and the flip of its
entry. This PR makes that flip, and both fragments ship in the same release
notes (Vahid's review of #1422, round 2).

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

Copy link
Copy Markdown
Contributor

Review of 45df163 (draft, so a comment). Thanks for splitting this out of #1422; it does what my #1422 review asked.

No musts or shoulds.

Checked

  • registry.py: the 2025 entry moves to DEFAULT_VARIANT, so latest_year("uk") is 2025 and resolve("uk") follows latest-national.json. The June 2023 artifact stays at ("uk", 2023) on latest.json, and the tests pin both.
  • The line still comes from the pointer path, not the variant (_line_from_pointer_path), so the release assembler's default_datasets: {"national": ...} and the promotion runbook are unaffected.
  • The two stale changelog texts from UK: take up #1095's actionable items on policyengine-uk 2.165.1 #1422 (the Per-line release pointers, the UK 2024-25 national default and its promotion command (#823) #966 fragment and the last sentence of 823-uk-2025-registry) are gone, and the runbook now describes the flip as done.
  • No other PolicyEngine repo calls variant="national" (org code search; it finds only this repo's files). The one outside caller of microcosm.data.load (bottom-50-tax-analysis) loads US data, so nothing downstream breaks.
  • CI is green on every job at this head.

Nits

  1. The changelog entry says the promoted cut was built on policyengine-uk 2.151.0. It could add one clause that a default load on today's lock (2.165.1) therefore lacks the inputs added since, for example the ISA subscriptions (Budget 2026 ISA data, PR B of #1418: ISA subscriptions per adult, the Lifetime ISA anchor, additive ISA income, policyengine-uk 2.164.2 #1421) and company cars (UK: company cars from the FRS job table (dashboard #316) #1430), until the next cut is promoted. People reading "default load" may assume it matches the lock.
  2. Retiring the national key is a removal. If it ever shipped in a release, a .removed.md fragment would say so; if it never did (the body says the Per-line release pointers, the UK 2024-25 national default and its promotion command (#823) #966 entry was unreleased), ignore this.

Verdict: ready to merge once it leaves draft.

What I ran: read the full diff; shallow clone at the head to grep for remaining national variant uses and the loader's variant handling; GitHub code search across the org. I relied on CI for the tests and didn't run them locally.

🤖 Generated with Claude Code

@juaristi22
juaristi22 marked this pull request as ready for review November 2, 2026 11:36
@juaristi22
juaristi22 merged commit 0b1eecf into main Nov 2, 2026
10 checks passed
juaristi22 added a commit that referenced this pull request Nov 2, 2026
#1422 landed (11c1f4e), followed by #1430's company cars and #1432's
default load. Only pinned and generated files conflicted. The gate
battery and spine-part digests are re-pinned on the merged gates spec
(five move), and the release input coverage manifest and the charter-H2
fixture are regenerated; the fixture checks byte-identical.
policyengine-uk stays at 2.165.1, the lock main and #1428 share, and the
feed pin moves to main's 08962f1.

The H2 parity test and 86 related engine-free files pass (5,682 tests,
53 skipped).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Nov 3, 2026
… findings

docs/release-contract.md now reads each "today" statement from origin/main
4a36edc and states each version-1 requirement as the plan's, with a dated
column for how far each milestone had got. When refusal starts stays Max's
call.

Sol's review of fda37a7:
- 1: rules 2 and 3 tighten the validator for calibration releases; rule 4
  tightens both loaders.
- 2: C2 v1 rule 6 keeps today's rule for schema-1 manifests in both loaders.
- 3: the certification needs every scoped gate passed, shippable: true and
  the full-spec digests; one HMAC covers the whole document.
- 4: the failed-diagnostics exception, in the validator and the pointers.
- 5: an exact pin compares Version(V) == Version(built).
- 6: present-tense M3 wording in agent-guide.md, README.md, both changelog
  fragments, release_identity.py and two test docstrings.
- 7: the re-delivery command writes staging_redelivery.json and never
  rewrites the build manifest.
- 8: the producer copies its Logbook row when record_build_attempt returns.
- 9: the dense line's signed verdict is uk_local_gates.json; whether it
  composes a certification stays open.
- 10: the publish order names publish_cli's gates and
  require_parent_publication.

Main moved under the document: the compatibility_recertification release
type (#1366), the emitter behind microcosm-emitter-interface with the
staging hand-over (#1410), and the UK registry flip (#1432). The document
covers each and records one new open item: the recertification lane writes
two entries that C2 v1 rules 2 and 3, as written, refuse.

The retire list's #873 row records that #873 closed unmerged later on
2026-10-15. The prose uses active voice throughout.

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