docs(01): create phase plan
This commit is contained in:
131
.planning/phases/01-framework-kernel-foundation/01-04-PLAN.md
Normal file
131
.planning/phases/01-framework-kernel-foundation/01-04-PLAN.md
Normal file
@@ -0,0 +1,131 @@
|
||||
---
|
||||
phase: 01-framework-kernel-foundation
|
||||
plan: 04
|
||||
type: execute
|
||||
wave: 4
|
||||
depends_on: ["01-03"]
|
||||
files_modified:
|
||||
- compass/config_test.go
|
||||
- party/registry_test.go
|
||||
- backpack/services_test.go
|
||||
- festival/bus_test.go
|
||||
- towel/context_test.go
|
||||
- bonfire/output_test.go
|
||||
- bonfire/prompts_test.go
|
||||
- internal/build/build_test.go
|
||||
- internal/dev/watch_test.go
|
||||
- examples/hello/hello_test.go
|
||||
- scripts/check-phase1.sh
|
||||
- .planning/phases/01-framework-kernel-foundation/01-VALIDATION.md
|
||||
autonomous: true
|
||||
requirements: [KERN-01, KERN-02, KERN-03, KERN-04, KERN-05, KERN-06, KERN-07, KERN-08, KERN-09, CLI-01]
|
||||
must_haves:
|
||||
truths:
|
||||
- "Every KERN-01 through KERN-09 and CLI-01 contract has a behavioral test, including failure and non-TTY paths."
|
||||
- "The final check runs `go vet`, `go test`, and `go test -race` in the framework, hello app and each hello plugin module."
|
||||
- "A temporary app can run `summer build` and its generated binary; source edit under `summer dev` records measured rebuild time and restarts the child."
|
||||
artifacts:
|
||||
- path: scripts/check-phase1.sh
|
||||
provides: Repeatable phase-wide verification command
|
||||
- path: compass/config_test.go
|
||||
provides: Config precedence regression tests
|
||||
- path: festival/bus_test.go
|
||||
provides: Event dispatch regression tests
|
||||
- path: examples/hello/hello_test.go
|
||||
provides: Built-app integration test
|
||||
key_links:
|
||||
- from: scripts/check-phase1.sh
|
||||
to: examples/hello/go.mod
|
||||
via: Checks nested app and plugin modules independently
|
||||
- from: examples/hello/hello_test.go
|
||||
to: cmd/summer/main.go
|
||||
via: Builds and executes a generated app binary
|
||||
---
|
||||
|
||||
<objective>
|
||||
As a framework maintainer, I can run one repeatable check that proves the Phase 1 kernel and development loop before Phase 3 depends on them.
|
||||
|
||||
Purpose: Add the phase's dedicated unit and integration test plan, with broad behavior and failure coverage.
|
||||
Output: Focused Go tests, a nested-module check script, a generated-binary smoke and completed Nyquist validation map.
|
||||
</objective>
|
||||
|
||||
<execution_context>
|
||||
@$HOME/.codex/get-shit-done/workflows/execute-plan.md
|
||||
@$HOME/.codex/get-shit-done/templates/summary.md
|
||||
</execution_context>
|
||||
|
||||
<context>
|
||||
@.planning/PROJECT.md
|
||||
@.planning/ROADMAP.md
|
||||
@.planning/REQUIREMENTS.md
|
||||
@.planning/phases/01-framework-kernel-foundation/01-CONTEXT.md
|
||||
@.planning/phases/01-framework-kernel-foundation/01-RESEARCH.md
|
||||
@.planning/phases/01-framework-kernel-foundation/01-VALIDATION.md
|
||||
@.planning/phases/01-framework-kernel-foundation/01-03-SUMMARY.md
|
||||
</context>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Cover config, lifecycle, services, events and context behavior</name>
|
||||
<files>compass/config_test.go, party/registry_test.go, backpack/services_test.go, festival/bus_test.go, towel/context_test.go</files>
|
||||
<read_first>compass/config.go, compass/env.go, compass/persist.go, party/registry.go, backpack/app.go, backpack/services.go, festival/bus.go, towel/context.go, compass/config_test.go, party/registry_test.go, backpack/services_test.go, festival/bus_test.go, towel/context_test.go, .planning/phases/01-framework-kernel-foundation/01-CONTEXT.md</read_first>
|
||||
<action>Expand earlier smoke tests into table-driven behavioral tests for all config precedence levels, malformed YAML, snake_case env keys, `.env` non-override, dotted plugin namespace, typed section decode, Set/Persist/Reload and concurrent reads. Test plugin duplicate/missing/cycle errors, reordered manifest inputs, all-Register-before-any-Boot, HasConfig/HasCommands assertions, absent/present HasPlugin and typed service lookup with two separate App instances. Test three typed event dispatch modes, priority and stable ties, partial collect payload, joined errors, stop-on-error, owner-labelled panic recovery and concurrent independent app buses. Test actor/organization/collection/locale context accessors and nested context isolation. Fix any production defect exposed by these tests in the same task, keeping API behavior from D-01–D-13 intact. Report per-package coverage for these packages; cover contract branches rather than chasing an arbitrary percentage.</action>
|
||||
<verify><automated>go test -race ./compass ./party ./backpack ./festival ./towel ./pact</automated></verify>
|
||||
<acceptance_criteria>
|
||||
- Each KERN-01/02/03/05/06/07/08 behavior above has at least one source-to-observable assertion.
|
||||
- `go test -race ./compass ./party ./backpack ./festival ./towel ./pact` exits 0.
|
||||
- No test asserts only implementation structure when a behavior can be observed.
|
||||
</acceptance_criteria>
|
||||
<done>The kernel's core behavioral and failure contracts are regression tested.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Cover tool, output, watch loop and every workspace module</name>
|
||||
<files>bonfire/output_test.go, bonfire/prompts_test.go, internal/build/build_test.go, internal/dev/watch_test.go, examples/hello/hello_test.go, scripts/check-phase1.sh, .planning/phases/01-framework-kernel-foundation/01-VALIDATION.md</files>
|
||||
<read_first>bonfire/root.go, bonfire/output.go, bonfire/widgets.go, bonfire/prompts.go, internal/build/build.go, internal/build/manifest.go, internal/build/scaffold.go, internal/dev/watch.go, cmd/summer/main.go, examples/hello/summer.yaml, bonfire/output_test.go, bonfire/prompts_test.go, internal/build/build_test.go, internal/dev/watch_test.go, examples/hello/hello_test.go, scripts/check-phase1.sh, .planning/phases/01-framework-kernel-foundation/01-VALIDATION.md</read_first>
|
||||
<action>Test namespaced command discovery and flag/argument parsing, injected output capture, all non-TTY widget/prompt fallbacks, `NO_COLOR`/`FORCE_COLOR`/`TERM=dumb` policy and closed stdin. In a temporary copied hello workspace, assert `make:plugin` minimal files, `plugin:add` idempotence, stable generated bytes, malicious ID/path rejection, `summer build` success, built hello command output and non-zero failure on invalid Requires. Use deterministic build/process hooks for debounce/cancellation tests, plus a real fsnotify temp-workspace edit for one successful rebuild/restart; capture and assert a `rebuild: <duration>` line without assuming a threshold. Add `scripts/check-phase1.sh` that runs `go vet ./...`, `go test ./...` and `go test -race ./...` from root, `examples/hello`, and each nested plugin module; include built-binary integration. Update VALIDATION.md's per-task map/status and set `nyquist_compliant: true` only when every planned automated check exists and passes. Fix production defects the tests expose, while keeping this plan focused on verification.</action>
|
||||
<verify><automated>bash scripts/check-phase1.sh</automated></verify>
|
||||
<acceptance_criteria>
|
||||
- `bash scripts/check-phase1.sh` exits 0 and names root, hello app, base, greeter and optional plugin modules.
|
||||
- Test suite observes `summer build` and a separately executed hello binary, not only package compilation.
|
||||
- Watch test observes a source-change rebuild, restart and measured latency line; generated-file edits do not loop.
|
||||
- Non-TTY spinner/progress/table/prompt and color policy assertions run without a terminal.
|
||||
- VALIDATION.md records passing automated checks and `nyquist_compliant: true` only after the full script passes.
|
||||
</acceptance_criteria>
|
||||
<done>The phase has a repeatable, race-enabled verification command and completed validation evidence.</done>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<threat_model>
|
||||
## Trust Boundaries
|
||||
|
||||
| Boundary | Description |
|
||||
|---|---|
|
||||
| Test fixture input → tool/process | Malformed manifests and source edits should fail safely during local tooling. |
|
||||
|
||||
## STRIDE Threat Register
|
||||
|
||||
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|
||||
|---|---|---|---|---|
|
||||
| T-01-09 | Tampering | Manifest and scaffold inputs | mitigate | Add negative tests for invalid IDs, duplicate modules and path traversal. |
|
||||
| T-01-10 | Denial of service | Watch loop | mitigate | Test debounce, ignored outputs, failed build and child cleanup. |
|
||||
| T-01-11 | Information disclosure | CLI secret and config | mitigate | Assert secret prompt answer and config values do not leak into captured error/output streams. |
|
||||
</threat_model>
|
||||
|
||||
<verification>
|
||||
- Run `bash scripts/check-phase1.sh` and inspect its per-module output.
|
||||
- Confirm `go test -race` passes in all five modules and `go vet` is green.
|
||||
- Record measured single-plugin rebuild time in 01-04-SUMMARY.md.
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- All ten phase requirement IDs have automated behavioral evidence.
|
||||
- The final testing plan runs after implementation and passes across all workspace modules.
|
||||
- VALIDATION.md can be signed off without missing tests or broken Wave 0 references.
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
Create `.planning/phases/01-framework-kernel-foundation/01-04-SUMMARY.md` after completion.
|
||||
</output>
|
||||
Reference in New Issue
Block a user