specify failure propagation semantics (C-04)
Key design decisions: - Failure follows dependency edges, not structural scope - Parallel branches are independent: failure in one branch doesn't cancel sibling branches - blockedByFailure computed signal detects failed/aborted predecessors - Conditionals serve as error boundaries (caught failures redirect to else branch, uncaught failures cascade) - aborted nodes don't satisfy preconditions; skipped nodes do - abortAll() for systemic failures (provider outage, auth failure) Changes: - reactive-execution.md: new Failure Propagation section with sequential/parallel/join/conditional examples, blockedByFailure effect, partial success model - host-configs.md: add blockedByFailure to WorkflowNode, update status propagation effects, replace cascadeAbort with abortAll - schema.md: document precondition semantics for NodeStatus - build-distribution.md + README.md: add blockedByFailure to node-status.ts comments - review checklist: mark C-04 resolved
This commit is contained in:
@@ -97,6 +97,8 @@ type NodeStatus = Static<typeof NodeStatusEnum>;
|
||||
|
||||
`NodeStatus` extends `CallStatus` with workflow-specific states (`idle`, `waiting`, `ready`, `skipped`) that have no call protocol equivalent. A node that is `waiting` has no call yet because its preconditions haven't been met.
|
||||
|
||||
**Precondition semantics**: A predecessor in `completed` or `skipped` status satisfies a dependent's preconditions. A predecessor in `failed` or `aborted` status does NOT satisfy preconditions — it blocks the dependent and triggers failure propagation (the dependent transitions to `aborted`). This enables partial success: independent parallel branches continue running even when one branch fails.
|
||||
|
||||
### EdgeType
|
||||
|
||||
The type of edge in a flowgraph. Matches the call graph storage schema's `edgeType` column:
|
||||
|
||||
Reference in New Issue
Block a user