Add T'Chaka, Venerable King - #6946
Conversation
|
Warning Review limit reached
Next review available in: 15 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThe change adds ChangesTarget-context damage resolution
Commander-control restriction support
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant TriggeringSpell
participant LadyLoki
participant QuantityResolver
participant DamageEachPlayer
participant ReplacementEffect
participant CastFromZone
TriggeringSpell->>LadyLoki: trigger on matching spell
LadyLoki->>QuantityResolver: resolve event-source and target mana values
QuantityResolver-->>LadyLoki: return mana-value difference
LadyLoki->>DamageEachPlayer: apply opponent damage
DamageEachPlayer->>ReplacementEffect: pause and stash remaining damage
ReplacementEffect->>DamageEachPlayer: resume with target context
DamageEachPlayer->>CastFromZone: forward free-cast tail with parent target
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Generated for head Parse changes introduced by this PR · 2 card(s), 3 signature(s) (baseline: main
|
matthewevans
left a comment
There was a problem hiding this comment.
Blocking changes requested for reviewed head f3a8e1e73fd78f7af06afb8020ae62bca24be1aa.
-
This T’Chaka PR contains the unresolved Lady Loki implementation: commit
269497e4f41257e72d74169f9049c9451335191eis its ancestor, and open #6945 remainsCHANGES_REQUESTED. The current-head parse artifact also reports unclaimed Lady Loki and O-Kagachi changes: #6946 (comment). Please provide a clean split: remove the inherited #6945 work, or wait until independently fixed #6945 is merged and rebase onto that result. Then regenerate the parse-diff evidence bound to the new head. -
The new
ParsedCondition::ControlsCommander { ownership: Any }runtime path is not covered by the added production test: T’Chaka exercises only the owner-scopedOwnactivation branch. Add a production cast/activation regression for generic “you control a commander” (for example Deadly Rollick/Deflecting Swat), including the positive stolen-commander case, so the newAnyevaluator is exercised rather than only parser shape/snapshots.
|
@matthewevans thanks — replying to both points. 1. Inherited #6945 work / parse blast radius. I've pushed the same type-qualifier narrowing here ( That makes the parse-diff honest, but it does not on its own give you the clean split you asked for — this branch still carries the Lady Loki implementation. Plan: land the now-fixed #6945 first, then rebase this PR onto main so the inherited work drops out, and regenerate the parse-diff evidence bound to the new head. If you'd rather I strip the inherited commits and re-scope this PR to T'Chaka-only right now instead of waiting on #6945, say the word and I'll do that. 2. |
matthewevans
left a comment
There was a problem hiding this comment.
Blocking changes requested for current head 014011cc7733c7e511ee722212368299164f9eb7.
-
[HIGH] Clean split remains absent. Commit
269497e4f41257e72d74169f9049c9451335191eremains an ancestor of this head, while open #6945 is stillCHANGES_REQUESTED. The PR therefore carries independently unresolved Lady Loki work alongside T’Chaka. Please remove that inherited work, or wait for a fixed #6945 to merge and rebase, then publish a fresh, narrowly scoped parse diff. -
[HIGH]
ControlsCommander { ownership: Any }still lacks runtime coverage.crates/engine/src/game/restrictions.rshas the newAnyevaluator, butcrates/engine/tests/integration/tchaka_venerable_king.rscovers only owner-scopedOwn. Add a production cast/activation regression for generic “you control a commander” (for example Deadly Rollick or Deflecting Swat), including the positive stolen-commander case. -
[HIGH] Current-head parser evidence is missing. The only parse-diff artifact linked from this PR is bound to prior head
f3a8e1e73fd78f7af06afb8020ae62bca24be1aa(artifact); the current head changedcrates/engine/src/parser/oracle_nom/quantity.rs. Regenerate the artifact against the clean, updated head so the parser change can be reviewed.
…ree-cast
T'Chaka only exercises the owner-scoped `Own` activation gate; the any-owner
`Any` evaluator (game::commander::controls_any_commander) had no cast-pipeline
regression. Add one via Deadly Rollick's "If you control a commander, you may
cast this spell without paying its mana cost" free cast:
- own commander on the battlefield -> offered (positive reach-guard)
- STOLEN opponent's commander controlled by you -> still offered (the
discriminator: `Any` is any-owner, so this fails if the runtime delegated to
the owner-scoped controls_own_commander)
- no commander -> not offered (empty pool, printed {3}{B} unpayable)
The spell sits in hand with an empty mana pool, so castability turns solely on
the commander free-cast condition, and a vanilla creature is always on the
battlefield so "Exile target creature" never confounds the gate. Mirrors the
existing owner-scoped activation test's structure, with the stolen case flipped
from rejected to accepted.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
matthewevans
left a comment
There was a problem hiding this comment.
Blocking changes requested for current head 04417fa9f0d757c8fa3bc9c51b83a6c8697d4ca3.
-
[HIGH] This is still not a clean T’Chaka PR. Commit
269497e4f41257e72d74169f9049c9451335191e(Lady Loki) remains an ancestor, and open #6945 remainsCHANGES_REQUESTED. The current parse artifact is valid and bound to this head, but it confirms the scope problem: it reports both Lady Loki and T’Chaka changes (artifact). Please remove the inherited #6945 work, or rebase after a fixed #6945 has merged, then publish the clean current-head artifact. The artifact is not stale; it is evidence of the remaining contamination. -
[HIGH] The new restriction-layer
CommanderOwnership::Anypath is still unproven by a production runtime test.crates/engine/src/game/restrictions.rs:1643-1645introduces the evaluator, whilecrates/engine/tests/integration/tchaka_venerable_king.rs:125-180exercises only owner-scopedOwnand intentionally rejects a stolen commander. Add a real parsed/cast pipeline regression for Deadly Rollick or Deflecting Swat with P0 controlling a stolen P1 commander and no own commander; assert the free-cast branch is offered and can be used, while preserving a no-commander negative. -
[HIGH] Required CI is red because this PR moved a line-pinned production census without refreshing it.
crates/engine/src/game/engine.rs:15209-15211still expectsgame/effects/mod.rs:5996,6073, and9048; the current merge-tree test sees5999,6076, and9051. The PR’scrates/engine/src/game/effects/mod.rs:2523-2526formatting/visibility change shifts those downstream coordinates by three lines. Rebuild/read the CI merge tree as the census guidance requires (engine.rs:15198-15208), verify the producer bodies are unchanged, then update the documented drift/pins from that evidence and rerun CI.
04417fa to
24b7830
Compare
Summary
Adds engine support for T'Chaka, Venerable King.
Files changed
CR references
Track
Developer
LLM
Model: claude-opus-4-8
Thinking: high
Tier: Frontier
Verification
cargo fmt --all— pass./scripts/check-parser-combinators.sh (Gate A)— passcargo clippy-strict— incomplete-still-compilingcargo test -p phase-engine— not-run./scripts/gen-card-data.sh— not-runcargo coverage— not-runcargo semantic-audit— not-runRe-verified at chunk-1 checkpoint with freshly regenerated card-data: all listed cards supported:true gap:0, semantic-audit clean. The run-time 'partial' was a stale-card-data artifact, not a code defect.
Scope Expansion
Stayed within the approved plan; additionally updated the anticipated deadly_rollick insta snapshots (per the plan's serialized-surface note) and deferred gitignored card-data.json / python3-dependent integration_cards.json regeneration to the pipeline (functionally proven by the new integration test).
Validation Failures
See review/cross-check notes.
CI Failures
Summary by CodeRabbit