fix(test): regenerate the integration card fixture and classify the 2 parity rows it exposes (CR 603.3b + CR 603.4)#5732
Conversation
… parity rows it exposes (CR 603.3b + CR 603.4) `integration_cards.json` is a cached subset of the card-data export, but it was last FULLY regenerated at b9685cc (#5695). Nineteen parser/types PRs merged since then; every fixture touch in between was surgical (#5672 +1, #5679 +2, #5727 2 entries), so the parse values silently drifted. Regenerated from the export at 8c35dc5 (oracle-gen, MTGJSON 5.3.0+20260629). Population (json deep-equality, not line counts — the file is one line): committed 2658 entries -> 2726. 70 added, 2 removed, 44 changed values. Attribution of the 44 changed (causal: exports built at #5720 / #5717 / #5730 and compared, NOT shape-guessing): #5723 (P02-U3b shared condition grammar) ...... 3 archive trap, temple of civilization, thaumaton torpedo (all gained the comparator/lhs/rhs/qty/scope condition shape) #5721 + #5719 (where-X quantity channel + ..... 21 restriction grammar; both merged BEFORE #5717 — merge order != PR-number order) bellowsbreath ogre, cryptex, deadly rollick, deflecting swat, desert, dread wanderer, esquire of the king, flesh, fraying sanity, gloomlake verge, great desert hellion, gutterbones, officious interrogation, once upon a time, potioner's trove, ribald shanty, rock jockey, second little pig, shifting woodland, snuff out, starport security #5695..#5720 no-regen window (bloc) ........... 20 Stale already at #5720, so attributable to the 19-PR window above the b9685cc anchor, not to any single PR: alrund god of the cosmos, animal friend, approach of the second sun, cavernous maw, fblthp the lost, from father to son, hour of revelation, increasing vengeance, jodah the unifier, mana reflection, misty salon, puca's eye, ram through, reidane god of the worthy, secrets of the key, sevinne's reclamation, temple of the dead, the dining car, unleash the flux, valgavoth terror eater The 70 added keys are new test-source card references the generator collects; #5729 (tests-only) contributed zero parse delta, as expected. Corrected premise: 44 entries are truly stale, not 7. Six of the seven originally reported reproduce; `osteomancer adept` is NOT stale (committed == fresh). The regen turns `ordering_parity_sweep` red, so the gate's evidence rows ship ATOMICALLY with it. Both rows are population entries, not ordering regressions: the sweep skips Unimplemented-bearing triggers, so a card only enters it once its parse binds. great desert hellion -> BATCH_GENUINE_ROWS. Its LTB Draw was Unimplemented until #5721/#5719 bound Intensity{Source}. Each co-departing Hellion draws off its OWN intensity but discards the SHARED hand, so the second trigger discards the cards the first just drew: with intensities a != b the final hand, graveyard and library differ by order. The members are not identical functions, so commutation genuinely fails and the new prompt is the CR 603.3b choice the legacy serde walk wrongly auto-ordered (CR 603.5: each "may" is chosen on resolution). planar collapse -> DOCUMENTED_OVER_PROMPT (L8-held family). New fixture key. Upkeep ObjectCount(Creature) >= 4 intervening-if x DestroyAll + self-Sacrifice: the first copy's sweep drives the census to 0, so the sibling's CR 603.4 re-check is false and it does nothing. Monotone and self-limiting — identical siblings commute up to relabeling, so the prompt is conservative, fail-closed and rules-correct. Neither row weakens the gate: both are direction-gated over-prompts (an under-prompt is never suppressible), and both are consumed by the ledger's exact-set asserts (over_prompt_hit 18->19, batch_genuine_hit 1->2), so a misclassification still trips the STRICT PROOF-GATE. Verification: engine lib 16481/16481 pass (was 16480 + 1 red); integration 2929/2929 pass.
There was a problem hiding this comment.
Code Review
This pull request updates crates/engine/src/game/triggers_ordering_parity_tests.rs by adding "planar collapse" to the DOCUMENTED_OVER_PROMPT list and "great desert hellion" to the BATCH_GENUINE_ROWS list, accompanied by detailed comments explaining their trigger ordering behaviors and commutation characteristics. There are no review comments, and I have no feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Parse changes introduced by this PR✓ No card-parse changes detected. |
integration_cards.jsonis a cached subset of the card-data export, but it waslast FULLY regenerated at b9685cc (#5695). Nineteen parser/types PRs merged
since then; every fixture touch in between was surgical (#5672 +1, #5679 +2,
#5727 2 entries), so the parse values silently drifted. Regenerated from the
export at 8c35dc5 (oracle-gen, MTGJSON 5.3.0+20260629).
Population (json deep-equality, not line counts — the file is one line):
committed 2658 entries -> 2726. 70 added, 2 removed, 44 changed values.
Attribution of the 44 changed (causal: exports built at #5720 / #5717 / #5730
and compared, NOT shape-guessing):
#5723 (P02-U3b shared condition grammar) ...... 3
archive trap, temple of civilization, thaumaton torpedo
(all gained the comparator/lhs/rhs/qty/scope condition shape)
#5721 + #5719 (where-X quantity channel + ..... 21
restriction grammar; both merged BEFORE #5717 —
merge order != PR-number order)
bellowsbreath ogre, cryptex, deadly rollick, deflecting swat, desert,
dread wanderer, esquire of the king, flesh, fraying sanity,
gloomlake verge, great desert hellion, gutterbones,
officious interrogation, once upon a time, potioner's trove,
ribald shanty, rock jockey, second little pig, shifting woodland,
snuff out, starport security
#5695..#5720 no-regen window (bloc) ........... 20
Stale already at #5720, so attributable to the 19-PR window above the
b9685cc anchor, not to any single PR: alrund god of the cosmos,
animal friend, approach of the second sun, cavernous maw, fblthp the lost,
from father to son, hour of revelation, increasing vengeance,
jodah the unifier, mana reflection, misty salon, puca's eye, ram through,
reidane god of the worthy, secrets of the key, sevinne's reclamation,
temple of the dead, the dining car, unleash the flux, valgavoth terror eater
The 70 added keys are new test-source card references the generator collects;
#5729 (tests-only) contributed zero parse delta, as expected.
Corrected premise: 44 entries are truly stale, not 7. Six of the seven
originally reported reproduce;
osteomancer adeptis NOT stale (committed ==fresh).
The regen turns
ordering_parity_sweepred, so the gate's evidence rows shipATOMICALLY with it. Both rows are population entries, not ordering regressions:
the sweep skips Unimplemented-bearing triggers, so a card only enters it once
its parse binds.
great desert hellion -> BATCH_GENUINE_ROWS. Its LTB Draw was Unimplemented
until #5721/#5719 bound Intensity{Source}. Each co-departing Hellion draws off
its OWN intensity but discards the SHARED hand, so the second trigger discards
the cards the first just drew: with intensities a != b the final hand, graveyard
and library differ by order. The members are not identical functions, so
commutation genuinely fails and the new prompt is the CR 603.3b choice the
legacy serde walk wrongly auto-ordered (CR 603.5: each "may" is chosen on
resolution).
planar collapse -> DOCUMENTED_OVER_PROMPT (L8-held family). New fixture key.
Upkeep ObjectCount(Creature) >= 4 intervening-if x DestroyAll + self-Sacrifice:
the first copy's sweep drives the census to 0, so the sibling's CR 603.4
re-check is false and it does nothing. Monotone and self-limiting — identical
siblings commute up to relabeling, so the prompt is conservative, fail-closed
and rules-correct.
Neither row weakens the gate: both are direction-gated over-prompts (an
under-prompt is never suppressible), and both are consumed by the ledger's
exact-set asserts (over_prompt_hit 18->19, batch_genuine_hit 1->2), so a
misclassification still trips the STRICT PROOF-GATE.
Verification: engine lib 16481/16481 pass (was 16480 + 1 red); integration
2929/2929 pass.