FlowDrop Workflow Specification 1.0-draft

The unified output port carries exposed outputs only

The rule

Normative: this is the rule
  1. The unified output port composes a node's exposed outputs and nothing else.
  2. Keys prefixed with _ and the reserved trigger key are excluded from it.
  3. An output key the node type does not configure counts as exposed and is kept.

What it means

The exclusion of _-prefixed keys and the reserved trigger key does not depend on how the node type configures them. Marking a key like _debug exposed on the node type has no effect: the leading underscore itself marks the value as plumbing rather than published data, and trigger is excluded the same way whatever its own exposure setting says, because it carries no data to begin with.

The other clause runs the opposite way from what a stricter reading would suggest. An output key the node type's own configuration never mentions still counts as exposed and is composed into output. That is what stops a node whose behaviour produces more than its declared output schema from silently losing the extra value: nobody has to configure a key for it to be kept.

Example

A node's result carries an ordinary output alongside an internal key that the node type happens to mark exposed anyway.

What the node producedproduced
{"result": "ok", "_debug": "trace"}
What the unified output port composescomposed
{"result": "ok"}

The same node type declares only result, but the node also produces extra, a key its configuration never mentions.

What the node produced, one undeclared keyproduced
{"result": "ok", "extra": "bonus"}
What the unified output port composes with nothing declaredcomposed
{"result": "ok", "extra": "bonus"}
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 · DATA-9 · changed in spec 1.0