wdi-method 0.4.6 → 0.5.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 +264 -252
- package/bin/wdi-method.js +1121 -1030
- package/kit/.constitution/method/README.md +66 -169
- package/kit/.constitution/{constitution.md → method/constitution.md} +10 -56
- package/kit/.constitution/{document → method/document}/architecture-guide.md +1 -1
- package/kit/.constitution/{document → method/document}/corpus-guide.md +2 -2
- package/kit/.constitution/{document → method/document}/delivery-flow-guide.md +338 -338
- package/kit/.constitution/{document → method/document}/sdd-guide.md +1 -1
- package/kit/.constitution/{document → method/document}/templates/cross-cutting.md +1 -1
- package/kit/.constitution/{document → method/document}/templates/design-system.md +67 -67
- package/kit/.constitution/{document → method/document}/templates/inventory.md +69 -69
- package/kit/.constitution/{document → method/document}/templates/sdd.md +1 -1
- package/kit/.constitution/{document → method/document}/templates/structure-codebase.md +129 -129
- package/kit/.constitution/{document → method/document}/templates/structure-document.md +90 -90
- package/kit/.constitution/{language-guide.md → method/language-guide.md} +2 -2
- package/kit/.constitution/{repo-guide.md → method/repo-guide.md} +16 -3
- package/kit/.constitution/{scripts → method/scripts}/timeline.py +2 -2
- package/kit/.constitution/{scripts → method/scripts}/validate.py +1599 -1581
- package/kit/.constitution/{structure-guide.md → method/structure-guide.md} +3 -3
- package/kit/.constitution/method/why/README.md +169 -0
- package/kit/.constitution/method/{artifact-map.md → why/artifact-map.md} +5 -5
- package/kit/.constitution/method/{rationale.md → why/rationale.md} +5 -5
- package/kit/.constitution/project/constitution.md +63 -0
- package/kit/assets/bmad-custom/bmad-advanced-elicitation.toml +15 -15
- package/kit/assets/bmad-custom/bmad-architecture.toml +33 -33
- package/kit/assets/bmad-custom/bmad-code-review.toml +13 -13
- package/kit/assets/bmad-custom/bmad-correct-course.toml +28 -28
- package/kit/assets/bmad-custom/bmad-prd.toml +42 -42
- package/kit/assets/bmad-custom/bmad-product-brief.toml +34 -34
- package/kit/assets/bmad-custom/bmad-retrospective.toml +9 -9
- package/kit/assets/bmad-custom/bmad-spec.toml +16 -16
- package/kit/assets/bmad-custom/bmad-ux.toml +19 -19
- package/kit/skills/wdi-blueprint/SKILL.md +3 -3
- package/kit/skills/wdi-build/SKILL.md +244 -244
- package/kit/skills/wdi-component/SKILL.md +1 -1
- package/kit/skills/wdi-help/SKILL.md +98 -98
- package/kit/skills/wdi-init/SKILL.md +1 -1
- package/kit/skills/wdi-problem/SKILL.md +90 -90
- package/kit/skills/wdi-product/SKILL.md +127 -127
- package/kit/skills/wdi-reconcile/SKILL.md +2 -2
- package/kit/skills/wdi-report/SKILL.md +205 -205
- package/kit/skills/wdi-systematic-debugging/SKILL.md +193 -193
- package/kit/skills/wdi-ux/SKILL.md +145 -145
- package/kit-overlay/AGENTS.md +20 -20
- package/kit-overlay/README.md +24 -17
- package/kit-overlay/constitution.md +10 -56
- package/kit-overlay/portability.md +6 -6
- package/kit-overlay/repo-guide.md +112 -97
- package/package.json +37 -37
- package/kit/.constitution/README.md +0 -66
- /package/kit/.constitution/{document → method/document}/bmad-guide.md +0 -0
- /package/kit/.constitution/{document → method/document}/bmad-skill-register.md +0 -0
- /package/kit/.constitution/{document → method/document}/brief-guide.md +0 -0
- /package/kit/.constitution/{document → method/document}/decision-guide.md +0 -0
- /package/kit/.constitution/{document → method/document}/prd-guide.md +0 -0
- /package/kit/.constitution/{document → method/document}/srs-guide.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/addendum.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/architecture-spine.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/brief.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/c4.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/contract.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/decision.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/flow.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/integration.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/lc.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/lifecycle.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/meeting.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/model.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/oq.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/prd.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/questions.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/rtr.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/rules.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/scn.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/srs.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/uc.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/ux.md +0 -0
- /package/kit/.constitution/{document → method/document}/ux-guide.md +0 -0
- /package/kit/.constitution/{method-glossary.md → method/method-glossary.md} +0 -0
- /package/kit/.constitution/{scripts → method/scripts}/inventory.py +0 -0
- /package/kit/.constitution/method/{portability.md → why/portability.md} +0 -0
- /package/kit/.constitution/{codebase/brownfield-guide.md → project/codebase-brownfield-guide.md} +0 -0
- /package/kit/.constitution/{codebase/conventions-guide.md → project/codebase-conventions-guide.md} +0 -0
- /package/kit/.constitution/{codebase/stack-guide.md → project/codebase-stack-guide.md} +0 -0
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wdi-product
|
|
3
|
-
description: Use at G2 Product — when a PRD is created or an existing promise changes. Two intents, prd and update. Checks position, dispatches bmad-prd, verifies the result against prd-guide.md, and lands the memlog. Never writes the PRD itself.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# WDI Product
|
|
7
|
-
|
|
8
|
-
G2 decides **what is built, and how it feels to use.** `bmad-prd` writes the PRD.
|
|
9
|
-
|
|
10
|
-
This wrapper exists because `bmad-prd` was the only writer of a primary artifact in this method with no WDI
|
|
11
|
-
wrapper at all — so nothing checked its position, nothing verified its result against the guide, and nothing
|
|
12
|
-
landed its memlog where the next run would read it. Those three gaps were paid for at G2 every time.
|
|
13
|
-
|
|
14
|
-
You MUST NOT write or edit `prd.md` yourself. If a check fails, name what is missing and re-dispatch.
|
|
15
|
-
|
|
16
|
-
| Intent | When |
|
|
17
|
-
|---|---|
|
|
18
|
-
| `prd` | A functional area a reader would not think to look for in an existing PRD |
|
|
19
|
-
| `update` | Anything else — the default, and by a wide margin |
|
|
20
|
-
|
|
21
|
-
## Inputs
|
|
22
|
-
|
|
23
|
-
| Source | What it answers |
|
|
24
|
-
|---|---|
|
|
25
|
-
| `.what/_product-brief/brief.md` | The problem, the primary user, the boundary the PRD MUST respect |
|
|
26
|
-
| `.what/_prd/*/prd.md` | Which initiatives already have a PRD, and what each already promises |
|
|
27
|
-
| `.control/registry/requirements.yaml` | The next `CAP`/`FR`/`NFR`/`UJ` ids, allocated globally |
|
|
28
|
-
| `.control/decisions/` | `applied` decisions the PRD MUST already reflect |
|
|
29
|
-
| `.constitution/document/prd-guide.md` | The rules the result is checked against |
|
|
30
|
-
| `.control/product-glossary.md` | Terms already fixed |
|
|
31
|
-
|
|
32
|
-
## Step 1 — Position, and `update` is the default
|
|
33
|
-
|
|
34
|
-
The decision this skill exists for. The test is the **reader**, not the calendar:
|
|
35
|
-
|
|
36
|
-
> Would someone looking for this promise open an existing document?
|
|
37
|
-
|
|
38
|
-
Yes → `update`, however large the change. No → `prd`. A PRD MUST NOT be split because it grew long, and a
|
|
39
|
-
release is never a reason on its own. `prd-guide.md` owns the full table.
|
|
40
|
-
|
|
41
|
-
Three asks that are not this skill:
|
|
42
|
-
|
|
43
|
-
| Ask | Route |
|
|
44
|
-
|---|---|
|
|
45
|
-
| The problem itself has changed | `wdi-problem` — a re-cut plan under a wrong problem is wasted work |
|
|
46
|
-
| Only the **wording** of an `FR` is wrong, while the promise is the same | The skill already at work fixes it directly. See below |
|
|
47
|
-
| A planning assumption turned out to be void | `wdi-decision`, which wraps `bmad-correct-course` |
|
|
48
|
-
|
|
49
|
-
## Step 2 — Wording is not a promise
|
|
50
|
-
|
|
51
|
-
The split that ended three corrections in "reported but not fixed". `prd-guide.md` owns it; what this skill
|
|
52
|
-
owns is refusing to run for the wrong half.
|
|
53
|
-
|
|
54
|
-
| What changed | Who does it |
|
|
55
|
-
|---|---|
|
|
56
|
-
| A wrong cross-reference, a retired term, a word inconsistent with an `applied` decision — **the promise is the same** | Whichever skill is already at work. Memlog records it; **one** Revision History row per pass, never one per correction |
|
|
57
|
-
| Scope, the proof of done, an `FR` retired or born | This skill, intent `update` |
|
|
58
|
-
|
|
59
|
-
You MUST NOT accept a wording correction as an `update` run. Doing so puts a trivial fix behind a gate, and
|
|
60
|
-
that is exactly how the three earlier ones were dropped.
|
|
61
|
-
|
|
62
|
-
## Step 3 — Dispatch
|
|
63
|
-
|
|
64
|
-
Invoke `bmad-prd` with the detected intent, scoped to **one initiative**. Do not restate the rules to it —
|
|
65
|
-
they arrive through `persistent_facts` and `doc_standards` in `_bmad/custom/bmad-prd.toml`.
|
|
66
|
-
|
|
67
|
-
Name the brief and, for `update`, the existing PRD and every `applied` decision that reaches it. The skill
|
|
68
|
-
globs its own default locations, which this project redirects.
|
|
69
|
-
|
|
70
|
-
## Step 4 — Verify
|
|
71
|
-
|
|
72
|
-
| # | Check | Fails when |
|
|
73
|
-
|---|---|---|
|
|
74
|
-
| 1 | Home | Anything outside `.what/_prd/<initiative>/`, or a folder still named `ISI-slug-inisiatif` |
|
|
75
|
-
| 2 | Ids allocated from the registry | `FR-1` restarted, or an id invented in prose |
|
|
76
|
-
| 3 | Every `FR` names its `capability`; every `NFR` names its `goal` | V15 has nothing to check |
|
|
77
|
-
| 4 | Every `FR` has **exactly one** proof of done, in business language | Zero, or a second technical restatement beside it |
|
|
78
|
-
| 5 | Every `NFR` names `enforced_by` | An `NFR` nothing enforces is decoration (V5) |
|
|
79
|
-
| 6 | Cross-Cutting NFRs and Constraints both present | An absent section reads as "not checked" |
|
|
80
|
-
| 7 | No solution shape | A framework, a table, or a transport named in `prd.md` rather than in `addendum.md` |
|
|
81
|
-
| 8 | One Revision History row for this run, written for someone not in the room | Zero rows, several rows, or a row that says "Updated §4.2" |
|
|
82
|
-
| 9 | Memlog at `.control/memlog/prd-<slug>.md`, slug matching the folder | A `.memlog.md` appeared inside `.what/` — `--workspace` was used |
|
|
83
|
-
| 10 | `bmad-review` ran through `doc_standards` on `prd.md` and `addendum.md` | It did not fire |
|
|
84
|
-
|
|
85
|
-
Check 9 MUST be fixed immediately rather than reported. V16 rejects a memlog inside the corpus.
|
|
86
|
-
|
|
87
|
-
## Step 5 — `owns:`, and the collision it prevents
|
|
88
|
-
|
|
89
|
-
A new or changed `FR` that claims write authority over a domain entity MUST be checked against `owns:` in
|
|
90
|
-
`components.yaml`. An entity has exactly one owning Product Component; an `FR` from another PRD that needs to
|
|
91
|
-
change it MUST point at the owner's `FR` rather than promising to write it itself. V21 checks this, and the
|
|
92
|
-
collision has already happened once for real.
|
|
93
|
-
|
|
94
|
-
Report a collision. You MUST NOT resolve it by widening one PRD's claim.
|
|
95
|
-
|
|
96
|
-
## Step 6 — Impact
|
|
97
|
-
|
|
98
|
-
A changed promise changes what other documents can still claim. Check, and **report** — never edit.
|
|
99
|
-
|
|
100
|
-
| Found | Where it goes |
|
|
101
|
-
|---|---|
|
|
102
|
-
| A `UC` realising an `FR` whose promise moved | `wdi-component` intent `behaviour`, or `wdi-blueprint` when the catalogue line itself changes |
|
|
103
|
-
| A blueprint inventory row with nothing promising it any more | `wdi-blueprint` |
|
|
104
|
-
| A contradiction with an `applied` decision | `wdi-decision` — a new `DEC-`, never an edit to one already applied |
|
|
105
|
-
| A component born by this initiative | `wdi-init` intent `component` |
|
|
106
|
-
|
|
107
|
-
Then run the change-control matrix in `delivery-flow-guide.md` and **report** which gates reopen. You MUST
|
|
108
|
-
NOT reopen one yourself.
|
|
109
|
-
|
|
110
|
-
## Rules
|
|
111
|
-
|
|
112
|
-
- You MUST NOT write a second PRD for an area that already has one. The reader test decides, and its answer
|
|
113
|
-
is `update` far more often than it feels.
|
|
114
|
-
- You MUST NOT open G2 on a PRD that has not been through check 10. Gate time is for deciding, not
|
|
115
|
-
proofreading.
|
|
116
|
-
- The gate reads `prd.md` and `EXPERIENCE.md` together. A PRD that passes while the experience side is
|
|
117
|
-
missing has answered half of what G2 decides.
|
|
118
|
-
- Every unresolved `[ASSUMPTION]` MUST be filed through `wdi-question` before the gate opens.
|
|
119
|
-
- You MUST NOT raise `status:`. Status is a stage; the `reviewed:` block is an event, and `wdi-review` writes
|
|
120
|
-
it.
|
|
121
|
-
- When the PRD cannot promise what was asked, say so and stop. Route to `wdi-problem`; do not quietly narrow
|
|
122
|
-
the ask.
|
|
123
|
-
|
|
124
|
-
## Output
|
|
125
|
-
|
|
126
|
-
Intent dispatched · what the promise now is in one line · the result of all ten checks naming the failures ·
|
|
127
|
-
the `owns:` check · impact found and where it was routed · the gates the matrix names · open questions filed.
|
|
1
|
+
---
|
|
2
|
+
name: wdi-product
|
|
3
|
+
description: Use at G2 Product — when a PRD is created or an existing promise changes. Two intents, prd and update. Checks position, dispatches bmad-prd, verifies the result against prd-guide.md, and lands the memlog. Never writes the PRD itself.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# WDI Product
|
|
7
|
+
|
|
8
|
+
G2 decides **what is built, and how it feels to use.** `bmad-prd` writes the PRD.
|
|
9
|
+
|
|
10
|
+
This wrapper exists because `bmad-prd` was the only writer of a primary artifact in this method with no WDI
|
|
11
|
+
wrapper at all — so nothing checked its position, nothing verified its result against the guide, and nothing
|
|
12
|
+
landed its memlog where the next run would read it. Those three gaps were paid for at G2 every time.
|
|
13
|
+
|
|
14
|
+
You MUST NOT write or edit `prd.md` yourself. If a check fails, name what is missing and re-dispatch.
|
|
15
|
+
|
|
16
|
+
| Intent | When |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `prd` | A functional area a reader would not think to look for in an existing PRD |
|
|
19
|
+
| `update` | Anything else — the default, and by a wide margin |
|
|
20
|
+
|
|
21
|
+
## Inputs
|
|
22
|
+
|
|
23
|
+
| Source | What it answers |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `.what/_product-brief/brief.md` | The problem, the primary user, the boundary the PRD MUST respect |
|
|
26
|
+
| `.what/_prd/*/prd.md` | Which initiatives already have a PRD, and what each already promises |
|
|
27
|
+
| `.control/registry/requirements.yaml` | The next `CAP`/`FR`/`NFR`/`UJ` ids, allocated globally |
|
|
28
|
+
| `.control/decisions/` | `applied` decisions the PRD MUST already reflect |
|
|
29
|
+
| `.constitution/method/document/prd-guide.md` | The rules the result is checked against |
|
|
30
|
+
| `.control/product-glossary.md` | Terms already fixed |
|
|
31
|
+
|
|
32
|
+
## Step 1 — Position, and `update` is the default
|
|
33
|
+
|
|
34
|
+
The decision this skill exists for. The test is the **reader**, not the calendar:
|
|
35
|
+
|
|
36
|
+
> Would someone looking for this promise open an existing document?
|
|
37
|
+
|
|
38
|
+
Yes → `update`, however large the change. No → `prd`. A PRD MUST NOT be split because it grew long, and a
|
|
39
|
+
release is never a reason on its own. `prd-guide.md` owns the full table.
|
|
40
|
+
|
|
41
|
+
Three asks that are not this skill:
|
|
42
|
+
|
|
43
|
+
| Ask | Route |
|
|
44
|
+
|---|---|
|
|
45
|
+
| The problem itself has changed | `wdi-problem` — a re-cut plan under a wrong problem is wasted work |
|
|
46
|
+
| Only the **wording** of an `FR` is wrong, while the promise is the same | The skill already at work fixes it directly. See below |
|
|
47
|
+
| A planning assumption turned out to be void | `wdi-decision`, which wraps `bmad-correct-course` |
|
|
48
|
+
|
|
49
|
+
## Step 2 — Wording is not a promise
|
|
50
|
+
|
|
51
|
+
The split that ended three corrections in "reported but not fixed". `prd-guide.md` owns it; what this skill
|
|
52
|
+
owns is refusing to run for the wrong half.
|
|
53
|
+
|
|
54
|
+
| What changed | Who does it |
|
|
55
|
+
|---|---|
|
|
56
|
+
| A wrong cross-reference, a retired term, a word inconsistent with an `applied` decision — **the promise is the same** | Whichever skill is already at work. Memlog records it; **one** Revision History row per pass, never one per correction |
|
|
57
|
+
| Scope, the proof of done, an `FR` retired or born | This skill, intent `update` |
|
|
58
|
+
|
|
59
|
+
You MUST NOT accept a wording correction as an `update` run. Doing so puts a trivial fix behind a gate, and
|
|
60
|
+
that is exactly how the three earlier ones were dropped.
|
|
61
|
+
|
|
62
|
+
## Step 3 — Dispatch
|
|
63
|
+
|
|
64
|
+
Invoke `bmad-prd` with the detected intent, scoped to **one initiative**. Do not restate the rules to it —
|
|
65
|
+
they arrive through `persistent_facts` and `doc_standards` in `_bmad/custom/bmad-prd.toml`.
|
|
66
|
+
|
|
67
|
+
Name the brief and, for `update`, the existing PRD and every `applied` decision that reaches it. The skill
|
|
68
|
+
globs its own default locations, which this project redirects.
|
|
69
|
+
|
|
70
|
+
## Step 4 — Verify
|
|
71
|
+
|
|
72
|
+
| # | Check | Fails when |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| 1 | Home | Anything outside `.what/_prd/<initiative>/`, or a folder still named `ISI-slug-inisiatif` |
|
|
75
|
+
| 2 | Ids allocated from the registry | `FR-1` restarted, or an id invented in prose |
|
|
76
|
+
| 3 | Every `FR` names its `capability`; every `NFR` names its `goal` | V15 has nothing to check |
|
|
77
|
+
| 4 | Every `FR` has **exactly one** proof of done, in business language | Zero, or a second technical restatement beside it |
|
|
78
|
+
| 5 | Every `NFR` names `enforced_by` | An `NFR` nothing enforces is decoration (V5) |
|
|
79
|
+
| 6 | Cross-Cutting NFRs and Constraints both present | An absent section reads as "not checked" |
|
|
80
|
+
| 7 | No solution shape | A framework, a table, or a transport named in `prd.md` rather than in `addendum.md` |
|
|
81
|
+
| 8 | One Revision History row for this run, written for someone not in the room | Zero rows, several rows, or a row that says "Updated §4.2" |
|
|
82
|
+
| 9 | Memlog at `.control/memlog/prd-<slug>.md`, slug matching the folder | A `.memlog.md` appeared inside `.what/` — `--workspace` was used |
|
|
83
|
+
| 10 | `bmad-review` ran through `doc_standards` on `prd.md` and `addendum.md` | It did not fire |
|
|
84
|
+
|
|
85
|
+
Check 9 MUST be fixed immediately rather than reported. V16 rejects a memlog inside the corpus.
|
|
86
|
+
|
|
87
|
+
## Step 5 — `owns:`, and the collision it prevents
|
|
88
|
+
|
|
89
|
+
A new or changed `FR` that claims write authority over a domain entity MUST be checked against `owns:` in
|
|
90
|
+
`components.yaml`. An entity has exactly one owning Product Component; an `FR` from another PRD that needs to
|
|
91
|
+
change it MUST point at the owner's `FR` rather than promising to write it itself. V21 checks this, and the
|
|
92
|
+
collision has already happened once for real.
|
|
93
|
+
|
|
94
|
+
Report a collision. You MUST NOT resolve it by widening one PRD's claim.
|
|
95
|
+
|
|
96
|
+
## Step 6 — Impact
|
|
97
|
+
|
|
98
|
+
A changed promise changes what other documents can still claim. Check, and **report** — never edit.
|
|
99
|
+
|
|
100
|
+
| Found | Where it goes |
|
|
101
|
+
|---|---|
|
|
102
|
+
| A `UC` realising an `FR` whose promise moved | `wdi-component` intent `behaviour`, or `wdi-blueprint` when the catalogue line itself changes |
|
|
103
|
+
| A blueprint inventory row with nothing promising it any more | `wdi-blueprint` |
|
|
104
|
+
| A contradiction with an `applied` decision | `wdi-decision` — a new `DEC-`, never an edit to one already applied |
|
|
105
|
+
| A component born by this initiative | `wdi-init` intent `component` |
|
|
106
|
+
|
|
107
|
+
Then run the change-control matrix in `delivery-flow-guide.md` and **report** which gates reopen. You MUST
|
|
108
|
+
NOT reopen one yourself.
|
|
109
|
+
|
|
110
|
+
## Rules
|
|
111
|
+
|
|
112
|
+
- You MUST NOT write a second PRD for an area that already has one. The reader test decides, and its answer
|
|
113
|
+
is `update` far more often than it feels.
|
|
114
|
+
- You MUST NOT open G2 on a PRD that has not been through check 10. Gate time is for deciding, not
|
|
115
|
+
proofreading.
|
|
116
|
+
- The gate reads `prd.md` and `EXPERIENCE.md` together. A PRD that passes while the experience side is
|
|
117
|
+
missing has answered half of what G2 decides.
|
|
118
|
+
- Every unresolved `[ASSUMPTION]` MUST be filed through `wdi-question` before the gate opens.
|
|
119
|
+
- You MUST NOT raise `status:`. Status is a stage; the `reviewed:` block is an event, and `wdi-review` writes
|
|
120
|
+
it.
|
|
121
|
+
- When the PRD cannot promise what was asked, say so and stop. Route to `wdi-problem`; do not quietly narrow
|
|
122
|
+
the ask.
|
|
123
|
+
|
|
124
|
+
## Output
|
|
125
|
+
|
|
126
|
+
Intent dispatched · what the promise now is in one line · the result of all ten checks naming the failures ·
|
|
127
|
+
the `owns:` check · impact found and where it was routed · the gates the matrix names · open questions filed.
|
|
@@ -40,7 +40,7 @@ in one line before checking, and say what it excluded.
|
|
|
40
40
|
|
|
41
41
|
## Step 2 — Run the validators first
|
|
42
42
|
|
|
43
|
-
Run `uv run .constitution/scripts/validate.py`, and `uv run .constitution/scripts/inventory.py` when code
|
|
43
|
+
Run `uv run .constitution/method/scripts/validate.py`, and `uv run .constitution/method/scripts/inventory.py` when code
|
|
44
44
|
exists. V1–V24 answer everything that can be **counted**, and you MUST NOT re-derive by reading what they
|
|
45
45
|
already report. Carry their findings as they came, then spend the reading on what no validator can see.
|
|
46
46
|
|
|
@@ -82,7 +82,7 @@ governs it, and the four failures worth looking for are the ones no ID chain rec
|
|
|
82
82
|
|
|
83
83
|
You MUST NOT invent a rule to fail an artifact against. Every finding here MUST quote the guide it comes
|
|
84
84
|
from. A file at `status: Draft` MAY be read as guidance but MUST NOT be used to reject anything — that
|
|
85
|
-
holds for all three
|
|
85
|
+
holds for all three `.constitution/project/codebase-*-guide.md` — and a file at `status: Reference` MUST NOT be cited to reject
|
|
86
86
|
anything at all.
|
|
87
87
|
|
|
88
88
|
### What the Evidence check is, and what it is not
|