Fix Mishra, Claimed by Gix and attacking Meld resolution#5772
Conversation
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
Closed without implementation-diff review. This PR enters protected architecture scope because it touches |
Parse changes introduced by this PR · 3 card(s), 6 signature(s) (baseline: main
|
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
c8cad74 to
41eabce
Compare
Preserve the complete WebSocket wire-version history after aligning the Meld port with main's prior mana-payment protocol bump. Co-authored-by: parth.mishra <parth.mishra@accenture.com>
Main added the state-based-action request constructor after the Meld port added replacement provenance. Initialize the new constructor so the common request invariant remains total. Co-authored-by: parth.mishra <parth.mishra@accenture.com>
Update the shrink-only migration census after the rebased Meld port.\n\nCo-authored-by: parth.mishra <parth.mishra@accenture.com>
84aebc2 to
b876b8a
Compare
matthewevans
left a comment
There was a problem hiding this comment.
Verdict: approved — the rebased Meld port is clean at the engine/transport seam and its discriminating runtime coverage matches the intended card class.
🔴 Blocker
- None.
🟡 Non-blocking
- None.
✅ Clean
crates/engine/src/game/meld.rs: the resolution path keeps both the source/partner selection and the zone-pipeline/replacement contracts.crates/engine/src/game/meld_tests.rs: the runtime cases cover acceptance/decline, stale and singleton destinations, copy behavior, and final control.- Current parse-diff is scoped to Mishra plus the two existing Meld migrations; current GitHub CI is green.
Recommendation: approve and enqueue.
Summary
Fixes Mishra, Claimed by Gix by preserving its resolution-time attacking-pair condition, selecting the canonical physical Meld pair, and carrying the resulting permanent through the ordinary zone-change, replacement, as-enters, and combat-entry pipelines. The implementation generalizes to every current Meld instigator, including replacement pauses, copy-as-enters choices, commander redirects, final-controller attack destinations, AI decisions, protocol transport, and frontend choice handling.
The prior path represented Meld primarily by printed names and completed it through a bespoke entry path. That lost Mishra's inline condition and could not correctly model physical-card validation after exile, replacement provenance, deferred entry characteristics, or the CR 508.4 attacking destination. This PR moves those responsibilities to typed engine state and the existing authoritative seams.
WebSocket protocol version advances from 14 to 15 and P2P wire protocol from 7 to 8 for the two new typed choices.
Closes #5693
Files changed
crates/engine/src/parser/oracle_effect/crates/engine/src/types/crates/engine/src/game/crates/engine/src/database/crates/engine/src/ai_support/crates/engine/tests/integration/vanille_meld_optional_cost.rscrates/phase-ai/src/crates/server-core/src/crates/lobby-broker/src/protocol.rscrates/manabrew-compat/src/lib.rsclient/src/adapter/client/src/game/waitingForRegistry.tsclient/src/network/client/src/pages/GamePage.tsxclient/src/i18n/locales/*/game.jsonCR references
CR 701.42,CR 701.42a,CR 701.42b,CR 701.42c,CR 712.4— Meld instruction, physical-pair validation, and combined result.CR 400.2,CR 400.6,CR 400.7j— public-zone tracking and zone-change identity.CR 508.4,CR 508.4a,CR 508.4c— entering tapped and attacking and selecting a defending destination.CR 603.4,CR 608.2c,CR 608.2d— resolution-time conditions and exact choices.CR 614.1c,CR 614.5,CR 614.12,CR 614.12a,CR 616.1— entry replacement projection, provenance, and ordering pauses.CR 611.3,CR 613.1b,CR 707.9— final continuous/copy characteristics before combat entry.CR 306.5b,CR 903.9a,CR 903.9b— intrinsic loyalty counters and per-component commander choices.Implementation method (required)
Method: /engine-implementer
Track
Developer
LLM
Model: codex-5
Thinking: high
Tier: Standard
Verification
Required checks ran clean, or the exact CI-owned alternative is stated below.
Gate A output below is for the current committed head.
Final review-impl below is clean for the current committed head.
Both anchors cite existing analogous code at the same seam.
cargo fmt --all -- --check— passed.cargo clippy-strict— passed on the final tree.cargo test -p engine— passed after the upstream rebase: 16,560 unit tests and 2,998 integration tests, with zero failures.cargo test -p engine meld— final-tree focused pass: 45 unit tests and 4 integration tests, with zero failures.cargo test -p phase-ai meld_pair— 2 passed.cargo test -p manabrew-compat meld— 1 passed.cargo test -p server-core meld— 2 passed.cargo test -p lobby-broker protocol_version_tracks_meld_wire_additions— 1 passed../scripts/gen-card-data.sh— passed; both target cards aresupported: truewithgap_count: 0.cargo coverage— passed; 31,346/35,397 cards supported (88.6%).cargo semantic-audit— completed across 32,417 cards; neither target card has a finding.pnpm run type-check— passed, including protocol parity.pnpm exec vitest run src/i18n/resources.test.ts src/adapter/__tests__/waiting-for-handler-parity.test.ts src/network/__tests__/protocol.test.ts— 3 files and 102 tests passed.git diff --check origin/main...HEAD— passed.Gate A
Gate A PASS head=89490ffddffd8f70c645cdb1a0b13307bd73b5dc base=efe74096ba6c2185446b5ef319bbdd0e46c7f5e5
Anchored on
crates/engine/src/parser/oracle_effect/meld.rs:140— existing nom-based Meld ownership-gate authority.crates/engine/src/game/zone_pipeline.rs:891— existing simultaneous zone-move and typed completion seam.crates/engine/src/game/engine_replacement.rs:1086— existing liminal as-enters copy-choice resume seam.Final review-impl
Final review-impl PASS head=89490ffddffd8f70c645cdb1a0b13307bd73b5dc
Claimed parse impact
Validation Failures
None.
CI Failures
None.