An edge's source node must exist
The rule
Normative: this is the rule
- An edge whose
sourcedoes not name a node in the workflow is refused withR8_EDGE_SOURCE_MISSINGatedge.{index}, where{index}is the edge's position in the workflow's edge list. - An empty
sourcecounts as missing.
What it means
The locator counts position, not identity: it is built from where the edge
sits in the workflow's edge list, never from the edge's own id. An edge
named e1 that happens to be first in the list is reported at edge.0
regardless of what its id says.
An empty source counts as missing on the same footing as one naming a node
the workflow does not have — there is no separate "malformed edge" outcome
for it.
Example
An edge named e1 names a source the workflow has no node for:
{ "id": "e1", "source": "gone", "target": "t" }{ "code": "R8_EDGE_SOURCE_MISSING", "locator": "edge.0" }The locator addresses the edge by its position, not by the e1 it carries.
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 · R8.a · changed in spec 1.0