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.
- package/CHANGELOG.md +129 -0
- package/NOTICE +7 -2
- package/README.md +16 -11
- package/bin/wdi-method.js +396 -87
- package/kit/.constitution/method/document/architecture-guide.md +217 -209
- package/kit/.constitution/method/document/bmad-skill-register.md +107 -104
- package/kit/.constitution/method/document/corpus-guide.md +522 -517
- package/kit/.constitution/method/document/decision-guide.md +236 -216
- package/kit/.constitution/method/document/delivery-flow-guide.md +20 -0
- package/kit/.constitution/method/document/prd-guide.md +245 -245
- package/kit/.constitution/method/document/templates/design-system.md +96 -66
- package/kit/.constitution/method/document/templates/experience.md +62 -0
- package/kit/.constitution/method/document/templates/structure-codebase.md +131 -129
- package/kit/.constitution/method/document/templates/ux.md +78 -76
- package/kit/.constitution/method/document/ux-guide.md +161 -115
- package/kit/.constitution/method/method-glossary.md +3 -0
- package/kit/.constitution/method/scripts/validate.py +3375 -3200
- package/kit/.constitution/method/structure-guide.md +204 -202
- package/kit/.constitution/method/why/README.md +1 -1
- package/kit/.constitution/method/why/artifact-map.md +158 -157
- package/kit/.constitution/method/why/portability.md +19 -2
- package/kit/skills/wdi-autopilot/SKILL.md +32 -19
- package/kit/skills/wdi-blueprint/SKILL.md +271 -264
- package/kit/skills/wdi-build/SKILL.md +28 -19
- package/kit/skills/wdi-component/SKILL.md +179 -174
- package/kit/skills/wdi-daily-autopilot/SKILL.md +24 -13
- package/kit/skills/wdi-daily-what-to-build/SKILL.md +9 -6
- package/kit/skills/wdi-daily-what-to-test/SKILL.md +2 -0
- package/kit/skills/wdi-decision/SKILL.md +206 -203
- package/kit/skills/wdi-explain-to-me/SKILL.md +2 -0
- package/kit/skills/wdi-help/SKILL.md +130 -125
- package/kit/skills/wdi-init/SKILL.md +10 -5
- package/kit/skills/wdi-problem/SKILL.md +114 -108
- package/kit/skills/wdi-product/SKILL.md +167 -162
- package/kit/skills/wdi-prune-or-archive/SKILL.md +2 -0
- package/kit/skills/wdi-reconcile/SKILL.md +170 -169
- package/kit/skills/wdi-upgrade/SKILL.md +234 -215
- package/kit/skills/wdi-ux/SKILL.md +187 -169
- package/kit-overlay/AGENTS.md +15 -2
- package/kit-overlay/portability.md +19 -2
- package/lib/platforms.mjs +420 -248
- package/package.json +1 -1
- 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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
##
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
16
|
-
|
|
|
17
|
-
|
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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 |
|