Files
msd-core/gsd-core/templates/VALIDATION.md
Tom Boucher b55a2e7655 fix(#2117): distinguish not-yet-validated phase from validated failure in audit-milestone
audit-milestone's Nyquist scan classified a phase from `nyquist_compliant`
alone, so a phase seeded by plan-phase but never run through validate-phase
read PARTIAL — identical to a phase that validated and genuinely failed. The
template's `status` field could discriminate the two, but no workflow ever
promoted it off `draft`, so it was dead.

Make `status` live and read it:
- validate-phase.md §6: set `status: validated` in both the create (State B)
  and update (State A) VALIDATION.md paths.
- audit-milestone.md §5.5: parse `status`; add a distinct NOT-VALIDATED bucket
  keyed on `status: draft`, gate COMPLIANT/PARTIAL on `status: validated`, and
  report `not_validated_phases` in the audit YAML.
- VALIDATION.md template: document the draft → validated lifecycle.

Tests & generated artifacts:
- Regression test folded into policy-138 (owning workflow-contract file);
  fail-first verified vs origin/next (0 matches pre-fix).
- Regenerate golden-install-parity fixtures cleanly: adds the previously-missed
  qwen.json and removes a contaminated `settings.local.json` entry that had
  leaked into claude-local.json (the harness excludes hook-config files).
- Correct a stale validate-phase.md workflow-size-baseline entry.

Closes #2117

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 22:47:51 -04:00

2.3 KiB

phase, slug, status, nyquist_compliant, wave_0_complete, created
phase slug status nyquist_compliant wave_0_complete created
N
phase-slug
draft false false
date

Phase {N} — Validation Strategy

Per-phase validation contract for feedback sampling during execution.


Test Infrastructure

Property Value
Framework {pytest 7.x / jest 29.x / vitest / go test / other}
Config file {path or "none — Wave 0 installs"}
Quick run command {quick command}
Full suite command {full command}
Estimated runtime ~{N} seconds

Sampling Rate

  • 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
  • Max feedback latency: {N} seconds

Per-Task Verification Map

Task ID Plan Wave Requirement Threat Ref Secure Behavior Test Type Automated Command File Exists Status
{N}-01-01 01 1 REQ-{XX} T-{N}-01 / — {expected secure behavior or "N/A"} unit {command} ✅ / ❌ W0 ⬜ pending

Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky


Wave 0 Requirements

  • {tests/test_file.py} — stubs for REQ-{XX}
  • {tests/conftest.py} — shared fixtures
  • {framework install} — if no framework detected

If none: "Existing infrastructure covers all phase requirements."


Manual-Only Verifications

Behavior Requirement Why Manual Test Instructions
{behavior} REQ-{XX} {reason} {steps}

If none: "All phase behaviors have automated verification."


Validation Sign-Off

  • All tasks have <automated> verify or Wave 0 dependencies
  • Sampling continuity: no 3 consecutive tasks without automated verify
  • Wave 0 covers all MISSING references
  • No watch-mode flags
  • Feedback latency < {N}s
  • nyquist_compliant: true set in frontmatter

Approval: {pending / approved YYYY-MM-DD}