--- phase: {N} slug: {phase-slug} status: draft nyquist_compliant: false wave_0_complete: false created: {date} --- # Phase {N} — Validation Strategy > Generated by `gsd-phase-researcher` during `/gsd:plan-phase {N}`. > Updated by `gsd-plan-checker` after plan approval. > Governs feedback sampling during `/gsd:execute-phase {N}`. --- ## Test Infrastructure | Property | Value | |----------|-------| | **Framework** | {pytest 7.x / jest 29.x / vitest / go test / other} | | **Config file** | {path/to/pytest.ini or "none — Wave 0 installs"} | | **Quick run command** | `{e.g., pytest -x --tb=short}` | | **Full suite command** | `{e.g., pytest tests/ --tb=short}` | | **Estimated runtime** | ~{N} seconds | | **CI pipeline** | {.github/workflows/test.yml — exists / needs creation} | --- ## Nyquist Sampling Rate > The minimum feedback frequency required to reliably catch errors in this phase. - **After every task commit:** Run `{quick run command}` - **After every plan wave:** Run `{full suite command}` - **Before `/gsd:verify-work`:** Full suite must be green - **Maximum acceptable task feedback latency:** {N} seconds --- ## Per-Task Verification Map | Task ID | Plan | Wave | Requirement | Test Type | Automated Command | File Exists | Status | |---------|------|------|-------------|-----------|-------------------|-------------|--------| | {N}-01-01 | 01 | 1 | REQ-{XX} | unit | `pytest tests/test_{module}.py::test_{name} -x` | ✅ / ❌ W0 | ⬜ pending | | {N}-01-02 | 01 | 1 | REQ-{XX} | integration | `pytest tests/test_{flow}.py -x` | ✅ / ❌ W0 | ⬜ pending | | {N}-02-01 | 02 | 2 | REQ-{XX} | smoke | `curl -s {endpoint} \| grep {expected}` | ✅ N/A | ⬜ pending | *Status values: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky* --- ## Wave 0 Requirements > Test scaffolding committed BEFORE any implementation task. Executor runs Wave 0 first. - [ ] `{tests/test_file.py}` — stubs for REQ-{XX}, REQ-{XX} - [ ] `{tests/conftest.py}` — shared fixtures - [ ] `{framework install}` — if no framework detected *If none required: "Existing infrastructure covers all phase requirements — no Wave 0 test tasks needed."* --- ## Manual-Only Verifications > Behaviors that genuinely cannot be automated, with justification. > These are surfaced during `/gsd:verify-work` UAT. | Behavior | Requirement | Why Manual | Test Instructions | |----------|-------------|------------|-------------------| | {behavior} | REQ-{XX} | {reason: visual, third-party auth, physical device...} | {step-by-step} | *If none: "All phase behaviors have automated verification coverage."* --- ## Validation Sign-Off Updated by `gsd-plan-checker` when plans are approved: - [ ] All tasks have `` verify commands or Wave 0 dependencies - [ ] No 3 consecutive implementation tasks without automated verify (sampling continuity) - [ ] Wave 0 test files cover all MISSING references - [ ] No watch-mode flags in any automated command - [ ] Feedback latency per task: < {N}s ✅ - [ ] `nyquist_compliant: true` set in frontmatter **Plan-checker approval:** {pending / approved on YYYY-MM-DD} --- ## Execution Tracking Updated during `/gsd:execute-phase {N}`: | Wave | Tasks | Tests Run | Pass | Fail | Sampling Status | |------|-------|-----------|------|------|-----------------| | 0 | {N} | — | — | — | scaffold | | 1 | {N} | {command} | {N} | {N} | ✅ sampled | | 2 | {N} | {command} | {N} | {N} | ✅ sampled | **Phase validation complete:** {pending / YYYY-MM-DD HH:MM}