FlowDrop Workflow Specification 1.0-draft

Every edge carries a unique id

The rule

Normative: this is the rule
  1. Every edge in a workflow must carry an id, and edge ids must be unique within the workflow.
  2. An edge with no id is refused with R3_EDGE_MISSING_ID, a repeated id with R3_EDGE_DUPLICATE_ID, and in either case the save does not take effect.
  3. An implementation may mint an id for an edge that lacks one while reading an already-stored definition; that tolerance is for legacy data only and never relaxes the requirement at save.

What it means

The duplicate check reads the id field itself, not what the edges connect. Two edges that wire completely different ports still collide if they carry the same id: sharing that one string is enough, independent of R13's separate check for edges that connect the same pair of ports twice. An edge with no id at all is refused the same way, located by its position in the list since it never had an id to name.

Example

Two edges wired to different ports on the target node, sharing one id:

Two edges over different ports, one id repeatedrefused
[
  { "id": "e1", "source": "s", "target": "t", "targetHandle": "t-input-a" },
  { "id": "e1", "source": "s", "target": "t", "targetHandle": "t-input-b" }
]

An edge carrying no id field at all:

An edge with no idrefused
{ "source": "s", "target": "t" }

Why

Recorded under OPEN-5.

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