Skip to content

chore: refresh metagame feeds - #62

Merged
matthewevans merged 1 commit into
mainfrom
chore/refresh-metagame-feeds
Apr 19, 2026
Merged

chore: refresh metagame feeds#62
matthewevans merged 1 commit into
mainfrom
chore/refresh-metagame-feeds

Conversation

@matthewevans

Copy link
Copy Markdown
Member

Automated daily metagame feed refresh from MTGGoldfish.

@matthewevans
matthewevans enabled auto-merge (squash) April 19, 2026 07:22
@matthewevans
matthewevans merged commit 1b30a91 into main Apr 19, 2026
2 checks passed
@matthewevans
matthewevans deleted the chore/refresh-metagame-feeds branch April 19, 2026 07:27
andriypolanski pushed a commit to andriypolanski/phase that referenced this pull request Jul 13, 2026
…R 603.7) (phase-rs#5720)

Twinferno's "When you CAST YOUR NEXT instant or sorcery spell this turn, copy
that spell." produced no delayed trigger at all — the copy was dropped outright,
and its "You may choose new targets for the copy" sentence was left as an honest
`orphaned_copy_retarget` residual. The orphan was the symptom, not the disease:
the retarget clause was correctly refusing to bind to a copy that did not exist.

`try_parse_when_next_event` dispatched on `alt((tag("when you next cast a "),
tag("when you next cast an ")))`. Magic prints this one clause in two word orders
and we only accepted the adverbial one:

  "when you NEXT CAST a[n] <spell> this turn"   Galvanic Iteration, Doublecast
  "when you CAST YOUR NEXT <spell> this turn"   Twinferno

Add the possessive opening to that `alt`. The payload after either opening is the
same "[type-phrase] spell [post-modifier]" shape, so `extract_when_next_spell_filter`
and every downstream stage are untouched — this parameterizes the opening rather
than proliferating a second parser for the same clause.

Filed under phase-rs#62, whose premise this partly FALSIFIES: the task described Twinferno
as a MODAL-nesting gap ("copy not lowered inside a modal delayed trigger"). It is
not. Modes are irrelevant — the identical text outside a mode fails the same way,
and the identical text in the adverbial word order inside a mode works. The gap is
purely the opening's word order.

Honest scope, measured rather than assumed: "cast your next" appears on 3 cards in
the pool, but Flaming Fist Duskguard and Valiant Farewell print it inside a quoted
boon with no " this turn, " delimiter, so they stay gapped and this fix does not
claim them. The measured delta is 1 face.

Full-pool dual export (35,396 faces), whole-face structural diff — every face's
ENTIRE tree compared, not just the copy-retarget channel:

  faces with ANY structural change: 1
    twinferno   retargets=[] orphans=1  ->  retargets=[MayChooseNewTargets] orphans=0

Zero regressions. Positive controls Galvanic Iteration and Doublecast unchanged.
Pool-wide `orphaned_copy_retarget` residuals: 7 -> 5.

Co-authored-by: matthewevans <matthewevans@users.noreply.github.com>
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