Task Wait Qualifiers v0.2: wait_until (time window) and blocked-without-wait rule (C-42)
Some checks are pending
CI Smoke / container-smoke (push) Waiting to run
CI Smoke / host-smoke (push) Waiting to run
Python Tests / pytest (push) Successful in 28s

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
codex 2026-09-29 21:50:16 +02:00
parent 2eacbafc80
commit 83855f4965
2 changed files with 14 additions and 3 deletions

View file

@ -48,6 +48,7 @@ priority: high | medium | low
depends_on: [OTHER-WP-0001, OTHER-WP-0002-T03] # wait: external commitment depends_on: [OTHER-WP-0001, OTHER-WP-0002-T03] # wait: external commitment
needs_human: true # wait: human gate needs_human: true # wait: human gate
blocked_on: message-from:<agent> # wait: owner reply, no workplan id yet blocked_on: message-from:<agent> # wait: owner reply, no workplan id yet
wait_until: 2026-10-31 # wait: time/evidence window, clears by itself
blocking_reason: "<why, one line>" # required whenever status is wait blocking_reason: "<why, one line>" # required whenever status is wait
decision_id: CCR-2026-0004 # optional, tracked decision behind a human gate decision_id: CCR-2026-0004 # optional, tracked decision behind a human gate
state_hub_task_id: "<uuid>" # written by fix-consistency — do not edit state_hub_task_id: "<uuid>" # written by fix-consistency — do not edit

View file

@ -4,13 +4,13 @@ type: standard
title: "Task Wait Qualifiers v0.1" title: "Task Wait Qualifiers v0.1"
domain: custodian domain: custodian
status: accepted status: accepted
version: "0.1" version: "0.2"
owner: the-custodian owner: the-custodian
revision: "accepted-1" revision: "accepted-2"
last_reviewed: "2026-09-28" last_reviewed: "2026-09-28"
review_interval: 6m review_interval: 6m
created: "2026-09-28" created: "2026-09-28"
updated: "2026-09-28" updated: "2026-09-29"
scope: fleet scope: fleet
related_workplans: related_workplans:
- CUST-WP-0074 - CUST-WP-0074
@ -93,6 +93,14 @@ hub decision or a change request; it is optional and never a substitute for
`depends_on` id as soon as the owner returns one. `depends_on` id as soon as the owner returns one.
7. A human-gate task is never leased to a worker. Coordination tooling treats 7. A human-gate task is never leased to a worker. Coordination tooling treats
`needs_human: true` as a stop, not a wake condition. `needs_human: true` as a stop, not a wake condition.
8. A wait on a **time or evidence window** is qualified by `wait_until:
YYYY-MM-DD` on the task block (added 2026-09-29 for STATE-WP-0079-T05 and
RAPP-QONTO-WP-0002-T01). It counts as external — it clears by itself —
and the consistency check raises the blocker-satisfied WARN once the date
has passed.
9. A `blocked` workplan carries at least one task in `wait`. Blocked with no
wait task is a stale status, not a block; the consistency check warns
(C-42) until a qualified wait task exists or the workplan is re-statused.
## Scope of `depends_on` ## Scope of `depends_on`
@ -110,6 +118,8 @@ hub decision or a change request; it is optional and never a substitute for
| `wait` | `depends_on` only | `waiting-external` | `wait_kind: external` | | `wait` | `depends_on` only | `waiting-external` | `wait_kind: external` |
| `wait` | `needs_human: true` only | `needs-human` | `wait_kind: human` | | `wait` | `needs_human: true` only | `needs-human` | `wait_kind: human` |
| `wait` | both | both | `wait_kind: both` | | `wait` | both | both | `wait_kind: both` |
| `wait` | `wait_until` only | `waiting-external` (time window) | `wait_kind: external` |
| `wait` | `blocked_on: message-from:` only | `waiting-external` (owner reply) | `wait_kind: external` |
| `wait` | neither | unqualified (WARN) | `wait_kind: unqualified` | | `wait` | neither | unqualified (WARN) | `wait_kind: unqualified` |
Workplan: `blocked_kind` ∈ `human` \| `external` \| `none`, null unless Workplan: `blocked_kind` ∈ `human` \| `external` \| `none`, null unless