--- id: EDGE-5 family: GR-EDGE level: core profiles: [storage-api] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-edge/edge-5 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # EDGE-5 — A declared edge type wins over the handle, if it is recognised *GR-EDGE (Part I) · level: core · profiles: storage-api · added in 1.0* An edge may name its own kind instead of leaving it to the handles. Because a named kind overrides what the handles say, a name nobody recognises is refused rather than carried through. ## The rule > **Normative.** This is the rule. > > 1. An edge is a tool edge when its declared `data.edgeType` is `tool_availability`, or, where there is no declaration, when its target handle ends with `-input-tool`. > > 2. A recognised declaration decides in both directions: a declared `tool_availability` makes an edge with an ordinary handle a tool edge, and any other recognised declaration makes an edge with a `-input-tool` handle not one. > > 3. A declaration that is absent, empty, or not a string falls back to the handle. > > 4. A declared type that is not recognised is refused at save with a validation error: an implementation must not carry an unrecognised type through as a kind of its own, where it matches nothing and so is neither classified nor excluded, and a mistyped kind silently becomes an ordinary ordering edge. ## Why Recorded under OPEN-17. ## Related rules - Names: EDGE-7 - Referenced by: EDGE-7, CMP-4 --- 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.