wdi-method 0.6.30 → 0.6.32

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 (43) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/NOTICE +7 -2
  3. package/README.md +16 -11
  4. package/bin/wdi-method.js +396 -87
  5. package/kit/.constitution/method/document/architecture-guide.md +217 -209
  6. package/kit/.constitution/method/document/bmad-skill-register.md +107 -104
  7. package/kit/.constitution/method/document/corpus-guide.md +522 -517
  8. package/kit/.constitution/method/document/decision-guide.md +236 -216
  9. package/kit/.constitution/method/document/delivery-flow-guide.md +20 -0
  10. package/kit/.constitution/method/document/prd-guide.md +245 -245
  11. package/kit/.constitution/method/document/templates/design-system.md +96 -66
  12. package/kit/.constitution/method/document/templates/experience.md +62 -0
  13. package/kit/.constitution/method/document/templates/structure-codebase.md +131 -129
  14. package/kit/.constitution/method/document/templates/ux.md +78 -76
  15. package/kit/.constitution/method/document/ux-guide.md +161 -115
  16. package/kit/.constitution/method/method-glossary.md +3 -0
  17. package/kit/.constitution/method/scripts/validate.py +3375 -3200
  18. package/kit/.constitution/method/structure-guide.md +204 -202
  19. package/kit/.constitution/method/why/README.md +1 -1
  20. package/kit/.constitution/method/why/artifact-map.md +158 -157
  21. package/kit/.constitution/method/why/portability.md +19 -2
  22. package/kit/skills/wdi-autopilot/SKILL.md +32 -19
  23. package/kit/skills/wdi-blueprint/SKILL.md +271 -264
  24. package/kit/skills/wdi-build/SKILL.md +28 -19
  25. package/kit/skills/wdi-component/SKILL.md +179 -174
  26. package/kit/skills/wdi-daily-autopilot/SKILL.md +24 -13
  27. package/kit/skills/wdi-daily-what-to-build/SKILL.md +9 -6
  28. package/kit/skills/wdi-daily-what-to-test/SKILL.md +2 -0
  29. package/kit/skills/wdi-decision/SKILL.md +206 -203
  30. package/kit/skills/wdi-explain-to-me/SKILL.md +2 -0
  31. package/kit/skills/wdi-help/SKILL.md +130 -125
  32. package/kit/skills/wdi-init/SKILL.md +10 -5
  33. package/kit/skills/wdi-problem/SKILL.md +114 -108
  34. package/kit/skills/wdi-product/SKILL.md +167 -162
  35. package/kit/skills/wdi-prune-or-archive/SKILL.md +2 -0
  36. package/kit/skills/wdi-reconcile/SKILL.md +170 -169
  37. package/kit/skills/wdi-upgrade/SKILL.md +234 -215
  38. package/kit/skills/wdi-ux/SKILL.md +187 -169
  39. package/kit-overlay/AGENTS.md +15 -2
  40. package/kit-overlay/portability.md +19 -2
  41. package/lib/platforms.mjs +420 -248
  42. package/package.json +1 -1
  43. package/scaffold/.control/registry/index.yaml +2 -1
@@ -1,76 +1,78 @@
1
- ---
2
- type: ux
3
- component: '{pc}'
4
- document: design # design (.how/<pc>/01-ux/) · experience (.what/<pc>/04-usecases/)
5
- created: '{YYYY-MM-DD}'
6
- ---
7
-
8
- # {DESIGN | EXPERIENCE} — {Product Component}
9
-
10
- <!-- TEMPLATE GUIDE — act on these comments, then delete them.
11
-
12
- bmad-ux produces TWO documents, and they fall in two different layers. This template covers
13
- both; set `document` and keep only that half.
14
-
15
- DESIGN.md → .how/<pc>/01-ux/ visual: tokens, components, layout
16
- EXPERIENCE.md → .what/<pc>/04-usecases/ behaviour: IA, states, journeys, accessibility
17
-
18
- Keeping them in one file — as most projects do — makes a button-colour change and a flow change
19
- look equally weighty. They are not.
20
-
21
- Neither lands by itself. bmad-ux writes to _bmad-output/ux/ and wdi-ux lands it. Base
22
- tokens and shared elements do NOT stay per-component; they go to
23
- .how/_platform/design-system.md. -->
24
-
25
- ## DESIGN — visual
26
-
27
- <!-- Keep only when document: design. -->
28
-
29
- ### Tokens
30
-
31
- <!-- What is component-specific. Anything reusable MUST be promoted to design-system.md instead —
32
- a token defined twice is a token that will diverge. -->
33
-
34
- ### Screens
35
-
36
- <!-- One row per screen. Each MUST be registered as an LC of type ui-screen in components.yaml —
37
- wdi-ux does this in the same act as landing the screen, and `lc-registered` checks it at spec close. -->
38
-
39
- | Screen | LC | Purpose |
40
- | --- | --- | --- |
41
-
42
- ### Layout and states
43
-
44
- <!-- Per screen: the states it can be in — empty, loading, error, populated. The empty and error
45
- states are the ones that get skipped and the ones users hit first. -->
46
-
47
- ---
48
-
49
- ## EXPERIENCE — behaviour
50
-
51
- <!-- Keep only when document: experience. This half is WHAT, not HOW: it says what the user can do
52
- and what the system answers, in human language, with no visual detail. -->
53
-
54
- ### Information architecture
55
-
56
- <!-- Top-level surfaces and how someone moves between them. -->
57
-
58
- ### Journeys
59
-
60
- <!-- Reference UJ-N from the PRD rather than restating them; add only what the PRD left implicit —
61
- screen order, entry state, what tells the user the value landed. -->
62
-
63
- ### Behaviour per surface
64
-
65
- | Surface | User can | System answers |
66
- | --- | --- | --- |
67
-
68
- ### Accessibility
69
-
70
- <!-- What MUST hold: contrast, focus order, target size, screen-reader labelling, motion. State the
71
- standard being met, not the intention to meet one. -->
72
-
73
- ### Edge cases
74
-
75
- <!-- Real failure moments and what the user does next. One per row; the ones worth writing are the
76
- ones a designer would rather not think about. -->
1
+ ---
2
+ type: ux
3
+ component: '{pc}'
4
+ document: design # design (.how/<pc>/01-ux/) · experience (.what/<pc>/04-usecases/)
5
+ landed_from: [] # the run file(s) in _bmad-output/ux/ this landed from — provenance, kept after the run is gone
6
+ created: '{YYYY-MM-DD}'
7
+ ---
8
+
9
+ # {DESIGN | EXPERIENCE} — {Product Component}
10
+
11
+ <!-- TEMPLATE GUIDE — act on these comments, then delete them.
12
+
13
+ bmad-ux produces TWO documents, and they fall in two different layers. This template covers
14
+ both; set `document` and keep only that half.
15
+
16
+ DESIGN.md → .how/<pc>/01-ux/ visual: tokens, components, layout
17
+ EXPERIENCE.md → .what/<pc>/04-usecases/ behaviour: IA, states, journeys, accessibility
18
+
19
+ Keeping them in one file — as most projects do — makes a button-colour change and a flow change
20
+ look equally weighty. They are not.
21
+
22
+ Neither lands by itself. bmad-ux writes to _bmad-output/ux/ and wdi-ux lands it. What holds
23
+ for EVERY component does NOT stay per-component: the promise side goes to .what/experience.md
24
+ (templates/experience.md), and tokens, shared elements, and build patterns go to
25
+ .how/_platform/design-system.md. ux-guide.md § Product level maps each bmad-ux section. -->
26
+
27
+ ## DESIGN — visual
28
+
29
+ <!-- Keep only when document: design. -->
30
+
31
+ ### Tokens
32
+
33
+ <!-- What is component-specific. Anything reusable MUST be promoted to design-system.md instead —
34
+ a token defined twice is a token that will diverge. -->
35
+
36
+ ### Screens
37
+
38
+ <!-- One row per screen. Each MUST be registered as an LC of type ui-screen in components.yaml —
39
+ wdi-ux does this in the same act as landing the screen, and `lc-registered` checks it at spec close. -->
40
+
41
+ | Screen | LC | Purpose |
42
+ | --- | --- | --- |
43
+
44
+ ### Layout and states
45
+
46
+ <!-- Per screen: the states it can be in — empty, loading, error, populated. The empty and error
47
+ states are the ones that get skipped and the ones users hit first. -->
48
+
49
+ ---
50
+
51
+ ## EXPERIENCE — behaviour
52
+
53
+ <!-- Keep only when document: experience. This half is WHAT, not HOW: it says what the user can do
54
+ and what the system answers, in human language, with no visual detail. -->
55
+
56
+ ### Information architecture
57
+
58
+ <!-- Top-level surfaces and how someone moves between them. -->
59
+
60
+ ### Journeys
61
+
62
+ <!-- Reference UJ-N from the PRD rather than restating them; add only what the PRD left implicit —
63
+ screen order, entry state, what tells the user the value landed. -->
64
+
65
+ ### Behaviour per surface
66
+
67
+ | Surface | User can | System answers |
68
+ | --- | --- | --- |
69
+
70
+ ### Accessibility
71
+
72
+ <!-- What MUST hold: contrast, focus order, target size, screen-reader labelling, motion. State the
73
+ standard being met, not the intention to meet one. -->
74
+
75
+ ### Edge cases
76
+
77
+ <!-- Real failure moments and what the user does next. One per row; the ones worth writing are the
78
+ ones a designer would rather not think about. -->
@@ -1,115 +1,161 @@
1
- ---
2
- status: Accepted
3
- ---
4
-
5
- # UX Guide
6
-
7
- **Loaded when:** running `bmad-ux`, or placing its output
8
-
9
- `bmad-ux` produces two documents that belong to **two different layers**. That split is the whole
10
- reason this guide exists: everything else follows from getting it right.
11
-
12
- ## Two outputs, two layers
13
-
14
- | Output | Home | Layer | Answers |
15
- |---|---|---|---|
16
- | `EXPERIENCE.md` | `.what/<pc>/04-usecases/` | Promise | What the user experiences, and what they can get done |
17
- | `DESIGN.md` | `.how/<pc>/01-ux/` | Build | Screens, states, components, and how they are put together |
18
-
19
- The test is the usual one. If a sentence would still be true after a full redesign, it is experience
20
- and belongs in `.what/`. If it names a layout, a component, or a token, it is design.
21
-
22
- Getting this backwards is expensive in a specific way: a `DESIGN.md` filed under `.what/` makes the
23
- promise layer freeze around one visual solution, and every later redesign then reads as a broken
24
- promise.
25
-
26
- ## The landing zone
27
-
28
- `bmad-ux` is a **class B** skill: it writes to a neutral landing zone at `_bmad-output/ux/`, and
29
- `wdi-ux` — which is what dispatched it — lands the output from there.
30
-
31
- - Output MUST land in `_bmad-output/ux/` first. A UX run MUST NOT write directly into `.what/` or
32
- `.how/`.
33
- - Landing MUST go through `wdi-ux`, which owns `.what/<pc>/04-usecases/` and `.how/<pc>/01-ux/`. No
34
- other skill MAY land these files.
35
- - Nothing is placed until the run is finalised. Half-placed UX output is worse than unplaced output,
36
- because it looks distributed.
37
- - **A run MUST NOT wait for a `<pc>`, and MUST NOT be blocked on one.** The order is PRD → UX → **G2**
38
- → components, and it is forced: G2 reads `EXPERIENCE.md` (below), while `wdi-init` intent `component`
39
- requires G2 passed. Making a run wait for components closes that into a cycle nothing can open.
40
- - **`design-system.md` lands at G2**, immediately. It crosses components by definition and its path has
41
- no `<pc>` in it.
42
- - **`EXPERIENCE.md` and `DESIGN.md` wait, and only because their paths contain `<pc>`.** That is the one
43
- remaining deferral in the flow, and it is not the owner's to remember: `wdi-init` intent `component`
44
- lands them in the same act as birthing the components.
45
- - **A container is not required to land UX.** `.how/<pc>/01-ux/` has no container in its path; only a
46
- screen's `LC` row needs one, and that row is registered with `container:` empty and filled at G3 by
47
- `wdi-blueprint` intent `platform`, in the same act that registers the containers. `container-built` stays silent on
48
- an empty container until the `LC`'s Product Component lists one — the answer is demanded when it
49
- exists, not when it is thinnest.
50
-
51
- `doc_standards` on `bmad-ux` runs `bmad-review` over both documents **at finalize** — that is, before
52
- `wdi-ux` lands them. Reviewing afterwards would mean reviewing two files that no longer sit together.
53
-
54
- ## Registry consequences
55
-
56
- Placement is not finished when the files have moved.
57
-
58
- - **Every screen in `DESIGN.md` MUST be registered as an `LC` of type `ui-screen`** in
59
- `.control/registry/components.yaml`, with its `container`. A screen that exists in the design and not
60
- in the registry is a change nothing will trace, and `lc-registered` catches it **at spec close**.
61
- - A composite that is reused across screens is an `LC` of type `ui-composite`, not a screen.
62
- - Tokens and base components — colour, type scale, spacing, buttons, inputs — MUST go to
63
- `.how/_platform/design-system.md`, not into any one component's `01-ux/`. They cross Product
64
- Components by definition.
65
-
66
- Registry conversion is part of placement, not a follow-up.
67
-
68
- ## Vocabulary
69
-
70
- Every user-facing noun in either document MUST use `.control/product-glossary.md` verbatim **where an
71
- entry exists**. A new domain noun introduced by a UX run MUST be routed to `wdi-question` and listed in
72
- the run's report.
73
-
74
- **It MUST NOT be added to the glossary in the same pass, because it cannot be.** The glossary belongs to
75
- `wdi-blueprint` intent `catalog`, which needs Product Components, which need G2 passed — and this run is
76
- what G2 reads. The rule used to say "added in the same pass" and was unsatisfiable at the only moment it
77
- applied; a UX run failing that check was reporting the method, not the product. `wdi-blueprint` writes
78
- the entries at G3 and closes those questions there.
79
-
80
- This is where vocabulary drift usually enters the corpus: UX writes the words the user actually sees,
81
- and those words are the ones that stick. When the SRS says `Anggota` and the screen says `Pengguna`,
82
- the screen wins in practice and the corpus starts lying.
83
-
84
- ## What UX does not decide
85
-
86
- - **Requirements.** A UX run that discovers a needed capability has found an `FR`, and it MUST go to
87
- the PRD through `wdi-product` intent `update` before it is designed.
88
- - **Behaviour.** How the system responds belongs to `SRS-<pc>.md`. `EXPERIENCE.md` says what the user
89
- perceives, not what the system does internally.
90
- - **Architecture.** A UX need that forces a technology choice MUST become a `DEC-`, not a note in
91
- `DESIGN.md`.
92
-
93
- ## Passing G2
94
-
95
- `DESIGN.md` is an **attachment** at G2, not the document being read. What the Product Owner actually
96
- reads is `prd.md` and `EXPERIENCE.md` — and G2 gets 45 minutes, twice any other gate, precisely
97
- because it decides two things: what is built, and how it feels to use.
98
-
99
- The gate question that catches a weak `EXPERIENCE.md` is checklist item 4: *can I retell the main UX
100
- flow in five sentences without opening the document?* An experience that cannot be retold has not
101
- been decided, only drawn.
102
-
103
- Every `[ASSUMPTION]` left in either document at finalize MUST be registered through `wdi-question`
104
- before the gate opens.
105
-
106
- ## Rules
107
-
108
- - You MUST NOT edit content while placing it. If the content needs changing to fit its new home, that
109
- is a UX revision, and it goes back through `bmad-ux`.
110
- - `EXPERIENCE.md` MUST reference use cases by ID where the chain matters. A journey that maps to no
111
- `UC` is either a missing use case or a promise nobody made.
112
- - Durable UX decisions — why a pattern was chosen, what was rejected — belong in a `DEC-` or in the
113
- run's addendum, not as prose inside `DESIGN.md`.
114
- - The UX run folder in `_bmad-output/ux/` MUST NOT be deleted after placement. Intent *update* reads
115
- it again.
1
+ ---
2
+ status: Accepted
3
+ ---
4
+
5
+ # UX Guide
6
+
7
+ **Loaded when:** running `bmad-ux`, or placing its output
8
+
9
+ `bmad-ux` produces two documents that belong to **two different layers**. That split is the whole
10
+ reason this guide exists: everything else follows from getting it right.
11
+
12
+ ## Four homes: two layers, at two levels
13
+
14
+ | | Promise — `.what/` | Build — `.how/` |
15
+ |---|---|---|
16
+ | **Product** — holds for every component | `.what/experience.md` | `.how/_platform/design-system.md` |
17
+ | **One Product Component** | `.what/<pc>/04-usecases/EXPERIENCE.md` | `.how/<pc>/01-ux/DESIGN.md` |
18
+
19
+ The test is the usual one. If a sentence would still be true after a full redesign, it is experience
20
+ and belongs in `.what/`. If it names a layout, a component, or a token, it is design. The level is
21
+ the second question: does it hold for every component, or for one?
22
+
23
+ ## Product level — what crosses components
24
+
25
+ A UX run does not come out split by component. `bmad-ux`'s own `EXPERIENCE.md` opens with sections
26
+ that hold for the whole product, and until the product-level experience file existed they had no
27
+ home: the landing table had nowhere to send them, so they stayed in `_bmad-output/`, which is not
28
+ corpus. One repo parked them in `design-system.md` instead — a promise filed in the build layer, where
29
+ the next redesign would read it as broken.
30
+
31
+ Each section lands by the redesign test, sentence by sentence where a section holds both kinds:
32
+
33
+ | `bmad-ux` section | Default home | What moves to the other layer |
34
+ |---|---|---|
35
+ | Foundation — who it is for, the principles | `.what/experience.md` | — |
36
+ | Information architecture — the product's surfaces and how one moves between them | `.what/experience.md` | One component's inner surfaces go to that component's `EXPERIENCE.md` |
37
+ | Voice and Tone | `.what/experience.md` | — |
38
+ | State patterns — empty, loading, error, offline, everywhere | `.how/_platform/design-system.md` | The promise a state keeps (*an empty list always names the next step*) goes to `.what/experience.md` |
39
+ | Interaction primitives | `.how/_platform/design-system.md` | — |
40
+ | Accessibility floor | the standard met → `.what/experience.md` | how it is met — contrast pairs, target sizes → `design-system.md` |
41
+ | Surfaces that are not screens — notifications, widgets, share sheets | what the user is told, and when → `.what/experience.md` | how it looks → `design-system.md` |
42
+ | Key flows — the flow map | the whole map → `.what/experience.md` | each component's zoom-in → that component's `DESIGN.md`, by the rule below |
43
+ | Edge cases shared by several components | `.what/experience.md` | One component's own → its `EXPERIENCE.md` |
44
+
45
+ **Splitting a flow across components.** The whole map lives at product level. A zoom-in lands in the
46
+ component that **owns the screens in it** — never in the component that owns a shared composite shown
47
+ inside it. A composite is drawn wherever it is used; drawing it does not move the flow. A zoom-in whose
48
+ screens belong to two components is not split to fit: it stays part of the whole map in
49
+ `.what/experience.md`. One repo nearly filed a zoom-in under the wrong component because the only
50
+ registered `LC` inside it was a shared composite.
51
+
52
+ **A shared composite has one home.** A `ui-composite` used by several components is registered once,
53
+ under the component that holds its implementation. Where nearly every component uses it, it is a base
54
+ element — its `LC` type becomes `ui-element` — and belongs in `design-system.md` instead.
55
+
56
+ Getting this backwards is expensive in a specific way: a `DESIGN.md` filed under `.what/` makes the
57
+ promise layer freeze around one visual solution, and every later redesign then reads as a broken
58
+ promise.
59
+
60
+ ## The landing zone
61
+
62
+ `bmad-ux` is a **class B** skill: it writes to a neutral landing zone at `_bmad-output/ux/`, and
63
+ `wdi-ux` — which is what dispatched it — lands the output from there.
64
+
65
+ - Output MUST land in `_bmad-output/ux/` first. A UX run MUST NOT write directly into `.what/` or
66
+ `.how/`.
67
+ - Landing MUST go through `wdi-ux`, which owns `.what/<pc>/04-usecases/` and `.how/<pc>/01-ux/`. No
68
+ other skill MAY land these files.
69
+ - Nothing is placed until the run is finalised. Half-placed UX output is worse than unplaced output,
70
+ because it looks distributed.
71
+ - **A run MUST NOT wait for a `<pc>`, and MUST NOT be blocked on one.** The order is PRD → UX → **G2**
72
+ → components, and it is forced: G2 reads `EXPERIENCE.md` (below), while `wdi-init` intent `component`
73
+ requires G2 passed. Making a run wait for components closes that into a cycle nothing can open.
74
+ - **`design-system.md` and `.what/experience.md` land at G2**, immediately. Both cross components by
75
+ definition and neither path has a `<pc>` in it — which is also why G2 can read the product-level
76
+ experience from the corpus rather than from the run.
77
+ - **`EXPERIENCE.md` and `DESIGN.md` wait, and only because their paths contain `<pc>`.** That is the one
78
+ remaining deferral in the flow, and it is not the owner's to remember: `wdi-init` intent `component`
79
+ lands them in the same act as birthing the components.
80
+ - **A container is not required to land UX.** `.how/<pc>/01-ux/` has no container in its path; only a
81
+ screen's `LC` row needs one, and that row is registered with `container:` empty and filled at G3 by
82
+ `wdi-blueprint` intent `platform`, in the same act that registers the containers. `container-built` stays silent on
83
+ an empty container until the `LC`'s Product Component lists one — the answer is demanded when it
84
+ exists, not when it is thinnest.
85
+
86
+ `doc_standards` on `bmad-ux` runs `bmad-review` over both documents **at finalize** — that is, before
87
+ `wdi-ux` lands them. Reviewing afterwards would mean reviewing two files that no longer sit together.
88
+
89
+ ## Registry consequences
90
+
91
+ Placement is not finished when the files have moved.
92
+
93
+ - **Every screen in `DESIGN.md` MUST be registered as an `LC` of type `ui-screen`** in
94
+ `.control/registry/components.yaml`, with its `container`. A screen that exists in the design and not
95
+ in the registry is a change nothing will trace, and `lc-registered` catches it **at spec close**.
96
+ - A composite that is reused across screens is an `LC` of type `ui-composite`, not a screen.
97
+ - Tokens and base components — colour, type scale, spacing, buttons, inputs — MUST go to
98
+ `.how/_platform/design-system.md`, not into any one component's `01-ux/`. They cross Product
99
+ Components by definition.
100
+
101
+ Registry conversion is part of placement, not a follow-up.
102
+
103
+ ## Vocabulary
104
+
105
+ Every user-facing noun in either document MUST use `.control/product-glossary.md` verbatim **where an
106
+ entry exists**. A new domain noun introduced by a UX run MUST be routed to `wdi-question` and listed in
107
+ the run's report.
108
+
109
+ **It MUST NOT be added to the glossary in the same pass, because it cannot be.** The glossary belongs to
110
+ `wdi-blueprint` intent `catalog`, which needs Product Components, which need G2 passed — and this run is
111
+ what G2 reads. The rule used to say "added in the same pass" and was unsatisfiable at the only moment it
112
+ applied; a UX run failing that check was reporting the method, not the product. `wdi-blueprint` writes
113
+ the entries at G3 and closes those questions there.
114
+
115
+ This is where vocabulary drift usually enters the corpus: UX writes the words the user actually sees,
116
+ and those words are the ones that stick. When the SRS says `Anggota` and the screen says `Pengguna`,
117
+ the screen wins in practice and the corpus starts lying.
118
+
119
+ ## What UX does not decide
120
+
121
+ - **Requirements.** A UX run that discovers a needed capability has found an `FR`, and it MUST go to
122
+ the PRD through `wdi-product` intent `update` before it is designed.
123
+ - **Behaviour.** How the system responds belongs to `SRS-<pc>.md`. `EXPERIENCE.md` says what the user
124
+ perceives, not what the system does internally.
125
+ - **Architecture.** A UX need that forces a technology choice MUST become a `DEC-`, not a note in
126
+ `DESIGN.md`.
127
+
128
+ ## Passing G2
129
+
130
+ `DESIGN.md` is an **attachment** at G2, not the document being read. What the Product Owner actually
131
+ reads is `prd.md` and `EXPERIENCE.md` — the run's, for what still waits on components, beside
132
+ `.what/experience.md`, already landed, for what crosses them — and G2 gets 45 minutes, twice any other gate, precisely
133
+ because it decides two things: what is built, and how it feels to use.
134
+
135
+ The gate question that catches a weak `EXPERIENCE.md` is checklist item 4: *can I retell the main UX
136
+ flow in five sentences without opening the document?* An experience that cannot be retold has not
137
+ been decided, only drawn.
138
+
139
+ Every `[ASSUMPTION]` left in either document at finalize MUST be registered through `wdi-question`
140
+ before the gate opens.
141
+
142
+ ## Rules
143
+
144
+ - You MUST NOT edit content while placing it. If the content needs changing to fit its new home, that
145
+ is a UX revision, and it goes back through `bmad-ux`.
146
+ - `EXPERIENCE.md` MUST reference use cases by ID where the chain matters. A journey that maps to no
147
+ `UC` is either a missing use case or a promise nobody made.
148
+ - Durable UX decisions — why a pattern was chosen, what was rejected — belong in a `DEC-` or in the
149
+ run's addendum, not as prose inside `DESIGN.md`.
150
+ - The UX run folder in `_bmad-output/ux/` MUST NOT be deleted while intent *update* may still read it;
151
+ after that it follows the retirement condition in `corpus-guide.md`. Nothing in the corpus depends on
152
+ it staying: what landed is complete on its own.
153
+ - Once components exist, a file in `.what/` or `.how/` MUST NOT cite the run's `DESIGN.md`,
154
+ `EXPERIENCE.md`, or `design-system.md`. The run has been distilled; the corpus cites what landed.
155
+ - Every landed UX document — `experience.md`, `design-system.md`, each `EXPERIENCE.md` and `DESIGN.md` —
156
+ MUST name the run file(s) it came from in its frontmatter `landed_from`. That is provenance, not a
157
+ citation: it is exempt from the rule above, and it stays true after the run is deleted. The detail —
158
+ which sections went where — goes to `.control/memlog/ux.md`. A `DEC-` MAY still cite the run.
159
+ - `ux-landed` checks both, **per run**: once components exist, every active run document MUST be named
160
+ in some landed document's `landed_from`, and nothing in `.what/` or `.how/` outside `landed_from` MAY
161
+ cite the run.
@@ -71,6 +71,9 @@ there is only Product Component.
71
71
  | **C4** | L1 system context · L2 containers · L3 components, one file per container. L1+L2 together are what other methods call the HLD |
72
72
  | **`DESIGN.md`** | UX per PC, in `.how/<pc>/01-ux/` |
73
73
  | **`EXPERIENCE.md`** | The user-facing journey, in `.what/<pc>/04-usecases/` |
74
+ | **`repo:`** | On a container, the repository its code lives in when that is NOT this one. Absent means here. It moves the container's code-map heading to that repository |
75
+ | **`upgrade_pending`** | In `.control/wdi-method.yaml`: what `wdi-upgrade` still owes, as `update` probed it. Absent means nothing |
76
+ | **`experience.md`** | The experience every component keeps, in `.what/`. Its build-side twin is `design-system.md` |
74
77
  | **`DEC-`** | One decision worth remembering, numbered globally. Lives in `.control/decisions/`. Recording is **not mandatory**; it freezes at `applied`, not at `accepted` |
75
78
  | **SPEC** | The document of **one spec**: a projection of `.what/` + `.how/` that MUST NOT contain anything new. Not read by humans, and **not written at size `S`** — there the tickets are the contract |
76
79
  | **Ticket** | One unit of build: a tracer-bullet vertical slice, complete through every layer, verifiable on its own, sized to one fresh context window. Carries the tickets that **block** it. Status is read from the ticket itself, never copied elsewhere |