FlowDrop Workflow Specification 1.0-draft

Control outputs are never stripped

The rule

Normative: this is the rule
  1. The reserved control outputs active_branches and state_update are never removed from a node's result by exposure stripping.
  2. They are the engine's own channel, not ports an author shows or hides, and branching and state merging depend on them arriving intact.

What it means

Control outputs are exempt from every lever that strips an ordinary port — the node type's own default, an instance override, all of it. They are not something an author shows or hides at all; they are the engine's own channel, and branching and state merging depend on them arriving whole every time, whatever exposure a workflow otherwise records for that node.

Example

A node's type marks every one of its outputs — active_branches, state_update, and an ordinary port — hidden, and the workflow's own instance override hides state_update again on top of that: the least favourable exposure available for all three.

What the node producedproduced
{"state_update": {"iterator": {"index": 1}}, "active_branches": "true", "debug": "internal trace"}
What the result deliverskept
{"state_update": {"iterator": {"index": 1}}, "active_branches": "true"}

debug, an ordinary output hidden the same way, is the one key stripping removes.

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 · EXPO-12 · changed in spec 1.0