Files
summercms/.planning/phases/01-framework-kernel-foundation/01-VALIDATION.md
2026-09-16 12:09:13 +02:00

66 lines
3.6 KiB
Markdown

---
phase: 01
slug: framework-kernel-foundation
status: draft
nyquist_compliant: false
wave_0_complete: false
created: 2026-09-16
---
# Phase 1 — Validation Strategy
## Test Infrastructure
| Property | Value |
|---|---|
| Framework | `go test` (Go 1.27.0) |
| Config file | No test harness yet; first implementation slice adds Go tests |
| Quick run | `go vet ./... && go test ./...` from repo root, then from `examples/hello` once created |
| Full suite | Both modules: `go vet ./...`, `go test ./...`, `go test -race ./...`; generated binary integration |
| Estimated runtime | Measure after dependencies are cached; no assumed threshold |
## Sampling Rate
- After each implementation task commit, run root `go vet ./... && go test ./...`; run the same from `examples/hello` after it exists.
- After each plan wave, run both module checks plus the relevant built-binary smoke.
- Before verify-work, run race tests in both modules and an end-to-end `summer build`/hello invocation.
- Record actual feedback latency and single-plugin rebuild latency; no fixed performance promise has been set.
## Per-Requirement Verification Map
| Requirement | Test type | Automated command or assertion | Initial status |
|---|---|---|---|
| KERN-01 | unit + integration | Config precedence and typed decode tests; hello binary prints env-overlay value | Pending |
| KERN-02 | unit + integration | Reordered Register/Boot trace, missing dependency, cycle and duplicate tests | Pending |
| KERN-03 | compile + unit | Hello plugins satisfy optional interfaces; type-assertion discovery | Pending |
| KERN-04 | integration | Stable codegen, `plugin:add`, `go.work`, built hello app boot | Pending |
| KERN-05 | unit | Absent optional plugin returns false; present service lookup returns typed value | Pending |
| KERN-06 | unit + race | Three dispatch modes, priority, stable ties, errors and panic recovery | Pending |
| KERN-07 | unit + race | Two app contexts remain isolated; request values passed only via `context.Context` | Pending |
| KERN-08 | unit | Interface service publish and typed lookup `(value, ok)` | Pending |
| KERN-09 | integration | Temp app source edit triggers one debounced rebuild and restart, latency line captured | Pending |
| CLI-01 | unit + integration | Plugin command discovery, injected output, non-TTY spinner/progress/table/prompt behavior | Pending |
## Wave 0 Requirements
- [ ] First implementation slice creates `examples/hello`, its `go.mod`, and a root `go.work` that names every example module.
- [ ] First implementation slice adds smoke tests for generated app boot and the initial plugin command.
- [ ] Final plan expands unit coverage; it does not substitute for executable checks during earlier work.
## Manual-Only Verifications
| Behavior | Requirement | Why manual | Instructions |
|---|---|---|---|
| Interactive terminal rendering | CLI-01 | Terminal appearance varies by terminal emulator | Run hello command in a TTY; inspect spinner/progress/table and prompts. Automated non-TTY assertions remain required. |
| Rebuild feel | KERN-09 | Human experience complements measured latency | Edit one hello plugin file under `summer dev`; observe restart and printed elapsed time. |
## Validation Sign-Off
- [ ] Every plan task has an automated verification or an explicit Wave 0 dependency.
- [ ] No three consecutive implementation tasks lack automated feedback.
- [ ] Root and nested example modules both run `go vet`, tests and race tests.
- [ ] No watch-mode flags in CI commands.
- [ ] Set `nyquist_compliant: true` after plan-task mapping is complete.
**Approval:** pending plan verification