---
phase: 09-requirements-roadmap-metadata-closure
plan: 02
type: execute
wave: 1
depends_on: []
files_modified:
  - .planning/ROADMAP.md
autonomous: true
requirements: []

must_haves:
  truths:
    - "Phase 2 plan checkboxes (02-01..04-PLAN.md) show [x] in ROADMAP.md"
    - "Phase 3 plan checkboxes (03-01..03-PLAN.md) show [x] in ROADMAP.md"
    - "Phase 6 plan list includes both 06-01-PLAN.md and 06-02-PLAN.md, both [x]"
    - "Phase 8 plan list includes both 08-01-PLAN.md and 08-02-PLAN.md, both [x]"
    - "Progress table shows correct plans-complete counts for phases 1-8"
    - "Progress table shows Complete status and dates for phases 1-5, 7, 8"
    - "Overview table rows have correct columns (Goal, Requirements, Plans descriptions)"
  artifacts:
    - path: ".planning/ROADMAP.md"
      provides: "Accurate plan completion state and progress table"
      contains: "- [x] 02-01-PLAN.md"
  key_links:
    - from: "ROADMAP.md plan checkboxes"
      to: "Progress table status"
      via: "Consistent completion state across both sections"
      pattern: "\\[x\\] 02-0[1-4]-PLAN\\.md"
---

<objective>
Fix stale plan checkboxes, progress table, and Overview table in ROADMAP.md so that all executed Phase 2 and Phase 3 plans are marked complete, the Phase 6 and Phase 8 plan lists include all executed plans, the progress table accurately reflects current phase completion state, and the Overview table has correct column data.

Purpose: The milestone audit reads ROADMAP.md plan checkboxes to score phase completion. Currently Phase 2 (02-01..02-04) and Phase 3 (03-01..03-03) show `[ ]` despite all plans being executed. Phase 6 is missing `06-01-PLAN.md` from its plan list. Phase 8 is missing `08-01-PLAN.md` from its plan list. The progress table shows `0/N Not started` for all phases despite Phases 1-5, 7, and 8 being complete. The Overview table rows 4-10 have malformed column data.

Output: Updated ROADMAP.md with `[x]` for all completed Phase 2 and Phase 3 plans, corrected Phase 6 and Phase 8 plan lists, a corrected progress table, and a repaired Overview table.
</objective>

<execution_context>
@$HOME/.claude/get-shit-done/workflows/execute-plan.md
@$HOME/.claude/get-shit-done/templates/summary.md
</execution_context>

<context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
</context>

<tasks>

<task type="auto">
  <name>Task 1: Fix Phase 2, Phase 3, Phase 6, and Phase 8 plan checkboxes</name>
  <read_first>
    - .planning/ROADMAP.md (the file being modified — read current state before touching)
    - .planning/phases/02-core-vm-lifecycle/02-04-SUMMARY.md (confirms all Phase 2 plans complete)
    - .planning/phases/03-ssh-execution/03-03-SUMMARY.md (confirms all Phase 3 plans complete)
    - .planning/phases/06-kernel-observability/06-01-SUMMARY.md (confirms 06-01 executed: dmesg_mark implemented)
    - .planning/phases/08-retroactive-phase-verification/08-01-SUMMARY.md (confirms 08-01 executed: 02-VERIFICATION.md written)
  </read_first>
  <files>.planning/ROADMAP.md</files>
  <action>
In ROADMAP.md, make exactly these changes in the Phase 2 plans list (under `### Phase 2: Core VM Lifecycle`):

Change:
```
- [ ] 02-01-PLAN.md — Thread-safe libvirt client (`libvirt_client.py`) with single-worker executor, domain/network wrappers, MAC generation
- [ ] 02-02-PLAN.md — Domain/network XML builders, cloud-init ISO generator, `cluster_define` tool with idempotency
- [ ] 02-03-PLAN.md — `cluster_start` with SSH wait loop, `cluster_stop`, `cluster_destroy`
- [ ] 02-04-PLAN.md — `cluster_status` and `cluster_handle` query tools
```
To:
```
- [x] 02-01-PLAN.md — Thread-safe libvirt client (`libvirt_client.py`) with single-worker executor, domain/network wrappers, MAC generation
- [x] 02-02-PLAN.md — Domain/network XML builders, cloud-init ISO generator, `cluster_define` tool with idempotency
- [x] 02-03-PLAN.md — `cluster_start` with SSH wait loop, `cluster_stop`, `cluster_destroy`
- [x] 02-04-PLAN.md — `cluster_status` and `cluster_handle` query tools
```

Also update the `**Plans:**` count line above these items from `**Plans:** 4 plans` to `**Plans:** 4/4 plans complete`.

In the Phase 3 plans list (under `### Phase 3: SSH Execution`):

Change:
```
- [ ] 03-01-PLAN.md — SSHConnectionManager with per-node connection caching and transparent reconnect
- [ ] 03-02-PLAN.md — `node_exec` tool with structured `ExecResult`, server.py wiring
- [ ] 03-03-PLAN.md — `node_exec_all` with `asyncio.gather` parallel fan-out and `require_all` semantics
```
To:
```
- [x] 03-01-PLAN.md — SSHConnectionManager with per-node connection caching and transparent reconnect
- [x] 03-02-PLAN.md — `node_exec` tool with structured `ExecResult`, server.py wiring
- [x] 03-03-PLAN.md — `node_exec_all` with `asyncio.gather` parallel fan-out and `require_all` semantics
```

Also update the `**Plans:**` count line above these items from `**Plans:** 3 plans` to `**Plans:** 3/3 plans complete`.

In the Phase 6 plans section (under `### Phase 6: Kernel Observability`), replace the entire plans block. Currently it reads:
```
**Plans:**
1/2 plans executed
- [x] 06-02-PLAN.md — dmesg_collect tool with marker/level filtering and classification
```
Replace with:
```
**Plans:** 2/2 plans complete
Plans:
- [x] 06-01-PLAN.md — dmesg_mark tool + classifier + dmesg line parser
- [x] 06-02-PLAN.md — dmesg_collect tool with marker/level filtering and classification
```

Evidence basis for Phase 6: 06-01-SUMMARY.md confirms dmesg_mark MCP tool implemented with classify_line, parse_dmesg_line, and insert_marker. OBS-01 is implemented and Complete per REQUIREMENTS.md traceability.

In the Phase 8 plans section (under `### Phase 8: Retroactive Phase Verification (02 & 03)`), the plan list currently reads:
```
**Plans:**
2/2 plans complete
- [x] 08-02-PLAN.md — Audit Phase 03 codebase vs success criteria; write 03-VERIFICATION.md
```
Add the missing 08-01-PLAN.md entry immediately BEFORE the 08-02-PLAN.md line:
```
- [x] 08-01-PLAN.md — Audit Phase 02 codebase vs success criteria; write 02-VERIFICATION.md
```
Result should read:
```
**Plans:**
2/2 plans complete
- [x] 08-01-PLAN.md — Audit Phase 02 codebase vs success criteria; write 02-VERIFICATION.md
- [x] 08-02-PLAN.md — Audit Phase 03 codebase vs success criteria; write 03-VERIFICATION.md
```

Evidence basis for Phase 8: 08-01-SUMMARY.md confirms 02-VERIFICATION.md was written (commit 1f5d66f).

Evidence basis for Phase 2/3: STATE.md confirms Phase 2 complete (4/4 plans, 6 cluster tools, 124 tests) and Phase 3 complete (3/3 plans, SSH execution tools, asyncssh). All four Phase 2 SUMMARYs exist. All three Phase 3 SUMMARYs exist.
  </action>
  <verify>
    <automated>grep -c '\- \[x\] 02-0[1-4]-PLAN\.md' /home/hornc/repos/vmcluster-mcp/.planning/ROADMAP.md | grep -q '^4$' && grep -c '\- \[x\] 03-0[1-3]-PLAN\.md' /home/hornc/repos/vmcluster-mcp/.planning/ROADMAP.md | grep -q '^3$' && grep -q '\- \[x\] 06-01-PLAN\.md' /home/hornc/repos/vmcluster-mcp/.planning/ROADMAP.md && grep -q '\- \[x\] 08-01-PLAN\.md' /home/hornc/repos/vmcluster-mcp/.planning/ROADMAP.md && echo "PASS" || echo "FAIL"</automated>
  </verify>
  <acceptance_criteria>
    - `grep '- \[x\] 02-01-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 02-02-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 02-03-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 02-04-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 03-01-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 03-02-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 03-03-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 06-01-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 06-02-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 08-01-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[x\] 08-02-PLAN.md' .planning/ROADMAP.md` returns a match
    - `grep '- \[ \] 02-0[1-4]-PLAN' .planning/ROADMAP.md` returns NO matches
    - `grep '- \[ \] 03-0[1-3]-PLAN' .planning/ROADMAP.md` returns NO matches
  </acceptance_criteria>
  <done>All Phase 2 (02-01..04), Phase 3 (03-01..03), Phase 6 (06-01..02), and Phase 8 (08-01..02) plan checkboxes marked [x] in ROADMAP.md.</done>
</task>

<task type="auto">
  <name>Task 2: Fix ROADMAP.md progress table and Overview table</name>
  <read_first>
    - .planning/ROADMAP.md (re-read after Task 1 changes; current state)
    - .planning/STATE.md (source of truth for completion dates and plan counts)
  </read_first>
  <files>.planning/ROADMAP.md</files>
  <action>
In ROADMAP.md, make two separate fixes:

**FIX 1: Replace the Overview table.**

The current Overview table (under `## Overview`) is malformed from row 4 onward — rows 4-10 have plan-count/date values in the Goal, Requirements, and Plans columns instead of descriptive text. Replace the entire Overview table block:

Replace:
```
| # | Phase | Goal | Requirements | Plans |
|---|-------|------|--------------|-------|
| 1 | Foundation | Bootable MCP server with typed error contract and topology parsing | FOUND-01..04 | 3 plans |
| 2 | Core VM Lifecycle | Full cluster provisioning lifecycle from topology file to running nodes | CLUS-01..07 | 4 plans |
| 3 | SSH Execution | Structured command execution across nodes with automatic reconnection | EXEC-01..03 | 3 |
| 4 | Snapshot Management | 2/2 | Complete   | 2026-03-23 |
| 5 | Artifact Pipeline | 3/3 | Complete   | 2026-03-23 |
| 6 | Kernel Observability | 1/2 | In Progress|  |
| 7 | Network & Node Fault Injection | 4/4 | Complete   | 2026-03-24 |
| 8 | Retroactive Phase Verification (02 & 03) | 2/2 | Complete   | 2026-03-24 |
| 9 | Requirements & Roadmap Metadata Closure | All phases | Not started | — |
| 10 | Nyquist Validation Coverage | All phases | Not started | — |
```

With:
```
| # | Phase | Goal | Requirements | Plans |
|---|-------|------|--------------|-------|
| 1 | Foundation | Bootable MCP server with typed error contract and topology parsing | FOUND-01..04 | 3 plans |
| 2 | Core VM Lifecycle | Full cluster provisioning lifecycle from topology file to running nodes | CLUS-01..07 | 4 plans |
| 3 | SSH Execution | Structured command execution across nodes with automatic reconnection | EXEC-01..03 | 3 plans |
| 4 | Snapshot Management | Atomic cluster-wide snapshot create/revert/list/delete | SNAP-01..04 | 2 plans |
| 5 | Artifact Pipeline | Content-addressed artifact register/sync/install/list/diff | ART-01..05 | 3 plans |
| 6 | Kernel Observability | dmesg marker insertion and classified kernel log collection | OBS-01..03 | 2 plans |
| 7 | Network & Node Fault Injection | Persistent fault injection with iptables/tc netem and node crash | FAULT-01..07 | 5 plans |
| 8 | Retroactive Phase Verification (02 & 03) | Close CLUS and EXEC audit gaps with verification reports | CLUS-01..07, EXEC-01..03 | 2 plans |
| 9 | Requirements & Roadmap Metadata Closure | Fix stale checkboxes, traceability, and summary frontmatter | All v1 | 3 plans |
| 10 | Nyquist Validation Coverage | Create VALIDATION.md for all phases for Nyquist compliance | All v1 | 3 plans |
```

**FIX 2: Replace the Progress table.**

The current `## Progress` table shows `0/N Not started` for all phases. Replace with accurate state derived from STATE.md and the ROADMAP phase details.

Replace this block:
```
## Progress

| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. Foundation | 0/3 | Not started | — |
| 2. Core VM Lifecycle | 0/4 | Not started | — |
| 3. SSH Execution | 0/3 | Not started | — |
| 4. Snapshot Management | 0/3 | Not started | — |
| 5. Artifact Pipeline | 0/4 | Not started | — |
| 6. Kernel Observability | 0/3 | Not started | — |
| 7. Network & Node Fault Injection | 0/4 | Not started | — |
| 8. Retroactive Phase Verification (02 & 03) | 0/2 | Not started | — |
| 9. Requirements & Roadmap Metadata Closure | 0/3 | Not started | — |
| 10. Nyquist Validation Coverage | 0/3 | Not started | — |
```

With:
```
## Progress

| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. Foundation | 3/3 | Complete | 2026-03-22 |
| 2. Core VM Lifecycle | 4/4 | Complete | 2026-03-22 |
| 3. SSH Execution | 3/3 | Complete | 2026-03-23 |
| 4. Snapshot Management | 2/2 | Complete | 2026-03-23 |
| 5. Artifact Pipeline | 3/3 | Complete | 2026-03-23 |
| 6. Kernel Observability | 2/2 | Complete | 2026-03-23 |
| 7. Network & Node Fault Injection | 5/5 | Complete | 2026-03-24 |
| 8. Retroactive Phase Verification (02 & 03) | 2/2 | Complete | 2026-03-24 |
| 9. Requirements & Roadmap Metadata Closure | 0/3 | In Progress | — |
| 10. Nyquist Validation Coverage | 0/3 | Not started | — |
```

Plan count evidence:
- Phase 1: 3 plans (01-01, 01-02, 01-03) — all [x] in ROADMAP plan lists
- Phase 2: 4 plans (02-01..04) — all [x] after Task 1
- Phase 3: 3 plans (03-01..03) — all [x] after Task 1
- Phase 4: 2 plans (04-01, 04-02) — both [x] in ROADMAP plan lists
- Phase 5: 3 plans (05-01..03) — all [x] in ROADMAP plan lists
- Phase 6: 2/2 plans complete — 06-01-SUMMARY.md confirms dmesg_mark implemented (OBS-01 Complete); 06-02-SUMMARY.md confirms dmesg_collect implemented (OBS-02/OBS-03 Complete); completed 2026-03-23 per 06-01-SUMMARY.md metrics
- Phase 7: 5 plans (07-01..05) — all [x] in ROADMAP plan lists
- Phase 8: 2 plans (08-01, 08-02) — both [x] in ROADMAP plan lists after Task 1
- Phase 9: 0/3 — currently in progress (this execution)
- Phase 10: 0/3 — not started
  </action>
  <verify>
    <automated>grep '3/3.*Complete.*2026-03-22' /home/hornc/repos/vmcluster-mcp/.planning/ROADMAP.md && grep '4/4.*Complete.*2026-03-22' /home/hornc/repos/vmcluster-mcp/.planning/ROADMAP.md && grep '2/2.*Complete.*2026-03-23' /home/hornc/repos/vmcluster-mcp/.planning/ROADMAP.md && echo "PASS: progress table and overview updated" || echo "FAIL"</automated>
  </verify>
  <acceptance_criteria>
    - `grep '| 1. Foundation | 3/3 | Complete | 2026-03-22 |' .planning/ROADMAP.md` returns a match
    - `grep '| 2. Core VM Lifecycle | 4/4 | Complete | 2026-03-22 |' .planning/ROADMAP.md` returns a match
    - `grep '| 3. SSH Execution | 3/3 | Complete | 2026-03-23 |' .planning/ROADMAP.md` returns a match
    - `grep '| 4. Snapshot Management | 2/2 | Complete | 2026-03-23 |' .planning/ROADMAP.md` returns a match
    - `grep '| 5. Artifact Pipeline | 3/3 | Complete | 2026-03-23 |' .planning/ROADMAP.md` returns a match
    - `grep '| 6. Kernel Observability | 2/2 | Complete | 2026-03-23 |' .planning/ROADMAP.md` returns a match
    - `grep '| 7. Network.*5/5.*Complete.*2026-03-24' .planning/ROADMAP.md` returns a match
    - `grep '| 8. Retroactive.*2/2.*Complete.*2026-03-24' .planning/ROADMAP.md` returns a match
    - `grep '0/3.*Not started' .planning/ROADMAP.md` returns a match (Phase 10 still not started)
    - `grep '| 1. Foundation | 0' .planning/ROADMAP.md` returns NO matches
    - `grep '| 2. Core VM Lifecycle | 0' .planning/ROADMAP.md` returns NO matches
    - Overview table row 4 contains 'Snapshot Management' with 'SNAP-01..04' in Requirements column (not '2/2')
    - Overview table row 6 contains 'Kernel Observability' with 'OBS-01..03' in Requirements column (not '1/2')
  </acceptance_criteria>
  <done>Progress table shows correct plan counts and completion dates for all phases. Phases 1-8 show Complete with dates; Phase 6 shows 2/2 Complete (both plans executed). Overview table has correct Goal/Requirements/Plans column data for all rows. Phase 9 shows In Progress, Phase 10 shows Not started.</done>
</task>

</tasks>

<verification>
Run after both tasks complete:
```bash
# Phase 2 plans all checked
grep -c '- \[x\] 02-0[1-4]-PLAN' .planning/ROADMAP.md  # should be 4

# Phase 3 plans all checked
grep -c '- \[x\] 03-0[1-3]-PLAN' .planning/ROADMAP.md  # should be 3

# Phase 6 both plans checked
grep -c '- \[x\] 06-0[12]-PLAN' .planning/ROADMAP.md  # should be 2

# Phase 8 both plans checked
grep -c '- \[x\] 08-0[12]-PLAN' .planning/ROADMAP.md  # should be 2

# Progress table has correct data
grep '3/3.*Complete.*2026-03-22' .planning/ROADMAP.md  # Foundation row
grep '4/4.*Complete.*2026-03-22' .planning/ROADMAP.md  # Phase 2 row
grep '3/3.*Complete.*2026-03-23' .planning/ROADMAP.md  # Phase 3 row
grep '2/2.*Complete.*2026-03-23' .planning/ROADMAP.md  # Phase 6 row

# Overview table not malformed
grep 'SNAP-01..04' .planning/ROADMAP.md  # should exist
grep 'OBS-01..03' .planning/ROADMAP.md   # should exist

# No phases showing 0/N Not started that should be complete
grep '| 1\. Foundation | 0\|| 2\. Core VM Lifecycle | 0\|| 3\. SSH Execution | 0' .planning/ROADMAP.md  # should be empty
```
</verification>

<success_criteria>
1. `grep -c '- \[x\] 02-0[1-4]-PLAN' .planning/ROADMAP.md` returns 4
2. `grep -c '- \[x\] 03-0[1-3]-PLAN' .planning/ROADMAP.md` returns 3
3. `grep '- \[x\] 06-01-PLAN.md' .planning/ROADMAP.md` has output
4. `grep '- \[x\] 08-01-PLAN.md' .planning/ROADMAP.md` has output
5. `grep '| 1. Foundation | 3/3 | Complete' .planning/ROADMAP.md` has output
6. `grep '| 2. Core VM Lifecycle | 4/4 | Complete' .planning/ROADMAP.md` has output
7. `grep '| 3. SSH Execution | 3/3 | Complete' .planning/ROADMAP.md` has output
8. `grep '| 6. Kernel Observability | 2/2 | Complete' .planning/ROADMAP.md` has output
9. `grep '| 7. Network.*5/5.*Complete' .planning/ROADMAP.md` has output
10. `grep '| 8. Retroactive.*2/2.*Complete' .planning/ROADMAP.md` has output
11. `grep 'SNAP-01..04' .planning/ROADMAP.md` has output (Overview table repaired)
</success_criteria>

<output>
After completion, create `.planning/phases/09-requirements-roadmap-metadata-closure/09-02-SUMMARY.md`
</output>
