chore: update coverage stats and badges - #28
Merged
Conversation
matthewevans
enabled auto-merge (squash)
April 8, 2026 18:56
matthewevans
force-pushed
the
chore/update-coverage-badges
branch
from
April 8, 2026 19:03
ebaae6a to
1917441
Compare
This was referenced Jul 4, 2026
lgray
added a commit
to lgray/phase
that referenced
this pull request
Jul 5, 2026
…drift (a8dbe10 -> 19b55b6) Companion to the earlier phase-rs#5072 rebase-adaptation commit in this stack. Folds the four semantic drifts that main's 42-commit advance introduced but the textual 3-way merge did not resolve. Each fix COULD have been folded into its owning commit; they are collected here instead because upstream squash-merges this PR — intermediate-commit compile health buys nothing once per-commit bisectability dies at the squash-merge. This is a cost decision under the token budget, NOT a cross-commit dependency constraint (all four fold cleanly into their owners). - manabrew-compat convert_available_action (owner: phase-rs#28 Rhys, cd2231c): Rhys's new GameAction::ChooseCountersToRemove needs an arm in main's now-exhaustive convert_available_action match (main removed the catch-all wildcard). Mirrors the sibling ChooseRemoveCounterCostDistribution => Unsupported("local.counter-removal-unsupported"). - parser/oracle_effect/lower.rs x2 (owner: phase-rs#12 P2f grant-abilities, fddfcce): allow-noncombinator annotations on (a) a TextPair dual-string strip_prefix and (b) a multi-line Effect::Unimplemented DESTRUCTURE pattern the gate regex cannot distinguish from a construction (false-positive). Both were --no-verify'd on the original base; annotated so check-parser-combinators passes vs 19b55b6. - game/mana_abilities.rs (owner: phase-rs#30 Foraging Wickermaw, 688fde6): main added PendingManaAbility.ability_snapshot; the pending_for test helper constructs the literal without it (caught by clippy --all-targets, not cargo check --workspace). Adds ability_snapshot: None. HEAD-state green: cargo check --workspace, clippy --all-targets -D warnings, cargo test -p engine (15303 + 1772 pass, 0 fail across 196 blocks), check-parser-combinators vs 19b55b6. Assisted-by: ClaudeCode:claude-opus-4.8
andriypolanski
pushed a commit
to andriypolanski/phase
that referenced
this pull request
Jul 19, 2026
…urn costs less" (phase-rs#6196) "The second spell you cast each turn costs {N} less to cast" (Highspire Bell-Ringer, Uthros Psionicist, Raging Battle Mouse, Monk Class, Alisaie Leveilleur) parsed with spell_filter: None and condition: None — the ordinal "second ... each turn" gate was silently dropped, so the reducer cheapened EVERY spell the controller cast instead of only the second. Root cause: `parse_first_qualified_spell_filter` (grammar.rs) hard-coded the literal prefix "the first " and a `SpellsCastThisTurn == 0` gate, so any ordinal past "first" returned NotApplicable and fell through to the generic, filterless, conditionless cost-modifier path. Fix: parameterize the existing seam by ordinal (FirstQualifiedSpell -> NthQualifiedSpell { filter, timing, ordinal }; "first" -> 1, "second" -> 2, ...) so the gate becomes `SpellsCastThisTurn(you) == ordinal - 1` -- exactly ordinal-1 qualifying spells already cast this turn => the spell now being cast is the Nth. "first" is the unchanged ordinal=1 (== 0) case, so merged first-spell behavior is byte-for-byte preserved. A "parameterize, don't proliferate" refactor of one combinator seam, not a new sibling. New `parse_spell_ordinal_prefix` + `parse_ordinal_word` combinators cover first..tenth. Parse-only: the runtime already evaluates the SpellsCastThisTurn static condition at cost determination (collect_battlefield_cost_modifiers -> evaluate_cost_mod_static_condition). CR 601.2f (total cost determination) / CR 107.3 (numeric/ordinal values). Tests: parser unit test asserting "second" -> SpellsCastThisTurn == 1; registered runtime cast-pipeline regression (nth_spell_ordinal_cost_reduction) proving the first spell pays full {2}, the second is discounted to {1}, and the third pays full {2} again (fails on revert -- the pre-fix reducer discounts the first cast). Backlog: removed Uthros Psionicist and Raging Battle Mouse from root cause phase-rs#2 and Highspire Bell-Ringer from root cause phase-rs#28 (all now parse fully clean); decremented the associated counts. Monk Class and Alisaie Leveilleur retain other misparses and stay listed. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated update of README coverage badges from latest card data.