--- id: R3 family: GR-VAL level: core profiles: [storage-api] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-val/r3 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # R3 — Every edge carries a unique id *GR-VAL (Part I) · level: core · profiles: storage-api · added in 1.0* ## The rule > **Normative.** This is the rule. > > 1. Every edge in a workflow must carry an `id`, and edge `id`s 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. ## Why Recorded under OPEN-5. --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.