The sixteen specs folded in last commit were folded because someone noticed they had gone stale, not because anything said they should be. Without the rule written down the directory drifts straight back to a mix of promises and descriptions, and neither can be trusted: you cannot tell from a file whether it describes the build or proposes a change to it. So: docs/specs/ holds only unshipped work, there is no "Implemented" resting state, and the fold-in and the deletion happen in the same commit. The template now asks for the destination architecture doc **up front**, which is a design check rather than bookkeeping — a feature that fits no existing doc usually has an unclear layer assignment, and it is cheaper to find that out at spec time. It also tells the author which half of what they are writing is durable (invariants, rejected alternatives, the defect a decision prevents) and which half dies with the file (phases, migration steps, acceptance criteria). The review checklist gains a Lifecycle section, including the case that gets lost otherwise: out-of-scope work worth doing has to be written where it will still be found after the spec is gone.
5.1 KiB
5.1 KiB
Spec:
Status: Proposed Requirements: UX spec: Supersedes / revises: Destination on completion:
Summary
Motivation
Layer assignment
| Logic / responsibility | Layer | Why it belongs there |
|---|---|---|
| Rust | ||
| Frontend |
Design
Out of scope
Acceptance criteria
bun run checkandbun run testpass.cargo fmtclean,cargo clippyclean,bun run test:rustpasses (if Rust changed).bun run check:boundarypasses (no taxonomy leak into the frontend).- New requirement-implementing code carries
// TRACES:comments. bindings.tsregenerated if Rust types changed.