Problem
When a step fails, the workflow stops and remaining downstream steps do not execute. Their df.nodes rows (materialized up front by df.start()) remain in a 'pending' state forever. There is no signal distinguishing:
- "this node was intentionally skipped because an earlier step failed", from
- "this node hasn't been reached yet because the run is still in progress".
The df.nodes status check constraint currently allows only:
'pending', 'running', 'completed', 'failed'
(see src/lib.rs). There is no 'skipped' terminal state, so a consumer inspecting a failed run's nodes cannot tell skipped-due-to-upstream-failure from never-reached.
Expected
Either:
- (a)
df.nodes rows for un-executed steps carry a distinct 'skipped' status when the workflow terminates, or
- (b) a separate
df.pipeline_run_steps projection materializes the full ordered step list per run with each step's terminal status (including 'skipped').
Notes
- Severity: Low-Medium.
- Tracked internally as ADO 5317226 ([A3]).
Problem
When a step fails, the workflow stops and remaining downstream steps do not execute. Their
df.nodesrows (materialized up front bydf.start()) remain in a'pending'state forever. There is no signal distinguishing:The
df.nodesstatus check constraint currently allows only:(see src/lib.rs). There is no
'skipped'terminal state, so a consumer inspecting a failed run's nodes cannot tell skipped-due-to-upstream-failure from never-reached.Expected
Either:
df.nodesrows for un-executed steps carry a distinct'skipped'status when the workflow terminates, ordf.pipeline_run_stepsprojection materializes the full ordered step list per run with each step's terminal status (including'skipped').Notes