FlowDrop Workflow Specification 1.0-draft

A node whose triggers are all unsatisfied is skipped, not executed

This is the line the whole branching design rests on: an untaken branch does not merely fail to fire, it terminates cleanly, visibly, and without failing the run.

The rule

Normative: this is the rule
  1. A node with at least one incoming trigger edge and no satisfied trigger is skipped and must not be executed.
  2. The skip is announced with the machine-readable reason branch_not_active, on the node-level skip event, on the real-time status update, and on the run's snapshot; the node's identifier also appears among the run's skipped nodes in the response metadata and is counted there.
  3. A node with no incoming trigger edge always executes, whatever its data sources did.
  4. At the end of a run, every node still unexecuted is collected as skipped the same way, whether or not it had already been promoted to ready.

What it means

The reason token branch_not_active names one observable fact — nothing on the node fired a trigger — not one specific cause. A reader could assume it only ever means "an untaken gateway branch," but the same token, on the same three announcements, also covers a node whose only would-be source never ran at all; nothing in the skip record itself lets a caller tell the two apart.

A skip is not a lesser kind of failure: the node simply never executes, the run is not failed by it, and the identifier is folded into the same count and list every time, whatever caused it. That is the opposite case from a node with no incoming trigger edge at all — such a node always executes, because readiness never depended on a trigger it does not have.

Example

A gateway resolves to its false branch, so the node wired to the untaken true branch is skipped rather than executed.

The nodes_skipped count in the run's response metadatacounted
1
The skip_reason on the node's snapshot recordskipped
"branch_not_active"

skipped_node_ids in the same metadata names false_branch_node, and the snapshot record's status is skipped. The same branch_not_active token also rides the node-level skip event and the real-time status update for that node — three separate announcements agreeing on one fixed reason, whatever unexecuted trigger source produced it.

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