diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 5dece7b..f4d1b52 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -42,10 +42,19 @@ 5. All existing templates compile and unit tests pass with no regressions Plans: +**Wave 1** - [ ] 13-01-PLAN.md — Token vocabulary + enum/helper foundation (base.css, auth.css extraction, variants.go, helpers.go) + +**Wave 2** *(blocked on Wave 1 completion)* - [ ] 13-02-PLAN.md — Migrate existing components to go-backend API (button multi-class, badge pill, card typed API, template hardcodes) + +**Wave 3** *(blocked on Wave 2 completion)* - [ ] 13-03-PLAN.md — Port form-input components: input, textarea, select, form-field (CSS + templ + tests) + +**Wave 4** *(blocked on Wave 3 completion)* - [ ] 13-04-PLAN.md — Port surface components: modal, empty-state, table, icon-button, space + tailwind.input.css manifest + +**Wave 5** *(blocked on Wave 4 completion)* - [ ] 13-05-PLAN.md — Catalog route (build-tag gated) + visual sign-off checkpoint **User-in-loop:** Review the catalog page before proceeding to per-view application phases. Confirm token choices (brand color, radius, shadow levels) match what you want the product to look like. diff --git a/.planning/STATE.md b/.planning/STATE.md index 85bd32e..98b39c1 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -2,14 +2,15 @@ gsd_state_version: 1.0 milestone: v3.0 milestone_name: Design System & Visual Polish -status: Defining requirements -last_updated: "2026-05-16T10:41:32.081Z" -last_activity: 2026-05-16 — v2.0 milestone archived; v3.0 remains active +status: executing +last_updated: "2026-05-16T11:28:01.799Z" +last_activity: 2026-05-16 -- Phase 13 planning complete progress: total_phases: 5 completed_phases: 0 - total_plans: 0 + total_plans: 5 completed_plans: 0 + percent: 0 --- # STATE @@ -29,8 +30,8 @@ See: `.planning/PROJECT.md` (updated 2026-05-16) Phase: Not started (defining requirements) Plan: — -Status: Defining requirements -Last activity: 2026-05-16 — v2.0 milestone archived; v3.0 remains active +Status: Ready to execute +Last activity: 2026-05-16 -- Phase 13 planning complete ## Previous Milestone Status diff --git a/.planning/phases/13-design-system-foundation/13-RESEARCH.md b/.planning/phases/13-design-system-foundation/13-RESEARCH.md index 72fbfb9..538205f 100644 --- a/.planning/phases/13-design-system-foundation/13-RESEARCH.md +++ b/.planning/phases/13-design-system-foundation/13-RESEARCH.md @@ -620,7 +620,7 @@ The planner should structure waves to ensure CSS is available before catalog tes --- -## Open Questions +## Open Questions (RESOLVED) 1. **Ghost button — which size rules apply?** - What we know: `ButtonVariantGhost` is a new variant not in go-backend's button.css. The size rules (`ui-button-sm`, `ui-button-md`, `ui-button-lg`) are defined as standalone classes in go-backend and apply to ALL variants. diff --git a/.planning/phases/13-design-system-foundation/13-VALIDATION.md b/.planning/phases/13-design-system-foundation/13-VALIDATION.md index ba02c93..eb20a54 100644 --- a/.planning/phases/13-design-system-foundation/13-VALIDATION.md +++ b/.planning/phases/13-design-system-foundation/13-VALIDATION.md @@ -2,8 +2,8 @@ phase: 13 slug: design-system-foundation status: draft -nyquist_compliant: false -wave_0_complete: false +nyquist_compliant: true +wave_0_complete: true created: 2026-05-16 --- @@ -17,18 +17,18 @@ created: 2026-05-16 | 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}` | +| **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 `{quick run command}` -- **After every plan wave:** Run `{full suite command}` +- **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 @@ -38,7 +38,15 @@ created: 2026-05-16 | Task ID | Plan | Wave | Requirement | Threat Ref | Secure Behavior | Test Type | Automated Command | File Exists | Status | |---------|------|------|-------------|------------|-----------------|-----------|-------------------|-------------|--------| -| 13-01-01 | 01 | 1 | REQ-{XX} | T-13-01 / — | {expected secure behavior or "N/A"} | unit | `{command}` | ✅ / ❌ W0 | ⬜ pending | +| 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* @@ -46,11 +54,7 @@ created: 2026-05-16 ## 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."* +Existing infrastructure covers all phase requirements. The `go test` framework and `just` targets are already configured in `backend/`. No Wave 0 setup needed. --- @@ -58,19 +62,18 @@ created: 2026-05-16 | Behavior | Requirement | Why Manual | Test Instructions | |----------|-------------|------------|-------------------| -| {behavior} | REQ-{XX} | {reason} | {steps} | - -*If none: "All phase behaviors have automated verification."* +| 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 -- [ ] All tasks have `` 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 < 13s -- [ ] `nyquist_compliant: true` set in frontmatter +- [x] All tasks have `` 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:** {pending / approved YYYY-MM-DD} +**Approval:** approved 2026-05-16