diff --git a/.planning/phases/04-cli-scaffolding-i18n-and-mail/04-VALIDATION.md b/.planning/phases/04-cli-scaffolding-i18n-and-mail/04-VALIDATION.md index 13790b7..73f1d81 100644 --- a/.planning/phases/04-cli-scaffolding-i18n-and-mail/04-VALIDATION.md +++ b/.planning/phases/04-cli-scaffolding-i18n-and-mail/04-VALIDATION.md @@ -30,9 +30,18 @@ created: 2026-09-18 | Task ID | Plan | Wave | Requirement | Threat Ref | Secure Behavior | Test Type | Automated Command | File Exists | Status | |---|---|---|---|---|---|---|---|---|---| -| To fill after PLAN.md creation | — | — | CLI-02 | T-04-01 | Generated names and imports stay inside plugin module | compile/integration | `go test ./internal/build ./cmd/summer` | ❌ W0 | ⬜ pending | -| To fill after PLAN.md creation | — | — | I18N-01 | T-04-02 | Malformed YAML/plurals fail boot with context | unit | `go test ./phrasebook` | ❌ W0 | ⬜ pending | -| To fill after PLAN.md creation | — | — | I18N-03 | T-04-03, T-04-04 | Safe final HTML, explicit SMTP policy, driver errors propagated | unit/integration | `go test ./postcard` | ❌ W0 | ⬜ pending | +| 04-01-01 | 01 | 1 | CLI-02 | T-04-01 | Plugin paths stay under the app root | compile smoke | `go test ./internal/build -run TestScaffoldPluginSmoke -short -count=1` | ❌ W0 | ⬜ pending | +| 04-01-02 | 01 | 1 | CLI-02 | T-04-01, T-04-03 | Model, migration and command registry is deterministic | compile smoke | `go test ./internal/build ./cmd/summer -short -count=1` | ❌ W0 | ⬜ pending | +| 04-01-03 | 01 | 1 | CLI-02 | T-04-02 | All artifacts compile and sibling model imports fail | compile smoke | `go test ./internal/build ./cmd/summer -short -count=1` | ❌ W0 | ⬜ pending | +| 04-02-01 | 02 | 2 | I18N-01 | T-04-04 | Embedded catalog has bounded namespace and valid YAML | unit/hello | `go test ./phrasebook -run TestTranslationSmoke -short -count=1 && go -C examples/hello test ./...` | ❌ W0 | ⬜ pending | +| 04-02-02 | 02 | 2 | I18N-01 | T-04-04, T-04-05 | Invalid plurals fail and CLDR forms select correctly | unit | `go test ./phrasebook -short -count=1` | ❌ W0 | ⬜ pending | +| 04-02-03 | 02 | 2 | I18N-01 | T-04-06 | Missing-key logs exclude parameters | unit/hello | `go test ./phrasebook -short -count=1 && go -C examples/hello test ./...` | ❌ W0 | ⬜ pending | +| 04-03-01 | 03 | 3 | I18N-03 | T-04-08, T-04-09 | Memory send renders safe subject, text and HTML | unit | `go test ./postcard -run TestMailRenderSmoke -short -count=1` | ❌ W0 | ⬜ pending | +| 04-03-02 | 03 | 3 | I18N-03 | T-04-07 | Invalid template/layout fails named boot | unit/hello | `go test ./postcard -short -count=1 && go -C examples/hello test ./...` | ❌ W0 | ⬜ pending | +| 04-03-03 | 03 | 3 | I18N-03 | T-04-10, T-04-11 | Explicit SMTP policy and driver errors | unit | `go test ./postcard -short -count=1` | ❌ W0 | ⬜ pending | +| 04-04-01 | 04 | 4 | CLI-02 | T-04-12 | Public make/build flow rejects traversal and import violations | regression | `go test ./internal/build ./cmd/summer -short -count=1` | ❌ W0 | ⬜ pending | +| 04-04-02 | 04 | 4 | I18N-01 | T-04-13 | Catalog, plural and fallback edge cases hold at activation | regression/hello | `go test ./phrasebook ./party -short -count=1 && go -C examples/hello test ./...` | ❌ W0 | ⬜ pending | +| 04-04-03 | 04 | 4 | I18N-03 | T-04-14, T-04-15 | Rendered HTML and SMTP receipt pass full gate | integration | `./scripts/check-phase4.sh` | ❌ W0 | ⬜ pending | *Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky* @@ -54,7 +63,7 @@ All phase behaviors have automated verification. Production SMTP credentials and - [ ] No three consecutive tasks lack automated verification. - [ ] Generated plugin compiles and vets; pl/en catalog and Mailpit send pass. - [ ] No watch-mode flags in verification commands. -- [ ] Fill task IDs and measured runtime after plans and implementation evidence exist. +- [x] Fill task IDs from the four approved plans; measure runtime after implementation evidence exists. - [ ] Set `nyquist_compliant: true` only after the full gate passes. **Approval:** pending.