FlowDrop Workflow Specification 1.0-draft

A node may not be wired to itself

The rule

Normative: this is the rule
  1. An edge whose non-empty source equals its target is refused with R12_EDGE_SELF at edge.{index}.
  2. This holds whatever ports the two ends name, so wiring a node's own output into its own input is still refused, and it holds whether or not the named node exists; a self-edge on a node that was deleted also earns R8's two dangling-endpoint errors.
  3. An edge with an empty source is never reported as a self-edge, even when its target is empty too; R5.c and R8 own that case.

What it means

The check reads only the two node ids; it never looks at which ports the edge names. Wiring a node's own output into one of its own input ports looks like an ordinary connection in the editor, and even names two different ports, but it is still refused: a cycle of one is a cycle whichever ports it runs through.

Example

An edge from a node's own output port back into a different input port on the same node:

An edge from a node's output into its own inputrefused
{
  "id": "e1",
  "source": "n1",
  "sourceHandle": "n1-output-result",
  "target": "n1",
  "targetHandle": "n1-input-value"
}

Why

Recorded under OPEN-7.

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 · R12 · changed in spec 1.0