Skip to content

Delayed triggered ability with TrackedSet target resolves as a silent no-op (unbound TrackedSet(0) at delayed resolve)Β #7513

Description

@lgray

πŸ€– AI text below πŸ€–

Summary

A delayed triggered ability created with a tracked-set target β€” Bounce { target: TargetFilter::TrackedSet { id: 0 } } β€” resolves as a silent no-op when the delayed ability's targets list is empty: the TrackedSet(0) sentinel is never re-bound to the producing chain's tracked set at delayed-trigger resolve time, so the end-step return does nothing.

Measured mechanism (not inferred)

Exemplar: Random Encounter β€” "Put each creature card milled this way onto the battlefield. They gain haste. At the beginning of the next end step, return those creatures to their owner's hand."

  • The delayed ability is created carrying an unbound Bounce { target: TrackedSet { id: 0 } } with an empty targets list (AST dumped, not inferred).
  • Draining the game to the end step produces zero ZoneChanged events β€” the creatures stay on the battlefield.
  • The mill/battlefield half of the chain binds correctly; only the delayed-trigger tail loses the set.

In-tree pin (merged to main in #7484)

crates/engine/tests/integration/jeskai_ascendancy_pump_untap_anaphora_6857.rs β€” test random_encounter_delayed_bounce_binds_across_two_sequential_siblings, "KNOWN GAP, MEASURED" note (~line 1696 at f7c44692f). The test pins the broken behavior canary-style: when the delayed TrackedSet(0) binding is fixed, two assertions go RED and must be flipped to Zone::Hand, not deleted.

Rules context

CR 603.7 (delayed triggered abilities) + CR 608.2c ("those creatures" anaphora binds the tracked set published by the producing chain). Related engine note: delayed_trigger resolve is the single-path binding seam β€” the fix belongs where the delayed ability's stored chain context is rehydrated at resolve time, not per-card.

Provenance

Found and measured during the #6857/#7484 lane (probe run .impl2-adp2.log, verified again at the merged tree). Pre-existing β€” reproduces identically on the pre-#7484 engine; #7484 neither caused nor widened it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions