wdi-method 0.6.30 → 0.6.31

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 (30) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +3 -0
  3. package/bin/wdi-method.js +121 -14
  4. package/kit/.constitution/method/document/architecture-guide.md +217 -209
  5. package/kit/.constitution/method/document/corpus-guide.md +522 -517
  6. package/kit/.constitution/method/document/decision-guide.md +236 -216
  7. package/kit/.constitution/method/document/delivery-flow-guide.md +20 -0
  8. package/kit/.constitution/method/document/prd-guide.md +245 -245
  9. package/kit/.constitution/method/document/templates/design-system.md +96 -66
  10. package/kit/.constitution/method/document/templates/experience.md +62 -0
  11. package/kit/.constitution/method/document/templates/structure-codebase.md +131 -129
  12. package/kit/.constitution/method/document/templates/ux.md +78 -76
  13. package/kit/.constitution/method/document/ux-guide.md +161 -115
  14. package/kit/.constitution/method/method-glossary.md +3 -0
  15. package/kit/.constitution/method/scripts/validate.py +3310 -3200
  16. package/kit/.constitution/method/structure-guide.md +204 -202
  17. package/kit/.constitution/method/why/artifact-map.md +158 -157
  18. package/kit/skills/wdi-blueprint/SKILL.md +271 -264
  19. package/kit/skills/wdi-component/SKILL.md +179 -174
  20. package/kit/skills/wdi-decision/SKILL.md +206 -203
  21. package/kit/skills/wdi-help/SKILL.md +127 -125
  22. package/kit/skills/wdi-init/SKILL.md +9 -4
  23. package/kit/skills/wdi-problem/SKILL.md +114 -108
  24. package/kit/skills/wdi-product/SKILL.md +167 -162
  25. package/kit/skills/wdi-reconcile/SKILL.md +170 -169
  26. package/kit/skills/wdi-upgrade/SKILL.md +234 -215
  27. package/kit/skills/wdi-ux/SKILL.md +187 -169
  28. package/kit-overlay/AGENTS.md +3 -1
  29. package/package.json +1 -1
  30. package/scaffold/.control/registry/index.yaml +2 -1
@@ -1,174 +1,179 @@
1
- ---
2
- name: wdi-component
3
- description: Use at G4 Component — the depth of one Product Component, as deep as that component's mode and no deeper. Two intents, behaviour and design. Owns .what/<pc>/ slots 02-05 and .how/<pc>/ minus 01-ux. Skipped entirely at mode catalog.
4
- ---
5
-
6
- # WDI Component
7
-
8
- G4 decides **how one Product Component is built, and what the choice costs.** It is the only gate that changes
9
- shape with `mode`, and the only one that runs more than once for a reason other than a new PRD.
10
-
11
- | `mode` | This skill |
12
- |---|---|
13
- | `catalog` | **Not run. G4 is skipped.** |
14
- | `outline` | `behaviour` + `design` **as far as § Structure**, and no further |
15
- | `guarded` | `behaviour` + `design` |
16
- | `deep` | `behaviour` + `design` |
17
-
18
- This table said `outline` → `behaviour` only until 2026-08-18. It contradicted **Step 4 of this same
19
- skill**, which starts `Decision Summary` and `Structure` "from `outline`", and it contradicted
20
- `delivery-flow-guide.md`, which owns the mapping and lists both for `outline`. Read literally, it would
21
- have left every `outline` component with an SDD that is a template skeleton forever — and `review-trace` would have
22
- been right to keep flagging it.
23
-
24
- Read the component's `mode` from its row in `components.yaml`, falling back to `mode:` in `index.yaml`. Read
25
- its `risk_accepted` from the same row; it decides the review lenses and nothing else.
26
-
27
- **You MUST NOT write more than the component's `mode` demands.** Writing a section the mode does not ask for is
28
- the failure this gate was rebuilt to stop — it is how 41 of 56 use cases ended up marked `critical` and how the
29
- previous run stalled. Depth is a preference the owner set, and exceeding it is not diligence.
30
-
31
- Stage-3 and Stage-4 work were two skills before and are one now, because they are one gate. The boundary
32
- between them is intact and it is **horizontal**: `behaviour` writes what the system does, `design` writes how.
33
-
34
- ## Inputs
35
-
36
- | Source | What it answers |
37
- |---|---|
38
- | `.control/registry/components.yaml` | This component's `mode`, `risk_accepted`, `risk_note`, `owns` |
39
- | `.what/<pc>/SRS-<pc>.md` § UC Catalogue · § Actor Register | Which use cases exist, and which are `critical` |
40
- | `.what/_prd/*/prd.md` | The `FR` this component has to make true |
41
- | `.what/business-rules.md` | Rules that already bind more than one component |
42
- | `.how/_platform/inventory-api.md` · `inventory-screen.md` | **The boundary list.** It is already derived; do not derive it again |
43
- | `.how/_platform/ARCHITECTURE-SPINE.md` | Every `AD-N` that binds this component |
44
- | `.how/_platform/cross-cutting.md` | The error envelope, and anything else decided once |
45
- | `.control/decisions/` | `applied` decisions this must not contradict |
46
- | `.constitution/method/document/srs-guide.md` · `sdd-guide.md` | The rules the result is checked against |
47
- | `src/` · `web/` | Only as evidence when the code already exists. Never as a substitute for the SRS |
48
-
49
- ## Step 1 — Scope, one component
50
-
51
- State it in one line before doing anything. A pass MUST NOT write content for several components: an SDD is per
52
- component by construction, and one pass over two of them inherits the wrong constraints.
53
-
54
- | Ask | Scope |
55
- |---|---|
56
- | "Take `<pc>` to G4" | One component, both intents as its `mode` demands |
57
- | "Write the failure behaviour for `<pc>`" | One section of one component |
58
- | "Is our design consistent?" | Read-only across components — that is `wdi-reconcile`. Route there |
59
-
60
- ## Step 2 — Preconditions
61
-
62
- None of these are yours to create.
63
-
64
- | Check | When it fails |
65
- |---|---|
66
- | The component is registered with `mode` and `risk_accepted` set | Route to `wdi-init` intents `component`, `mode`, `risk` |
67
- | Its `mode` is not `catalog` | Stop. G4 is skipped, and the work goes straight to `wdi-build` |
68
- | G3 has passed | Route to `wdi-blueprint`. Depth written against a moving portrait is rewritten |
69
- | The spine exists and its `AD-N` are readable | Route to `wdi-blueprint`. You MUST NOT write the spine |
70
- | For `design`: the container this component runs in is registered | Route to `wdi-blueprint`. G3 has passed by now, so the answer exists — an `LC` written here MUST carry it. Only a screen `LC` born at G2 is allowed an empty one, and G3 fills it |
71
-
72
- ## Step 3 — Intent `behaviour`
73
-
74
- Writes `.what/<pc>/`, slots `02`–`05`. You MUST NOT write solution shape: no framework, no table, no endpoint,
75
- no class, no queue, no file path.
76
-
77
- | `mode` | Written |
78
- |---|---|
79
- | `outline` · `guarded` | Full flows for the use cases the component exists for, **at most 3**, in `04-usecases/UC-<n>-<slug>.md` · local business rules in `02-rules/rules-<pc>.md` |
80
- | `deep` | + a full flow for **every** `critical` use case · `03-domain/state-machines.md` · `05-scenarios/SCN-<nn>-<slug>.md` |
81
-
82
- A flow is at most **eight steps**. A flow needing more is either two use cases or has started describing
83
- implementation, and the cap is what makes that visible while it is still cheap to fix. Branches go to
84
- `05-scenarios/` — at `deep` only — never into a fatter UC file.
85
-
86
- A rule that turns out to bind a second component MUST be **promoted** to `.what/business-rules.md` through
87
- `wdi-blueprint`, not copied. Two copies of one rule is how components start disagreeing about the same policy.
88
-
89
- ## Step 4 — Intent `design`
90
-
91
- Writes `.how/<pc>/`. Two carve-outs that are not negotiable: `01-ux/` belongs to `wdi-ux`, and all of
92
- `.how/_platform/` belongs to `wdi-blueprint`. You MUST NOT write into either.
93
-
94
- Write in this order, stopping at whatever the `mode` does not reach:
95
-
96
- 1. **`Decision Summary`** — from `outline`. One page: what this component is built as, and the one or two most
97
- expensive choices reversed.
98
- 2. **`Structure`** — from `outline`. The `LC` list and the direction of their dependencies.
99
- 3. **`Inherited Constraints`** — from `guarded`. Every `AD-N` reaching this component, **quoted verbatim**. A
100
- paraphrase drifts, and the drift is invisible because both texts read reasonably. A design that must deviate
101
- does not argue here: it goes to `wdi-decision`, and either the spine changes or the design does.
102
- 4. **`Failure Behaviour`** — from `guarded`, for **every** boundary. The boundary list is the endpoints and
103
- screens this component owns in the two platform inventories. Per boundary: what happens when the other side
104
- is slow, absent, or lying — timeout, retry policy, what the user sees, what gets logged. "Returns an error"
105
- is not an answer.
106
- 5. **`03-integrations/<name>.md`** — from `guarded`, when the component has a third party. It MUST name the
107
- owner outside the team, and what happens when they change it without telling anyone.
108
- 6. **The ABCE pass** — `deep` only, in order: Boundary → Control → Entity → Behaviour. It MUST NOT have
109
- appeared in the SRS, and below `deep` it MUST NOT be written at all.
110
- 7. **`02-contracts/`, `04-components/`, `05-model/data-model.md`, `06-flows/`** — `deep` only. The contract
111
- inventory comes first and specs carry its stable numbers; every spec answers all five lanes, with `none` and
112
- a reason where one does not apply. The data model carries a dictionary beside its diagram.
113
-
114
- From `guarded` up, every Boundary object MUST become an `LC` in `components.yaml`; at `deep`, Control objects
115
- too. Registration is checked **when the spec closes** — `lc-registered` — not before a ticket is picked up. You MUST
116
- NOT register a `container`, and you MUST NOT register `ui-screen` or `ui-composite`.
117
-
118
- ## Step 5 — Evidence, and the as-built case
119
-
120
- Every technical claim about code that already exists MUST name what was read. The four labels — `[ASSUMED]` ·
121
- `[PARTIAL]` · `[NEEDS CONFIRMATION]` · `[MISSING]` — are mandatory, and their ladder rules are in
122
- `sdd-guide.md`.
123
-
124
- **Raising a component's `mode` after its code runs is the case this matters most for.** What you write then is
125
- an **as-built record, not a design**, and you MUST NOT raise a claim to verified without naming the file that
126
- proves it. Two labels MUST be acted on rather than left in the text:
127
-
128
- - `[NEEDS CONFIRMATION]` → `wdi-question`, before G4 opens.
129
- - `[MISSING]` → dispositioned as a `BUG-`, a correction, or planned work. It MUST NOT be deleted; the
130
- sentence is the only surviving evidence that somebody once believed the thing existed.
131
-
132
- ## Step 6 — Drift
133
-
134
- Check against the layer above and the code below, and **report** — never edit the other side.
135
-
136
- | Found | Where it goes |
137
- |---|---|
138
- | Depth needs behaviour the catalogue never listed | `wdi-blueprint` — into the catalogue, before any code |
139
- | The catalogue promised behaviour this component cannot deliver | `wdi-product`. Do not quietly narrow it here |
140
- | A contradiction with an `applied` decision or an `AD-N` | `wdi-decision` — a new `DEC-`, never an edit to one already applied |
141
- | A decision that would bind a second component | `wdi-blueprint` — it is an `AD-N`, not an SDD paragraph |
142
- | The code does something this document does not describe | Here, as a labelled claim, or as a `BUG-` when the code is wrong |
143
-
144
- `wdi-reconcile` is the read-only sweep across all layers. Run it rather than reimplementing it.
145
-
146
- ## Step 7 — Review
147
-
148
- No `doc_standards` fires for an SRS or an SDD. Dispatch `wdi-review`, which reads the lens set from this
149
- component's `risk_accepted` — `edge-case-hunter` at `low` and `medium`, `structure` + `prose` at `high`, plus a
150
- two-reviewer code panel at `low`. Slots are part of the artifact; reviewing a kernel alone misses where the
151
- branches and contracts live.
152
-
153
- You MUST NOT open G4 on depth that has not been through it.
154
-
155
- ## Rules
156
-
157
- - A decision taken while writing is **written into the document as its own content**, stated as what now
158
- holds. Never as a parenthetical aside — there is no memlog here to catch one. It goes to `wdi-decision`
159
- only when no design document has a home for it, or it touches an `AD-N`; `decision-guide.md` § A
160
- decision's first home owns that split.
161
- - You MUST NOT write into `.what/_prd/`, `.what/business-rules.md`, `.how/_platform/`, or `.how/<pc>/01-ux/`.
162
- - You MUST NOT raise `status:`. Status is a stage; the `reviewed:` block is an event.
163
- - You MUST NOT lower or raise the component's `mode` to fit what you want to write. That is `wdi-init`, and it
164
- is the owner's call.
165
- - The spec's contract is cut **after** this, never before, and it MUST NOT introduce anything these documents do not say.
166
- - Memlog: `.control/memlog/<pc>.md`, through `memlog.py --path`. `--workspace` MUST NOT be used.
167
- - Questions arrive as **one** ranked batch at the gate, not as they surface.
168
-
169
- ## Output
170
-
171
- Component and its `mode` and `risk_accepted` · which intents ran · what was written per slot and **what the
172
- mode deliberately left unwritten** · the `AD-N` inherited · the `LC` registered and their types · evidence
173
- labels outstanding by kind · drift found and where it was routed · whether `wdi-review` ran · the one ranked
174
- batch of questions.
1
+ ---
2
+ name: wdi-component
3
+ description: Use at G4 Component — the depth of one Product Component, as deep as that component's mode and no deeper. Two intents, behaviour and design. Owns .what/<pc>/ slots 02-05 and .how/<pc>/ minus 01-ux. Skipped entirely at mode catalog.
4
+ ---
5
+
6
+ # WDI Component
7
+
8
+ G4 decides **how one Product Component is built, and what the choice costs.** It is the only gate that changes
9
+ shape with `mode`, and the only one that runs more than once for a reason other than a new PRD.
10
+
11
+ | `mode` | This skill |
12
+ |---|---|
13
+ | `catalog` | **Not run. G4 is skipped.** |
14
+ | `outline` | `behaviour` + `design` **as far as § Structure**, and no further |
15
+ | `guarded` | `behaviour` + `design` |
16
+ | `deep` | `behaviour` + `design` |
17
+
18
+ This table said `outline` → `behaviour` only until 2026-08-18. It contradicted **Step 4 of this same
19
+ skill**, which starts `Decision Summary` and `Structure` "from `outline`", and it contradicted
20
+ `delivery-flow-guide.md`, which owns the mapping and lists both for `outline`. Read literally, it would
21
+ have left every `outline` component with an SDD that is a template skeleton forever — and `review-trace` would have
22
+ been right to keep flagging it.
23
+
24
+ Read the component's `mode` from its row in `components.yaml`, falling back to `mode:` in `index.yaml`. Read
25
+ its `risk_accepted` from the same row; it decides the review lenses and nothing else.
26
+
27
+ **You MUST NOT write more than the component's `mode` demands.** Writing a section the mode does not ask for is
28
+ the failure this gate was rebuilt to stop — it is how 41 of 56 use cases ended up marked `critical` and how the
29
+ previous run stalled. Depth is a preference the owner set, and exceeding it is not diligence.
30
+
31
+ Stage-3 and Stage-4 work were two skills before and are one now, because they are one gate. The boundary
32
+ between them is intact and it is **horizontal**: `behaviour` writes what the system does, `design` writes how.
33
+
34
+ ## Inputs
35
+
36
+ | Source | What it answers |
37
+ |---|---|
38
+ | `.control/registry/components.yaml` | This component's `mode`, `risk_accepted`, `risk_note`, `owns` |
39
+ | `.what/<pc>/SRS-<pc>.md` § UC Catalogue · § Actor Register | Which use cases exist, and which are `critical` |
40
+ | `.what/_prd/*/prd.md` | The `FR` this component has to make true |
41
+ | `.what/business-rules.md` | Rules that already bind more than one component |
42
+ | `.how/_platform/inventory-api.md` · `inventory-screen.md` | **The boundary list.** It is already derived; do not derive it again |
43
+ | `.how/_platform/ARCHITECTURE-SPINE.md` | Every `AD-N` that binds this component |
44
+ | `.how/_platform/cross-cutting.md` | The error envelope, and anything else decided once |
45
+ | `.control/decisions/` | `applied` decisions this must not contradict |
46
+ | `.constitution/method/document/srs-guide.md` · `sdd-guide.md` | The rules the result is checked against |
47
+ | `src/` · `web/` | Only as evidence when the code already exists. Never as a substitute for the SRS |
48
+
49
+ ## Step 1 — Scope, one component
50
+
51
+ State it in one line before doing anything. A pass MUST NOT write content for several components: an SDD is per
52
+ component by construction, and one pass over two of them inherits the wrong constraints.
53
+
54
+ | Ask | Scope |
55
+ |---|---|
56
+ | "Take `<pc>` to G4" | One component, both intents as its `mode` demands |
57
+ | "Write the failure behaviour for `<pc>`" | One section of one component |
58
+ | "Is our design consistent?" | Read-only across components — that is `wdi-reconcile`. Route there |
59
+
60
+ ## Step 2 — Preconditions
61
+
62
+ None of these are yours to create.
63
+
64
+ | Check | When it fails |
65
+ |---|---|
66
+ | The component is registered with `mode` and `risk_accepted` set | Route to `wdi-init` intents `component`, `mode`, `risk` |
67
+ | Its `mode` is not `catalog` | Stop. G4 is skipped, and the work goes straight to `wdi-build` |
68
+ | `G3` is in `gates_passed` | Route to `wdi-blueprint`. Depth written against a moving portrait is rewritten. A missing record is asked of the owner, never inferred from the spine existing |
69
+ | The spine exists and its `AD-N` are readable | Route to `wdi-blueprint`. You MUST NOT write the spine |
70
+ | For `design`: the container this component runs in is registered | Route to `wdi-blueprint`. G3 has passed by now, so the answer exists — an `LC` written here MUST carry it. Only a screen `LC` born at G2 is allowed an empty one, and G3 fills it |
71
+
72
+ ## Step 3 — Intent `behaviour`
73
+
74
+ Writes `.what/<pc>/`, slots `02`–`05`. You MUST NOT write solution shape: no framework, no table, no endpoint,
75
+ no class, no queue, no file path.
76
+
77
+ | `mode` | Written |
78
+ |---|---|
79
+ | `outline` · `guarded` | Full flows for the use cases the component exists for, **at most 3**, in `04-usecases/UC-<n>-<slug>.md` · local business rules in `02-rules/rules-<pc>.md` |
80
+ | `deep` | + a full flow for **every** `critical` use case · `03-domain/state-machines.md` · `05-scenarios/SCN-<nn>-<slug>.md` |
81
+
82
+ A flow is at most **eight steps**. A flow needing more is either two use cases or has started describing
83
+ implementation, and the cap is what makes that visible while it is still cheap to fix. Branches go to
84
+ `05-scenarios/` — at `deep` only — never into a fatter UC file.
85
+
86
+ A rule that turns out to bind a second component MUST be **promoted** to `.what/business-rules.md` through
87
+ `wdi-blueprint`, not copied. Two copies of one rule is how components start disagreeing about the same policy.
88
+
89
+ ## Step 4 — Intent `design`
90
+
91
+ Writes `.how/<pc>/`. Two carve-outs that are not negotiable: `01-ux/` belongs to `wdi-ux`, and all of
92
+ `.how/_platform/` belongs to `wdi-blueprint`. You MUST NOT write into either.
93
+
94
+ Write in this order, stopping at whatever the `mode` does not reach:
95
+
96
+ 1. **`Decision Summary`** — from `outline`. One page: what this component is built as, and the one or two most
97
+ expensive choices reversed.
98
+ 2. **`Structure`** — from `outline`. The `LC` list and the direction of their dependencies.
99
+ 3. **`Inherited Constraints`** — from `guarded`. Every `AD-N` reaching this component, **quoted verbatim**. A
100
+ paraphrase drifts, and the drift is invisible because both texts read reasonably. A design that must deviate
101
+ does not argue here: it goes to `wdi-decision`, and either the spine changes or the design does.
102
+ 4. **`Failure Behaviour`** — from `guarded`, for **every** boundary. The boundary list is the endpoints and
103
+ screens this component owns in the two platform inventories. Per boundary: what happens when the other side
104
+ is slow, absent, or lying — timeout, retry policy, what the user sees, what gets logged. "Returns an error"
105
+ is not an answer.
106
+ 5. **`03-integrations/<name>.md`** — from `guarded`, when the component has a third party. It MUST name the
107
+ owner outside the team, and what happens when they change it without telling anyone.
108
+ 6. **The ABCE pass** — `deep` only, in order: Boundary → Control → Entity → Behaviour. It MUST NOT have
109
+ appeared in the SRS, and below `deep` it MUST NOT be written at all.
110
+ 7. **`02-contracts/`, `04-components/`, `05-model/data-model.md`, `06-flows/`** — `deep` only. The contract
111
+ inventory comes first and specs carry its stable numbers; every spec answers all five lanes, with `none` and
112
+ a reason where one does not apply. The data model carries a dictionary beside its diagram.
113
+
114
+ From `guarded` up, every Boundary object MUST become an `LC` in `components.yaml`; at `deep`, Control objects
115
+ too. Registration is checked **when the spec closes** — `lc-registered` — not before a ticket is picked up. You MUST
116
+ NOT register a `container`, and you MUST NOT register `ui-screen` or `ui-composite`.
117
+
118
+ ## Step 5 — Evidence, and the as-built case
119
+
120
+ Every technical claim about code that already exists MUST name what was read. The four labels — `[ASSUMED]` ·
121
+ `[PARTIAL]` · `[NEEDS CONFIRMATION]` · `[MISSING]` — are mandatory, and their ladder rules are in
122
+ `sdd-guide.md`.
123
+
124
+ **Raising a component's `mode` after its code runs is the case this matters most for.** What you write then is
125
+ an **as-built record, not a design**, and you MUST NOT raise a claim to verified without naming the file that
126
+ proves it. Two labels MUST be acted on rather than left in the text:
127
+
128
+ - `[NEEDS CONFIRMATION]` → `wdi-question`, before G4 opens.
129
+ - `[MISSING]` → dispositioned as a `BUG-`, a correction, or planned work. It MUST NOT be deleted; the
130
+ sentence is the only surviving evidence that somebody once believed the thing existed.
131
+
132
+ ## Step 6 — Drift
133
+
134
+ Check against the layer above and the code below, and **report** — never edit the other side.
135
+
136
+ | Found | Where it goes |
137
+ |---|---|
138
+ | Depth needs behaviour the catalogue never listed | `wdi-blueprint` — into the catalogue, before any code |
139
+ | The catalogue promised behaviour this component cannot deliver | `wdi-product`. Do not quietly narrow it here |
140
+ | A contradiction with an `applied` decision or an `AD-N` | `wdi-decision` — a new `DEC-`, never an edit to one already applied |
141
+ | A decision that would bind a second component | `wdi-blueprint` — it is an `AD-N`, not an SDD paragraph |
142
+ | The code does something this document does not describe | Here, as a labelled claim, or as a `BUG-` when the code is wrong |
143
+
144
+ `wdi-reconcile` is the read-only sweep across all layers. Run it rather than reimplementing it.
145
+
146
+ ## Step 7 — Review
147
+
148
+ No `doc_standards` fires for an SRS or an SDD. Dispatch `wdi-review`, which reads the lens set from this
149
+ component's `risk_accepted` — `edge-case-hunter` at `low` and `medium`, `structure` + `prose` at `high`, plus a
150
+ two-reviewer code panel at `low`. Slots are part of the artifact; reviewing a kernel alone misses where the
151
+ branches and contracts live.
152
+
153
+ You MUST NOT open G4 on depth that has not been through it.
154
+
155
+ ## Step 8 — Record the gate
156
+
157
+ Ask the owner whether G4 passed for this component. Write today's date into its `g4_passed` only on
158
+ their explicit *yes* — `delivery-flow-guide.md` § *Recording a gate that passed*. `spec-after-g4` reads it.
159
+
160
+ ## Rules
161
+
162
+ - A decision taken while writing is **written into the document as its own content**, stated as what now
163
+ holds. Never as a parenthetical aside — there is no memlog here to catch one. It goes to `wdi-decision`
164
+ only when no design document has a home for it, or it touches an `AD-N`; `decision-guide.md` § A
165
+ decision's first home owns that split.
166
+ - You MUST NOT write into `.what/_prd/`, `.what/business-rules.md`, `.how/_platform/`, or `.how/<pc>/01-ux/`.
167
+ - You MUST NOT raise `status:`. Status is a stage; the `reviewed:` block is an event.
168
+ - You MUST NOT lower or raise the component's `mode` to fit what you want to write. That is `wdi-init`, and it
169
+ is the owner's call.
170
+ - The spec's contract is cut **after** this, never before, and it MUST NOT introduce anything these documents do not say.
171
+ - Memlog: `.control/memlog/<pc>.md`, through `memlog.py --path`. `--workspace` MUST NOT be used.
172
+ - Questions arrive as **one** ranked batch at the gate, not as they surface.
173
+
174
+ ## Output
175
+
176
+ Component and its `mode` and `risk_accepted` · which intents ran · what was written per slot and **what the
177
+ mode deliberately left unwritten** · the `AD-N` inherited · the `LC` registered and their types · evidence
178
+ labels outstanding by kind · drift found and where it was routed · whether `wdi-review` ran · the one ranked
179
+ batch of questions · whether G4 was recorded.