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

must_haves:
  truths:
    - "All FOUND-01..04 requirements have [x] checkboxes in REQUIREMENTS.md"
    - "OBS-02 and OBS-03 requirements have [x] checkboxes in REQUIREMENTS.md"
    - "Traceability table shows Complete for FOUND-01, FOUND-02, FOUND-03, FOUND-04"
    - "Traceability table shows Complete for OBS-02 and OBS-03"
  artifacts:
    - path: ".planning/REQUIREMENTS.md"
      provides: "Accurate requirement status with correct checkboxes and traceability"
      contains: "- [x] **FOUND-01**"
  key_links:
    - from: ".planning/REQUIREMENTS.md checkboxes"
      to: "Traceability table statuses"
      via: "Consistent Complete state for all implemented requirements"
      pattern: "\\[x\\] \\*\\*FOUND-0"
---

<objective>
Fix stale requirement checkboxes and traceability table statuses in REQUIREMENTS.md so that all implemented Foundation and Kernel Observability requirements reflect actual completion state.

Purpose: The milestone audit reads REQUIREMENTS.md checkboxes and traceability status to score requirement satisfaction. Currently FOUND-01..04 and OBS-02/OBS-03 show `[ ]` and `Pending` despite being fully implemented and verified.

Output: Updated REQUIREMENTS.md with `[x]` checkboxes and `Complete` traceability for FOUND-01..04, OBS-02, OBS-03.
</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 FOUND-01..04 checkboxes and traceability</name>
  <read_first>
    - .planning/REQUIREMENTS.md (the file being modified — read current state before touching)
    - .planning/phases/01-foundation/01-VERIFICATION.md (confirms Foundation requirements are verified)
  </read_first>
  <files>.planning/REQUIREMENTS.md</files>
  <action>
In REQUIREMENTS.md, make exactly these changes:

**Checkbox section (under `### Foundation`):**
Change:
```
- [ ] **FOUND-01**: Server starts via `python -m vmcluster_mcp.server` and accepts MCP stdio connections.
- [ ] **FOUND-02**: All tool results are returned as structured `ToolResult[T]` — no raw exceptions reach the agent.
- [ ] **FOUND-03**: Server configuration is loadable from `/etc/vmcluster/config.yaml` or environment variables.
- [ ] **FOUND-04**: YAML topology files are parsed and validated, with clear schema errors on malformed input.
```
To:
```
- [x] **FOUND-01**: Server starts via `python -m vmcluster_mcp.server` and accepts MCP stdio connections.
- [x] **FOUND-02**: All tool results are returned as structured `ToolResult[T]` — no raw exceptions reach the agent.
- [x] **FOUND-03**: Server configuration is loadable from `/etc/vmcluster/config.yaml` or environment variables.
- [x] **FOUND-04**: YAML topology files are parsed and validated, with clear schema errors on malformed input.
```

**Traceability table (under `## Traceability`):**
Change these four rows:
```
| FOUND-01 | Phase 1: Foundation | Pending |
| FOUND-02 | Phase 1: Foundation | Pending |
| FOUND-03 | Phase 1: Foundation | Pending |
| FOUND-04 | Phase 1: Foundation | Pending |
```
To:
```
| FOUND-01 | Phase 1: Foundation | Complete |
| FOUND-02 | Phase 1: Foundation | Complete |
| FOUND-03 | Phase 1: Foundation | Complete |
| FOUND-04 | Phase 1: Foundation | Complete |
```

Evidence basis: 01-VERIFICATION.md confirms all 4 Foundation requirements satisfied. Phase 01 summaries include `requirements-completed: [FOUND-01]`, `[FOUND-01, FOUND-02]`, `[FOUND-03, FOUND-04]`.
  </action>
  <verify>
    <automated>grep -c '\- \[x\] \*\*FOUND-0' /home/hornc/repos/vmcluster-mcp/.planning/REQUIREMENTS.md | grep -q '^4$' && echo "PASS: 4 FOUND checkboxes marked complete" || echo "FAIL"</automated>
  </verify>
  <acceptance_criteria>
    - `grep '- \[x\] \*\*FOUND-01' .planning/REQUIREMENTS.md` returns a match
    - `grep '- \[x\] \*\*FOUND-02' .planning/REQUIREMENTS.md` returns a match
    - `grep '- \[x\] \*\*FOUND-03' .planning/REQUIREMENTS.md` returns a match
    - `grep '- \[x\] \*\*FOUND-04' .planning/REQUIREMENTS.md` returns a match
    - `grep 'FOUND-01.*Complete' .planning/REQUIREMENTS.md` returns a match in the traceability table
    - `grep 'FOUND-02.*Complete' .planning/REQUIREMENTS.md` returns a match in the traceability table
    - `grep 'FOUND-03.*Complete' .planning/REQUIREMENTS.md` returns a match in the traceability table
    - `grep 'FOUND-04.*Complete' .planning/REQUIREMENTS.md` returns a match in the traceability table
    - `grep '- \[ \] \*\*FOUND' .planning/REQUIREMENTS.md` returns NO matches (no unchecked FOUND requirements)
    - `grep 'FOUND.*Pending' .planning/REQUIREMENTS.md` returns NO matches in traceability table
  </acceptance_criteria>
  <done>All four FOUND requirements have [x] checkboxes and Complete traceability status.</done>
</task>

<task type="auto">
  <name>Task 2: Fix OBS-02 and OBS-03 checkboxes and traceability</name>
  <read_first>
    - .planning/REQUIREMENTS.md (re-read after Task 1 changes; need current state)
    - .planning/phases/06-kernel-observability/06-VERIFICATION.md (confirms OBS-02, OBS-03 are verified)
    - .planning/phases/06-kernel-observability/06-02-SUMMARY.md (confirms dmesg_collect implementing OBS-02/OBS-03)
  </read_first>
  <files>.planning/REQUIREMENTS.md</files>
  <action>
In REQUIREMENTS.md, make exactly these changes:

**Checkbox section (under `### Kernel Observability`):**
Change:
```
- [ ] **OBS-02**: Agent can collect structured dmesg output from nodes since a named marker, filtered by log level.
- [ ] **OBS-03**: Collected dmesg is classified for oops, panics, KASAN/UBSAN events, and warnings.
```
To:
```
- [x] **OBS-02**: Agent can collect structured dmesg output from nodes since a named marker, filtered by log level.
- [x] **OBS-03**: Collected dmesg is classified for oops, panics, KASAN/UBSAN events, and warnings.
```

**Traceability table (under `## Traceability`):**
Change these two rows:
```
| OBS-02 | Phase 6: Kernel Observability | Pending |
| OBS-03 | Phase 6: Kernel Observability | Pending |
```
To:
```
| OBS-02 | Phase 6: Kernel Observability | Complete |
| OBS-03 | Phase 6: Kernel Observability | Complete |
```

Evidence basis: Phase 06 plan 06-02 implemented `dmesg_collect` with marker-based filtering (OBS-02) and classification of oops/panics/KASAN/UBSAN events (OBS-03). 06-VERIFICATION.md confirms both requirements satisfied.
  </action>
  <verify>
    <automated>grep -E '\- \[x\] \*\*OBS-0[23]' /home/hornc/repos/vmcluster-mcp/.planning/REQUIREMENTS.md | wc -l | grep -q '^2$' && echo "PASS: OBS-02 and OBS-03 checked" || echo "FAIL"</automated>
  </verify>
  <acceptance_criteria>
    - `grep '- \[x\] \*\*OBS-02' .planning/REQUIREMENTS.md` returns a match
    - `grep '- \[x\] \*\*OBS-03' .planning/REQUIREMENTS.md` returns a match
    - `grep 'OBS-02.*Complete' .planning/REQUIREMENTS.md` returns a match in the traceability table
    - `grep 'OBS-03.*Complete' .planning/REQUIREMENTS.md` returns a match in the traceability table
    - `grep '- \[ \] \*\*OBS' .planning/REQUIREMENTS.md` returns NO matches (no unchecked OBS requirements)
    - `grep 'OBS-0[23].*Pending' .planning/REQUIREMENTS.md` returns NO matches
  </acceptance_criteria>
  <done>OBS-02 and OBS-03 have [x] checkboxes and Complete traceability status. All implemented requirements in REQUIREMENTS.md now reflect actual completion.</done>
</task>

</tasks>

<verification>
Run after both tasks complete:
```bash
# All FOUND requirements checked
grep -c '- \[x\] \*\*FOUND' .planning/REQUIREMENTS.md  # should be 4

# All OBS-02/03 checked
grep '- \[x\] \*\*OBS-02' .planning/REQUIREMENTS.md
grep '- \[x\] \*\*OBS-03' .planning/REQUIREMENTS.md

# No pending FOUND or OBS-02/03 in traceability
grep 'FOUND.*Pending\|OBS-0[23].*Pending' .planning/REQUIREMENTS.md  # should be empty

# All implemented reqs have Complete status
grep 'FOUND\|OBS-02\|OBS-03' .planning/REQUIREMENTS.md | grep 'Pending'  # should be empty
```
</verification>

<success_criteria>
1. `grep -c '- \[x\] \*\*FOUND' .planning/REQUIREMENTS.md` returns 4
2. `grep '- \[x\] \*\*OBS-02' .planning/REQUIREMENTS.md` has output
3. `grep '- \[x\] \*\*OBS-03' .planning/REQUIREMENTS.md` has output
4. `grep 'FOUND.*Pending' .planning/REQUIREMENTS.md` has no output
5. `grep 'OBS-0[23].*Pending' .planning/REQUIREMENTS.md` has no output
6. `grep '- \[ \] \*\*FOUND\|- \[ \] \*\*OBS-02\|- \[ \] \*\*OBS-03' .planning/REQUIREMENTS.md` has no output
</success_criteria>

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