fix(engine): honor effective Dash keyword for Ragavan dash cast (Fixes #566) - #2798
Conversation
…hase-rs#566) Read Dash through effective_spell_keywords in candidate generation, cost preparation, and AlternativeCastChoice dispatch so granted dash costs match Blitz/Evoke. Add Ragavan-shaped integration regression tests. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
Review: PR #2798 — honor effective Dash keyword (Fixes #566)Verdict: Approve with reservations. The engine change is correct, idiomatic, and at the right seam — it brings Dash in line with the established Seam / correctness (lens a) — PASSAll three Dash cast-path reads now route through Idiomatic (lens b) — PASSTyped Value / test (lens c) — the reservation[MED] The new integration test does not discriminate the fix, and Ragavan never exercised the bug this PR targets. Evidence: [LOW] New test is largely redundant with existing inline coverage. [LOW] Spectacle is the remaining un-converted sibling. Evidence: NoteThe fix is genuinely class-general and consistent with the other alternative-cost keywords — that part is good. The gap is purely on the verification side: the bug report (#566, printed-Dash Ragavan) and the regression test both live on a path that already worked, while the code change targets the granted-Dash path that has no test. Recommend tightening the test before merge so the green check actually defends the new behavior. |
Independent review (review-impl lenses) — PR #2798Seam / correctness (lens a) — PASS. All three Dash cast-path reads now route through Idiomatic (lens b) — PASS. Typed Findings[MED] The regression test does not discriminate the fix. Evidence: [LOW] Spectacle is the remaining un-converted sibling. Evidence: This confirms and folds in the reservation already raised by @matthewevans. The engine change is sound, class-general, and safe to merge; the gap is purely verification — recommend strengthening the test so the green check defends the granted-Dash path the fix targets. VERDICT: approve with comments |
…le to effective_spell_keywords Both reviews flagged the MED gap: the Ragavan tests inject printed Dash into obj.keywords, so they pass on origin/main and never exercise the granted-keyword path this PR fixes. New test grants Dash via a StaticMode::CastWithKeyword battlefield static (CR 604.1) with no printed Dash — verified to FAIL against origin/main casting.rs and pass with the fix. Also converts the two remaining Spectacle keyword reads (candidates + cost lookup) to effective_spell_keywords, completing the alternative- cost keyword class this PR brought Dash into (CR 702.137a).
|
Maintainer note: pushed |
matthewevans
left a comment
There was a problem hiding this comment.
Maintainer sign-off: correct seam (effective_spell_keywords is the canonical granted-keyword authority; Evoke/Overload/Emerge/Blitz already route through it), discriminating granted-Dash test added and revert-verified, Spectacle sibling converted. Two independent review-impl approvals on the engine change.
# Conflicts: # crates/engine/tests/integration/main.rs
Summary
Keyword::Dashthrougheffective_spell_keywordsin candidate generation, cost preparation, andAlternativeCastChoicedispatch (matching Blitz/Evoke).{R}/ dash{1}{R}alternative-cast offer and end-to-end dash resolution.Fixes #566
Test plan
cargo test -p engine --test integration issue_566cargo fmt --all