Summary
DagSpec.on_failure already supports three values (:halt, :continue, :skip_dependents) but the intended semantics, default behavior, and practical guidance are not clearly documented.
Clarification Needed
| Policy |
Behavior |
:halt |
Fail the entire run immediately. All running tasks are cancelled. Default. |
:continue |
Skip the failed task's direct dependents. Independent branches keep running. Run completes with partial results. |
:skip_dependents |
Alias for :continue (kept for YAML readability). |
The distinction matters for complex DAGs with parallel branches. A failure in branch A should not block branch B when :continue is set.
Action Items
- Add inline comments to
DagSpec struct documenting each policy value (done in mvp.md)
- Add ExDoc
@doc to DagSpec module explaining the three strategies
- Add test cases in
engine_test.exs for :continue and :halt with a branching DAG
- Document in user-facing YAML reference
References
- Design doc:
docs/plans/2026-03-05-levicon-mvp.md (DagSpec schema, Engine handle_info({:task_failed}))
Summary
DagSpec.on_failurealready supports three values (:halt,:continue,:skip_dependents) but the intended semantics, default behavior, and practical guidance are not clearly documented.Clarification Needed
:halt:continue:skip_dependents:continue(kept for YAML readability).The distinction matters for complex DAGs with parallel branches. A failure in branch A should not block branch B when
:continueis set.Action Items
DagSpecstruct documenting each policy value (done in mvp.md)@doctoDagSpecmodule explaining the three strategiesengine_test.exsfor:continueand:haltwith a branching DAGReferences
docs/plans/2026-03-05-levicon-mvp.md(DagSpec schema, Enginehandle_info({:task_failed}))