Proposal: Rewrite FR-001 test section as the ideal spec
What
Replace the test section with what should be tested to fully verify FR-001’s scope. The test code will be updated to match this spec afterward.
Why
FR-001 covers two things:
- Phase 1: 10 correct, consistent, simplified templates exist
- Phase 2: Templates are used at the right points (skills, workflow docs)
Plus 5 decisions that constrain the design. The current test section partially describes existing code rather than specifying what needs verification.
Spec
Change 1: Replace lines 96–138 (test section)
## Test
### Manual tests
| Test | Expected | Actual | Last |
|------|----------|--------|------|
| Fill in each template to create a new document | Clear structure, no confusing fields, usable result | pass | 2026-03-14 |
| Review frontmatter fields per template | Fields match what's needed for that type, no unnecessary fields | pass | 2026-03-14 |
### AI-verified tests
| Scenario | Expected behavior | Verification method |
|----------|-------------------|---------------------|
| `/idea` skill produces output matching template | Generated file has `type: idea` + all required fields | Run skill via CLI, parse output frontmatter |
| `/new-feature` skill produces output matching template | Generated file has `type: feature-request` + all required fields | Run skill via CLI, parse output frontmatter |
### E2E tests — `tests/test_templates.py`
| Scenario | Assertion |
|----------|-----------|
| Every `type:` in vault has a matching `_templates/<type>.md` | No orphan types |
| Every `_templates/*.md` is used by at least one vault file | No unused templates |
| All vault files with frontmatter have a `type:` field | `type:` present and non-empty |
| Each template has valid frontmatter (`type` matches filename, `protection: locked`) | Frontmatter parses, type equals stem, protection equals locked |
| Skills that create vault files reference `_templates/` | `/idea` and `/new-feature` contain `_templates/` in SKILL.md |
| Skills don't hardcode frontmatter structures | If skill creates files, it references a template not raw YAML |
| No `_templates/briefing.md` exists | Decision: deferred to FR-037 |
| No `_templates/decision.md` exists | Decision: inline in dashboards |
| No `_templates/thought.md` exists | Decision: thoughts use `type: knowledge` |
| No template has a `version` field | Decision: no versioning |
### Integration tests — `tests/test_templates.py::TestIntegration*`
| Component | Coverage |
|-----------|----------|
| Template inventory | Exactly 10 templates: feature-request, change-proposal, idea, knowledge, dashboard, design, doc, log, extern, scratchpad |
| `workflow.md` completeness | Lists all 10 templates, no phantom references to non-existent templates |
### Unit tests — `tests/test_templates.py`
| Component | Coverage |
|-----------|----------|
| (none — helpers are implicitly covered by E2E/integration tests) | |Change 2: Fix Phase 1 table (line 72)
proposal.md → change-proposal.md
Impact
vault/10_features/05_review/FR-001-template-review.md— test section becomes the spec, code followstests/test_templates.py— updated as next step to match this spec