Qualify wait states in the coordination graph (CUST-WP-0074-T04)
Some checks are pending
CI Smoke / host-smoke (push) Waiting to run
CI Smoke / container-smoke (push) Waiting to run

Task nodes carry wait_kind (external | human | both | unqualified, null
unless wait): the hub field wins, otherwise derived from needs_human and
dependency edges (task-level depends_on, or a workplan dependency row whose
target the task cites). Workplan nodes carry blocked_kind (human | external
| none, null unless blocked). Task-level depends_on becomes a task ->
workplan/task depends_on edge; depends_on edges carry edge_kind commitment
(cyan #0891b2), human gates are marked on the node (humanGate, rose
#be123c). A needs_human=true query / "Needs human" toggle / --needs-human
flag keeps only blocked_kind=human workplans and their human-wait tasks;
the parameter survives in the shareable URL and mode switch like
include_residuals. Fabric stays a read of State Hub.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: sonnet
Assistant-Process: 237582@bnt-lap001
Assistant-Session: f2b3d9f1-8fb9-4b9c-bc2b-837ec5dfc826
This commit is contained in:
codex 2026-09-28 22:26:44 +02:00
parent b47dd43b04
commit 9dbb8f0bcb
7 changed files with 426 additions and 33 deletions

View file

@ -91,6 +91,11 @@ def build_parser() -> argparse.ArgumentParser:
action="store_true",
help="Include flavor=residual workplans in --format coordination (default omits them)",
)
export.add_argument(
"--needs-human",
action="store_true",
help="Only blocked_kind=human workplans and their human-wait tasks in --format coordination",
)
scan = sub.add_parser("scan", help="Scan a repo for deterministic discovery candidates.")
scan.add_argument("path", nargs="?", type=Path, default=Path("."))
@ -363,6 +368,7 @@ def main(argv: list[str] | None = None) -> int:
workplans,
tasks,
include_residuals=args.include_residuals,
needs_human_only=args.needs_human,
),
indent=2,
sort_keys=True,