Skip to content

fix(engine): choose pre-entry opponent controller - #7382

Merged
matthewevans merged 9 commits into
mainfrom
ship/xantcha-entry-controller
Aug 14, 2026
Merged

fix(engine): choose pre-entry opponent controller#7382
matthewevans merged 9 commits into
mainfrom
ship/xantcha-entry-controller

Conversation

@matthewevans

Copy link
Copy Markdown
Member

No description provided.

@matthewevans
matthewevans enabled auto-merge August 13, 2026 23:56
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@matthewevans, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 1 minute

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 3734b7b7-277c-4d69-87be-64cce383709c

📥 Commits

Reviewing files that changed from the base of the PR and between f558e2c and 49481da.

⛔ Files ignored due to path filters (3)
  • client/src/adapter/generated/interaction/index.ts is excluded by !**/generated/**
  • client/src/wasm/draft_wasm.d.ts is excluded by !client/src/wasm/**, !**/*.d.ts
  • client/src/wasm/engine_wasm.d.ts is excluded by !client/src/wasm/**, !**/*.d.ts
📒 Files selected for processing (57)
  • client/src/adapter/__tests__/p2p-adapter-multiplayer.test.ts
  • client/src/adapter/__tests__/wasm-adapter.test.ts
  • client/src/adapter/p2p-adapter.ts
  • client/src/adapter/types.ts
  • client/src/adapter/wasm-adapter.ts
  • client/src/components/modal/EntryControllerModal.tsx
  • client/src/components/modal/__tests__/EntryControllerModal.test.tsx
  • client/src/game/waitingForRegistry.ts
  • client/src/i18n/locales/de/game.json
  • client/src/i18n/locales/en/game.json
  • client/src/i18n/locales/es/game.json
  • client/src/i18n/locales/fr/game.json
  • client/src/i18n/locales/it/game.json
  • client/src/i18n/locales/pl/game.json
  • client/src/i18n/locales/pt/game.json
  • client/src/pages/GamePage.tsx
  • crates/engine/src/ai_support/candidates.rs
  • crates/engine/src/ai_support/mod.rs
  • crates/engine/src/game/ability_rw.rs
  • crates/engine/src/game/ability_scan.rs
  • crates/engine/src/game/cost_payability.rs
  • crates/engine/src/game/coverage.rs
  • crates/engine/src/game/effects/change_zone.rs
  • crates/engine/src/game/effects/mod.rs
  • crates/engine/src/game/engine.rs
  • crates/engine/src/game/engine_replacement.rs
  • crates/engine/src/game/filter.rs
  • crates/engine/src/game/interaction.rs
  • crates/engine/src/game/layers.rs
  • crates/engine/src/game/replacement.rs
  • crates/engine/src/game/scenario.rs
  • crates/engine/src/game/stack.rs
  • crates/engine/src/game/targeting.rs
  • crates/engine/src/game/trigger_matchers.rs
  • crates/engine/src/game/zone_pipeline.rs
  • crates/engine/src/parser/oracle_effect/lower.rs
  • crates/engine/src/parser/oracle_effect/mod.rs
  • crates/engine/src/parser/oracle_effect/sequence.rs
  • crates/engine/src/parser/oracle_effect/subject.rs
  • crates/engine/src/parser/oracle_static/restriction.rs
  • crates/engine/src/parser/oracle_tests.rs
  • crates/engine/src/types/ability.rs
  • crates/engine/src/types/action_stable_order.rs
  • crates/engine/src/types/actions.rs
  • crates/engine/src/types/events.rs
  • crates/engine/src/types/game_state.rs
  • crates/engine/src/types/interaction.rs
  • crates/engine/src/types/proposed_event.rs
  • crates/engine/tests/integration/issue_6916_xantcha_entry_controller.rs
  • crates/engine/tests/integration/main.rs
  • crates/manabrew-compat/src/lib.rs
  • crates/mtgish-import/src/convert/condition.rs
  • crates/phase-ai/src/decision_kind.rs
  • crates/phase-ai/src/policies/discard_payoff.rs
  • crates/phase-ai/src/policies/draw_payoff.rs
  • crates/phase-ai/src/search.rs
  • crates/server-core/src/game_action_payload_guard.rs
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ship/xantcha-entry-controller

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

Generated for head 49481da7c983951d30f390f51ca46b66afdd39ea.

Parse changes introduced by this PR · 3 card(s), 5 signature(s) (baseline: main f558e2c8d4b2)

🟢 Added (3 signatures)

  • 1 card · ➕ ability/Draw · added: Draw
    • Affected (first 3): Xantcha, Sleeper Agent
  • 1 card · ➕ ability/Sacrifice · added: Sacrifice (kind=activated, target=parent target)
    • Affected (first 3): Soul Ransom
  • 1 card · ➕ ability/Sacrifice · added: Sacrifice (kind=activated, target=parent target, timing=sorcery speed)
    • Affected (first 3): Hold for Ransom

🔴 Removed (2 signatures)

  • 1 card · ➖ ability/Draw · removed: Draw (count=2, kind=activated)
    • Affected (first 3): Soul Ransom
  • 1 card · ➖ ability/Draw · removed: Draw (kind=activated, timing=sorcery speed)
    • Affected (first 3): Hold for Ransom

@matthewevans
matthewevans added this pull request to the merge queue Aug 14, 2026
Merged via the queue into main with commit 635c51e Aug 14, 2026
19 checks passed
@matthewevans
matthewevans deleted the ship/xantcha-entry-controller branch August 14, 2026 01:38
lgray added a commit to lgray/phase that referenced this pull request Aug 14, 2026
…hase-rs#7382

Upstream phase-rs#7382 adds four lines in apply_action (@@ -9867,0 +9868,4 @@),
entirely above the begin_pending_trigger_target_selection producer this
census pins. The rebase raised the literal as a conflict on two lane
commits and then drifted it SILENTLY at the tip, where the pinned line
had become a bare `}`.

Only the offset-from-enclosing-fn control caught the silent one: it is
still 134, which is what re-establishes producer identity, since the same
mint text occurs at several coordinates in this crate and the text alone
cannot discriminate. The new value is measured in the rebased file, never
computed from the shift.

Assisted-by: ClaudeCode:claude-opus-5
lgray added a commit to lgray/phase that referenced this pull request Aug 14, 2026
…s new variant

Upstream phase-rs#7382 added `WaitingFor::EntryControllerChoice { player,
candidates }` (CR 614.12a), so the variant reach-guard moves 129 -> 130.

Adjudicated on the terms this row already set for phase-rs#7336, not bumped: that
variant's body holds no `DecisionTemplate`, so it is not a third carrier,
and both the carrier vec and the redaction loop below it are unchanged.
Only the reach-guard total moves.

The number is read from this assertion's own failure output rather than
from a hand-written variant counter -- one was tried and returned 49 while
contradicting itself, and a second instrument that disagrees with the syn
parse is worth less than no second instrument.

This drift produced no merge conflict and could not have, so the
reach-guard plus CI were the only things between it and shipping.

Assisted-by: ClaudeCode:claude-opus-5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant