---
phase: 11
slug: core-ipd-pipe-command
status: draft
nyquist_compliant: false
wave_0_complete: false
created: 2026-03-25
---

# Phase 11 -- Validation Strategy

> Per-phase validation contract for feedback sampling during execution.

---

## Test Infrastructure

| Property | Value |
|----------|-------|
| **Framework** | None -- no automated test infrastructure in this C++ project |
| **Config file** | N/A |
| **Quick run command** | `"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin/cmake.exe" --build build --config Release` |
| **Full suite command** | `"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin/cmake.exe" --build build --config Release` |
| **Estimated runtime** | ~15 seconds |

---

## Sampling Rate

- **After every task commit:** Run build command (compilation is the automated gate)
- **After every plan wave:** Build + deploy to SteamVR + manual test of all commands
- **Before `/gsd:verify-work`:** Full build must succeed + all manual verifications complete
- **Max feedback latency:** 15 seconds (build time)

---

## Per-Task Verification Map

| Task ID | Plan | Wave | Requirement | Test Type | Automated Command | File Exists | Status |
|---------|------|------|-------------|-----------|-------------------|-------------|--------|
| 11-01-01 | 01 | 1 | HARD-02 | manual | `beyond_prox_ctl.exe "ipd?"` -- check startup read | N/A | pending |
| 11-01-02 | 01 | 1 | IPD-01 | manual | `beyond_prox_ctl.exe "ipd 63.5"` -- visual confirm | N/A | pending |
| 11-01-03 | 01 | 1 | IPD-02, HARD-01 | manual | `beyond_prox_ctl.exe "ipd 10"` -- expect ERR | N/A | pending |
| 11-01-04 | 01 | 1 | IPD-03 | manual | `beyond_prox_ctl.exe "ipd?"` -- check response format | N/A | pending |
| 11-01-05 | 01 | 1 | IPD-05 | manual | `beyond_prox_ctl.exe "status"` -- check ipd= field | N/A | pending |
| 11-01-06 | 01 | 1 | IPD-04 | manual | Build CLI + test ipd/ipd? commands | N/A | pending |

*Status: pending / green / red / flaky*

---

## Wave 0 Requirements

Existing infrastructure covers all phase requirements. No test framework to set up -- all testing is manual verification via CLI + SteamVR with HMD hardware.

---

## Manual-Only Verifications

| Behavior | Requirement | Why Manual | Test Instructions |
|----------|-------------|------------|-------------------|
| IPD change visible in HMD | IPD-01 | Requires HMD hardware + visual inspection | Send `ipd 63.5`, wear HMD, confirm eye separation changed |
| Out-of-range rejection | IPD-02, HARD-01 | CLI response check | Send `ipd 10`, `ipd 200`, `ipd 47.9`, `ipd 75.1` -- all should return ERR |
| Query returns current value | IPD-03 | CLI response check | Send `ipd 63.5`, then `ipd?` -- should show `OK ipd=63.5mm` |
| Status includes IPD | IPD-05 | CLI response check | Send `status` -- check for `ipd=63.5mm lh_config=loaded` |
| Startup IPD tracking | HARD-02 | Requires SteamVR restart | Restart SteamVR, send `ipd?` -- should show current value or unknown |
| Config loading from lhr-* | HARD-02 | Requires HMD connected with config files present | Check driver log for config load success/failure |

---

## Validation Sign-Off

- [ ] All tasks have build verification (compilation gate)
- [ ] Sampling continuity: build after every task commit
- [ ] Wave 0 covers all MISSING references
- [ ] No watch-mode flags
- [ ] Feedback latency < 15s
- [ ] `nyquist_compliant: true` set in frontmatter

**Approval:** pending
