π€ 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.
π€ 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'stargetslist is empty: theTrackedSet(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."
Bounce { target: TrackedSet { id: 0 } }with an emptytargetslist (AST dumped, not inferred).ZoneChangedevents β the creatures stay on the battlefield.In-tree pin (merged to main in #7484)
crates/engine/tests/integration/jeskai_ascendancy_pump_untap_anaphora_6857.rsβ testrandom_encounter_delayed_bounce_binds_across_two_sequential_siblings, "KNOWN GAP, MEASURED" note (~line 1696 atf7c44692f). The test pins the broken behavior canary-style: when the delayedTrackedSet(0)binding is fixed, two assertions go RED and must be flipped toZone::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_triggerresolve 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.