wdi-method 0.5.13 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +436 -271
- package/bin/wdi-method.js +198 -5
- package/kit/.constitution/method/README.md +76 -75
- package/kit/.constitution/method/constitution.md +2 -1
- package/kit/.constitution/method/document/architecture-guide.md +10 -10
- package/kit/.constitution/method/document/bmad-guide.md +50 -16
- package/kit/.constitution/method/document/bmad-skill-register.md +74 -71
- package/kit/.constitution/method/document/brief-guide.md +42 -11
- package/kit/.constitution/method/document/corpus-guide.md +146 -11
- package/kit/.constitution/method/document/decision-guide.md +199 -134
- package/kit/.constitution/method/document/delivery-flow-guide.md +154 -83
- package/kit/.constitution/method/document/prd-guide.md +63 -20
- package/kit/.constitution/method/document/sdd-guide.md +5 -4
- package/kit/.constitution/method/document/srs-guide.md +150 -147
- package/kit/.constitution/method/document/templates/addendum.md +70 -71
- package/kit/.constitution/method/document/templates/architecture-spine.md +6 -4
- package/kit/.constitution/method/document/templates/brief.md +132 -110
- package/kit/.constitution/method/document/templates/c4.md +11 -11
- package/kit/.constitution/method/document/templates/contract.md +51 -52
- package/kit/.constitution/method/document/templates/cross-cutting.md +1 -2
- package/kit/.constitution/method/document/templates/design-system.md +0 -1
- package/kit/.constitution/method/document/templates/integration.md +68 -69
- package/kit/.constitution/method/document/templates/inventory.md +0 -1
- package/kit/.constitution/method/document/templates/lc.md +49 -47
- package/kit/.constitution/method/document/templates/lifecycle.md +51 -52
- package/kit/.constitution/method/document/templates/model.md +68 -55
- package/kit/.constitution/method/document/templates/oq.md +45 -45
- package/kit/.constitution/method/document/templates/prd.md +244 -226
- package/kit/.constitution/method/document/templates/questions.md +100 -76
- package/kit/.constitution/method/document/templates/rules.md +46 -47
- package/kit/.constitution/method/document/templates/sdd.md +26 -11
- package/kit/.constitution/method/document/templates/srs.md +46 -25
- package/kit/.constitution/method/document/templates/uc.md +1 -1
- package/kit/.constitution/method/document/templates/ux.md +76 -77
- package/kit/.constitution/method/document/ux-guide.md +115 -99
- package/kit/.constitution/method/language-guide.md +1 -1
- package/kit/.constitution/method/method-glossary.md +29 -16
- package/kit/.constitution/method/scripts/timeline.py +663 -665
- package/kit/.constitution/method/scripts/validate.py +1143 -362
- package/kit/.constitution/method/structure-guide.md +3 -3
- package/kit/.constitution/method/why/README.md +184 -169
- package/kit/.constitution/method/why/artifact-map.md +15 -13
- package/kit/.constitution/method/why/mode-risk-map.md +140 -0
- package/kit/.constitution/method/why/portability.md +1 -1
- package/kit/.constitution/method/why/rationale.md +12 -5
- package/kit/.constitution/project/README.md +2 -2
- package/kit/.constitution/project/codebase-brownfield-guide.md +18 -18
- package/kit/.constitution/project/codebase-conventions-guide.md +18 -18
- package/kit/.constitution/project/codebase-stack-guide.md +18 -18
- package/kit/assets/bmad-custom/bmad-architecture.toml +1 -1
- package/kit/assets/bmad-custom/bmad-correct-course.toml +5 -5
- package/kit/assets/bmad-custom/bmad-prd.toml +9 -3
- package/kit/assets/bmad-custom/bmad-product-brief.toml +6 -2
- package/kit/skills/wdi-blueprint/SKILL.md +71 -10
- package/kit/skills/wdi-build/SKILL.md +233 -122
- package/kit/skills/wdi-component/SKILL.md +8 -6
- package/kit/skills/wdi-decision/SKILL.md +187 -183
- package/kit/skills/wdi-help/SKILL.md +8 -7
- package/kit/skills/wdi-init/SKILL.md +20 -6
- package/kit/skills/wdi-problem/SKILL.md +31 -13
- package/kit/skills/wdi-product/SKILL.md +30 -17
- package/kit/skills/wdi-question/SKILL.md +170 -88
- package/kit/skills/wdi-reconcile/SKILL.md +33 -10
- package/kit/skills/wdi-report/SKILL.md +77 -25
- package/kit/skills/wdi-review/SKILL.md +201 -118
- package/kit/skills/wdi-systematic-debugging/SKILL.md +7 -7
- package/kit/skills/wdi-upgrade/SKILL.md +179 -0
- package/kit/skills/wdi-ux/SKILL.md +35 -11
- package/kit-overlay/AGENTS.md +2 -2
- package/kit-overlay/README.md +76 -75
- package/kit-overlay/constitution.md +2 -1
- package/kit-overlay/portability.md +1 -1
- package/package.json +43 -43
- package/scaffold/.control/product-glossary.md +1 -1
- package/scaffold/.control/registry/goals.yaml +25 -0
- package/scaffold/.control/registry/index.yaml +5 -5
- package/scaffold/.control/registry/specs.yaml +5 -0
- package/scaffold/.control/structure-codebase.md +19 -19
- package/scaffold/.control/structure-document.md +25 -25
- package/kit/.constitution/method/document/templates/rtr.md +0 -61
- package/kit/assets/bmad-custom/bmad-build-auto.toml +0 -10
- package/kit/assets/bmad-custom/bmad-build.toml +0 -52
- package/kit/assets/bmad-custom/bmad-code-review.toml +0 -13
- package/kit/assets/bmad-custom/bmad-retrospective.toml +0 -9
- package/kit/assets/bmad-custom/bmad-spec.toml +0 -16
- package/scaffold/.control/registry/requirements.yaml +0 -15
- package/scaffold/.control/registry/waves.yaml +0 -5
|
@@ -1,147 +1,150 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: Accepted
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# SRS Guide
|
|
6
|
-
|
|
7
|
-
**Loaded when:** writing, changing, or validating the SRS of a Product Component
|
|
8
|
-
|
|
9
|
-
An SRS states how the system must **behave** for one Product Component. The PRD promised something to a
|
|
10
|
-
user; this says what the system does so that promise holds. It MUST NOT say how the thing is built —
|
|
11
|
-
that is `SDD-<pc>.md`.
|
|
12
|
-
|
|
13
|
-
## Two skills write it, at two gates
|
|
14
|
-
|
|
15
|
-
| Section | Written at | By |
|
|
16
|
-
|---|---|---|
|
|
17
|
-
| § Actor Register · § UC Catalogue | G3 Blueprint | `wdi-blueprint` intent `catalog` |
|
|
18
|
-
| Everything below, per the component's `mode` | G4 Component | `wdi-component` intent `behaviour` |
|
|
19
|
-
|
|
20
|
-
**The SRS therefore exists at `mode: catalog`.** It carries the actor list and the use case catalogue,
|
|
21
|
-
because both are born at G3 and `mode` does not touch the blueprint. What does not exist at `catalog` is
|
|
22
|
-
`04-usecases/UC-<n>-<slug>.md` — the step-by-step flow. Reading "no SRS at `catalog`" is wrong, and it
|
|
23
|
-
was an artefact of an earlier table that showed only what varies.
|
|
24
|
-
|
|
25
|
-
Depth is **read from `mode`**, never computed. Review lenses are **read from `risk_accepted`**, never from
|
|
26
|
-
`mode`. Both fields are defined in `delivery-flow-guide.md` and MUST NOT be redefined here.
|
|
27
|
-
|
|
28
|
-
## No BMad skill writes this
|
|
29
|
-
|
|
30
|
-
`bmad-prd` writes the PRD, `bmad-architecture` writes the spine, `
|
|
31
|
-
writes an SRS. Three consequences follow, and each MUST be handled deliberately:
|
|
32
|
-
|
|
33
|
-
| Consequence | What follows |
|
|
34
|
-
|---|---|
|
|
35
|
-
| No `doc_standards` can fire | `bmad-review` MUST be invoked through `wdi-review`, with the lens set `risk_accepted` names |
|
|
36
|
-
| No memlog is created | A decision taken while writing MUST land as a `DEC-` through `wdi-decision`, not as a parenthetical |
|
|
37
|
-
| No template enforcement | The shape comes from `templates/srs.md`, applied by `wdi-init` intent `component` at birth |
|
|
38
|
-
|
|
39
|
-
`bmad-advanced-elicitation` and `bmad-party-mode` MAY be used as thinking aids. They produce no artifact
|
|
40
|
-
and MUST NOT be treated as authors.
|
|
41
|
-
|
|
42
|
-
## Home and life cycle
|
|
43
|
-
|
|
44
|
-
- `.what/<pc>/SRS-<pc>.md`, with slots `02-rules/` · `03-domain/` · `04-usecases/` · `05-scenarios/`.
|
|
45
|
-
- **Living, amended forever.** An SRS MUST NOT be versioned, frozen, or superseded. A component does not
|
|
46
|
-
stop existing because a release shipped.
|
|
47
|
-
- `01-requirements/` and `supplements/` are **repealed**. The first was permanently empty — `FR` live in
|
|
48
|
-
the PRD and the SRS cites them. The second existed for `ANX-`, and that concept is gone.
|
|
49
|
-
|
|
50
|
-
## Writing order
|
|
51
|
-
|
|
52
|
-
Binding, and each step is the input to the next. The first four happen at G3, the rest at G4:
|
|
53
|
-
|
|
54
|
-
1. **Glossary** — every domain noun this component uses, into `.control/product-glossary.md`. Never
|
|
55
|
-
defined inline here.
|
|
56
|
-
2. **UC Catalogue** — one line per use case: `UC-N` · title · actor · the `FR` it satisfies · `critical`
|
|
57
|
-
yes/no.
|
|
58
|
-
3. **Actor Register**.
|
|
59
|
-
4. **Domain Model** — entities, relations, columns. A business rule binding a second component goes to
|
|
60
|
-
`.what/business-rules.md`.
|
|
61
|
-
5. **UC Specification** — full flows, per `mode`.
|
|
62
|
-
6. **Local business rules**, then **State Lifecycle**, then **branch scenarios** — per `mode`.
|
|
63
|
-
|
|
64
|
-
Writing these out of order produces use cases whose nouns nobody defined. When the pass covers several
|
|
65
|
-
components, the order binds **within** each one, not across them.
|
|
66
|
-
|
|
67
|
-
## Which use cases get a full flow
|
|
68
|
-
|
|
69
|
-
| `mode` | Full flows |
|
|
70
|
-
|---|---|
|
|
71
|
-
| `catalog` | none — the catalogue line is the whole record |
|
|
72
|
-
| `outline` · `guarded` | the use cases the component exists for, **at most 3** |
|
|
73
|
-
| `deep` | every `critical` use case |
|
|
74
|
-
|
|
75
|
-
A use case is `critical` when it touches **money, personal data, or an irreversible action**. That is the
|
|
76
|
-
whole definition; `delivery-flow-guide.md` owns it, including the one-third sanity check.
|
|
77
|
-
|
|
78
|
-
## Use cases at two altitudes
|
|
79
|
-
|
|
80
|
-
The same `UC-N` MAY appear twice in the corpus, and the two MUST NOT be merged or made to duplicate each
|
|
81
|
-
other:
|
|
82
|
-
|
|
83
|
-
| | Here, in the SRS | There, in the SDD at `deep` |
|
|
84
|
-
|---|---|---|
|
|
85
|
-
| Written for | Someone who uses the product | Someone who builds it |
|
|
86
|
-
| Basic Flow | **At most eight steps** | As long as the design needs |
|
|
87
|
-
| May name | Actors, screens the user sees, domain nouns | Classes, endpoints, tables, transports |
|
|
88
|
-
| Answers | What happens | How it happens |
|
|
89
|
-
|
|
90
|
-
The eight-step cap is not style. A flow needing more steps is either two use cases, or it has started
|
|
91
|
-
describing implementation — and the cap makes that visible while it is still cheap to fix.
|
|
92
|
-
|
|
93
|
-
Branches MUST go to `05-scenarios/` rather than making the UC file fat, and only at `deep`.
|
|
94
|
-
|
|
95
|
-
## Actor Register is the SSOT
|
|
96
|
-
|
|
97
|
-
It MUST stay in the SRS kernel, never moved to a slot. The SDD
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
| Binds
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
| **
|
|
121
|
-
| **
|
|
122
|
-
| **
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
|
|
1
|
+
---
|
|
2
|
+
status: Accepted
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# SRS Guide
|
|
6
|
+
|
|
7
|
+
**Loaded when:** writing, changing, or validating the SRS of a Product Component
|
|
8
|
+
|
|
9
|
+
An SRS states how the system must **behave** for one Product Component. The PRD promised something to a
|
|
10
|
+
user; this says what the system does so that promise holds. It MUST NOT say how the thing is built —
|
|
11
|
+
that is `SDD-<pc>.md`.
|
|
12
|
+
|
|
13
|
+
## Two skills write it, at two gates
|
|
14
|
+
|
|
15
|
+
| Section | Written at | By |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| § Actor Register · § UC Catalogue | G3 Blueprint | `wdi-blueprint` intent `catalog` |
|
|
18
|
+
| Everything below, per the component's `mode` | G4 Component | `wdi-component` intent `behaviour` |
|
|
19
|
+
|
|
20
|
+
**The SRS therefore exists at `mode: catalog`.** It carries the actor list and the use case catalogue,
|
|
21
|
+
because both are born at G3 and `mode` does not touch the blueprint. What does not exist at `catalog` is
|
|
22
|
+
`04-usecases/UC-<n>-<slug>.md` — the step-by-step flow. Reading "no SRS at `catalog`" is wrong, and it
|
|
23
|
+
was an artefact of an earlier table that showed only what varies.
|
|
24
|
+
|
|
25
|
+
Depth is **read from `mode`**, never computed. Review lenses are **read from `risk_accepted`**, never from
|
|
26
|
+
`mode`. Both fields are defined in `delivery-flow-guide.md` and MUST NOT be redefined here.
|
|
27
|
+
|
|
28
|
+
## No BMad skill writes this
|
|
29
|
+
|
|
30
|
+
`bmad-prd` writes the PRD, `bmad-architecture` writes the spine, `to-spec` writes the contract. Nothing in BMad
|
|
31
|
+
writes an SRS. Three consequences follow, and each MUST be handled deliberately:
|
|
32
|
+
|
|
33
|
+
| Consequence | What follows |
|
|
34
|
+
|---|---|
|
|
35
|
+
| No `doc_standards` can fire | `bmad-review` MUST be invoked through `wdi-review`, with the lens set `risk_accepted` names |
|
|
36
|
+
| No memlog is created | A decision taken while writing MUST land as a `DEC-` through `wdi-decision`, not as a parenthetical |
|
|
37
|
+
| No template enforcement | The shape comes from `templates/srs.md`, applied by `wdi-init` intent `component` at birth |
|
|
38
|
+
|
|
39
|
+
`bmad-advanced-elicitation` and `bmad-party-mode` MAY be used as thinking aids. They produce no artifact
|
|
40
|
+
and MUST NOT be treated as authors.
|
|
41
|
+
|
|
42
|
+
## Home and life cycle
|
|
43
|
+
|
|
44
|
+
- `.what/<pc>/SRS-<pc>.md`, with slots `02-rules/` · `03-domain/` · `04-usecases/` · `05-scenarios/`.
|
|
45
|
+
- **Living, amended forever.** An SRS MUST NOT be versioned, frozen, or superseded. A component does not
|
|
46
|
+
stop existing because a release shipped.
|
|
47
|
+
- `01-requirements/` and `supplements/` are **repealed**. The first was permanently empty — `FR` live in
|
|
48
|
+
the PRD and the SRS cites them. The second existed for `ANX-`, and that concept is gone.
|
|
49
|
+
|
|
50
|
+
## Writing order
|
|
51
|
+
|
|
52
|
+
Binding, and each step is the input to the next. The first four happen at G3, the rest at G4:
|
|
53
|
+
|
|
54
|
+
1. **Glossary** — every domain noun this component uses, into `.control/product-glossary.md`. Never
|
|
55
|
+
defined inline here.
|
|
56
|
+
2. **UC Catalogue** — one line per use case: `UC-N` · title · actor · the `FR` it satisfies · `critical`
|
|
57
|
+
yes/no.
|
|
58
|
+
3. **Actor Register**.
|
|
59
|
+
4. **Domain Model** — entities, relations, columns. A business rule binding a second component goes to
|
|
60
|
+
`.what/business-rules.md`.
|
|
61
|
+
5. **UC Specification** — full flows, per `mode`.
|
|
62
|
+
6. **Local business rules**, then **State Lifecycle**, then **branch scenarios** — per `mode`.
|
|
63
|
+
|
|
64
|
+
Writing these out of order produces use cases whose nouns nobody defined. When the pass covers several
|
|
65
|
+
components, the order binds **within** each one, not across them.
|
|
66
|
+
|
|
67
|
+
## Which use cases get a full flow
|
|
68
|
+
|
|
69
|
+
| `mode` | Full flows |
|
|
70
|
+
|---|---|
|
|
71
|
+
| `catalog` | none — the catalogue line is the whole record |
|
|
72
|
+
| `outline` · `guarded` | the use cases the component exists for, **at most 3** |
|
|
73
|
+
| `deep` | every `critical` use case |
|
|
74
|
+
|
|
75
|
+
A use case is `critical` when it touches **money, personal data, or an irreversible action**. That is the
|
|
76
|
+
whole definition; `delivery-flow-guide.md` owns it, including the one-third sanity check.
|
|
77
|
+
|
|
78
|
+
## Use cases at two altitudes
|
|
79
|
+
|
|
80
|
+
The same `UC-N` MAY appear twice in the corpus, and the two MUST NOT be merged or made to duplicate each
|
|
81
|
+
other:
|
|
82
|
+
|
|
83
|
+
| | Here, in the SRS | There, in the SDD at `deep` |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| Written for | Someone who uses the product | Someone who builds it |
|
|
86
|
+
| Basic Flow | **At most eight steps** | As long as the design needs |
|
|
87
|
+
| May name | Actors, screens the user sees, domain nouns | Classes, endpoints, tables, transports |
|
|
88
|
+
| Answers | What happens | How it happens |
|
|
89
|
+
|
|
90
|
+
The eight-step cap is not style. A flow needing more steps is either two use cases, or it has started
|
|
91
|
+
describing implementation — and the cap makes that visible while it is still cheap to fix.
|
|
92
|
+
|
|
93
|
+
Branches MUST go to `05-scenarios/` rather than making the UC file fat, and only at `deep`.
|
|
94
|
+
|
|
95
|
+
## Actor Register is the SSOT
|
|
96
|
+
|
|
97
|
+
It MUST stay in the SRS kernel, never moved to a slot. The SDD MUST NOT carry a copy of it — a mirror was
|
|
98
|
+
once permitted with the rule "not edited on the SDD side", and nothing checked that rule. The rendered SDD
|
|
99
|
+
shows the actors it needs from here. A `System` actor MAY be decomposed into the internal components that
|
|
100
|
+
play it, but that decomposition belongs to the SDD, and it cites the actor, never restates it.
|
|
101
|
+
|
|
102
|
+
## Business rules — two homes, one test
|
|
103
|
+
|
|
104
|
+
| Rule | Home | Born at |
|
|
105
|
+
|---|---|---|
|
|
106
|
+
| Binds more than one Product Component | `.what/business-rules.md` | G3 |
|
|
107
|
+
| Binds only this component | `.what/<pc>/02-rules/rules-<pc>.md` | G4, from `outline` up |
|
|
108
|
+
|
|
109
|
+
The test is not importance, it is **reach**. A rule written in one component that turns out to bind a
|
|
110
|
+
second MUST be promoted, not copied. Two copies of one rule is how components start disagreeing about the
|
|
111
|
+
same policy.
|
|
112
|
+
|
|
113
|
+
## Sections the shape requires
|
|
114
|
+
|
|
115
|
+
`templates/srs.md` carries the full list. Four MUST NOT be dropped even when they feel thin, because each
|
|
116
|
+
is the one that is silently skipped:
|
|
117
|
+
|
|
118
|
+
| Section | Why it MUST stay |
|
|
119
|
+
|---|---|
|
|
120
|
+
| **Constraints** | Inherited from the spine's `AD-N` and from the PRD. A constraint discovered at G4 costs a decision |
|
|
121
|
+
| **Non-Goals** | What this component explicitly does not do. Absent, it will be assumed to do it |
|
|
122
|
+
| **Prerequisite** | What MUST already exist before this component can behave as described |
|
|
123
|
+
| **Assumptions, Risks, and To Be Confirmed** | Three separate lists. An assumption is something we decided to believe; a risk may go wrong; a to-be-confirmed is a question with an owner. Collapsing them loses the owner |
|
|
124
|
+
|
|
125
|
+
Every unresolved to-be-confirmed MUST be filed through `wdi-question` before G3 opens — into
|
|
126
|
+
`assumptions.md` by default, and into `blocking.md` only through the three tests that file states.
|
|
127
|
+
|
|
128
|
+
## The boundary against solution shape
|
|
129
|
+
|
|
130
|
+
Solution shape MUST NOT appear here. Concretely, the SRS MUST NOT name a framework, a database table, an
|
|
131
|
+
HTTP endpoint, a class, a queue, or a file path. Robustness analysis belongs to the SDD, at `deep`.
|
|
132
|
+
|
|
133
|
+
When writing behaviour surfaces a design decision that cannot wait, it goes to `wdi-decision` — not into
|
|
134
|
+
this document as a parenthetical.
|
|
135
|
+
|
|
136
|
+
The reverse also holds. When G4 or the build discovers behaviour nobody specified, it MUST come back here
|
|
137
|
+
**before** the code that implements it; the change-control matrix in `delivery-flow-guide.md` says which
|
|
138
|
+
artifacts move.
|
|
139
|
+
|
|
140
|
+
## Passing the gate
|
|
141
|
+
|
|
142
|
+
- At **G3**: the actor list, the UC catalogue, and the domain model complete for every component, and the
|
|
143
|
+
roll-up in `.how-rendered/blueprint.md` regenerated. `goal-has-fr`, `fr-has-uc`, `refs-resolve`, and `chain-links` green — `fr-has-uc` is the ★
|
|
144
|
+
question: every `FR` has at least one `UC`, unless it carries `no_uc:` with a stated reason.
|
|
145
|
+
- At **G4**: whatever this component's `mode` requires, and nothing beyond it.
|
|
146
|
+
- `wdi-review` MUST have run with the lens set `risk_accepted` names for a **first** review or a review
|
|
147
|
+
opening this gate; a later re-review runs the lighter set, and `wdi-review` owns when. The `reviewed:`
|
|
148
|
+
trace is stamped only on components at `risk_accepted` `low` or `medium` — `review-trace`, where absence fails and
|
|
149
|
+
staleness is advisory between gates.
|
|
150
|
+
- A `UC` that exists but is wrong passes `fr-has-uc` and fails `wdi-reconcile`. Run it before the gate, not after.
|
|
@@ -1,71 +1,70 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: addendum
|
|
3
|
-
parent: '{brief | prd}' # which document this sits beside
|
|
4
|
-
initiative: '{slug}' # omit when parent: brief
|
|
5
|
-
status: draft # draft · reviewed · locked · superseded
|
|
6
|
-
created: '{YYYY-MM-DD}'
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
.what/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
_bmad-output/ and is cited by path, which is stable because that folder is committed. -->
|
|
1
|
+
---
|
|
2
|
+
type: addendum
|
|
3
|
+
parent: '{brief | prd}' # which document this sits beside
|
|
4
|
+
initiative: '{slug}' # omit when parent: brief
|
|
5
|
+
status: draft # draft · reviewed · locked · superseded
|
|
6
|
+
created: '{YYYY-MM-DD}'
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Addendum — {product brief | PRD: initiative}
|
|
10
|
+
|
|
11
|
+
<!-- TEMPLATE GUIDE — act on these comments, then delete them.
|
|
12
|
+
|
|
13
|
+
Two homes, one shape:
|
|
14
|
+
.what/_product-brief/addendum.md beside the brief, born at G1
|
|
15
|
+
.what/_prd/<initiative>/addendum.md beside a PRD, born at G2
|
|
16
|
+
|
|
17
|
+
Both already existed in this corpus and both were born without a template, which is why the one
|
|
18
|
+
rule that governs them lived only in prd-guide.md prose.
|
|
19
|
+
|
|
20
|
+
THAT RULE, STATED WHERE IT BELONGS: an addendum is NOT a change log. Revision History in the
|
|
21
|
+
parent document is the change log. This holds depth that earned its place but does not fit the
|
|
22
|
+
narrative — and putting a change record here means the client-facing document stops carrying its
|
|
23
|
+
own history.
|
|
24
|
+
|
|
25
|
+
WHAT GOES HERE: rejected-alternative rationale · options matrices · mechanism and transport
|
|
26
|
+
thinking · technical how · in-depth personas · sizing data · anything the owner volunteered that
|
|
27
|
+
would derail the narrative.
|
|
28
|
+
|
|
29
|
+
WHAT MUST NOT: audit and override information — that is the memlog. A commercial fact — that is
|
|
30
|
+
refused outright, per repo-guide.md. A promise — a promise stated only here is a promise nobody
|
|
31
|
+
approved, because the gate reads the parent document.
|
|
32
|
+
|
|
33
|
+
CAPTURED DURING THE CONVERSATION, not swept here at Finalize. Content moved here at the end is
|
|
34
|
+
content nobody will find, because the reader was already told the parent was complete.
|
|
35
|
+
|
|
36
|
+
WHAT BINDS LATER MOVES OUT. Something in here that turns out to bind a downstream document MUST
|
|
37
|
+
be written into that document by the skill owning its layer, rather than cited from here forever.
|
|
38
|
+
A citation into an addendum is a dependency on a file that was explicitly not gated. -->
|
|
39
|
+
|
|
40
|
+
## Rejected alternatives
|
|
41
|
+
|
|
42
|
+
<!-- One per subsection or one row each, and each MUST say why it lost. "We considered X" with no
|
|
43
|
+
reason preserves nothing — the reason is the part memory loses first, and it is why the same
|
|
44
|
+
option gets proposed again next quarter.
|
|
45
|
+
|
|
46
|
+
A rejection that is expensive to revisit is a DEC-, not a row here. -->
|
|
47
|
+
|
|
48
|
+
| Option | Why it lost |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
|
|
51
|
+
## Options weighed
|
|
52
|
+
|
|
53
|
+
<!-- Matrices, comparisons, and scoring that would swamp the parent document. State the criteria
|
|
54
|
+
before the scores; a matrix whose criteria appeared after the winner is a justification. -->
|
|
55
|
+
|
|
56
|
+
## Mechanism and transport
|
|
57
|
+
|
|
58
|
+
<!-- Technical thinking that surfaced while deciding a promise. It is not a design — the SDD owns
|
|
59
|
+
that — and it MUST NOT be cited as one. If a builder would be right to follow it, it belongs in
|
|
60
|
+
.how/ and it has to get there through the skill that owns the layer. -->
|
|
61
|
+
|
|
62
|
+
## Sizing
|
|
63
|
+
|
|
64
|
+
<!-- Numbers behind an estimate: counts, throughput assumptions, mandays reasoning. Each MUST name
|
|
65
|
+
where the figure came from. An unsourced number here reappears as a commitment somewhere else. -->
|
|
66
|
+
|
|
67
|
+
## Personas and research detail
|
|
68
|
+
|
|
69
|
+
<!-- Depth beyond what the parent needs. Raw research output MUST NOT be folded in — it stays in
|
|
70
|
+
_bmad-output/ and is cited by path, which is stable because that folder is committed. -->
|
|
@@ -3,18 +3,20 @@ name: '{name}'
|
|
|
3
3
|
type: architecture-spine
|
|
4
4
|
purpose: build-substrate # build-substrate (default) · discussion · report · deck
|
|
5
5
|
altitude: feature # initiative (keeps features) · feature (keeps epics) · epic (keeps stories)
|
|
6
|
+
# bmad-architecture's OWN vocabulary — not this method's `spec`/`ticket`, and not ours to rename
|
|
6
7
|
paradigm: '{named design pattern, e.g. hexagonal, layered, pipes-and-filters, actor}'
|
|
7
8
|
scope: '{what this spine governs}'
|
|
8
9
|
status: draft # draft · final
|
|
9
10
|
created: '{date}'
|
|
10
|
-
updated: '{date}'
|
|
11
11
|
binds: [] # capability / unit IDs governed (from the driving spec; at epic altitude, also the inherited parent AD ids)
|
|
12
12
|
sources: []
|
|
13
13
|
companions: []
|
|
14
|
-
reviewed: #
|
|
14
|
+
reviewed: # `review-trace`. Filled only after wdi-review has actually run
|
|
15
15
|
date: '' # '{YYYY-MM-DD}'
|
|
16
16
|
sha: '' # commit it was reviewed at; without the SHA, staleness cannot be measured
|
|
17
|
-
lenses: [] # structure · prose · edge-case-hunter ·
|
|
17
|
+
lenses: [] # what ACTUALLY ran at this sha: structure · prose · edge-case-hunter ·
|
|
18
|
+
# adversarial · verification-gap. Heavy lenses belong to a first or
|
|
19
|
+
# gate-opening review; a re-review runs the lighter set over the delta
|
|
18
20
|
---
|
|
19
21
|
|
|
20
22
|
# Architecture Spine — {name}
|
|
@@ -95,6 +97,6 @@ reviewed: # V13. Filled only after wdi-review has actually run
|
|
|
95
97
|
- **`AD-N` versus `DEC-NNN`.** An `AD-N` here is a living rule, edited in place. A `DEC-NNN` in
|
|
96
98
|
`.control/decisions/` is one decision event, never edited and replaced by a `superseded` pointer.
|
|
97
99
|
The two MUST NOT be interchanged.
|
|
98
|
-
- **Ordering.** The spine is authored before
|
|
100
|
+
- **Ordering.** The spine is authored before the contract is cut, and the contract adopts it as a
|
|
99
101
|
companion — never the reverse.
|
|
100
102
|
- **Memlog.** Written to `.control/memlog/spine.md` via `--path`.
|