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.
Files changed (87) hide show
  1. package/README.md +436 -271
  2. package/bin/wdi-method.js +198 -5
  3. package/kit/.constitution/method/README.md +76 -75
  4. package/kit/.constitution/method/constitution.md +2 -1
  5. package/kit/.constitution/method/document/architecture-guide.md +10 -10
  6. package/kit/.constitution/method/document/bmad-guide.md +50 -16
  7. package/kit/.constitution/method/document/bmad-skill-register.md +74 -71
  8. package/kit/.constitution/method/document/brief-guide.md +42 -11
  9. package/kit/.constitution/method/document/corpus-guide.md +146 -11
  10. package/kit/.constitution/method/document/decision-guide.md +199 -134
  11. package/kit/.constitution/method/document/delivery-flow-guide.md +154 -83
  12. package/kit/.constitution/method/document/prd-guide.md +63 -20
  13. package/kit/.constitution/method/document/sdd-guide.md +5 -4
  14. package/kit/.constitution/method/document/srs-guide.md +150 -147
  15. package/kit/.constitution/method/document/templates/addendum.md +70 -71
  16. package/kit/.constitution/method/document/templates/architecture-spine.md +6 -4
  17. package/kit/.constitution/method/document/templates/brief.md +132 -110
  18. package/kit/.constitution/method/document/templates/c4.md +11 -11
  19. package/kit/.constitution/method/document/templates/contract.md +51 -52
  20. package/kit/.constitution/method/document/templates/cross-cutting.md +1 -2
  21. package/kit/.constitution/method/document/templates/design-system.md +0 -1
  22. package/kit/.constitution/method/document/templates/integration.md +68 -69
  23. package/kit/.constitution/method/document/templates/inventory.md +0 -1
  24. package/kit/.constitution/method/document/templates/lc.md +49 -47
  25. package/kit/.constitution/method/document/templates/lifecycle.md +51 -52
  26. package/kit/.constitution/method/document/templates/model.md +68 -55
  27. package/kit/.constitution/method/document/templates/oq.md +45 -45
  28. package/kit/.constitution/method/document/templates/prd.md +244 -226
  29. package/kit/.constitution/method/document/templates/questions.md +100 -76
  30. package/kit/.constitution/method/document/templates/rules.md +46 -47
  31. package/kit/.constitution/method/document/templates/sdd.md +26 -11
  32. package/kit/.constitution/method/document/templates/srs.md +46 -25
  33. package/kit/.constitution/method/document/templates/uc.md +1 -1
  34. package/kit/.constitution/method/document/templates/ux.md +76 -77
  35. package/kit/.constitution/method/document/ux-guide.md +115 -99
  36. package/kit/.constitution/method/language-guide.md +1 -1
  37. package/kit/.constitution/method/method-glossary.md +29 -16
  38. package/kit/.constitution/method/scripts/timeline.py +663 -665
  39. package/kit/.constitution/method/scripts/validate.py +1143 -362
  40. package/kit/.constitution/method/structure-guide.md +3 -3
  41. package/kit/.constitution/method/why/README.md +184 -169
  42. package/kit/.constitution/method/why/artifact-map.md +15 -13
  43. package/kit/.constitution/method/why/mode-risk-map.md +140 -0
  44. package/kit/.constitution/method/why/portability.md +1 -1
  45. package/kit/.constitution/method/why/rationale.md +12 -5
  46. package/kit/.constitution/project/README.md +2 -2
  47. package/kit/.constitution/project/codebase-brownfield-guide.md +18 -18
  48. package/kit/.constitution/project/codebase-conventions-guide.md +18 -18
  49. package/kit/.constitution/project/codebase-stack-guide.md +18 -18
  50. package/kit/assets/bmad-custom/bmad-architecture.toml +1 -1
  51. package/kit/assets/bmad-custom/bmad-correct-course.toml +5 -5
  52. package/kit/assets/bmad-custom/bmad-prd.toml +9 -3
  53. package/kit/assets/bmad-custom/bmad-product-brief.toml +6 -2
  54. package/kit/skills/wdi-blueprint/SKILL.md +71 -10
  55. package/kit/skills/wdi-build/SKILL.md +233 -122
  56. package/kit/skills/wdi-component/SKILL.md +8 -6
  57. package/kit/skills/wdi-decision/SKILL.md +187 -183
  58. package/kit/skills/wdi-help/SKILL.md +8 -7
  59. package/kit/skills/wdi-init/SKILL.md +20 -6
  60. package/kit/skills/wdi-problem/SKILL.md +31 -13
  61. package/kit/skills/wdi-product/SKILL.md +30 -17
  62. package/kit/skills/wdi-question/SKILL.md +170 -88
  63. package/kit/skills/wdi-reconcile/SKILL.md +33 -10
  64. package/kit/skills/wdi-report/SKILL.md +77 -25
  65. package/kit/skills/wdi-review/SKILL.md +201 -118
  66. package/kit/skills/wdi-systematic-debugging/SKILL.md +7 -7
  67. package/kit/skills/wdi-upgrade/SKILL.md +179 -0
  68. package/kit/skills/wdi-ux/SKILL.md +35 -11
  69. package/kit-overlay/AGENTS.md +2 -2
  70. package/kit-overlay/README.md +76 -75
  71. package/kit-overlay/constitution.md +2 -1
  72. package/kit-overlay/portability.md +1 -1
  73. package/package.json +43 -43
  74. package/scaffold/.control/product-glossary.md +1 -1
  75. package/scaffold/.control/registry/goals.yaml +25 -0
  76. package/scaffold/.control/registry/index.yaml +5 -5
  77. package/scaffold/.control/registry/specs.yaml +5 -0
  78. package/scaffold/.control/structure-codebase.md +19 -19
  79. package/scaffold/.control/structure-document.md +25 -25
  80. package/kit/.constitution/method/document/templates/rtr.md +0 -61
  81. package/kit/assets/bmad-custom/bmad-build-auto.toml +0 -10
  82. package/kit/assets/bmad-custom/bmad-build.toml +0 -52
  83. package/kit/assets/bmad-custom/bmad-code-review.toml +0 -13
  84. package/kit/assets/bmad-custom/bmad-retrospective.toml +0 -9
  85. package/kit/assets/bmad-custom/bmad-spec.toml +0 -16
  86. package/scaffold/.control/registry/requirements.yaml +0 -15
  87. 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, `bmad-spec` writes SPEC. 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 MAY carry a **mirror** of it, and the mirror
98
- MUST NOT be edited on the SDD side. A `System` actor MAY be decomposed into the internal components that
99
- play it, but that decomposition belongs to the SDD.
100
-
101
- ## Business rules — two homes, one test
102
-
103
- | Rule | Home | Born at |
104
- |---|---|---|
105
- | Binds more than one Product Component | `.what/business-rules.md` | G3 |
106
- | Binds only this component | `.what/<pc>/02-rules/rules-<pc>.md` | G4, from `outline` up |
107
-
108
- The test is not importance, it is **reach**. A rule written in one component that turns out to bind a
109
- second MUST be promoted, not copied. Two copies of one rule is how components start disagreeing about the
110
- same policy.
111
-
112
- ## Sections the shape requires
113
-
114
- `templates/srs.md` carries the full list. Four MUST NOT be dropped even when they feel thin, because each
115
- is the one that is silently skipped:
116
-
117
- | Section | Why it MUST stay |
118
- |---|---|
119
- | **Constraints** | Inherited from the spine's `AD-N` and from the PRD. A constraint discovered at G4 costs a decision |
120
- | **Non-Goals** | What this component explicitly does not do. Absent, it will be assumed to do it |
121
- | **Prerequisite** | What MUST already exist before this component can behave as described |
122
- | **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 |
123
-
124
- Every unresolved to-be-confirmed MUST be filed through `wdi-question` before G3 opens — into
125
- `assumptions.md` by default, and into `blocking.md` only through the three tests that file states.
126
-
127
- ## The boundary against solution shape
128
-
129
- Solution shape MUST NOT appear here. Concretely, the SRS MUST NOT name a framework, a database table, an
130
- HTTP endpoint, a class, a queue, or a file path. Robustness analysis belongs to the SDD, at `deep`.
131
-
132
- When writing behaviour surfaces a design decision that cannot wait, it goes to `wdi-decision` — not into
133
- this document as a parenthetical.
134
-
135
- The reverse also holds. When G4 or the build discovers behaviour nobody specified, it MUST come back here
136
- **before** the code that implements it; the change-control matrix in `delivery-flow-guide.md` says which
137
- artifacts move.
138
-
139
- ## Passing the gate
140
-
141
- - At **G3**: the actor list, the UC catalogue, and the domain model complete for every component, and the
142
- roll-up in `.control/generated/blueprint.md` regenerated. V1, V2, V6, and V15 green V2 is the
143
- question: every `FR` has at least one `UC`, unless it carries `no_uc:` with a stated reason.
144
- - At **G4**: whatever this component's `mode` requires, and nothing beyond it.
145
- - `wdi-review` MUST have run with the lens set `risk_accepted` names. The `reviewed:` trace is stamped only
146
- on components at `risk_accepted` `low` or `medium` — V13.
147
- - A `UC` that exists but is wrong passes V2 and fails `wdi-reconcile`. Run it before the gate, not after.
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
- updated: '{YYYY-MM-DD}'
8
- ---
9
-
10
- # Addendum — {product brief | PRD: initiative}
11
-
12
- <!-- TEMPLATE GUIDE — act on these comments, then delete them.
13
-
14
- Two homes, one shape:
15
- .what/_product-brief/addendum.md beside the brief, born at G1
16
- .what/_prd/<initiative>/addendum.md beside a PRD, born at G2
17
-
18
- Both already existed in this corpus and both were born without a template, which is why the one
19
- rule that governs them lived only in prd-guide.md prose.
20
-
21
- THAT RULE, STATED WHERE IT BELONGS: an addendum is NOT a change log. Revision History in the
22
- parent document is the change log. This holds depth that earned its place but does not fit the
23
- narrative — and putting a change record here means the client-facing document stops carrying its
24
- own history.
25
-
26
- WHAT GOES HERE: rejected-alternative rationale · options matrices · mechanism and transport
27
- thinking · technical how · in-depth personas · sizing data · anything the owner volunteered that
28
- would derail the narrative.
29
-
30
- WHAT MUST NOT: audit and override information that is the memlog. A commercial fact that is
31
- refused outright, per repo-guide.md. A promise a promise stated only here is a promise nobody
32
- approved, because the gate reads the parent document.
33
-
34
- CAPTURED DURING THE CONVERSATION, not swept here at Finalize. Content moved here at the end is
35
- content nobody will find, because the reader was already told the parent was complete.
36
-
37
- WHAT BINDS LATER MOVES OUT. Something in here that turns out to bind a downstream document MUST
38
- be written into that document by the skill owning its layer, rather than cited from here forever.
39
- A citation into an addendum is a dependency on a file that was explicitly not gated. -->
40
-
41
- ## Rejected alternatives
42
-
43
- <!-- One per subsection or one row each, and each MUST say why it lost. "We considered X" with no
44
- reason preserves nothing the reason is the part memory loses first, and it is why the same
45
- option gets proposed again next quarter.
46
-
47
- A rejection that is expensive to revisit is a DEC-, not a row here. -->
48
-
49
- | Option | Why it lost |
50
- | --- | --- |
51
-
52
- ## Options weighed
53
-
54
- <!-- Matrices, comparisons, and scoring that would swamp the parent document. State the criteria
55
- before the scores; a matrix whose criteria appeared after the winner is a justification. -->
56
-
57
- ## Mechanism and transport
58
-
59
- <!-- Technical thinking that surfaced while deciding a promise. It is not a design the SDD owns
60
- that and it MUST NOT be cited as one. If a builder would be right to follow it, it belongs in
61
- .how/ and it has to get there through the skill that owns the layer. -->
62
-
63
- ## Sizing
64
-
65
- <!-- Numbers behind an estimate: counts, throughput assumptions, mandays reasoning. Each MUST name
66
- where the figure came from. An unsourced number here reappears as a commitment somewhere else. -->
67
-
68
- ## Personas and research detail
69
-
70
- <!-- Depth beyond what the parent needs. Raw research output MUST NOT be folded in — it stays in
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 promisea 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: # V13. Filled only after wdi-review has actually run
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 · adversarial · verification-gap
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 `bmad-spec` runs, and `bmad-spec` adopts it as a
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`.