FlowDrop Workflow Specification 1.0-draft

A node instance decides which of its ports are exposed

One chain answers "is this port exposed?" everywhere it is asked: for edges and for the workflow's exposure map alike.

The rule

Normative: this is the rule
  1. A port's effective exposure on a node is the instance's own config.ports[].exposed value where the instance sets one, and otherwise the port's exposedByDefault in the node type's metadata.
  2. Exposing a port on the instance therefore makes an edge to or from it legal that would otherwise be refused.

What it means

R7.a and R7.b each refuse an edge on a port that is "not exposed" without saying where that verdict comes from. R7.c is the one chain both of them defer to: an instance's own recorded exposure first, and only when the instance has recorded none does the node type's own default decide. There is no separate flag for "this edge is legal" distinct from "this port is exposed" — recording the override in the instance's own configuration is the whole act.

Because the check is per instance, two nodes of the same type can disagree: overriding one node's port does nothing to the same port on another instance of that type.

Example

A node type ships one of its input ports hidden by default; a single instance's own configuration records an override for it:

The override recorded on one node's own configurationexposed
{ "inputs": [{ "id": "loop_back", "exposed": true }], "outputs": [] }
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 · R7.c · changed in spec 1.0