H2 UK fixture: expose composition-changing person mass through the SPI support channel - #846
Merged
Merged
Conversation
MaxGhenis
changed the base branch from
fix-spi-support-channel-mass-836
to
main
September 2, 2026 15:37
…h the SPI support channel The hermetic fixture's SPI draw used to select every household with household size aligned to region, so the support-channel expansion left weighted person mass unchanged (282.24 -> 282.24) and CI could not see the failure class #844 fixed on licensed data. Child presence now follows household_id % 5, independent of the % 4 region cadence, so the region-stratified prior allocation moves mass across household sizes: person mass 272.7 -> 272.43 while household mass stays exactly 226.8. A regression test runs the real root and support-channel transforms on the committed fixture and asserts both facts, so a regeneration cannot silently lose the property. With the node declared conserve, the driver path now fails on the fixture (captured in the lane report). Built by a sol lane (20260902-091401-h2-fixture-composition) and reproduced here. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis
force-pushed
the
h2-fixture-spi-composition-clean
branch
from
September 2, 2026 15:37
e786892 to
ab185a6
Compare
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.
Follow-up to #844, stacked on its branch (retarget to
mainonce #844 merges).The hermetic H2 fixture's SPI support-channel draw selected every household, and household size was aligned to region, so the expansion left weighted person mass at 282.24 → 282.24 and CI could not see the failure class #844 fixed on licensed data. Child presence now follows
household_id % 5, independent of the% 4region cadence, so the region-stratified prior allocation moves mass across household sizes: person mass 272.7 → 272.43 while household mass stays exactly 226.8.tools/graph_uk_spine_fixture.py: the three-line composition change;benunit.csv,person.csv,frs_raw/benunit.tab,frs_raw/child.tab, and the descriptor digests regenerated (135 households, 162 persons;uk_spine.jsonunchanged).test_uk_graph.py::test_spi_support_fixture_changes_person_mass_and_conserves_household_mass: runs the real root and support-channel transforms on the committed fixture and asserts person mass changes at the executor'srtol=1e-9while household mass is conserved exactly in both the weights and the mass log, so a regeneration cannot silently lose the property._STRUCTURAL_MASS["spi_support_channel"]temporarily set back toconserve, the fixture-backed driver test now fails withNode 'spi_support_channel' mass='conserve' changed stratum 'default': 272.7 -> 272.43(captured in the lane report); the production declaration is untouched.Verified here: regeneration is deterministic (rerunning the generator produces no diff),
test_acceptance_h_parity.py(H2 with the engine) andtest_uk_graph.pypass, ruff andtools/ci_test_groups.py --verifyclean. The oracle identity is machine-local and not pinned.@juaristi22: #835 regenerates this fixture for the 27-stage graph; after rebasing over this, rerunning
tools/graph_uk_spine_fixture.pyis enough.Built by a sol lane and reproduced before push.
🤖 Generated with Claude Code