Skip to content

Bind the UC element targets on paid claims and an OBR UC total on the chronicle 474a0ae feed (#882) - #921

Merged
juaristi22 merged 4 commits into
mainfrom
uk-uc-elements-882
Sep 15, 2026
Merged

juaristi22 merged 4 commits into
mainfrom
uk-uc-elements-882

Conversation

@juaristi22

@juaristi22 juaristi22 commented Sep 14, 2026 •

Copy link
Copy Markdown
Collaborator

Step 2 of the revised UC gap plan (#882, sequencing ruled 2026-09-11): bind the DWP Universal Credit element counts on paid claims now that chronicle#260 carries the Payment Indicator crosses and chronicle#263 carries the dimension labels main's schema-8 hierarchy needs. Rebuilt on main after #904 and #906 merged, so it rides #904's single 474a0ae pin for both grains and leaves #906's region tier untouched; national scope only. The local grain stays where main left it (chronicle#266 / #920) and can be regenerated on this branch if #266 lands first.

What lands

  • Seven dwp_universal_credit rows on the calendar-2025 paid-claim basis of the ten broad rows (monthly_window_average, payment_indicator: Yes, GB): LCWRA (publisher group value LCWRA, both rates), carer, housing any tenure, housing social rented and private rented (via benunit_tenure_type), childcare (the ODS all-claims count, caveat declared), deductions (March–December 2025, the published history). Model side: universal_credit > 0 and the element > 0.
  • obr.universal_credit: the sum of the two OBR welfare-cap cells (expected_member_count: 2, FY2025/26, UK) against the model's total award. The in/outside-cap split stays excluded; the model cannot attribute spend to the welfare-cap concept.
  • Register (three entries, tracking Align UK UC claim, child and period definitions #882, signed by María in review on 2026-09-15, expiring 2026-10-15): carer and childcare as measured-but-not-fit rows (model concept gaps, not weight questions), and the any-tenure housing row as a structural-bias diagnostic: DWP's "Yes" is social + private + "Other or unknown" tenure, the model has no other/unknown tenure, so its any-tenure count is identically the two tenure rows and the published total exceeds what the model can reach by 112,518 (2.8 %). The two tenure rows carry the housing element in the fit.
  • LCWRA stays in the objective by the rule its binding note states: a concept mismatch goes to the register only when it puts the row outside the 25 % release bound at the baseline (+15 % / +20 % here). Whether the is_disabled_for_benefits passthrough warrants an engine change is a Step 3 question.
  • Regenerated surfaces on the Bind the Chronicle transport and energy facts on the UK national surface (#890 PR-T) #904 pin (chronicle 474a0ae, 141,400 facts): national references and membership 595 → 603 active, 7 deferred, 7 signed out, no existing reference changes; the 2025 compile-parity receipt gains the eight rows and the 2023 production receipt seven (the OBR total does not compile at 2023, the March 2026 EFO starts at FY2024), nothing else moves; the vendored fact resources check clean. No feed re-pin in this PR.
  • The three --baseline-pi-floor commits from the 10 September rebuild (the Q50f baseline was built with them; changelog.d/355-baseline-pi-floor.added.md covers the knob), docs/uk-uc-baseline-2026-09-10.md (the Q50f/D2 UC readout recorded on Align UK UC claim, child and period definitions #882, both feed pins, the compile-time targets, the element sizing) and tools/diagnose_uk_uc_elements.py, which sizes element support conditioned on paid awards.

Measured at the baseline

Calendar-2025 paid targets against Q50f / D2 at their calibrated weights:

row target Q50f D2
LCWRA 2,272,425 +15.3 % +20.2 %
carer (register) 1,078,514 −44.8 % −44.1 %
housing, any tenure (register) 4,037,650 −0.8 % +0.6 %
housing, social rented 2,354,588 −0.3 % +5.1 %
housing, private rented 1,570,545 +5.6 % +1.2 %
childcare (register) 178,667 +155.0 % +152.6 %
deductions 3,130,000 −4.5 % −4.4 %
OBR total £79.29bn +1.4 % +1.9 %

The carer gap is the engine's carer condition (Carer's Allowance receipt) against DWP's 35-hours-a-week concept, with the engine's care_hours input never filled by the spine; the childcare gap is an element paid to every working family with reported childcare costs and no take-up lever. Both repairs are Step 3 of the plan.

Verification

Review

Approved by Vahid at c088792c (2026-09-15); the pre-merge should-fix (the register tranche assertion) landed in 2afa2869. Rebuilt on main after #906 merged; the diff is the same content on the new base. Round 1 addressed in c088792c: the any-tenure housing row moved to the register as a structural-bias diagnostic, the three register entries adjudicated to #882 and the committed baseline doc and signed by María with a one-month window, the LCWRA fit-versus-register rule stated, and the body corrections above (2023 receipt count, deductions rounding, both feed pins, the #355 fragment).

Follow-ups

🤖 Generated with Claude Code

@juaristi22 juaristi22 changed the title Bind the UC element targets on paid claims, an OBR UC total and re-pin the national feed to chronicle 474a0ae (#882) Bind the UC element targets on paid claims and an OBR UC total on the chronicle 474a0ae feed (#882) Sep 14, 2026
@juaristi22
juaristi22 marked this pull request as ready for review September 14, 2026 21:18

@vahid-ahmadi vahid-ahmadi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review at fb6b1674 (Claude Code, high effort; worktree checkout of the four commits on main 18271b28; without the engine or the pinned feed: 480 passed, 5 skipped, 0 failed across the thirteen touched and neighbouring suites; ruff check . and ruff format --check clean; both census tools, the coverage manifest, the spec-engine coverage check and ci_test_groups --verify current; CI green on all 23 lanes; merge-tree clean against main and #927).

The bindings are clean where they are unambiguous. Every DWP selector matches exactly one series — LCWRA the group package rather than LCWRA - Higher/Lower, Yes rather than the tenures, source_measure_id: benefit_units separating childcare's count from the mean-amount fact — and each resolved value is the twelve-month mean of the chronicle #260 rows to the float (deductions over March–December). The window is the same calendar-2025 basis the ten broad rows already use. All five element variables exist on the engine at benefit-unit entity and uc_deductions is driven by a spine input from #850, not zero by construction. The tenure mapping (council plus housing association → social, private renting → private) is consistent on both sides for the two tenure rows. The OBR row's two-member sum has precedent in the NITHC, Wales and Translink rows, the FY2025-26 → 2025 rule is the shared one, and the 424 untouched references are byte-identical to main with membership moving only by the eight new pins. The childcare all-claims caveat is declared in the binding note and pinned by test. The body table is in docs/uk-uc-baseline-2026-09-10.md with Q50f and D2 pinned, and carer and childcare are labelled as register rows there and in the gate, which passes.

Should-fix

1. The three housing rows are jointly inconsistent by DWP's "Other or unknown" tenure cell. From the same chronicle rows, paid, January–December 2025: social 2,354,588 + private 1,570,545 + other/unknown 112,518 = 4,037,651, which is the any-tenure target to the unit. On the model side uc_housing_costs_element pays only for council, housing-association and private renting and TenureType has no other/unknown value, so the model's any-tenure count is identically social plus private — your own baseline shows it (Q50f 4,006,395 = 2,348,245 + 1,658,150 exactly). Three active rows, two model degrees of freedom, contradictory by 112.5k or 2.8%: the solver has to over-fill the tenure rows to reach the total. The binding note says never to sum the tenure rows into the total, but does not say the model cannot reach the total by construction. Either drop the any-tenure row as redundant, or keep it and declare the structural bias, as a register entry or a note the gate can see.

2. The carer and childcare register entries are not adjudicated to anything a reader can open. adjudication: "uk-uc-gap-plan-2026-09-11 (María's sequencing ruling …)" resolves to nothing in the repo, and María's 2026-09-11 comment on #882 records measurements and sequencing but no ruling that these two stay out of the objective. Every other entry cites microcosm#NNN or a committed receipt. approved_by: juaristi22 and approved_on: 2026-09-11 are pre-filled while the body says the signature is María's to confirm in review, and the author is the approver. The window is 88 days to 2026-12-08 where every other entry runs exact months; it looks borrowed from the #355 tranche's expiry. Point the adjudication at an issue comment or a committed file, and let María's sign-off set the dates.

3. LCWRA is bound active while its own note declares a concept mismatch. The note says the engine's LCWRA flag is the is_disabled_for_benefits input, not a work-capability assessment, and the row fits at +15% to +20%. Carer went on the register for exactly "model concept gap, not a weight question". If magnitude is what decides between fit and register, say so where María can rule on it; the body's own follow-up asks whether the passthrough warrants an engine issue.

Body accuracy

  • "Both national compile-parity receipts gain the new rows": the 2023 production receipt gains seven, not eight — obr.universal_credit does not compile at 2023 because the March 2026 EFO reaches back only to FY2024. The 2025 receipt gains all eight.
  • The deductions note says counts are "rounded to 100,000"; the chronicle package header says only "rounded counts" with the caseload derived at 10,000.
  • docs/uk-uc-baseline-2026-09-10.md:11 pins feed ec7169b while the paid targets at lines 78–87 come from 474a0ae; pin both.
  • Three #355 commits ride this #882 PR (--baseline-pi-floor, size evaluation, receipts across dataset_size.py, size_evaluation.py, local_rowwise.py, build_uk_rowwise_candidate.py), and the new knob has no changelog fragment because the #355 fragment predates the branch.

Could not verify

The deductions value 3,130,000 (ODS parse), the hermetic regeneration and compile-parity tests (feed-gated; CI is the evidence), and the "provisional March 2026 month" in the OBR note.

Ordering

Merge-tree against #906 conflicts in eight files, all regenerable surfaces and count assertions (432 / 49 / 218 here) with no content dependency, so whichever lands second regenerates and re-bumps. Clean against #927 and current main.


1 is the one to settle before this is used as a fit basis, since the surface asks the solver for something the model cannot produce; 2 is governance and cheap; 3 is María's call.

juaristi22 added a commit that referenced this pull request Sep 15, 2026
…f the fit, adjudicate the register entries, state the LCWRA rule

Vahid's should-fix 1: DWP's any-tenure housing entitlement is social plus
private plus 'Other or unknown' tenure, and the model has no other/unknown
tenure, so the any-tenure count is identically the two tenure rows and the
published total exceeds what the model can reach by 112,518 (2.8 percent) in
calendar 2025. The row now sits on the measure-exclusion register as a
structural-bias diagnostic; the two tenure rows carry the housing element.

Should-fix 2: the carer, childcare and housing entries cite microcosm#882 and
docs/uk-uc-baseline-2026-09-10.md, and are signed by María in review of #921
on 2026-09-15 with a one-month window (expires 2026-10-15).

Should-fix 3: the LCWRA binding note states the rule that keeps it in the
objective (a concept mismatch goes to the register only when it puts the row
outside the 25 percent release bound at the baseline) and defers the
passthrough question to Step 3 under #882.

Body accuracy: the deductions note says DWP publishes rounded counts rather
than a 100,000 grain; the baseline doc pins both feeds (ec7169b for the build,
474a0ae for the element targets); a changelog fragment covers the #355
--baseline-pi-floor knob riding this branch. No generated surface changes
(432 active references, receipts byte-identical).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@juaristi22

Copy link
Copy Markdown
Collaborator Author

Thanks — round 1 addressed in c088792c (no generated surface moves: 432 references and both receipts byte-identical; register 49 → 50).

Should-fix 1 (housing rows). Agreed on the arithmetic: DWP's "Yes" is social + private + "Other or unknown" (112,518 in calendar 2025, 2.8 %), and the model's any-tenure count is identically the two tenure rows because uc_housing_costs_element pays only council, housing-association and private renters. The any-tenure row now sits on the measure-exclusion register as a structural-bias diagnostic (dwp/uc/elements/housing, reason states the mechanism and the 112,518 gap); the two tenure rows carry the housing element in the fit. The binding note says the same, so the contract and the gate agree.

Should-fix 2 (register adjudication and dates). The three entries now cite microcosm#882 and docs/uk-uc-baseline-2026-09-10.md (the committed sizing), and their signature is María's in review of this PR: approved_on: 2026-09-15, expires_on: 2026-10-15, a one-month window she set rather than the #355 tranche's date.

Should-fix 3 (LCWRA). The rule is now stated in the binding note and in the baseline doc: a concept mismatch goes to the register only when it puts the row outside the 25 % release bound at the baseline; LCWRA at +15 % / +20 % stays in the objective, carer and childcare do not. Whether the is_disabled_for_benefits passthrough warrants an engine change is deferred to Step 3 under #882, where María rules on it.

Body accuracy. Corrected: the 2023 production receipt gains seven rows (the OBR total does not compile at 2023 because the March 2026 EFO starts at FY2024), the deductions note now says DWP publishes rounded counts, the baseline doc pins both feeds (ec7169b for the build, 474a0ae for the element targets), and changelog.d/355-baseline-pi-floor.added.md covers the --baseline-pi-floor knob riding this branch. The "provisional March 2026 month" wording follows docs/uk-uc-paid-target-contract.md, which records FY2025/26 as including provisional March 2026.

Could not verify. The deductions target is the mean of the ten published monthly counts in the 474a0ae feed (dwp.uc_households_with_deduction, units_with_deduction, 2025-03 to 2025-12), 3,130,000.0; the feed-gated regeneration and compile-parity tests run locally with CHRONICLE_UK_FACTS set and pass on the national surface (the local one fails with the #920 refusal as on main).

Ordering. Noted on #906: regenerable surfaces and count assertions only, whichever lands second regenerates.

@vahid-ahmadi vahid-ahmadi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Closing pass at c088792c (Claude Code, high effort; worktree checkout, the response commit read against the dispositions — five files, 23 lines added, 12 removed; without the engine or the feed: 373 passed, 5 skipped, 0 failed across the nine named suites; ruff check and ruff format --check clean; both census tools, the coverage manifest, the spec-engine coverage check and ci_test_groups --verify current; CI 21 lanes green with the 3.13 wheels lane still running when I posted).

All three should-fixes closed as described, and the body corrections are in.

1. Verified. dwp/uc/elements/housing is on the measure-exclusion register as a structural-bias diagnostic with the mechanism and the 112,518-of-4,037,651 gap in the reason, and the row stays bound and active in the references and membership (432 active, twelve matched facts) so it is measured on every evaluation. The binding note states the model-side identity in the same words, so the contract and the gate agree.

2. Verified. The three entries now cite microcosm#882 and the committed baseline doc, with approved_on: 2026-09-15 and expires_on: 2026-10-15; the unresolvable plan reference is gone. One thing I will say plainly rather than re-raise: the approver login is the author's, and an author cannot post a review on her own PR, so the signature is the commit rather than an independent review record. The adjudication text says María signed in review; if that is the convention, fine, but the register cannot show it.

3. Verified and consistent. The rule — a concept mismatch goes to the register only when it puts the row outside the 25% bound at baseline — is on the LCWRA note and in the baseline doc, and it holds across all six element rows against the table: LCWRA at +15 / +20 in, carer and childcare out, the two tenure rows and deductions in. The any-tenure row is registered under a separate structural-bias class, so no contradiction.

Body. The 2023 receipt is now "seven rows" with the reason, the deductions note says "rounded counts", the baseline doc pins both feeds, and the --baseline-pi-floor fragment exists. No generated surface moved: references, membership, both parity receipts and the uk-data parity register are byte-identical to fb6b1674.

One residual, should-fix before merge. The 2026-09-15 tranche is unasserted. test_uk_measure_simulation.py pins the total at 50 and asserts the 08-26 and 09-03 tranches by name, date, window and tracking, but the three dwp/uc/elements/* entries have no tranche block and no census marker, so a drift in any of their fields passes the test the docstring says exists to catch exactly that. One block in the shape of the A16 one. Nit: the register says 4,037,651 where the baseline table publishes 4,037,650 — rounding of a monthly mean, but the register is the signed record.

Ordering. Clean against main and #927. Against #906 the eight conflicts are the same regenerable surfaces as before plus the register, where both PRs append entries; whichever lands second regenerates and re-bumps.


Approving, with the tranche assertion asked for before merge.

@juaristi22

Copy link
Copy Markdown
Collaborator Author

Thanks for the closing pass. The residual is in 2afa2869:

  • Tranche assertion. test_uk_measure_simulation.py now carries a dwp/uc/elements/ census marker (3) and a 2026-09-15 tranche block in the shape of the A16 one: the three names, tracking: microcosm#882, the approver, an adjudication that cites microcosm#882, the committed baseline doc and microcosm#921, and the 2026-10-15 expiry; it also asserts the four element rows that stay in the objective (LCWRA, both tenure rows, deductions) and the OBR total are absent from the register. Any drift in those fields now fails the test.
  • Nit. The register and the binding note quote the published any-tenure mean, 4,037,650, with a note that the three tenure cells reproduce it to the unit.
  • On the approver. Understood, and stated plainly: the register cannot carry an independent review record, so the signature is the commit plus this thread, where María set the window in review; her merge is the sign-off the register points at.

No generated surface moved; the register-consuming suites pass (108 tests).

juaristi22 added a commit that referenced this pull request Sep 15, 2026
…er and align the any-tenure figure (#921 review round 2)

The three dwp/uc/elements/* entries now have a census marker and a tranche
block in test_uk_measure_simulation.py in the shape of the A16 one: names,
tracking microcosm#882, approver, adjudication citing microcosm#882, the
committed baseline doc and microcosm#921, and the 2026-10-15 expiry; the four
element rows that stay in the objective are asserted absent. The register and
the binding note quote the published any-tenure mean, 4,037,650, which the
three tenure cells reproduce to the unit.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juaristi22 and others added 4 commits September 15, 2026 14:36
…eline-pi-floor, candidate-only and recorded (#355)

A boundary row drawn at an inclusion probability of a few in a million starts
the compact refit at millions of households; after the baseline is normalised
to the pool mass the certainties are left too little to reach the targets under
the 10x stretch bound. Q50 (spine-q, 2026-09-10): 24 such rows held 92% of the
baseline, the refit ended 24% short of the pool mass at 10.2x the dense loss.
Re-refitting the same checkpoint with the probabilities floored at 0.001 or
above lands at 1.14x the dense loss with the pool mass intact.

The floor applies to the baseline only: the search, the draw and the selected
rows are unchanged, so a checkpoint resume may use it. Default 0 keeps today's
behaviour; the size receipt records the floor, the rows it trimmed and the
certainties' share of the baseline mass, and names the stretch reference
normalized_horvitz_thompson_w_over_q_floored.
…RS 1.57.3), Q50's mass-starved refit and its mechanism, the floor experiment, Q50f and D2 (#355)
… chronicle 474a0ae feed (#882)

Seven dwp_universal_credit rows (LCWRA, carer, housing any/social/private
tenure, childcare, deductions) bind the chronicle#260 Payment Indicator crosses
on the calendar-2025 paid-claim basis of the ten broad rows; obr.universal_credit
sums the two OBR welfare-cap cells (expected_member_count 2). Three rows are
measured but held out of the objective on the reviewed exclusion register:
carer and childcare as model concept gaps (-45 % / +155 % against the bound
targets at the 10 September baseline) and the any-tenure housing row as a
structural bias (DWP's 'Yes' includes an other/unknown tenure the model cannot
carry: 112,518 of 4,037,650 in calendar 2025). LCWRA stays in the objective by
the stated rule: a concept mismatch goes to the register only when it puts the
row outside the 25 percent release bound at the baseline. The entries cite
microcosm#882 and docs/uk-uc-baseline-2026-09-10.md, signed in review of #921
on 2026-09-15 with a one-month window, and the register test asserts the
tranche.

Rebuilt on main after #904 and #906: the feed is the one #904 pinned for both
grains (chronicle 474a0ae, chronicle#263 labels over the #260 packages), the
region tier from #906 is untouched, and nothing here binds a sub-national row.
National references and membership regenerate with main's schema-8 generator:
595 -> 603 active, 7 deferred, 7 signed out; no existing reference changes.
Both national compile-parity receipts gain the new rows as ledger-only entries
(eight at 2025, seven at 2023: the OBR total does not compile at 2023) and
nothing else moves; the vendored fact resources check clean.

Also: docs/uk-uc-baseline-2026-09-10.md records the Q50f/D2 UC readout, both
feed pins, the compile-time targets and the element sizing from the new
tools/diagnose_uk_uc_elements.py; a changelog fragment covers the #355
--baseline-pi-floor knob riding this branch.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@juaristi22

Copy link
Copy Markdown
Collaborator Author

Rebuilt on main after #906 merged (head ecfefee1 on 3f8f1d0d), same content on the new base: the eight rows and three register entries were merged into main's contract and register rather than hand-resolved in the generated files, and everything regenerated on the 474a0ae feed. Main's region tier is untouched.

  • References and membership: 595 → 603 active, 7 deferred, 7 signed out; no existing reference changes.
  • Compile-parity receipts: the 2025 one gains the eight rows, the 2023 one seven; nothing else moves. Vendored fact resources check clean.
  • Counts: targets 252, registry scope 218, unmapped declarations 35, register 53, monthly UC references 118; the 2026-09-15 tranche assertion carries over.
  • Local run of the twelve touched and neighbouring suites with the pinned feed (CHRONICLE_UK_FACTS): 408 passed, 2 skipped, 1 failed — the UK local target surface cannot compile since #855: sub-national geographies have no hierarchy label (needs chronicle geography.name) #920 local-generator refusal (test_committed_surfaces_regenerate_from_pinned_feed[local]), as on main.
  • GitHub reports the head mergeable and clean; CI is running on it.

@juaristi22
juaristi22 merged commit 4ec7207 into main Sep 15, 2026
23 checks passed
juaristi22 added a commit that referenced this pull request Sep 16, 2026
…in evidence (#882)

Paid-UC carer-element units rise 51 percent at design weights on the
repaired twin (Q50f projection -17 percent of the calendar-2025 target) and
the childcare take-up draw reaches the element (projection -24 percent), both
inside the 25 percent bound the #921 rule sets for activation. The rows
leave the reviewed exclusion register; their binding notes record the
repairs and the realization caveat; the any-tenure housing row stays held
out. Register 69 -> 67.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juaristi22 added a commit that referenced this pull request Sep 17, 2026
…in evidence (#882)

Paid-UC carer-element units rise 51 percent at design weights on the
repaired twin (Q50f projection -17 percent of the calendar-2025 target) and
the childcare take-up draw reaches the element (projection -24 percent), both
inside the 25 percent bound the #921 rule sets for activation. The rows
leave the reviewed exclusion register; their binding notes record the
repairs and the realization caveat; the any-tenure housing row stays held
out. Register 69 -> 67.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juaristi22 added a commit that referenced this pull request Sep 22, 2026
…e the A16 evidence

The 2026-09-21 retirement of dwp.uc.households_housing_element read the
v20 measurement (-2.8 % unbound) as noise inside the fence. It is the
structural other/unknown-tenure gap the entry records (112,518 of
4,037,650, 2.79 %), which the engine's housing element cannot pay, so
retiring it would put a known unreachable total back into the objective
and lose the only record of why (review finding). The entry is restored
verbatim with the measurement added to its reason; María's #921 reading
of 2026-09-15 stands to its 2026-10-15 expiry. Register 61 -> 62 and the
2026-09-15 tranche assertions return.

The retirement evidence moves into the tree: docs/evidence/uk-a16-v20/
carries the A16 rows measured on the v20 candidate (receipts.json with
the candidate's digest, the output, a non-runnable copy of the script
from the private evaluation stack). The input-mass exclusion changelog
now records the measured numbers (charitable_investment_gifts -99.0 %,
owned_land -73.5 %) and why neither signed reason is confirmed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juaristi22 added a commit that referenced this pull request Sep 22, 2026
…e the A16 evidence

The 2026-09-21 retirement of dwp.uc.households_housing_element read the
v20 measurement (-2.8 % unbound) as noise inside the fence. It is the
structural other/unknown-tenure gap the entry records (112,518 of
4,037,650, 2.79 %), which the engine's housing element cannot pay, so
retiring it would put a known unreachable total back into the objective
and lose the only record of why (review finding). The entry is restored
verbatim with the measurement added to its reason; María's #921 reading
of 2026-09-15 stands to its 2026-10-15 expiry. Register 61 -> 62 and the
2026-09-15 tranche assertions return.

The retirement evidence moves into the tree: docs/evidence/uk-a16-v20/
carries the A16 rows measured on the v20 candidate (receipts.json with
the candidate's digest, the output, a non-runnable copy of the script
from the private evaluation stack). The input-mass exclusion changelog
now records the measured numbers (charitable_investment_gifts -99.0 %,
owned_land -73.5 %) and why neither signed reason is confirmed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juaristi22 added a commit that referenced this pull request Sep 25, 2026
…on, targets, calibration, terminal, driver

The graph full build from #901 now lives on main's code: uk_runtime/graph_build (the
one-graph composition over the bound spine checkpoint), graph_population (sample,
normalize, K-clone expansion, ladder locations, geography mapping and gate),
graph_targets (target compilation, selection, measures, the joint problem),
graph_calibration (dense reference solve, size search and draw, refit, holdout),
graph_terminal (export, diagnostics, candidate and certification receipts), the
full_* kernels, the country adapter that validates the UK source projection, the
driver full_build_cli with tools/build_uk_full.py and the microcosm-build-uk script.
Nothing of main's is removed: the seam engine, the release-role driver and every tool
body stay; the graph build sits beside them with dense defaults and no release role
yet (that is the next commit).

Main's newer API is honoured inside the new modules rather than shimmed: the
chronicle feed loader and pin (#904), area_region_codes on the local target surface
(#906), baseline_pi_floor threaded as a node parameter of the size-refit and holdout
nodes (#921), local_authority on the ladder columns, the geography gate's engine-domain
check and the export (#971), the region-level SPI contract in fixtures (#934). The
co-modified modules take #901's additions only: the strict spine-checkpoint helpers in
calibration_run, the draw/derive split in geography_ladder, the geographic pool in
rowwise_dataset, the prepare/solve/finish split in local_rowwise with #921 and #946
re-threaded, the size draw in dataset_size, the checkpoint loader in size_checkpoint,
and eager exports for the 14 new names.

UK spec: the spine's sources are declared as the 14 FRS 2024-25 raw tables with the
build_uk_frs_spine contract-only kernel (added to the F0 allow-list beside the
retained load_uk_national_frame), target period 2025 = the release's calibration
year; the resolved UK spec digest moves (main pins none). Packaging: microcosm-data
in the uk extra, the build script, uv.lock relocked, APPROVED_UV_LOCK_SHA256
recomputed, pytest pythonpath for sibling-test imports.

Flagged for review: _normalise_uk_local_bound_families no longer refuses an empty
declaration (the country-only scope passes none); the driver refuses every existing
acceptance spine at the strict checkpoint gate because this branch's gate
declarations moved, so a licensed full build needs a spine built by this branch.

Verified: targeted 367 + spot-check 203 passed; whole uk group 2,599 passed / 20
skipped; worker-identity lock test 24 passed; ci_test_groups --verify ok; ruff clean.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juaristi22 added a commit that referenced this pull request Sep 28, 2026
…on, targets, calibration, terminal, driver

The graph full build from #901 now lives on main's code: uk_runtime/graph_build (the
one-graph composition over the bound spine checkpoint), graph_population (sample,
normalize, K-clone expansion, ladder locations, geography mapping and gate),
graph_targets (target compilation, selection, measures, the joint problem),
graph_calibration (dense reference solve, size search and draw, refit, holdout),
graph_terminal (export, diagnostics, candidate and certification receipts), the
full_* kernels, the country adapter that validates the UK source projection, the
driver full_build_cli with tools/build_uk_full.py and the microcosm-build-uk script.
Nothing of main's is removed: the seam engine, the release-role driver and every tool
body stay; the graph build sits beside them with dense defaults and no release role
yet (that is the next commit).

Main's newer API is honoured inside the new modules rather than shimmed: the
chronicle feed loader and pin (#904), area_region_codes on the local target surface
(#906), baseline_pi_floor threaded as a node parameter of the size-refit and holdout
nodes (#921), local_authority on the ladder columns, the geography gate's engine-domain
check and the export (#971), the region-level SPI contract in fixtures (#934). The
co-modified modules take #901's additions only: the strict spine-checkpoint helpers in
calibration_run, the draw/derive split in geography_ladder, the geographic pool in
rowwise_dataset, the prepare/solve/finish split in local_rowwise with #921 and #946
re-threaded, the size draw in dataset_size, the checkpoint loader in size_checkpoint,
and eager exports for the 14 new names.

UK spec: the spine's sources are declared as the 14 FRS 2024-25 raw tables with the
build_uk_frs_spine contract-only kernel (added to the F0 allow-list beside the
retained load_uk_national_frame), target period 2025 = the release's calibration
year; the resolved UK spec digest moves (main pins none). Packaging: microcosm-data
in the uk extra, the build script, uv.lock relocked, APPROVED_UV_LOCK_SHA256
recomputed, pytest pythonpath for sibling-test imports.

Flagged for review: _normalise_uk_local_bound_families no longer refuses an empty
declaration (the country-only scope passes none); the driver refuses every existing
acceptance spine at the strict checkpoint gate because this branch's gate
declarations moved, so a licensed full build needs a spine built by this branch.

Verified: targeted 367 + spot-check 203 passed; whole uk group 2,599 passed / 20
skipped; worker-identity lock test 24 passed; ci_test_groups --verify ok; ruff clean.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juaristi22 added a commit that referenced this pull request Sep 28, 2026
…on, targets, calibration, terminal, driver

The graph full build from #901 now lives on main's code: uk_runtime/graph_build (the
one-graph composition over the bound spine checkpoint), graph_population (sample,
normalize, K-clone expansion, ladder locations, geography mapping and gate),
graph_targets (target compilation, selection, measures, the joint problem),
graph_calibration (dense reference solve, size search and draw, refit, holdout),
graph_terminal (export, diagnostics, candidate and certification receipts), the
full_* kernels, the country adapter that validates the UK source projection, the
driver full_build_cli with tools/build_uk_full.py and the microcosm-build-uk script.
Nothing of main's is removed: the seam engine, the release-role driver and every tool
body stay; the graph build sits beside them with dense defaults and no release role
yet (that is the next commit).

Main's newer API is honoured inside the new modules rather than shimmed: the
chronicle feed loader and pin (#904), area_region_codes on the local target surface
(#906), baseline_pi_floor threaded as a node parameter of the size-refit and holdout
nodes (#921), local_authority on the ladder columns, the geography gate's engine-domain
check and the export (#971), the region-level SPI contract in fixtures (#934). The
co-modified modules take #901's additions only: the strict spine-checkpoint helpers in
calibration_run, the draw/derive split in geography_ladder, the geographic pool in
rowwise_dataset, the prepare/solve/finish split in local_rowwise with #921 and #946
re-threaded, the size draw in dataset_size, the checkpoint loader in size_checkpoint,
and eager exports for the 14 new names.

UK spec: the spine's sources are declared as the 14 FRS 2024-25 raw tables with the
build_uk_frs_spine contract-only kernel (added to the F0 allow-list beside the
retained load_uk_national_frame), target period 2025 = the release's calibration
year; the resolved UK spec digest moves (main pins none). Packaging: microcosm-data
in the uk extra, the build script, uv.lock relocked, APPROVED_UV_LOCK_SHA256
recomputed, pytest pythonpath for sibling-test imports.

Flagged for review: _normalise_uk_local_bound_families no longer refuses an empty
declaration (the country-only scope passes none); the driver refuses every existing
acceptance spine at the strict checkpoint gate because this branch's gate
declarations moved, so a licensed full build needs a spine built by this branch.

Verified: targeted 367 + spot-check 203 passed; whole uk group 2,599 passed / 20
skipped; worker-identity lock test 24 passed; ci_test_groups --verify ok; ruff clean.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juaristi22 added a commit that referenced this pull request Sep 28, 2026
…on, targets, calibration, terminal, driver

The graph full build from #901 now lives on main's code: uk_runtime/graph_build (the
one-graph composition over the bound spine checkpoint), graph_population (sample,
normalize, K-clone expansion, ladder locations, geography mapping and gate),
graph_targets (target compilation, selection, measures, the joint problem),
graph_calibration (dense reference solve, size search and draw, refit, holdout),
graph_terminal (export, diagnostics, candidate and certification receipts), the
full_* kernels, the country adapter that validates the UK source projection, the
driver full_build_cli with tools/build_uk_full.py and the microcosm-build-uk script.
Nothing of main's is removed: the seam engine, the release-role driver and every tool
body stay; the graph build sits beside them with dense defaults and no release role
yet (that is the next commit).

Main's newer API is honoured inside the new modules rather than shimmed: the
chronicle feed loader and pin (#904), area_region_codes on the local target surface
(#906), baseline_pi_floor threaded as a node parameter of the size-refit and holdout
nodes (#921), local_authority on the ladder columns, the geography gate's engine-domain
check and the export (#971), the region-level SPI contract in fixtures (#934). The
co-modified modules take #901's additions only: the strict spine-checkpoint helpers in
calibration_run, the draw/derive split in geography_ladder, the geographic pool in
rowwise_dataset, the prepare/solve/finish split in local_rowwise with #921 and #946
re-threaded, the size draw in dataset_size, the checkpoint loader in size_checkpoint,
and eager exports for the 14 new names.

UK spec: the spine's sources are declared as the 14 FRS 2024-25 raw tables with the
build_uk_frs_spine contract-only kernel (added to the F0 allow-list beside the
retained load_uk_national_frame), target period 2025 = the release's calibration
year; the resolved UK spec digest moves (main pins none). Packaging: microcosm-data
in the uk extra, the build script, uv.lock relocked, APPROVED_UV_LOCK_SHA256
recomputed, pytest pythonpath for sibling-test imports.

Flagged for review: _normalise_uk_local_bound_families no longer refuses an empty
declaration (the country-only scope passes none); the driver refuses every existing
acceptance spine at the strict checkpoint gate because this branch's gate
declarations moved, so a licensed full build needs a spine built by this branch.

Verified: targeted 367 + spot-check 203 passed; whole uk group 2,599 passed / 20
skipped; worker-identity lock test 24 passed; ci_test_groups --verify ok; ruff clean.

Co-Authored-By: Claude Fable 5.1 <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