Twinned from https://github.com/cfsh/ninefold/issues/966 by tools/beads/import_github.py's reconcile pass.
Implement T5 from design_docs/008-live-status-for-design-doc-tasks.md (§8). Depends on T2 (merged, on main). Built after T4 (merged) so the JSON shape can be tuned against 005b/006a/007's real task/status data rather than a fixture — not a hard dependency, just the design's stated preference.
⚠️ Governance: this PR needs @aedanpope's approval. design_docs/tools/status.py itself isn't gated (design_docs/tools/** is un-gated per #925/#926), but wiring the new verb into dev.py's verb table touches tools/nflib/devcli.py, which is governance-denied (tools/nflib/*). No way around it for the wiring half.
Goal: a new dev.py verb printing the JSON described in §6 to stdout.
Context: every existing dev.py verb reads session state (sid, label, state dir) from the worktree per CLAUDE.md's front-door rule — this verb doesn't, since it's not about the calling session's own work. Say so explicitly in its docstring. Only real dependency is T2 — it imports tools/github_live/, nothing else.
Files: design_docs/tools/status.py (new), wired into dev.py's verb table.
Expected behaviour: ./dev.py designs prints JSON for every live, mechanically-detected doc (§7 Q1's default; §0/§6 for the live signal). ./dev.py designs 005b scopes to one doc. ./dev.py designs --all includes non-live docs too.
Test plan: unit tests against tools/github_live/'s fake for the CI suite; T4 having already run means there's also real data to eyeball the output against during development, not just fixtures.
PR shape: one PR, branching from main.
Done when: JSON output matches the shape in §6 against a fixture doc/issue/Project set — and the PR body notes for nf-cto that this verb now exists, since design 008 §8 explicitly calls out that the CTO's own ad hoc way of answering "what's the state of design doc X" should switch to dev.py designs once this lands, so it doesn't become a second unmaintained answer to the same question.
None.
No comments.