Skip to content

Sign the UK local release's gate-only failures for the local line (#1301) - #1316

Open
juaristi22 wants to merge 5 commits into
mainfrom
uk-local-release-signoff-1301
Open

juaristi22 wants to merge 5 commits into
mainfrom
uk-local-release-signoff-1301

Conversation

@juaristi22

Copy link
Copy Markdown
Collaborator

The gate-only sign-off for the UK local release (#1301), approved by juaristi22 on 2026-10-19. Merge it with a merge commit, after #1310: the release build runs at this PR's head, and its commit must stay in main's history.

It stacks on #1310 (the fixes the release builds need), so until #1310 merges, the diff here also shows #1310's three commits. This PR's own commits are the last two.

Which builds

The sign-off (810315ac2)

The drafter's patch, unchanged except for the changelog's wording. Register data and test pins only. Every signed row stays bound in the solve: each entry is scoped to the local line and suppresses only its release fence. A build in which a signed row passes fails its entry as stale.

Register Added Renewed Kept Retired Rescoped For review
National target-fit rows (uk_target_fit) 15 0 0 0 0 0
Local target-fit cells (uk_local_target_fit) 31 0 0 0 0 0
Areas below the support floor (uk_local_area_support) 2 0 4 0 0 0
  • National target-fit rows: 1 stale-risk, 2 near-bound. Stale-risk counts signed rows within 0.01 above the bound; near-bound counts unsigned rows within the same margin below it. The local registers' counts are not printed here.
  • The two new areas are the Na h-Eileanan Siar constituency (S14000027) and council area (S12000013). Both missed the area-support floor. They stay in the solve and are flagged support_below_floor in the build's area-support table.
  • Window: fit entries expire 2026-11-16, area entries 2027-01-19. The reuse build's gate clock must be from 2026-10-19 to 2026-11-03.
  • Assembly deadline: 2026-11-03, when slc.borrowers.plan_2_above_threshold and slc.borrowers.plan_2_liable expire. The reuse build, its --verify and the release assembly must all run by then.
  • The drafter predicts the reuse build passes uk_target_fit, uk_local_target_fit and uk_local_area_support.

The pin round-trip test (356dc4f7f)

test_the_committed_pins_rewrite_and_reparse rewrote every committed pin back with local_only=False. That held only while the gate-only registers were empty. The drafter adds the local-line scope pin whenever every entry of a register is local-only, so the first real sign-off failed the test. It now rewrites back with the scope the committed register has, as the drafter decides it. Test-only.

Tests

These ran locally at this head and pass:

  • the drafter's list: council tax targets, geography sources, local-authority input, terminal gates, weighted integrity;
  • plus the sign-off draft, solve scope, country spec, local gate battery, battery bindings, national graph and full-build CLI tests;
  • the engine test_uk_graph_terminal.py.

Disclosure

This body and the patch carry only:

  • gate ids and predicted verdicts;
  • the attempt id and report digest;
  • register entry counts, and the national register's stale-risk and near-bound counts;
  • register keys and area names;
  • policy bounds and floors;
  • the reviewer, the adjudication and policy dates;
  • test paths.

Per-row errors, the local registers' stale-risk and near-bound counts, and per-area support figures stay in the private review file outside every git work tree.

🤖 Generated with Claude Code

juaristi22 and others added 5 commits October 18, 2026 02:09
Signing out the North East and Wales £2m region rows (4850088) left
their local-authority cells, all deferred by the 400-home floor, on legs
with no control. The small-cell rule adds such cells to the
reconciliation frame to take their share of a region control, so the
unparented-leg check then refused the surface:
compile_uk_full_target_surface stopped on the abf0921 feed, and build 1
would have failed at uk.full.target_compilation. Nothing in CI compiles
the full surface on the feed.

The local surface now passes the reconciliation the area rows that bind
nothing (its frame-only rows). A leg on which every open row is one of
them and every target is licensed empty needs no control: it is
receipted under deferred_legs_without_control instead of refused. A
bound row on such a leg, a frame-only row without the licence, and a row
of a target the leg is not licensed for are still orphans, as the
Scottish authority of an England-only target is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#866)

The ons.savings_interest_income measure exclusion lapses on 2026-10-22.
After that date no national calibration could run, since the window is
checked when the exclusions are applied, and the dense two-build flow's
gate clock and assembly deadline stop there too. The row stays a measured
diagnostic and is never fitted, as ruling R3 of 2026-09-22 set: the ONS
D.41 row is a national-accounts concept, while the model carries cash
interest, and the SPI interest rows are the fitting anchor. Renewed by
juaristi22 on 2026-10-16 in the sixth #1095 ports PR (#1308), and shipped
here ahead of it, unchanged, so that the first local release build stands
on it; #1308's re-review recommended shipping it alone. The
packaged-exclusions test pins the new window and the renewal note, and
the 2026-10-16 approvals are now the employer NICs diagnostic and this.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1301)

The first dense release build (microcosm#1301, attempt 1f0939c4) failed
uk_export_surface on three household columns outside the incumbent surface
with no allow-list entry: high_value_support_copies,
high_value_support_copy_index and household_is_high_value_support_copy.
They are the microcosm#1240 high-value homes support split's declared
outputs (the release input coverage manifest lists them), the exact analog
of the CGT support split's three columns, which the list already carries.
microcosm#1270 added the stage but not the allow-list entries, so every UK
build since then fails the gate at the calibrated battery.

Add them to gates.json and UK_ALLOWED_EXTRA_EXPORT_COLUMNS in the same
place as the CGT split's columns. The gate fails only on missing or
unexpected columns, so a line that does not carry them is unaffected.
Re-pin the full gate battery's policy, gates-manifest and spec digests and
the release-cut part's digests; the spine, calibration-seam and dense
digests do not move, so existing spines stay valid. gates.json is in the
solve fingerprint, so the next dense build re-solves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
test_the_committed_pins_rewrite_and_reparse rewrote every committed pin
back with local_only=False, which held only while the gate-only registers
were empty. The drafter adds the local-line scope pin whenever every entry
of a register is local-only, so the first real sign-off's pins lost that
line on the way back and the test failed. Rewrite back with the scope the
committed register has, as the drafter decides it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The second dense build (attempt
uk-local-candidate-f100-s42-20261018T161007Z-35fb4c89, at 07d6b43) was
blocked only by gate-only failures. This is tools/draft_uk_dense_signoff.py's
patch from that run, unchanged except the changelog's wording: 15 national
target-fit rows, 31 local target-fit cells and 2 areas below the support
floor, every entry scoped to the local line, approved by juaristi22 on
2026-10-19; fit entries expire on 2026-11-16 and area entries on 2027-01-19.
The registers' key-set pins move with them. Every signed row stays bound in
the solve, and the reuse build fails any entry whose row passes as stale.

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

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.

1 participant