Stacked release fix train: gate alignment, pregnancy/prior-year defects, ACS release predictor join - #805
Merged
Merged
Conversation
…e union tree Third and final lane of the stacked-release fix train: the release builder now populates the six archived donor models' CPS-named predictors on every physical ACS support row through an exact release-time join to the SHA-pinned canonical 2024 one-year ACS PUMS archives (--acs-person-zip/--acs-person-sha256/--acs-household-zip/ --acs-household-sha256, required together for any ACS-bearing pool), under strict hash, lineage, collision, totality, universe, and clone-fan-out contracts. No model retraining, selection change, or gate threshold change. Integration re-pins, regenerated from the merged tree (not adopted from either side): - envelope spec_sha256: uk 2a761aea, be 7062e38f, us 835b4d61 (verified against the live loader) - seed_map 271c23ec, seed_protocol 870f9b43 - F0 coverage evidence: 42154/42154 fields, 41/41 inventory checks - loader minimal golden vector re-pinned - imputation.yaml pregnancy structural pin stays 3290b2dd (enabled=False authored identity, verified by direct computation) Lane journals historicized with dated notes per the repo journal rule. Verified locally: oracle spec/pool-tool suites, acspred-touched files, transfer/pregnancy/prior-year/release-gate files (693 tests), ruff, ci_test_groups --verify. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The WAS pension-wealth split (#755) re-cut the UK spec digest on main while this train had re-cut it over its own base; the union computes a fresh value for UK (0db73b1c) and keeps the train's BE (7062e38f) and US (835b4d61), all verified against the live loader on the merged tree. Gate-battery pins from #755 hold unchanged on the union (test_gate_battery_contract_pins green). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nion (second application) Both merged UK lanes re-pinned the UK spec digest on main; the union with this train computes a fresh UK value (71054f53), keeps BE at the train's 7062e38f, and leaves US unchanged (835b4d61) — all verified against the live loader on the merged tree. Loader, gate-battery-pin, UK content-identity, and country-bundle suites green on the union. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juaristi22
added a commit
that referenced
this pull request
Aug 28, 2026
…join directions Vahid's re-review endorsed the corrective posture and found four gaps of the same shape one layer in - guards that silently skip. All four close: 1. The corrected child splits now allocate by largest remainder and assert closure per area: the four buckets sum exactly to the corrected total (the independent rounding drifted up to +/-2 households). Re-extraction moved exactly 225 split rows by at most 1 household; nothing else changed, and the fixture now proves the parts-sum-to-whole property about itself. 2. A positionally-consumed source without a 'code' column refuses instead of degrading to a length-only check that any right-sized permutation passes. 3. The vintage gate's three silent escapes are refusals: an unstamped fact, an unknown code prefix, and a level with no declared vintage all fail by name - the gate exists to prove the frame, and a fact that declines to say which frame it is on is the case it most needs to catch. 4. The name join asserts totality in both directions (unmatched publisher rows fail with their names listed), and a normalization collision is distinguished from a true duplicate in the error text. Also rebases onto main 4b133a8 (#805 and the envelope-pin re-cut train) with the UK spec pin re-derived, so the fixture regeneration ran once on the final base. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juaristi22
added a commit
that referenced
this pull request
Aug 28, 2026
…join directions Vahid's re-review endorsed the corrective posture and found four gaps of the same shape one layer in - guards that silently skip. All four close: 1. The corrected child splits now allocate by largest remainder and assert closure per area: the four buckets sum exactly to the corrected total (the independent rounding drifted up to +/-2 households). Re-extraction moved exactly 225 split rows by at most 1 household; nothing else changed, and the fixture now proves the parts-sum-to-whole property about itself. 2. A positionally-consumed source without a 'code' column refuses instead of degrading to a length-only check that any right-sized permutation passes. 3. The vintage gate's three silent escapes are refusals: an unstamped fact, an unknown code prefix, and a level with no declared vintage all fail by name - the gate exists to prove the frame, and a fact that declines to say which frame it is on is the case it most needs to catch. 4. The name join asserts totality in both directions (unmatched publisher rows fail with their names listed), and a normalization collision is distinguished from a true duplicate in the error text. Also rebases onto main 4b133a8 (#805 and the envelope-pin re-cut train) with the UK spec pin re-derived, so the fixture regeneration ran once on the final base. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juaristi22
added a commit
that referenced
this pull request
Aug 28, 2026
…join directions Vahid's re-review endorsed the corrective posture and found four gaps of the same shape one layer in - guards that silently skip. All four close: 1. The corrected child splits now allocate by largest remainder and assert closure per area: the four buckets sum exactly to the corrected total (the independent rounding drifted up to +/-2 households). Re-extraction moved exactly 225 split rows by at most 1 household; nothing else changed, and the fixture now proves the parts-sum-to-whole property about itself. 2. A positionally-consumed source without a 'code' column refuses instead of degrading to a length-only check that any right-sized permutation passes. 3. The vintage gate's three silent escapes are refusals: an unstamped fact, an unknown code prefix, and a level with no declared vintage all fail by name - the gate exists to prove the frame, and a fact that declines to say which frame it is on is the case it most needs to catch. 4. The name join asserts totality in both directions (unmatched publisher rows fail with their names listed), and a normalization collision is distinguished from a true duplicate in the error text. Also rebases onto main 4b133a8 (#805 and the envelope-pin re-cut train) with the UK spec pin re-derived, so the fixture regeneration ran once on the final base. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #794. Fixes #798. Fixes #799.
Integration branch (
stacked-release-fix-train) carrying the three stacked-release fix lanes that block the candidate-1 (25% stacked multispine) release, merged over currentmain(includes #793) with attested digests regenerated on the union tree. Supersedes #797, whose branch could not schedule CI (CONFLICTINGvs #793 on main — no merge ref, so Actions never created check runs).What's aboard
1. Stacked release gate alignment (#794 — branch
stacked-release-gate-alignment)post_transfer_calibrationis untouched.2. Pregnancy + prior-year defects (#798, #799 — branch
pregnancy-prioryear-defects)_pregnancy_structural_policy_identity, hash includes theenabledflag), validated at release time.3. ACS release-side predictor join (branch
acs-predictor-release-join)--acs-person-zip/--acs-person-sha256/--acs-household-zip/--acs-household-sha256, required together for any ACS-bearing pool).Digest regeneration (merge-train integration)
Spec identities attest source, so the union tree owns them (per this repo's re-pin doctrine): regenerated from the merged tree rather than adopting either side's pins.
spec_sha256: uk2a761aea…, be7062e38f…, us835b4d61…(verified against the live loader;tools/spec_envelope_digests.py)seed_map 271c23ec…,seed_protocol 870f9b43…imputation.yamlpregnancy structural pin stays3290b2dd…(=enabled=Falseauthored identity; verified by direct computation)Verification
test_us_multispine_pool_tool.py,test_spec_engine_country_bundles.py,test_spec_engine_loader.py: greentest_us_acs_release_predictors.py,test_us_ssi_disability_criteria.py,test_us_spine_blindness.py,test_us_fiscal_refresh_builder.py): greentest_us_acs_transfer.py,test_us_pregnancy.py,test_us_prior_year_income.py,test_us_release_gate_preflight.py,test_us_stacked_spine.py,test_us_acs_local_release_tool.py,test_release_input_coverage.py,test_gates.py): greenruff check .: clean;tools/ci_test_groups.py --verify: greenLane journals (
PROGRESS.md,out.md) historicized with dated notes per the repo journal rule.🤖 Generated with Claude Code