FlowDrop Workflow Specification 1.0-draft

Which nodes reach the execution graph

A loop head needs a forward entry edge: being reachable by loopback alone is not enough to be scheduled, even though every re-enterable node type carries a loopback port.

The rule

Normative: this is the rule
  1. A node is excluded from the execution graph if its type is non-executable, if it is wired only as a tool provider, or if its only incoming edges are loopback edges.
  2. A node with no incoming edges is included, and so is a node with no edges at all.
  3. The exclusions are applied in that precedence.

What it means

Being wired to something real does not earn a node a place in the execution graph. A node whose type is marked non-executable is excluded regardless of what touches it — including an ordinary incoming connection from a node that does run — because the exclusion is decided from the node's own type before its wiring is considered at all. The same precedence protects the opposite case: a node with no edges at all, or none incoming, is included rather than treated as an orphan to drop.

Example

A record-only node wired downstream of a node that does run:

A record-only node with a real incoming connectiongiven
{
  "nodes": [
    { "id": "input", "type": "text_input" },
    { "id": "mynote", "type": "note" }
  ],
  "edges": [{ "source": "input", "target": "mynote" }]
}
What compilation records for itexcluded
{ "id": "mynote", "reason": "non_executable" }

The upstream node is unaffected — only the record-only one is left out of the execution graph.

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