FlowDrop Workflow Specification 1.0-draft

A condition on an edge is tolerated, warned about, and ignored

The rule

Normative: this is the rule
  1. A condition on an edge is a removed feature.
  2. A stored edge.data.condition is tolerated and round-trips unchanged, and it gates nothing: the edge always routes.
  3. A non-empty string condition is reported as a warning each time the source node's outgoing edges are resolved, so a source that executes more than once (inside a loop) warns each time rather than once per run.
  4. An absent or empty condition is silent.

What it means

A stored condition is not quietly dropped: it survives exactly as written on every subsequent save. Nothing about it is consulted, though — a conditioned edge routes precisely as an unconditioned one would.

The warning this produces is not a one-off. It is emitted wherever a source node's outgoing edges are resolved, so a source that runs more than once inside a loop warns again on every pass, not once per run. An absent or an empty condition never warns at all — only a non-empty string does.

Example

An edge carries a non-empty condition:

An edge stored with a conditionignored
{
  "id": "e_conditioned",
  "source": "src",
  "target": "sink",
  "sourceHandle": "src-output-text",
  "targetHandle": "sink-input-message",
  "data": { "condition": "false" }
}
The message the target still receivesdelivered
"payload"

The same condition on a loopback edge inside a loop produces one warning per re-entry, not one for the whole run.

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