fix: transfer effects when merging batches (#18254)
An effect could be gated behind a branch. If we don't defer + transfer them upon merge, the branch would still be marked clean but the effect behind it is dirty but no longer reachable. It's not reachable via mark either because that one only concerns itself with block/async effects, and the branch gating the effect is not guaranteed to be touched by that. Fixes #18249 Little sad side-effect: Since we cannot reliably know _before_ traversal if we have no blocking pending work left (the traversal could mark an if block falsy which contains the last blocker), we gotta undo a performance optimization.
S
Simon H committed
65283bc13a54c41ee96940b559c1a027b8770882
Parent: b65a3f3
Committed by GitHub <noreply@github.com>
on 5/20/2026, 9:49:38 PM