Repository navigation
test: the runtime-filter pytest twin is paired with its shell suite by name and covers every arm (#1341) - #1512
Merged
Merged
Conversation
…y name and covers every arm (#1341) #1341's runtime-filter twin entry. test_join_runtime_filter.py was the twin of native_join_runtime_filter.sh under a different stem, so the parity tool never paired them (and #1509 listed the suite unported). Graded by hand: 16 shell names missing. - Renamed to test_native_join_runtime_filter.py; the stem leaves unported_suites.txt and joins COMPLETE. - Eleven pytest names said the same property in other words ("plan uses the runtime coordinator" for the shell's "plan has coordinator", and so on) and now use the shell's. - The refusal table builds f"{n} refusal", meeting the shell's "$n refusal" template; the file therefore leaves the loop-reader list. - Two premises named their own fixture's row count (200 in the shell, 150 in pytest). Both now say "holds every joined row" / "holds every dimension key", and each twin still checks its own count. The three shell ledger rows are renamed with their history; the census does not move. - Ported: "fact-qual plan has coordinator" and "fact-qual conjunction equals heap", the default late-materialization path the shell runs; the twin only had the late-mat-off variant. compare_to_bash: 51 literal + 4 template matches, 0 missing. Red first: with the runtime bloom check rejecting every odd join key, both twins redden "fact-qual conjunction equals heap" (50 rows, not 100) with the other answer arms. Matrix: shell 63/63 and pytest 16 tests (69 checks) on PG15-19; harness_selftest 1246; collection 750 (cluster_tests 749 -> 750); guards 439/439; ledger gate rc 0, orphan scan 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
87 tasks done
OffgridwithJD
approved these changes
Oct 16, 2026
OffgridwithJD
left a comment
Collaborator
There was a problem hiding this comment.
Measured on PG17 and PG18:
- Shell: 63/63 on both.
- Twin: 16 tests, 69/69, on both.
compare_to_bash: 51 literal + 4 template matches, 0 missing.- NO_CLUSTER guards: 439/439.
- Ledger gate: rc 0, with the census unchanged at 4388 / 3058 / 1330.
- The three renamed ledger rows: only the name column changes. None of them had ever been red, so there was no history to carry.
- The renamed premises: both still assert their twin's own count (150 in the twin, 200 in the shell), and the new arm's premise asserts
100|150.
Red first: PgColumnarRuntimeBloomMatch returns false for every odd key (source 7929e4e2c66e against head's ba96698e61e3).
- Shell: 9 reds, including
fact-qual conjunction equals heap(got50|280000|280000, want150|…). The shell as on main gives the same 9, as it should for an arm it already had. - New twin: reddens that name too (50 against 100).
- Old twin: also caught this mutant, through
late-mat-off fact qual equals heap. So the ported arm adds the name the shell has; it doesn't make this mutant newly visible. I found no mutant that separates late-mat on from off, because the filter has no late-mat-specific code.
Not blocking, and already true on main: under this mutant the red sets don't match name for name. The twin doesn't redden scattered answer equals heap, rescan answers equal heap or an empty build on one rescan does not empty the next, because its keys there are all even (80+100g, 90+100g, 40+100g). An odd-key mutant can't reach them. Worth a separate entry: an odd key in each of those fixtures would let the twin see this class.
🤖 Generated with Claude Code
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.
For #1341's "two problems with the runtime filter twins" entry, and #1339's
test_join_runtime_filter.py:1twin_mismatch.What was wrong
test_join_runtime_filter.pywas the twin ofnative_join_runtime_filter.shunder a different stem, socompare_to_bashnever paired them, and #1509 lists the suite as unported. Graded by hand, 16 shell names were missing.The fix
test_native_join_runtime_filter.py. The stem leavesunported_suites.txtand joins COMPLETE.f"{n} refusal", which meets the shell's$n refusaltemplate. With no literal names left in it, the file leaves the loop-reader list.Measured
compare_to_bashreports 51 literal + 4 template matches, 0 missing.harness_selftest1246;cluster_tests749 → 750);It conflicts with #1510 only in
expected_tests.txt/ TESTS.md / COMPLETE; whichever lands second restates.🤖 Generated with Claude Code