wdi-method 0.4.5 → 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 +58 -16
- package/bin/wdi-method.js +152 -60
- 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 +5 -5
- 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/model.md +2 -2
- package/kit/.constitution/{document → method/document}/templates/questions.md +10 -9
- package/kit/.constitution/{document → method/document}/templates/sdd.md +1 -1
- package/kit/.constitution/{document → method/document}/templates/srs.md +2 -2
- 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}/inventory.py +102 -100
- package/kit/.constitution/{scripts → method/scripts}/timeline.py +665 -665
- package/kit/.constitution/{scripts → method/scripts}/validate.py +1599 -1579
- 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 +9 -9
- package/kit/assets/bmad-custom/bmad-architecture.toml +33 -31
- package/kit/assets/bmad-custom/bmad-build-auto.toml +5 -5
- package/kit/assets/bmad-custom/bmad-build.toml +52 -52
- package/kit/assets/bmad-custom/bmad-code-review.toml +13 -12
- package/kit/assets/bmad-custom/bmad-correct-course.toml +20 -19
- package/kit/assets/bmad-custom/bmad-deep-recon.toml +12 -11
- package/kit/assets/bmad-custom/bmad-prd.toml +42 -42
- package/kit/assets/bmad-custom/bmad-product-brief.toml +18 -18
- package/kit/assets/bmad-custom/bmad-retrospective.toml +4 -4
- package/kit/assets/bmad-custom/bmad-spec.toml +16 -15
- package/kit/assets/bmad-custom/bmad-ux.toml +19 -19
- package/kit/assets/bmad-custom/config.toml +3 -3
- 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/scaffold/.control/product-glossary.md +21 -21
- package/scaffold/.control/project-non-technical-log.md +23 -23
- package/scaffold/.control/questions/answered.md +11 -11
- package/scaffold/.control/questions/assumptions.md +15 -15
- package/scaffold/.control/questions/blocking.md +21 -21
- package/scaffold/.control/questions/external.md +11 -11
- package/scaffold/.control/registry/components.yaml +21 -21
- package/scaffold/.control/registry/defects.yaml +3 -3
- package/scaffold/.control/registry/index.yaml +46 -46
- package/scaffold/.control/registry/requirements.yaml +15 -15
- package/scaffold/.control/registry/risks.yaml +5 -5
- package/scaffold/.control/registry/usecases.yaml +6 -6
- 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/oq.md +0 -0
- /package/kit/.constitution/{document → method/document}/templates/prd.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/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/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
|
@@ -88,7 +88,7 @@ Flows **into and out of** each boundary MUST be stated, not just the boundary. A
|
|
|
88
88
|
direction of call is a name, not a design.
|
|
89
89
|
|
|
90
90
|
Flow diagrams in `06-flows/` are written only for a flow touching money, irreversible state, or a third
|
|
91
|
-
party. The lane order is the project's to fix, once, in
|
|
91
|
+
party. The lane order is the project's to fix, once, in `../../project/codebase-conventions-guide.md`. **The `No-op` lane
|
|
92
92
|
rule is repealed** — it was a heavy convention for a folder that had never carried a file, and it belongs to
|
|
93
93
|
how a diagram is drawn rather than to what binds.
|
|
94
94
|
|
|
@@ -53,17 +53,17 @@ updated: '{YYYY-MM-DD}'
|
|
|
53
53
|
one component depends on it. corpus-guide.md owns that test, and it refuses the one use people
|
|
54
54
|
reach for: "the owner is hard to decide".
|
|
55
55
|
|
|
56
|
-
`
|
|
56
|
+
`Kind` is data · endpoint · job · screen, and the list is open. What is not open is the test.
|
|
57
57
|
|
|
58
58
|
`_platform` has no `FR`, so there is no owner-FR for another component to point at. What replaces
|
|
59
59
|
"one writer" is ONE DOCUMENTED SHAPE — stated here, once. A component that wants it different is
|
|
60
60
|
proposing a change to this file, not making a local choice. -->
|
|
61
61
|
|
|
62
|
-
|
|
|
62
|
+
| What | Kind | Why no component explains it | Who touches it | The shape every toucher obeys |
|
|
63
63
|
| --- | --- | --- | --- | --- |
|
|
64
64
|
|
|
65
|
-
<!-- `
|
|
66
|
-
|
|
65
|
+
<!-- `Who touches it` names components, and naming more than one is a NORMAL state — that is half the
|
|
66
|
+
reason the row is here. A single toucher is a signal it belongs to that component instead. -->
|
|
67
67
|
|
|
68
68
|
## Other product-level agreements
|
|
69
69
|
|
|
@@ -72,7 +72,7 @@ updated: '{YYYY-MM-DD}'
|
|
|
72
72
|
idempotency key convention · logging fields · rate-limit response shape.
|
|
73
73
|
|
|
74
74
|
Each MUST state where it is enforced. An agreement nothing enforces is a preference, and
|
|
75
|
-
preferences belong in codebase
|
|
75
|
+
preferences belong in ../../../project/codebase-conventions-guide.md where nothing has to justify itself. -->
|
|
76
76
|
|
|
77
77
|
### {agreement}
|
|
78
78
|
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: design-system
|
|
3
|
-
scope: _platform
|
|
4
|
-
status: draft # draft · reviewed · locked · superseded
|
|
5
|
-
created: '{YYYY-MM-DD}'
|
|
6
|
-
updated: '{YYYY-MM-DD}'
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Design System — {product}
|
|
10
|
-
|
|
11
|
-
<!-- TEMPLATE GUIDE — act on these comments, then delete them.
|
|
12
|
-
|
|
13
|
-
Home: .how/_platform/design-system.md. Written by wdi-ux, and it is the ONE file in _platform/
|
|
14
|
-
that wdi-blueprint does not own. Optional, like the rest of UX: it exists when the interface is
|
|
15
|
-
a substantial part of what the PRD promises.
|
|
16
|
-
|
|
17
|
-
WHY IT IS NOT IN A COMPONENT: tokens and base elements cross Product Components by definition. A
|
|
18
|
-
colour scale living in one component's 01-ux/ is a colour scale the other six will each redefine.
|
|
19
|
-
|
|
20
|
-
WHY ux.md DOES NOT SERVE IT: ux.md is the shape of DESIGN.md and EXPERIENCE.md, which are per
|
|
21
|
-
component. This is the third file, at product level, and it had no template at all.
|
|
22
|
-
|
|
23
|
-
THE CODE IS THE SSOT FOR VALUES. Where this repo's web side states a token in tokens.css, this
|
|
24
|
-
file MUST reference it rather than repeat the value. Two homes for one hex code is two hex codes
|
|
25
|
-
within a month. Read web/README.md before writing anything here — it is the authority for the
|
|
26
|
-
web side, and it MUST NOT be contradicted from this file.
|
|
27
|
-
|
|
28
|
-
Token and element NAMES are English: they are machine-facing keys, per language-guide.md. -->
|
|
29
|
-
|
|
30
|
-
## Where the values actually live
|
|
31
|
-
|
|
32
|
-
<!-- One line per source of truth — the stylesheet, the config, the generated file — with its path.
|
|
33
|
-
This section is what stops the rest of the document becoming a stale copy. -->
|
|
34
|
-
|
|
35
|
-
## Tokens
|
|
36
|
-
|
|
37
|
-
<!-- One table per scale. Name, what it is for, and where it resolves. NOT the raw value, unless this
|
|
38
|
-
file is genuinely the only place it exists. -->
|
|
39
|
-
|
|
40
|
-
| Token | For | Resolves in |
|
|
41
|
-
| --- | --- | --- |
|
|
42
|
-
|
|
43
|
-
## Base elements
|
|
44
|
-
|
|
45
|
-
<!-- The LC type `ui-element`, registered in components.yaml. One row each: what it is, its states,
|
|
46
|
-
and where its implementation lives. A composite reused across screens is `ui-composite` and
|
|
47
|
-
belongs in .how/<pc>/01-ux/, not here. -->
|
|
48
|
-
|
|
49
|
-
| Element | States it MUST support | Implementation |
|
|
50
|
-
| --- | --- | --- |
|
|
51
|
-
|
|
52
|
-
<!-- Every element MUST state its empty, loading, error, and disabled states where they apply. The
|
|
53
|
-
populated state is the one that always gets designed; the others are the ones that ship broken. -->
|
|
54
|
-
|
|
55
|
-
## Rules that bind every screen
|
|
56
|
-
|
|
57
|
-
<!-- Only what a screen cannot legitimately override. Each MUST state what it prevents — a rule with
|
|
58
|
-
no failure behind it is a preference, and preferences go to codebase
|
|
59
|
-
|
|
60
|
-
A rule here that also holds for non-UI code is an AD-N and belongs in the spine instead. -->
|
|
61
|
-
|
|
62
|
-
| Rule | Prevents |
|
|
63
|
-
| --- | --- |
|
|
64
|
-
|
|
65
|
-
## What this system deliberately does not cover
|
|
66
|
-
|
|
67
|
-
<!-- Where a component is free to choose for itself. Absent, every local choice reads as a violation. -->
|
|
1
|
+
---
|
|
2
|
+
type: design-system
|
|
3
|
+
scope: _platform
|
|
4
|
+
status: draft # draft · reviewed · locked · superseded
|
|
5
|
+
created: '{YYYY-MM-DD}'
|
|
6
|
+
updated: '{YYYY-MM-DD}'
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Design System — {product}
|
|
10
|
+
|
|
11
|
+
<!-- TEMPLATE GUIDE — act on these comments, then delete them.
|
|
12
|
+
|
|
13
|
+
Home: .how/_platform/design-system.md. Written by wdi-ux, and it is the ONE file in _platform/
|
|
14
|
+
that wdi-blueprint does not own. Optional, like the rest of UX: it exists when the interface is
|
|
15
|
+
a substantial part of what the PRD promises.
|
|
16
|
+
|
|
17
|
+
WHY IT IS NOT IN A COMPONENT: tokens and base elements cross Product Components by definition. A
|
|
18
|
+
colour scale living in one component's 01-ux/ is a colour scale the other six will each redefine.
|
|
19
|
+
|
|
20
|
+
WHY ux.md DOES NOT SERVE IT: ux.md is the shape of DESIGN.md and EXPERIENCE.md, which are per
|
|
21
|
+
component. This is the third file, at product level, and it had no template at all.
|
|
22
|
+
|
|
23
|
+
THE CODE IS THE SSOT FOR VALUES. Where this repo's web side states a token in tokens.css, this
|
|
24
|
+
file MUST reference it rather than repeat the value. Two homes for one hex code is two hex codes
|
|
25
|
+
within a month. Read web/README.md before writing anything here — it is the authority for the
|
|
26
|
+
web side, and it MUST NOT be contradicted from this file.
|
|
27
|
+
|
|
28
|
+
Token and element NAMES are English: they are machine-facing keys, per language-guide.md. -->
|
|
29
|
+
|
|
30
|
+
## Where the values actually live
|
|
31
|
+
|
|
32
|
+
<!-- One line per source of truth — the stylesheet, the config, the generated file — with its path.
|
|
33
|
+
This section is what stops the rest of the document becoming a stale copy. -->
|
|
34
|
+
|
|
35
|
+
## Tokens
|
|
36
|
+
|
|
37
|
+
<!-- One table per scale. Name, what it is for, and where it resolves. NOT the raw value, unless this
|
|
38
|
+
file is genuinely the only place it exists. -->
|
|
39
|
+
|
|
40
|
+
| Token | For | Resolves in |
|
|
41
|
+
| --- | --- | --- |
|
|
42
|
+
|
|
43
|
+
## Base elements
|
|
44
|
+
|
|
45
|
+
<!-- The LC type `ui-element`, registered in components.yaml. One row each: what it is, its states,
|
|
46
|
+
and where its implementation lives. A composite reused across screens is `ui-composite` and
|
|
47
|
+
belongs in .how/<pc>/01-ux/, not here. -->
|
|
48
|
+
|
|
49
|
+
| Element | States it MUST support | Implementation |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
|
|
52
|
+
<!-- Every element MUST state its empty, loading, error, and disabled states where they apply. The
|
|
53
|
+
populated state is the one that always gets designed; the others are the ones that ship broken. -->
|
|
54
|
+
|
|
55
|
+
## Rules that bind every screen
|
|
56
|
+
|
|
57
|
+
<!-- Only what a screen cannot legitimately override. Each MUST state what it prevents — a rule with
|
|
58
|
+
no failure behind it is a preference, and preferences go to ../../../project/codebase-conventions-guide.md.
|
|
59
|
+
|
|
60
|
+
A rule here that also holds for non-UI code is an AD-N and belongs in the spine instead. -->
|
|
61
|
+
|
|
62
|
+
| Rule | Prevents |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
|
|
65
|
+
## What this system deliberately does not cover
|
|
66
|
+
|
|
67
|
+
<!-- Where a component is free to choose for itself. Absent, every local choice reads as a violation. -->
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: inventory
|
|
3
|
-
kind: db # db · api · screen · endpoint — decides the row shape below
|
|
4
|
-
scope: _platform # `_platform` for the three product-level inventories; `{pc}` for kind: endpoint
|
|
5
|
-
status: draft # draft · reviewed · locked · superseded
|
|
6
|
-
created: '{YYYY-MM-DD}'
|
|
7
|
-
updated: '{YYYY-MM-DD}'
|
|
8
|
-
derived_from: plan # plan · code — see the TEMPLATE GUIDE
|
|
9
|
-
verified: '' # commit SHA the derivation was read at; required when derived_from: code
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Inventory — {tables | endpoints | screens | endpoints of {pc}}
|
|
13
|
-
|
|
14
|
-
<!-- TEMPLATE GUIDE — act on these comments, then delete them.
|
|
15
|
-
|
|
16
|
-
ONE template, four kinds. Only the row shape differs; the rules are the same for all four.
|
|
17
|
-
|
|
18
|
-
kind: db -> .how/_platform/inventory-db.md
|
|
19
|
-
kind: api -> .how/_platform/inventory-api.md
|
|
20
|
-
kind: screen -> .how/_platform/inventory-screen.md
|
|
21
|
-
kind: endpoint-> .how/<pc>/02-contracts/00-inventory.md, at mode: deep only
|
|
22
|
-
|
|
23
|
-
The first three are BLUEPRINT output, born at G3 by wdi-blueprint intent `platform`. They exist
|
|
24
|
-
at every `mode`, including catalog, and they are what makes catalog usable at all: the use case
|
|
25
|
-
list plus these three plus C4 is the whole record a builder gets there.
|
|
26
|
-
|
|
27
|
-
THE NUMBER IS STABLE. A new row takes the next `No`, never a renumber. Renumbering renames every
|
|
28
|
-
file after it and breaks every link pointing at them. A removed row keeps its number and its
|
|
29
|
-
status becomes `removed`; the number MUST NOT be reused.
|
|
30
|
-
|
|
31
|
-
TWO WAYS THIS FILE COMES TO EXIST, and derived_from says which:
|
|
32
|
-
plan no code yet. Written as intent — the tables, endpoints, or screens planned. Nothing can
|
|
33
|
-
be derived, because there is no source.
|
|
34
|
-
code code exists. Derived by .constitution/scripts/inventory.py — migrations for tables,
|
|
35
|
-
route registration for endpoints, pages for screens — and THEN compared with the plan.
|
|
36
|
-
The difference is a FINDING, reported. It MUST NOT be patched into agreement by hand.
|
|
37
|
-
|
|
38
|
-
MUST NOT be assembled from a README, from a route name that looks plausible, or from memory. -->
|
|
39
|
-
|
|
40
|
-
## Rows
|
|
41
|
-
|
|
42
|
-
<!-- kind: db -->
|
|
43
|
-
|
|
44
|
-
| No | Table | Owning component | What it holds | Key columns | Status |
|
|
45
|
-
| --- | --- | --- | --- | --- | --- |
|
|
46
|
-
|
|
47
|
-
<!-- kind: api — keep this block and delete the others
|
|
48
|
-
| No | Method | Path | Owning component | Description | Status |
|
|
49
|
-
| --- | --- | --- | --- | --- | --- |
|
|
50
|
-
-->
|
|
51
|
-
|
|
52
|
-
<!-- kind: screen
|
|
53
|
-
| No | Screen | Route | Owning component | Actor | UC served |
|
|
54
|
-
| --- | --- | --- | --- | --- | --- |
|
|
55
|
-
-->
|
|
56
|
-
|
|
57
|
-
<!-- kind: endpoint
|
|
58
|
-
| No | Method | Path | Spec file | Status |
|
|
59
|
-
| --- | --- | --- | --- | --- |
|
|
60
|
-
-->
|
|
61
|
-
|
|
62
|
-
<!-- Status values: draft · published · deprecated · removed. A row with no status reads as
|
|
63
|
-
published, which is the one reading that is never safe. -->
|
|
64
|
-
|
|
65
|
-
## Findings
|
|
66
|
-
|
|
67
|
-
<!-- Only when derived_from: code. Each difference between the plan and what the code actually does,
|
|
68
|
-
one line each, with which side is being reported — not which side was changed. Nothing here is
|
|
69
|
-
resolved by editing the other side; a finding routes to the skill that owns it. -->
|
|
1
|
+
---
|
|
2
|
+
type: inventory
|
|
3
|
+
kind: db # db · api · screen · endpoint — decides the row shape below
|
|
4
|
+
scope: _platform # `_platform` for the three product-level inventories; `{pc}` for kind: endpoint
|
|
5
|
+
status: draft # draft · reviewed · locked · superseded
|
|
6
|
+
created: '{YYYY-MM-DD}'
|
|
7
|
+
updated: '{YYYY-MM-DD}'
|
|
8
|
+
derived_from: plan # plan · code — see the TEMPLATE GUIDE
|
|
9
|
+
verified: '' # commit SHA the derivation was read at; required when derived_from: code
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Inventory — {tables | endpoints | screens | endpoints of {pc}}
|
|
13
|
+
|
|
14
|
+
<!-- TEMPLATE GUIDE — act on these comments, then delete them.
|
|
15
|
+
|
|
16
|
+
ONE template, four kinds. Only the row shape differs; the rules are the same for all four.
|
|
17
|
+
|
|
18
|
+
kind: db -> .how/_platform/inventory-db.md
|
|
19
|
+
kind: api -> .how/_platform/inventory-api.md
|
|
20
|
+
kind: screen -> .how/_platform/inventory-screen.md
|
|
21
|
+
kind: endpoint-> .how/<pc>/02-contracts/00-inventory.md, at mode: deep only
|
|
22
|
+
|
|
23
|
+
The first three are BLUEPRINT output, born at G3 by wdi-blueprint intent `platform`. They exist
|
|
24
|
+
at every `mode`, including catalog, and they are what makes catalog usable at all: the use case
|
|
25
|
+
list plus these three plus C4 is the whole record a builder gets there.
|
|
26
|
+
|
|
27
|
+
THE NUMBER IS STABLE. A new row takes the next `No`, never a renumber. Renumbering renames every
|
|
28
|
+
file after it and breaks every link pointing at them. A removed row keeps its number and its
|
|
29
|
+
status becomes `removed`; the number MUST NOT be reused.
|
|
30
|
+
|
|
31
|
+
TWO WAYS THIS FILE COMES TO EXIST, and derived_from says which:
|
|
32
|
+
plan no code yet. Written as intent — the tables, endpoints, or screens planned. Nothing can
|
|
33
|
+
be derived, because there is no source.
|
|
34
|
+
code code exists. Derived by .constitution/method/scripts/inventory.py — migrations for tables,
|
|
35
|
+
route registration for endpoints, pages for screens — and THEN compared with the plan.
|
|
36
|
+
The difference is a FINDING, reported. It MUST NOT be patched into agreement by hand.
|
|
37
|
+
|
|
38
|
+
MUST NOT be assembled from a README, from a route name that looks plausible, or from memory. -->
|
|
39
|
+
|
|
40
|
+
## Rows
|
|
41
|
+
|
|
42
|
+
<!-- kind: db -->
|
|
43
|
+
|
|
44
|
+
| No | Table | Owning component | What it holds | Key columns | Status |
|
|
45
|
+
| --- | --- | --- | --- | --- | --- |
|
|
46
|
+
|
|
47
|
+
<!-- kind: api — keep this block and delete the others
|
|
48
|
+
| No | Method | Path | Owning component | Description | Status |
|
|
49
|
+
| --- | --- | --- | --- | --- | --- |
|
|
50
|
+
-->
|
|
51
|
+
|
|
52
|
+
<!-- kind: screen
|
|
53
|
+
| No | Screen | Route | Owning component | Actor | UC served |
|
|
54
|
+
| --- | --- | --- | --- | --- | --- |
|
|
55
|
+
-->
|
|
56
|
+
|
|
57
|
+
<!-- kind: endpoint
|
|
58
|
+
| No | Method | Path | Spec file | Status |
|
|
59
|
+
| --- | --- | --- | --- | --- |
|
|
60
|
+
-->
|
|
61
|
+
|
|
62
|
+
<!-- Status values: draft · published · deprecated · removed. A row with no status reads as
|
|
63
|
+
published, which is the one reading that is never safe. -->
|
|
64
|
+
|
|
65
|
+
## Findings
|
|
66
|
+
|
|
67
|
+
<!-- Only when derived_from: code. Each difference between the plan and what the code actually does,
|
|
68
|
+
one line each, with which side is being reported — not which side was changed. Nothing here is
|
|
69
|
+
resolved by editing the other side; a finding routes to the skill that owns it. -->
|
|
@@ -32,8 +32,8 @@ updated: '{YYYY-MM-DD}'
|
|
|
32
32
|
|
|
33
33
|
## Relationships
|
|
34
34
|
|
|
35
|
-
<!-- Direction and cardinality. State them as sentences a person would say: "
|
|
36
|
-
|
|
35
|
+
<!-- Direction and cardinality. State them as sentences a person would say: "one member has zero
|
|
36
|
+
or one sponsor". -->
|
|
37
37
|
|
|
38
38
|
## State Lifecycle
|
|
39
39
|
|
|
@@ -6,7 +6,7 @@ created: '{YYYY-MM-DD}'
|
|
|
6
6
|
updated: '{YYYY-MM-DD}'
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# {
|
|
9
|
+
# {Blocking Questions | Assumptions | Waiting on an Outside Party | Answered}
|
|
10
10
|
|
|
11
11
|
<!-- TEMPLATE GUIDE — act on these comments, then delete them.
|
|
12
12
|
|
|
@@ -30,8 +30,9 @@ updated: '{YYYY-MM-DD}'
|
|
|
30
30
|
A ROW MOVES BETWEEN FILES WHEN ITS CLASS CHANGES, and it MUST NOT be copied into a second one.
|
|
31
31
|
|
|
32
32
|
Ids stay OQ-, allocated from the highest ever used including closed ones. An id MUST NOT be
|
|
33
|
-
reused. The
|
|
34
|
-
|
|
33
|
+
reused. The prose inside the tables follows the product's `doc_language`; a machine-facing
|
|
34
|
+
marker such as `[NEEDS CONFIRMATION]` stays English wherever it appears — `language-guide.md`
|
|
35
|
+
owns that split. -->
|
|
35
36
|
|
|
36
37
|
## The class test
|
|
37
38
|
|
|
@@ -47,26 +48,26 @@ updated: '{YYYY-MM-DD}'
|
|
|
47
48
|
|
|
48
49
|
A question MUST NOT be filed as blocking "to be safe". That habit is what produced 146 ids. -->
|
|
49
50
|
|
|
50
|
-
##
|
|
51
|
+
## Open
|
|
51
52
|
|
|
52
53
|
<!-- list: blocking · external -->
|
|
53
54
|
|
|
54
|
-
| id |
|
|
55
|
+
| id | Question | Blocks | Owner | Before |
|
|
55
56
|
|---|---|---|---|---|
|
|
56
57
|
|
|
57
58
|
<!-- list: assumptions — keep this shape instead
|
|
58
|
-
| id |
|
|
59
|
-
|
|
59
|
+
| id | Assumption | Cost if wrong | Taken | By |
|
|
60
|
+
|---|---|---|---|---|---|
|
|
60
61
|
-->
|
|
61
62
|
|
|
62
63
|
<!-- An empty list is a legitimate state and MUST be written as one, with the date and one line
|
|
63
64
|
saying why. An empty table with no sentence reads as an unfinished file. -->
|
|
64
65
|
|
|
65
|
-
##
|
|
66
|
+
## Answered
|
|
66
67
|
|
|
67
68
|
<!-- list: answered only.
|
|
68
69
|
|
|
69
|
-
| id |
|
|
70
|
+
| id | Question | Answer | Date | By |
|
|
70
71
|
|
|
71
72
|
The answer is written beside the question, not in place of it. The record of what was once
|
|
72
73
|
uncertain is what stops the same question being asked again in three months.
|
|
@@ -137,7 +137,7 @@ reviewed: # V13. Diisi hanya setelah bmad-review benar-benar dija
|
|
|
137
137
|
alone does not say what a column means. LC type store
|
|
138
138
|
06-flows/ [deep]. Sequence diagrams ONLY for flows involving money, irreversible state, or
|
|
139
139
|
a third party. Lane order is fixed once for the project in
|
|
140
|
-
codebase
|
|
140
|
+
../../../project/codebase-conventions-guide.md; the No-op lane rule is REPEALED
|
|
141
141
|
|
|
142
142
|
supplements/ is REPEALED along with the ANX- concept it existed for. -->
|
|
143
143
|
|
|
@@ -66,7 +66,7 @@ reviewed: # V13. Diisi hanya setelah bmad-review benar-benar dija
|
|
|
66
66
|
|
|
67
67
|
| id | Use case | Actor | Satisfies | critical |
|
|
68
68
|
| --- | --- | --- | --- | --- |
|
|
69
|
-
| UC-{n} | {a sentence a user would say} | {from the Actor Register} | {FR-n} |
|
|
69
|
+
| UC-{n} | {a sentence a user would say} | {from the Actor Register} | {FR-n} | no |
|
|
70
70
|
|
|
71
71
|
## Constraints · [G3]
|
|
72
72
|
|
|
@@ -106,7 +106,7 @@ reviewed: # V13. Diisi hanya setelah bmad-review benar-benar dija
|
|
|
106
106
|
|
|
107
107
|
## Gate Checklist · [G3]
|
|
108
108
|
|
|
109
|
-
<!-- The gate questions as they apply to THIS component, answered
|
|
109
|
+
<!-- The gate questions as they apply to THIS component, answered yes / no / change. The full list
|
|
110
110
|
lives in delivery-flow-guide.md and MUST NOT be copied here. At mode: catalog only the starred
|
|
111
111
|
questions are asked. -->
|
|
112
112
|
|