Computes the transitive set of tasks that must become Blocked because a dependency can never
be satisfied.
Walks forward from unsatisfiable tasks (Failed / Cancelled / already Blocked) to their
dependents, and onward. Without this, a failed dependency leaves its dependents Pending
forever and the graph silently stalls.
Only tasks currently Pending are returned — work already running, complete, or terminal is left
alone, so this is safe to call repeatedly.
Computes the transitive set of tasks that must become
Blockedbecause a dependency can never be satisfied.Walks forward from unsatisfiable tasks (
Failed/Cancelled/ alreadyBlocked) to their dependents, and onward. Without this, a failed dependency leaves its dependentsPendingforever and the graph silently stalls.Only tasks currently
Pendingare returned — work already running, complete, or terminal is left alone, so this is safe to call repeatedly.