docs(specs): make "a spec becomes an architecture doc" the written rule
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.
This commit is contained in:
@@ -6,12 +6,27 @@
|
||||
"Layer assignment" — read its comment before writing it.
|
||||
|
||||
Before merging a spec, run it past docs/specs/SPEC-REVIEW-CHECKLIST.md.
|
||||
|
||||
LIFECYCLE: this file is temporary. docs/specs/ holds only unshipped work — when
|
||||
the last acceptance criterion is met, the design is folded into
|
||||
docs/architecture/ and this file is deleted in the same commit. Write it
|
||||
knowing that: the durable half is the reasoning (invariants, rejected
|
||||
alternatives, the defect a decision prevents), and the disposable half is the
|
||||
plan (phases, migration steps, acceptance criteria).
|
||||
-->
|
||||
|
||||
**Status:** Proposed <!-- Proposed | Accepted | Implemented | Superseded -->
|
||||
**Status:** Proposed <!-- Proposed | Accepted | Partially implemented | Superseded.
|
||||
NOT "Implemented" — a fully shipped spec is folded into docs/architecture/
|
||||
and deleted. See "Destination on completion" below. -->
|
||||
**Requirements:** <!-- UR-xxx → DR-yyy; allocate new DRs in requirements.md. -->
|
||||
**UX spec:** <!-- link to the relevant ux-flows.md section, or "n/a". -->
|
||||
**Supersedes / revises:** <!-- link any spec this changes, or delete this line. -->
|
||||
**Destination on completion:** <!--
|
||||
Which architecture doc absorbs this design when it ships, and roughly which
|
||||
section. e.g. "05-platform-backends.md — a new section beside
|
||||
ExoPlayerBackend". Name it NOW: a feature that fits no existing doc usually
|
||||
has an unclear layer assignment, which is worth finding out at spec time.
|
||||
This spec file is deleted in the same commit that folds it in. -->
|
||||
|
||||
## Summary
|
||||
|
||||
|
||||
Reference in New Issue
Block a user