diff --git a/workplans/CUST-WP-0074-qualified-wait-states.md b/workplans/CUST-WP-0074-qualified-wait-states.md index 6ef2c9c..311a34d 100644 --- a/workplans/CUST-WP-0074-qualified-wait-states.md +++ b/workplans/CUST-WP-0074-qualified-wait-states.md @@ -189,13 +189,24 @@ section states that a human gate is never leased or woken. ```task id: CUST-WP-0074-T04 -status: todo +status: done priority: medium state_hub_task_id: "aaf60a09-ba58-578d-ba26-480d874c6b97" ``` Owner: railiance-fabric, under `RAIL-FAB-WP-0029`. +**Done 2026-09-28** (implemented directly; railiance-fabric `9dbb8f0` on +main, not pushed; 87 tests pass, `node --check` on the inline script OK). +Task nodes carry `wait_kind`, workplan nodes `blocked_kind` (hub value +wins, derived otherwise); task-level `depends_on` becomes +`edge_kind: commitment` edges counted in chokepoint in-degree; human +gates are a `humanGate` node marker (rose `#be123c`; commitment cyan +`#0891b2`). Filter: `needs_human=true` on the UI checkbox, server route +and `export --format coordination --needs-human`. Caveat: the view reads +`/state/deps` stubs, not per-workplan dependency rows, so task-scope +edges appear once T02's indexing is deployed on the primary. + - `coordination_graph.py` reads task-block `depends_on` for edges and the derived `wait_kind` for colour: external commitment versus human gate. - Chokepoint sizing already uses in-degree; add a filter for