---
phase: 13
slug: design-system-foundation
status: draft
nyquist_compliant: true
wave_0_complete: true
created: 2026-05-16
---

# Phase 13 — Validation Strategy

> Per-phase validation contract for feedback sampling during execution.

---

## Test Infrastructure

| Property | Value |
|----------|-------|
| **Framework** | go test |
| **Config file** | backend/go.mod |
| **Quick run command** | `cd backend && go test ./internal/web/ui/... -count=1` |
| **Full suite command** | `cd backend && just test` |
| **Estimated runtime** | ~13 seconds |

---

## Sampling Rate

- **After every task commit:** Run `cd backend && go test ./internal/web/ui/... -count=1`
- **After every plan wave:** Run `cd backend && just test`
- **Before `/gsd-verify-work`:** Full suite must be green
- **Max feedback latency:** 13 seconds

---

## Per-Task Verification Map

| Task ID | Plan | Wave | Requirement | Threat Ref | Secure Behavior | Test Type | Automated Command | File Exists | Status |
|---------|------|------|-------------|------------|-----------------|-----------|-------------------|-------------|--------|
| 13-01-01 | 01 | 1 | DS-01 | T-13-01 / — | N/A (CSS tokens, no user data) | unit | `cd backend && go test ./internal/web/ui/... -count=1` | ✅ | ⬜ pending |
| 13-01-02 | 01 | 1 | DS-01, DS-02, DS-05 | T-13-01 / — | N/A (enum helpers, no user input) | unit | `cd backend && go test ./internal/web/ui/... -count=1` | ✅ | ⬜ pending |
| 13-02-01 | 02 | 2 | DS-02 | T-13-01 / — | N/A (class assembly, no user data) | unit | `cd backend && go test ./internal/web/ui/... -count=1 && go build ./...` | ✅ | ⬜ pending |
| 13-02-02 | 02 | 2 | DS-04, DS-05 | T-13-01 / — | N/A (component CSS, no user input) | unit | `cd backend && go test ./internal/web/ui/... -count=1` | ✅ | ⬜ pending |
| 13-03-01 | 03 | 3 | DS-03 | T-13-01 / — | N/A (form components, no server-side processing) | unit | `cd backend && go test ./internal/web/ui/... -count=1` | ✅ | ⬜ pending |
| 13-03-02 | 03 | 3 | DS-03 | T-13-01 / — | N/A (select helpers, no SQL) | unit | `cd backend && go test ./internal/web/ui/... -count=1` | ✅ | ⬜ pending |
| 13-04-01 | 04 | 4 | DS-06, DS-07, DS-08 | T-13-01 / — | N/A (display components) | unit | `cd backend && go test ./internal/web/ui/... -count=1` | ✅ | ⬜ pending |
| 13-04-02 | 04 | 4 | DS-09 | T-13-01 / — | N/A (icon components) | unit | `cd backend && go test ./internal/web/ui/... -count=1 && go build ./...` | ✅ | ⬜ pending |
| 13-05-01 | 05 | 5 | DS-01–DS-09 | T-13-01 / T-13-02 | Catalog only accessible in dev build; no user data exposed | unit+manual | `cd backend && go build ./... && go build -tags catalog ./... && just test && grep 'RegisterCatalogRoute' internal/web/router.go && grep '^//go:build catalog' internal/web/catalog_route_catalog.go` | ✅ | ⬜ pending |

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

---

## Wave 0 Requirements

Existing infrastructure covers all phase requirements. The `go test` framework and `just` targets are already configured in `backend/`. No Wave 0 setup needed.

---

## Manual-Only Verifications

| Behavior | Requirement | Why Manual | Test Instructions |
|----------|-------------|------------|-------------------|
| Visual catalog renders all components correctly in browser | DS-01–DS-09 | Visual inspection required | Run `cd backend && go run -tags catalog .` then visit `/ui-catalog`; confirm all component sections render with correct styling |
| Token choices (brand color, radius, shadow) match product intent | DS-01 | Design decision confirmation | Compare `/ui-catalog` rendering against UI-SPEC color contract (#804eec brand-purple, white surfaces) |

---

## Validation Sign-Off

- [x] All tasks have `<automated>` verify or Wave 0 dependencies
- [x] Sampling continuity: no 3 consecutive tasks without automated verify
- [x] Wave 0 covers all MISSING references (none needed)
- [x] No watch-mode flags
- [x] Feedback latency < 13s
- [x] `nyquist_compliant: true` set in frontmatter

**Approval:** approved 2026-05-16
