Skip to content

Defer Carmarthenshire's band I council tax cell and sign dense build 1's gate-only failures (local cut 38605444) - #1549

Merged
juaristi22 merged 2 commits into
mainfrom
uk-event-pair-20261107
Nov 9, 2026
Merged

juaristi22 merged 2 commits into
mainfrom
uk-event-pair-20261107

Conversation

@juaristi22

@juaristi22 juaristi22 commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The local-area cut microcosm-uk-2024-25-dense-20261107T173210Z-38605444 was built at 03c31df56, the head of this branch. The branch is two commits on top of dc00d158f, the merge of #1535. PolicyEngine/policyengine.py#744 certifies that cut on policyengine-uk 2.174.1, and its review asked for these two commits on a reviewed PR before it leaves draft.

  • edd051ecc defers one local council tax cell, Carmarthenshire's band I, where the cut's first build stopped.
  • 03c31df56 signs dense build 1's gate-only target-fit failures for the local line.

Neither commit changes the national line. The deferral touches local references only, and every sign-off is scoped to release_lines: ["local"].

Please merge with a merge commit, not a squash. Then 03c31df56, the cut's recorded build commit, stays reachable from main after the branch is deleted.

edd051ecc: defer Carmarthenshire's band I council tax cell

03c31df56: sign dense build 1's gate-only failures for the local line

  • Build 1: uk-local-candidate-f100-s42-20261107T102622Z-f52640d9, at edd051ecc with review date 2026-11-07. It stopped at the terminal gates on uk_local_target_fit alone.
  • The register changes, drafted by tools/draft_uk_dense_signoff.py and approved by María on 7 Nov:
    • 5 national target-fit rows and 6 local target-fit cells are signed for the local line, each expiring on 5 Dec 2026;
    • 13 stale entries are retired, because their rows came back inside the bound, which the gate fails on;
    • the 6 area-support entries stay.
  • What build 2 did: every signed row stays bound in the solve. Build 2 reused build 1's solve (UK local-area release: publish a K=15, 150,000-household dense dataset in at most two builds #1301) and passed all 7 terminal gates and every release-blocking gate. Build 2 is the cut.
  • Tests: test_uk_terminal_gates.py follows the registers.

Known limitation

On this cut, four of the national ONS single-year rows between 19 and 22 come out short:

  • women aged 19 by 32%, where the national cut eeb6093e is 2.5% short;
  • men aged 19 by 22%;
  • men aged 21 and 22 by 15% each.

ons.population.female_19 is signed for the local line until 5 Dec, and the others are inside the 25% bound. Constituency and local-authority breakdowns of measures that turn on these ages rest on that short count, for example the National Living Wage's 18 to 20 rate or Universal Credit's under-25 standard allowance. #1095 tracks it (comment).

What merging changes on main

  • Local-line builds from main carry the Carmarthenshire deferral, and these sign-offs until 5 Dec.
  • National-line builds don't change.
  • Not renewed here: the local line's sign-offs that lapse on 16 Nov still lapse then.

Testing

Disclosure

Counts of target rows and cells only, plus one local council tax cell named with no count or value. No unit-record values, and no fit values for local cells.

🤖 Generated with Claude Code

juaristi22 and others added 2 commits November 7, 2026 10:24
…build

The local-area build on main's spine (dc00d15) stopped at uk.full.problem:
Carmarthenshire (W06000010) has a nonzero Welsh band-I council tax target and
no band-I household in the K=15 pool, while every other Welsh band-I cell
above the dwelling floor drew at least one band-I clone. As Shetland's band H
was under microcosm#929, the cell is deferred
(council_tax_band_i_spine_support_absent), on María's ruling of 7 Nov.

Regenerated on the local cut of feed 64753803: the local references and
membership, the local census and the local compile-parity receipt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dense build-1 attempt uk-local-candidate-f100-s42-20261107T102622Z-f52640d9
(at edd051e, review date 2026-11-07) stopped at the terminal gates on
uk_local_target_fit alone. The draft from tools/draft_uk_dense_signoff.py,
approved by María on 7 Nov: 5 national target-fit rows and 6 local target-fit
cells signed for the local line, 13 entries build 2 would fail retired, and
the 6 area-support entries kept. Every signed row stays bound in the solve,
and build 2 reuses build 1's solve (microcosm#1301).

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

Copy link
Copy Markdown
Contributor

Review of 03c31df

I checked both commits against the cut's build record on Hugging Face, the branch against main, and the registers at dc00d158f and at head. I also read the published gate report of build 2 (…20261107T173210Z-38605444, read-only, aggregates only below) and compared it with the national cut eeb6093e's calibration diagnostics. I didn't run the tests here; CI covers them. The counts below come from the JSON files directly. Paths are relative to packages/microcosm-build/src/microcosm/build/.

Should

  1. ons.population.female_19 is signed on the local line at 32% below ONS, though the national cut fits it to within 3% (uk/target_fit_reviewed_exclusions.json:125).

Nit

  1. The Carmarthenshire ruling is cited to UK: every open data item: uk-data parity, engine locks, the local surface, consumption and high-value homes #1095, but UK: every open data item: uk-data parity, engine locks, the local surface, consumption and high-value homes #1095 doesn't record it, and the deferral has no review point (tools/generate_uk_local_target_references.py:666-681, rationale at :677).

Checked and fine

  • Build commits: the cut's build_manifest.json records code.git_commit 03c31df565276e58… with git_dirty false. That is this head, and its parent is edd051ecc. The PR carries exactly those two commits on top of dc00d158f.
  • Main: the branch is 2 ahead of main and 2 behind. The two main commits are Calibrate federal student loan balances to Federal Student Aid's portfolio (#1074) #1357 (US student loans, plus US label additions in microcosm-calibrate) and Say where UK national targets come from in fiscal_targets' docstring #1542 (a docstring in uk_runtime/fiscal_targets.py). Neither changes UK build code or UK data, so a main merge isn't needed for this cut.
  • Merge commit: 1affbc127, dd99a1dcd and 5293966d4 from Sign off the local cuts' target-fit rows (dbacb023, 83802786), and the company car base #1491 are all ancestors of main, so that merge kept them. Squash is still allowed on the repo, so the body's merge-commit note still matters.
  • Deferral: one reference is removed (welshgov.council_tax_stock.by_area.band_i@W06000010, value 72). Active references go from 27,168 to 27,167, and signed deferrals from 2,931 to 2,932. The compile-parity receipt drops the cell's one ledger-only row (7,890 to 7,889). The Wales-wide band I row stays bound, and build 2 fits it to within 0.8% of 5,342, so Carmarthenshire's 72 dwellings are still counted in the Welsh total. The test changes (27,167, 4,180, 21 Welsh band I cells, 2,510 band cells) match.
  • Registers: national goes from 11 to 13 (5 added, 3 retired) and local from 35 to 31 (6 added, 10 retired), so 13 retired in all, matching the body and changelog. Every new entry is juaristi22, local only, approved_on 2026-11-07 and expires_on 2026-12-05. Build 2's gates report 0 failing, 0 stale, 0 expired and 0 premature against 1,545 national and 27,167 local targets. So the 13 retired rows are inside the bound or no longer bound, and leaving them in would have failed build 2 as stale. The manifest's reviewed_exclusions_stood_on lists exactly the 13 and 31 entries at head.
  • Signed gaps: the five new national rows sit between 26.3% and 46.5% from target, against the 25% bound. Four are HMRC income-band rows and one is the population row in item 1. The six new local cells are all at or past the bound, and one of them only just.
  • Lapsing entries: 4 national and 11 local entries expire on 16 Nov, as the body says.
  • Changelog: both fragments are present, and their counts match the registers.

CI at 03c31df: lint, wheels, installed-emitter, select-countries and integration-uk pass. engine-free, engine-uk and engine-us (3.13 and 3.14) are still running.

Verdict: the commits are the ones the cut was built from, and the counts hold. Put the 19-year-old shortfall on record before #744 leaves draft.

🤖 Generated with Claude Code

@juaristi22

Copy link
Copy Markdown
Collaborator Author

Thanks, Vahid. Both are now on record, with no code change in this PR.

  1. The figures match the cut's own diagnostics: women aged 19 at −32.0% (−2.5% on eeb6093e), men aged 19 at −22.1%, and men aged 21 and 22 at −15.1%. This body and Certify the Microcosm UK pair from microcosm#1535 on policyengine-uk 2.174.1 (national eeb6093e, local area 38605444) policyengine.py#744's local section now name the shortfall as a known limitation. UK: every open data item: uk-data parity, engine locks, the local surface, consumption and high-value homes #1095 tracks it (comment), with a check to settle the rows' loss weight or the pool's support before the next local build and the 5 Dec expiry.
  2. UK: every open data item: uk-data parity, engine locks, the local surface, consumption and high-value homes #1095 now records the Carmarthenshire ruling of 7 Nov (comment), with a check to retest the cell when the spine or K changes, and the body links it. An expires_on through add() can come with that retest.

@juaristi22
juaristi22 merged commit 14d8b4f into main Nov 9, 2026
11 checks passed
DTrim99 added a commit that referenced this pull request Nov 9, 2026
Main brings #1533/#1536/#1537 (UK build-folder switch and publication
through the emitter), #1518 and #1549. No conflicts; none of the 46 files
overlaps this branch. repin_us_spec_engine_contracts --check,
generate_us_bundle_from_constants --check (spec_sha256 23366c65),
spec_engine_coverage --check (42451/42451 fields, 41/41 checks) and
repin_us_pool_engine_contracts --check are clean; the release input
coverage manifest and the H3 parity fixture regenerate unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <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