FlowDrop Workflow Specification 1.0-draft

An edge delivers one named output port to one named input port

The rule

Normative: this is the rule
  1. An edge delivers a value from a named output port on its source node to a named input port on its target node.
  2. Both port names are taken from the edge's endpoint handles; an endpoint that names no port delivers nothing, and neither warns nor fails the run.
  3. Delivery turns on the presence of the port's key in the source node's output, not on the value being non-null: a source that emits an explicit null delivers null, and that delivered null outranks the target's configuration and its schema default.
  4. A source that omits the key delivers nothing at all, and the target port falls through to its configuration and then to its schema default.

What it means

What decides whether a value is delivered is whether the source's output contains the wired key at all, not whether the value found there is useful. Even an explicit null counts as delivered, and a delivered null still outranks whatever the target's own configuration or schema default would otherwise supply.

The other side of the same clause is silent absence: an edge whose handle cannot be split into a port name — because the direction marker is missing — names no port, and delivers nothing. Nothing is logged and the run is not failed; the target simply falls through to its own configuration and default, exactly as if the edge had never been drawn.

Example

A node wires another node's result output to its data input, but the source's actual output never carried a result key.

What the source node producedproduced
{"other": "alpha"}
What the target's data port receivesempty
{}

A handle with no -output-/-input- marker to split on behaves the same way: the port name resolves to nothing, and nothing arrives.

Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · DATA-1 · changed in spec 1.0