Several sources on one port resolve to a single latest value
A merge point in a workflow is not a collector. A port fed by three edges is still one port, and what a node reads there is one value.
The rule
- A port fed by several edges receives exactly one value, never a list of them.
- The value is the one produced by the most recent execution among the sources: a source carrying a later execution order wins; a source carrying an execution order wins over one carrying none; and where neither carries one, the source node identifier decides, lexicographically.
- A collision between sources on one port is reported as a warning and never fails the run.
What it means
A port fed by several edges never accumulates a list; it resolves to exactly one value, and the resolution has a strict order of preference. A source that completed later wins over one that completed earlier. Only when neither source recorded a completion order at all does the tie-break fall to the source node's own identifier — and that fallback is a genuine lexicographic sort, not the order the edges happen to be drawn in a workflow: which edge was drawn first has no bearing on which source wins.
Example
Two sources, node_early and node_late, both wire into the same port. Each
completes with its own execution order recorded.
{"data": "second"}The same port, fed by node_a and node_b, neither of which recorded a
completion order — and the edge from node_b is drawn first in the
workflow, ahead of node_a's:
{"data": "from_a"}node_a wins on the alphabetical sort even though its edge was declared
second.