Advances the frontier: given the node that just finished, returns the nodes to start next.
sequential returns at most one successor — the old single-program-counter behavior, kept as the
default so existing design-time flows traverse exactly as they did. parallel returns every
successor whose join is satisfied, which is what graphs built from a TaskGraphSpec always use:
an agent that expressed independent work as independent nodes meant them to run at once, and
serializing them would discard the only information the decomposition carried.
A successor whose join is not yet satisfied is simply not returned. It becomes eligible when its
remaining predecessors settle and this runs again for one of them — so the join is evaluated on
every completion rather than parked on a waiting list that could go stale.
Advances the frontier: given the node that just finished, returns the nodes to start next.
sequentialreturns at most one successor — the old single-program-counter behavior, kept as the default so existing design-time flows traverse exactly as they did.parallelreturns every successor whose join is satisfied, which is what graphs built from aTaskGraphSpecalways use: an agent that expressed independent work as independent nodes meant them to run at once, and serializing them would discard the only information the decomposition carried.A successor whose join is not yet satisfied is simply not returned. It becomes eligible when its remaining predecessors settle and this runs again for one of them — so the join is evaluated on every completion rather than parked on a waiting list that could go stale.