Repository navigation
Test the support roster's pending class on a toy spec - #1548
Merged
Merged
Conversation
_support_roster classes a money column that no node produces as pending. Today only test_the_nz_roster_classes reaches that branch, through NZ's packaged spec, and #1547 gives NZ's last such columns real producers. These tests drive the branch from the toy graph's money routes, and check that a derived row names a pending source. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The review of e277e6f found that the last assertion pinned compose.SUPPORT_COVERED, which only tests read, while the gate reads gate_bindings._SUPPORT_COVERED. The derived-row test now runs the toy roster through the support gate and checks that the failure names the pending source. It also covers a derived row that reads another derived row, since nothing else guards that path once #1547 lands, and it pins the source's reason. A differential test ties the two covered-class sets together. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The second review found two gaps in TestMoneyAwaitingItsProducer. The toy frame fails the support gate on four columns that the one-row roster never names, so the derived test's status assertion held whatever the row read. And every case read one input with one column, so after #1547 no test would catch a walk that reads only a node's first input or an input's first column. The derived cases now run the gate with the toy roster's rows beside their own, so the derived line is the only failure, and a control whose row reads a copied source passes the same gate. A new case reads two columns of one input and a second input; it checks that the row lists all three sources and that the gate names both pending ones. The battery spec's docstring now gives the reason CREATE owns no column. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The third review found that a flatten keeping only a derived input's first source survives every file it ran after #1547. The derived cases read one column through their derived input, and the breadth case reads no derived input. Before #1547, test_the_nz_roster_classes caught that mutant on an NZ row with two pending sources. The breadth case now also runs on a row that reads the mix column through a derived input. That row must list the same three sources, and the gate must name both pending ones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
November 10, 2026 01:27
Contributor
Author
|
Landed as The gates, rechecked just before the merge at 01:28Z:
The squash message is the written body, not the default list of commit messages. |
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.
Adds toy coverage for one classification branch in
_support_roster. No source file changes.Why
_support_rosterclasses a money-routed column with no owner after CREATE and nostructural_columnsrow aspending(transport/compose.py, theroute in {"quantile_mapped", "pending", "normalized"}branch). The support gate then fails any derived row that reads it. Intest_transport_evidence_kernels.pybefore #1547, two tests reached that branch through NZ's packaged spec, and onlytest_the_nz_roster_classesasserted its result.#1547, now on main as
f023db0b, gave NZ's last two such columns real producers, so those tests stopped reaching the branch. A recorder on the branch logged 10 hits from the two tests before #1547, and 0 hits across 32 test files on #1547 atb35dd641with its third shared-test hunk [executed].What it changes
Test code only, in
test_transport_evidence_kernels.py. The diff from the base3db65154adds 200 lines and removes none, so no existing test changes.TestMoneyAwaitingItsProducerbuilds a toy spec with CREATE, a battery and the toy graph's money routes (graph_declaration()), and no node that maps money:normalized,quantile_mapped,pending) reads aspending, with the reason that names what it awaits.copied.pendingcolumn, directly or through another derived row, lists that column as a source with its reason. The real support gate then fails the row, names the source, and reports nothing else. The toy roster's other rows pass that gate, and a control row on a copied source passes it too.compose.SUPPORT_COVEREDand the gate's own_SUPPORT_COVERED, two separate sets, hold the same classes.Invariant
Take a money-routed column with no owner after CREATE and no
structural_columnsrow._support_rosterclasses it aspending. A derived row that reads it, directly or through another derived row, lists it as a source, and the support gate fails that row.Composition refuses such a spec earlier.
compose_transport_graphcallsvalidate_transport_activationfirst, and its money check names the column for each of these toy specs [executed]. The gate's failure is the second line of defence.Evidence [executed]
70b9e6914dac02e9(#1552), treee769ac0f5509c921(#1555), treebb9eee71, the tree a squash landsTestMoneyAwaitingItsProducerruff@0.15.16format and check#1552 and #1555 reached main after this head's CI run. Neither touches
test_transport_evidence_kernels.py, the one file this PR changes, and the diff'sgit patch-id --stablereads8ede95500cc707c9on each of the three bases.Each mutant ran against
TestMoneyAwaitingItsProducer, and each fails it:if False:)if True:)copiedcontrol, the copied-source control, both breadth cases"quantile_mapped"removed from the route set"pending"removed from the route set"normalized"removed from the route setornormalizedroute case"pending"added tocompose.SUPPORT_COVERED"pending"added to the gate's_SUPPORT_COVEREDreasondroppedif missing:disabledOn this head merged with main
70b9e691, inTestMoneyAwaitingItsProducer or TestSupportRoster, each walk mutant fails both breadth cases (2 failed, 27 passed), and the flatten mutant fails the breadth case through a derived row (1 failed, 28 passed).Checklist
e277e6f7with five findings. This head and body take up all five.7d739f12, with no P1 or P2 and five optional findings.77ab4564takes up three: the status check that couldn't fail, the walk's breadth, and a docstring's reason. A squash with a written body closes the fourth, a stale commit message. The fifth predates this PR, and a separate follow-up records it.77ab4564, with no P1 or P2 and two optional findings.8f050b76takes up the first: a flatten that keeps only a derived input's first source survived every file the reviewer ran after G8-x0: real producers for NZ rent and liquid assets #1547. The second asks for the written squash body above.8f050b76, with no P1 or P2 and two optional findings, both on wording. This body and the squash body take up both: "Why" now scopespendingas the invariant does, and the line above now says "after G8-x0: real producers for NZ rent and liquid assets #1547".8f050b76: run 42708961335 passed all 11 jobs on the merge with main70b9e691. The evidence table covers the two main commits since.🤖 Generated with Claude Code