diff --git a/workplan-spec.md b/workplan-spec.md index 57998bc..5d3c287 100644 --- a/workplan-spec.md +++ b/workplan-spec.md @@ -47,8 +47,17 @@ the document body. Fields: | Field | Required | Values | Description | |-------|----------|--------|-------------| | `id` | yes | string | Unique task identifier within the workplan | -| `status` | yes | `todo` \| `in_progress` \| `done` | Task state | +| `status` | yes | `todo` \| `in_progress` \| `done` \| `wait` | Task state | | `priority` | no | `high` \| `medium` \| `low` | Execution priority | +| `depends_on` | with `wait` | list of workplan/task ids | External commitment: clears when every target is terminal | +| `needs_human` | with `wait` | `true` \| `false` | Human gate: a person clears it; the loop never picks the task up | +| `blocking_reason` | with `wait` | string | Required for `wait` | +| `decision_id` | no | string | Tracked decision or change request behind a human gate | + +A `wait` task carries `depends_on`, `needs_human: true`, or both — never +neither (fleet standard: `the-custodian/canon/standards/task-wait-qualifiers_v0.1.md`). +The loop skips `wait` tasks; a workplan with only `wait` tasks left is not +done, so the loop stops with the wait reasons instead of emitting the promise. ## Completion Rule