Skip to main content

Signal Types

Stages communicate their outcome to the orchestrator via two mechanisms: a result document (post-stage) and a flux:signal stdout line (during execution). See Signals concept page for an overview.

Result document verdicts

VerdictMeaningDefault routing
passWork complete, meets the barGate rules evaluated → onPass stage
failWork attempted but did not meet the barGate rules evaluated → onFail stage
blockedStage cannot continueSkip gate rules → fallback stage

How routing works

For pass and fail verdicts, gate rules are evaluated first. A gate rule failure can override the routing (e.g., abort overrides onPass). For blocked, routing goes directly to fallback — gate rules are not evaluated.

In a YAML playbook stage:

- id: implement
skill: implement
onPass: review # where to go on pass verdict (after gates pass)
onFail: rework # where to go on fail verdict (or gate failure)
fallback: blocked # where to go on blocked verdict

The special stage ID complete marks the pipeline as finished. The special stage ID blocked marks the pipeline as blocked (issue status → Blocked).

flux:signal stdout protocol

A skill can emit a flux:signal line to stdout at any time during execution. The orchestrator reads it and acts before the result document is processed.

{"flux:signal": {"verdict": "hold", "reason": "already_complete", "meta": {"targetState": "review"}}}

Signal verdicts:

VerdictOrchestrator action
proceedAdvance to next pipeline stage immediately
holdPause — see reason field
reworkRe-run this stage (up to maxRetries)
abortFail the pipeline run immediately

hold reasons:

ReasonMeaningOrchestrator action
already_completeIssue is ahead of its current stateTransition issue to meta.targetState via stateOverride() — bypasses the normal transition table
needs_humanAmbiguous or blockedSet issue status to Blocked; surface to user. meta.question carries the message.

Gate verdicts

Gate verdicts are produced by the gate engine after evaluating rules. They can override the result document's routing:

Gate verdictEffect
proceedContinue with the result-document routing
holdPause the pipeline; wait for manual approval
reworkRoute to the onFail stage
abortStop the pipeline immediately; mark the run failed

See Gate Rules for how gate verdicts are produced.