From trigger to finish
A trigger fires and hands its payload to the nodes wired to it. The engine then launches every node whose upstream sources have finished — so two independent branches run at the same time, not one after the other, and a node with several wires in waits for all of them. When every reachable node is done, the run completes; if any node failed, the run reads as failed.

Branching, loops and errors
A Condition routes its payload out Yes or No. The untaken outlet's whole downstream is marked skipped — it never receives a payload at all.
For Each runs the nodes after its Loop outlet once per item, adding item (rename it under Each Item As), _forEach_index and _forEach_count each pass; the Done outlet continues afterwards. While repeats until its condition is met, capped by Max Iterations — 20 by default.
When a node throws, everything downstream of it is skipped. Other branches carry on. AI nodes are the exception: wire their Failure outlet and the error becomes a branch instead, carrying error and errorType, and the run does not fail.
Watching it run
Every node writes a timeline row with its status, duration and the exact payloads in and out. Loop passes are numbered and rows appear as they finish, so a long run can be read while it happens. Replay re-runs a past run on its captured input; a Breakpoint node pauses mid-flow so you can inspect the payload first.
A circular flow will not run. Watchflows refuses to draw a wire that closes a loop, and a graph containing one fails before any node executes. Use While or For Each to repeat work.
Cancelling is not a rollback. Stop interrupts the node in progress and marks the run cancelled. Nodes that already finished stay done — files stay moved, notifications stay sent.