aw-spec-cli 0.1.14 → 0.1.16

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 (32) hide show
  1. package/assets/.appweaver/STACK-PROFILES.md +1 -1
  2. package/assets/.appweaver/orchestrator/modules/spec-state-gate.orch.yaml +87 -0
  3. package/assets/.appweaver/orchestrator/orchestrator.py +5 -0
  4. package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +10 -3
  5. package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +38 -11
  6. package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +2 -1
  7. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +672 -124
  8. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +700 -72
  9. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-ui.orch.yaml +531 -135
  10. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +573 -145
  11. package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +78 -14
  12. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan-ui.orch.yaml +600 -0
  13. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +721 -0
  14. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +3 -3
  15. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +119 -32
  16. package/assets/.appweaver/orchestrator/workflows/aw-spec-story-plan.orch.yaml +1147 -0
  17. package/assets/.appweaver/orchestrator/workflows/aw-spec-sync-stories.orch.yaml +1121 -0
  18. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +2564 -38
  19. package/assets/.appweaver/scripts/bash/aw-xref.sh +2 -1
  20. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +2458 -22
  21. package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +2 -1
  22. package/assets/.appweaver/scripts/python/aw-payload-parity.py +158 -0
  23. package/assets/.appweaver/scripts/python/aw-xref.py +431 -48
  24. package/assets/.appweaver/templates/design-template.md +88 -54
  25. package/assets/.appweaver/templates/spec-template.md +12 -10
  26. package/assets/.appweaver/templates/story-template.md +83 -12
  27. package/assets/.appweaver/templates/ui-design-template.md +71 -39
  28. package/assets/guardrails/projects/dotnet-default-project/domain-rule-bindings.md +19 -7
  29. package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +35 -26
  30. package/package.json +1 -1
  31. package/assets/.appweaver/orchestrator/workflows/aw-spec-design-ui.orch.yaml +0 -386
  32. package/assets/.appweaver/orchestrator/workflows/aw-spec-design.orch.yaml +0 -382
@@ -2,13 +2,13 @@
2
2
 
3
3
  **Aggregate (feature)**: `[Aggregate]` <!-- the feature = the aggregate, e.g. Order -->
4
4
 
5
- **Design home**: `specs/[Aggregate]/design.ui.md`
5
+ **Design home**: `specs/[Aggregate]/frontend-plan.md` <!-- the frontend lane; the service twin is backend-plan.md, owned by /appweaver plan -->
6
6
 
7
7
  **Source spec**: `specs/[Aggregate]/spec.md`
8
8
 
9
9
  **Lane**: `[lane id]` — the frontend lane declared in `.appweaver/stacks.json`
10
10
 
11
- **Version**: v1.0 <!-- moves in lockstep with spec.md and design.md; one change closes on ONE bump -->
11
+ **Version**: v1.0 <!-- SCRIPT-OWNED: plan-stamp sets this to the spec version this plan derives from. Never edit it by hand. -->
12
12
 
13
13
  **Status**: Draft
14
14
 
@@ -16,23 +16,36 @@
16
16
  WHAT THIS DOCUMENT IS
17
17
  =====================
18
18
  The single, living High-Level Design for ONE feature's EXPERIENCE — the
19
- frontend lane's twin of design.md. It is the MEDIATOR between spec.md
20
- (WHAT/WHY, tech-agnostic) and the frontend code `implement-ui` generates.
21
- It carries screens, navigation, client state, composition, interaction and
22
- the service binding. It is NOT code, and it is NOT a visual comp.
19
+ FEATURE-LEVEL ARCHITECTURAL CONFIRMATION for the frontend lane, twin of
20
+ backend-plan.md. It is the MEDIATOR between spec.md (WHAT/WHY, tech-agnostic)
21
+ and the frontend code `implement-ui` generates. It carries screens, navigation,
22
+ client state, composition, interaction and the service binding. It is NOT code,
23
+ and it is NOT a visual comp.
23
24
 
24
- spec.md ──▶ design.ui.md ──▶ frontend code (+ tests)
25
- behaviour structure & generated by `implement-ui`
26
- (UX/US/FR/SC) decisions (framework bound at generation time)
25
+ spec.md ──▶ frontend-plan.md ──▶ story-frontend-plan.md ──▶ frontend code (+ tests)
26
+ behaviour structure & the story's slice generated by `implement-ui`
27
+ (UX/FR/CN/SC) decisions (concrete, ephemeral)
28
+
29
+ It is LONG-LIVED and moves FORWARD with the spec: /appweaver plan-ui authors it,
30
+ and conforms it whenever the spec's Change History says something it realises has
31
+ moved. Story designs READ it and never write back — nothing merges into it.
27
32
 
28
33
  ANCHORING RULES
29
- - Every element traces UP to a spec id (UX-/US-/FR-/CN-/DC-/IC-/SC-) and the
30
- spec's experience obligations are covered DOWN here (§7 Traceability). No
31
- screen without a spec reason; no user story without a screen home.
34
+ - Every element traces UP to a spec id (UX-/FR-/CN-/DC-/IC-/SC-) and the spec's
35
+ experience obligations are covered DOWN here (§7 Traceability). No screen
36
+ without a spec reason; no requirement without a screen home.
37
+ - NO STORY IDS ANYWHERE IN THIS DOCUMENT. Stories live in stories/ and cite the
38
+ requirement ids they deliver; this plan traces to UX-/FR-, which is what keeps
39
+ it stable while the backlog churns.
40
+ - THE CODE IS THE WHAT-EXISTS INPUT, and it is a different authority from the
41
+ spec. Where a frontend already realises this feature, ADJUST to the composition,
42
+ naming and state handling that are actually there rather than to an idealised
43
+ shape. The code never overrides the spec on required behaviour; a deliberate
44
+ divergence is a §9 WA-n.
32
45
  - UX- LIVES HERE AND ONLY HERE. The spec's Experience Standards are this
33
- document's to realise — design.md deliberately excludes them, so a UX- that
34
- reaches neither design is a dropped requirement.
35
- - THE SPEC IS THE ONLY DOMAIN INPUT — the same rule design.md keeps. This
46
+ document's to realise — backend-plan.md deliberately excludes them, so a UX-
47
+ that reaches neither plan is a dropped requirement.
48
+ - THE SPEC IS THE ONLY DOMAIN INPUT — the same rule backend-plan.md keeps. This
36
49
  document reads the spec + the lane's own standards, never the domain rule
37
50
  files. A domain rule the spec omits is an §8 assumption, never an invention.
38
51
  - THE SERVICE LANE ENTERS ONLY AT §5. Cite the operations this surface
@@ -103,7 +116,7 @@
103
116
 
104
117
  | Screen | Purpose | Entered from | Leads to | Serves |
105
118
  |---|---|---|---|---|
106
- | `[Screen]` | [the decision made here] | [entry point] | [next screens] | US-[n] · FR-[nnn] |
119
+ | `[Screen]` | [the decision made here] | [entry point] | [next screens] | FR-[nnn] · UX-[n] |
107
120
 
108
121
  **Route / navigation shape**: [how screens are addressed and nested, stated
109
122
  conceptually — a path pattern, a stack, a tab set — never named after a router.]
@@ -148,7 +161,7 @@ anything the service alone may decide. Cite the DC-/CN- id.]
148
161
 
149
162
  | Component | Responsibility | Inputs (field shape) | Events raised | Serves |
150
163
  |---|---|---|---|---|
151
- | `[Component]` | [single responsibility] | [field: type, …] | `[event]` | FR-[nnn] · US-[n] |
164
+ | `[Component]` | [single responsibility] | [field: type, …] | `[event]` | FR-[nnn] · UX-[n] |
152
165
 
153
166
  ### 3.n [COMPOSITION AXIS NAME]
154
167
 
@@ -170,7 +183,7 @@ decision recorded in §8.]
170
183
 
171
184
  | Interaction | States | What the user sees | Serves |
172
185
  |---|---|---|---|
173
- | `[interaction]` | [idle → in-flight → success / error / empty / denied] | [per-state behaviour] | US-[n] · FR-[nnn] |
186
+ | `[interaction]` | [idle → in-flight → success / error / empty / denied] | [per-state behaviour] | FR-[nnn] · UX-[n] |
174
187
 
175
188
  **Validation & feedback**: [when validation runs and how failures are surfaced,
176
189
  citing the BR-/FR- ids being echoed. A client-side check NEVER replaces the
@@ -187,22 +200,33 @@ a lost connection mid-flight.]
187
200
  ## 5. Contract Binding
188
201
 
189
202
  <!-- THE LANE BOUNDARY. One row per service operation this feature's UI depends
190
- on. Bind against the service's PUBLISHED SURFACE — the spec's IC- ids and
191
- the API contracts design.md states — and never against the service's
192
- internals: no table, no handler, no persistence assumption crosses this
193
- line. An interface the experience needs and the service does not offer is a
194
- CONTRACT DELTA raised back to the service lane, never a workaround in the
195
- client. -->
196
-
197
- | Screen / component | Operation | Sends (field shape) | Receives (field shape) | Failure handling | Serves |
198
- |---|---|---|---|---|---|
199
- | `[Screen]` | `[operation]` | [field: type, …] | [field: type, …] | [the §4 state it produces] | FR-[nnn] · IC-[nnn] |
203
+ on. Bind against the service's PUBLISHED SURFACE — the entries in
204
+ `interfaces.md` (cited by IF- id) and the spec's IC- ids — and never against
205
+ the service's internals: no table, no handler, no persistence assumption
206
+ crosses this line. An interface the experience needs and the service does not
207
+ publish is raised back to the service lane, never worked around in the client. -->
208
+
209
+ | Screen / component | Operation | IF- id | Sends (field shape) | Receives (field shape) | Failure handling | Serves |
210
+ |---|---|---|---|---|---|---|
211
+ | `[Screen]` | `[operation]` | IF-00n | [field: type, …] | [field: type, …] | [the §4 state it produces] | FR-[nnn] · IC-[nnn] |
212
+ | `[Screen]` | `[operation]` | (unpublished) | [field: type, …] | [field: type, …] | [the §4 state it produces] | FR-[nnn] |
200
213
 
201
214
  **Write semantics**: [per mutating operation — optimistic or pessimistic, what
202
215
  it invalidates, and how an optimistic update rolls back.]
203
216
 
204
- **Contract deltas needed**: [anything the experience requires that the service
205
- surface does not offer, raised back to the service lane. Or `None`.]
217
+ **Contract gaps to raise**: [every row above whose IF- id reads `(unpublished)` —
218
+ what the experience needs that `interfaces.md` does not yet carry. These are raised
219
+ back to the service lane, which publishes them by running /appweaver plan; this lane
220
+ never writes the log. Or `None`.]
221
+
222
+ <!-- WHERE THE CONTRACT LIVES. The service lane's published surface is
223
+ `specs/[Aggregate]/interfaces.md` — the APPEND-ONLY interface log /appweaver plan
224
+ publishes. Bind to the LATEST entry per interface (an entry naming an earlier id
225
+ in `supersedes:` replaces it) and CITE IT BY IF- id in the rows above; never
226
+ restate the contract here, and NEVER write to the log — this lane consumes it.
227
+ An entry at `status: proposed` is the designed contract and is bindable. Where
228
+ the log does not exist yet (the service lane has not planned this feature), bind
229
+ from the spec's IC- ids and record a §8 DA-n saying so. -->
206
230
 
207
231
  ## 6. Cross-Cutting
208
232
 
@@ -227,13 +251,13 @@ surface does not offer, raised back to the service lane. Or `None`.]
227
251
  <!-- The two-way guarantee for the lane: every experience obligation in the spec
228
252
  has a home here, and every UI element has a spec reason. The last column
229
253
  names THIS document's own sections.
230
- A US- with no screen is a coverage failure. A UX- with no row is a dropped
231
- requirement — design.md does not carry them, so this is their only home. -->
254
+ An FR- with a UI surface and no screen is a coverage failure. A UX- with no row
255
+ is a dropped requirement — backend-plan.md does not carry them, so this is their
256
+ only home. -->
232
257
 
233
258
  | Spec id | Type | UI element(s) | Section |
234
259
  |---|---|---|---|
235
260
  | UX-[n] | experience standard | [where realised] | [§] |
236
- | US-[n] | story | [screens + flow realising it] | [§ refs] |
237
261
  | FR-[nnn] | requirement | [screen / component / state] | [§] |
238
262
  | CN-[nnn] | constraint | [where honoured in the UI] | [§] |
239
263
  | DC-[nnn] | classification | [what is withheld from the client] | §6 |
@@ -264,10 +288,18 @@ surface does not offer, raised back to the service lane. Or `None`.]
264
288
 
265
289
  ## Change History
266
290
 
267
- <!-- In lockstep with spec.md and design.md — a change that touches both lanes
268
- closes on ONE version bump. finalize-delta appends the row; close-delta
269
- bumps the version and stamps it into the header. Newest last. -->
291
+ <!-- The living-truth ledger, in lockstep with spec.md — MANDATORY, and the one
292
+ section whose loss is refused rather than absorbed: plan-stamp writes no baseline
293
+ at all if it went missing, so a dropped ledger can never be silently stamped over.
294
+
295
+ SCRIPT-OWNED. `plan-stamp` is the only writer: one row per update naming the
296
+ requirement ids conformed, and the **Version** header moved to the spec version
297
+ this plan now derives from. The model writes NO version and NO row, ever.
298
+ Newest last.
299
+
300
+ Three columns, matching exactly what the stamp writes: the derived spec version,
301
+ the date, and what changed (the conformed ids are carried in that cell). -->
270
302
 
271
- | Version | Date | Change | User stories | CR |
272
- |---------|------|--------|--------------|-----|
273
- | v1.0 | [DATE] | Initial UI design | US-1 | — |
303
+ | Version | Date | Change |
304
+ |---------|------|--------|
305
+ | v1.0 | [DATE] | Initial UI design |
@@ -70,11 +70,18 @@ through the spec/design (as CN-/DC-/IC- ids).
70
70
  - guardrails/domain/healthcare/api-versioning.domain.md
71
71
  - guardrails/domain/healthcare/vertical-slices.domain.md
72
72
 
73
- ## /aw-spec-design
74
- _None — design loads no domain file. Domain reaches design only through the spec (BR-/CN-/DC-/IC-)._
73
+ ## /aw-spec-plan
74
+ _None — the service lane's design loads no domain file. Domain reaches it only through the spec
75
+ (BR-/CN-/DC-/IC-)._
76
+
77
+ ## /aw-spec-plan-ui
78
+ _None — the frontend lane's design loads no domain file either, for the same reason: domain
79
+ reaches frontend-plan.md as spec ids (UX-/CN-/DC-/IC-). Stated rather than left absent, because
80
+ an absent heading and an empty one behave identically and only one of them is a decision._
75
81
 
76
82
  ## /aw-spec-implement
77
- _None — implement loads no domain file. Domain reaches implement only through design.md. Framework
83
+ _None — implement loads no domain file. Domain reaches implement only through backend-plan.md and
84
+ the story's design pass. Framework
78
85
  components are added separately via `/appweaver add-component`._
79
86
 
80
87
  ## /aw-spec-gate
@@ -104,10 +111,15 @@ components are added separately via `/appweaver add-component`._
104
111
  |---|---|---|
105
112
  | /aw-spec-constitution | 14 | domain principles (XVI+) — the industry constitution + standard industry rules + the project's own requirements |
106
113
  | /aw-spec-specify | 19 | author into spec (lift → CN-/DC-/IC-) |
107
- | /aw-spec-design | 0 | none — spec is the only domain input |
114
+ | /aw-spec-plan | 0 | none — spec is the only domain input |
115
+ | /aw-spec-plan-ui | 0 | none — spec is the only domain input |
108
116
  | /aw-spec-implement | 0 | none — design is the only domain input |
109
117
  | /aw-spec-gate | 14 | conformance checklist (validate, don't author) |
110
118
 
111
- > Retired in the orchestrator pipeline: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-taskplan`,
112
- > `/aw-spec-clarify`, `/aw-spec-analyze` (clarify folds into specify; plan/tasks into design). The
113
- > collapsed tiers `/aw-spec-fast-implement` and `/aw-spec-minimal-implementation` are pending a ruling.
119
+ > Retired in the orchestrator pipeline: `/aw-spec-tasks`, `/aw-spec-taskplan`, `/aw-spec-clarify`,
120
+ > `/aw-spec-analyze` (clarify folds into specify; tasks into the design phase). The collapsed tiers
121
+ > `/aw-spec-fast-implement` and `/aw-spec-minimal-implementation` are pending a ruling.
122
+ >
123
+ > `/aw-spec-plan` is NOT retired. The name was once a dead phase and is now the LIVE service-lane
124
+ > design command (`design` was renamed to `plan`, `design-ui` to `plan-ui`); its heading above is
125
+ > current, and `/appweaver story-plan` reads the same slot.
@@ -15,7 +15,7 @@ NOT listed here — every consumer refers to it directly, as-is.
15
15
  `guardrails/technology/nextjs/` (the frontend lane). Both are **standard rules shared by
16
16
  every project that maps them**, and neither is domain-specific. The frontend corpus is
17
17
  read by three headings — `## /aw-spec-ui-constitution` ratifies the lane's base, and
18
- `## /aw-spec-design-ui` / `## /aw-spec-implement-ui` carry the detail rules under it.
18
+ `## /aw-spec-plan-ui` / `## /aw-spec-implement-ui` carry the detail rules under it.
19
19
  - The two files this project authors — `service/technical-requirements.md` and
20
20
  `frontend/ui-requirements.md` — live beside this map. They are the only mapped technical
21
21
  files expected to differ between two projects on the same stacks.
@@ -64,7 +64,7 @@ NOT listed here — every consumer refers to it directly, as-is.
64
64
 
65
65
  ⚠ The ux/ files sit in a DOMAIN corpus folder but are TECHNICAL-tier inputs: a file's
66
66
  tier is the map that lists it, not the folder it lives in. guardrails/domain/healthcare/
67
- ihe-conformance.md under ## /aw-spec-design is the same pattern. Unmapping them does not
67
+ ihe-conformance.md under ## /aw-spec-plan is the same pattern. Unmapping them does not
68
68
  make the spec's Experience Standards section disappear — the section is unconditional and
69
69
  resolves to "None" — it removes the methodology specify fills it from. -->
70
70
  - guardrails/technology/dotnet-webapi/domain-driven-design.md
@@ -74,10 +74,17 @@ NOT listed here — every consumer refers to it directly, as-is.
74
74
  - guardrails/domain/healthcare/ux/accessibility-standards.md
75
75
  - guardrails/domain/healthcare/ux/content-design.md
76
76
 
77
- ## /aw-spec-design
77
+ ## /aw-spec-plan
78
78
  <!-- The technical/architecture rule files the design author works from (alongside the
79
- spec and constitution.technical.md), each followed by its worked example. NO domain file
80
- here — domain reaches design only as spec ids (BR-/CN-/DC-/IC-). -->
79
+ spec and constitution.technical.md), each followed by its worked example. Also read by
80
+ /appweaver story-plan, which reuses this slot deliberately: a story's execution design
81
+ answers to the same HOW rules as the feature plan it derives from.
82
+
83
+ NO DOMAIN-TIER FILE HERE — the domain reaches design only as spec ids (BR-/CN-/DC-/IC-).
84
+ The one bullet under guardrails/domain/ is not an exception to that: TIER IS DECIDED BY
85
+ THE MAP THAT LISTS A FILE, NOT BY THE FOLDER IT SITS IN, so ihe-conformance.md is bound
86
+ here as a TECHNICAL interop rule (the wire-level conformance the design must realise),
87
+ not as domain authoring input. Nothing from domain-rule-bindings reaches this phase. -->
81
88
  - guardrails/technology/dotnet-webapi/clean-architecture.md
82
89
  - guardrails/technology/dotnet-webapi/cqrs.md
83
90
  - guardrails/technology/dotnet-webapi/eventing.md
@@ -103,13 +110,13 @@ NOT listed here — every consumer refers to it directly, as-is.
103
110
  - guardrails/technology/dotnet-webapi/examples/authorization.md
104
111
  - guardrails/technology/dotnet-webapi/examples/auditing.md
105
112
 
106
- ## /aw-spec-design-ui
107
- <!-- The FRONTEND LANE's design phase. Its own heading, not a branch of ## /aw-spec-design:
108
- the two lanes are governed by different constitution halves and own disjoint source
109
- paths, so keying the map on this command name gives the lane its own rule set for zero
110
- mechanism change. NO domain file here — the domain reaches design.ui.md as spec ids,
111
- exactly as it reaches design.md. The lane's ratified base (constitution.ui.md) is
112
- referred to directly and is NOT mapped.
113
+ ## /aw-spec-plan-ui
114
+ <!-- The FRONTEND LANE's design phase — /appweaver plan-ui, authoring frontend-plan.md. Its
115
+ own heading, not a branch of ## /aw-spec-plan: the two lanes are governed by different
116
+ constitution halves and own disjoint source paths, so keying the map on this command name
117
+ gives the lane its own rule set for zero mechanism change. NO domain file here — the
118
+ domain reaches frontend-plan.md as spec ids, exactly as it reaches backend-plan.md. The
119
+ lane's ratified base (constitution.ui.md) is referred to directly and is NOT mapped.
113
120
 
114
121
  THE SERVICE LANE ENTERS THROUGH ONE FILE. api-integration.{{backend_stack}}.md is the
115
122
  CROSS-LANE pairing rule set — what the service guarantees (paging shape, concurrency
@@ -119,8 +126,10 @@ NOT listed here — every consumer refers to it directly, as-is.
119
126
  api-integration.java-spring.md in a Spring repo — both authored — and to a REPORTED
120
127
  missing file for a backend whose pairing nobody has written yet, rather than silently
121
128
  loading one stack's assumptions into another. A repo with no backend lane skips the
122
- bullet entirely. No other service-lane file is mapped here: design.ui.md consumes the
123
- published surface, never the service's internals. -->
129
+ bullet entirely. No other service-lane file is mapped here, and none is needed: the
130
+ service's published surface reaches this lane as DATA, not as rules — specs/<F>/
131
+ interfaces.md, the append-only interface log /appweaver plan publishes, which
132
+ frontend-plan.md §5 binds to by IF- id. Never the service's internals. -->
124
133
  - guardrails/technology/nextjs/component-architecture.md
125
134
  - guardrails/technology/nextjs/routing-navigation.md
126
135
  - guardrails/technology/nextjs/state-management.md
@@ -135,8 +144,8 @@ NOT listed here — every consumer refers to it directly, as-is.
135
144
 
136
145
  ## /aw-spec-implement
137
146
  <!-- The FRAMEWORK / code-generation rule files the code generator builds against
138
- (alongside design.md and constitution.technical.md). NO domain file — domain
139
- reaches implement only through design.md. clean-architecture/cqrs are design
147
+ (alongside backend-plan.md, the story's design pass and constitution.technical.md).
148
+ NO domain file — domain reaches implement only through those. clean-architecture/cqrs are design
140
149
  concerns; component wiring is a separate /appweaver add-component step. -->
141
150
  - guardrails/technology/dotnet-webapi/coding-standards.md
142
151
  - guardrails/technology/dotnet-webapi/dependency-policy.md
@@ -146,9 +155,9 @@ NOT listed here — every consumer refers to it directly, as-is.
146
155
 
147
156
  ## /aw-spec-implement-ui
148
157
  <!-- The FRONTEND LANE's code-generation set — the HOW the UI generator builds against,
149
- alongside design.ui.md and constitution.ui.md. NO domain file: domain reached the lane
150
- through spec -> design.ui.md. NO service-lane file beyond the pairing rules below —
151
- this phase never writes outside the lane's declared source path.
158
+ alongside frontend-plan.md and constitution.ui.md. NO domain file: domain reached the
159
+ lane through spec -> frontend-plan.md. NO service-lane file beyond the pairing rules
160
+ below — this phase never writes outside the lane's declared source path.
152
161
 
153
162
  EIGHT FILES ARE MAPPED FOR BOTH LANE PHASES on purpose. error-handling,
154
163
  forms-and-validation, auth-session, design-system, accessibility-implementation, i18n,
@@ -172,7 +181,7 @@ NOT listed here — every consumer refers to it directly, as-is.
172
181
 
173
182
  ## /aw-spec-implement-delta
174
183
  <!-- The CR analog of implement — same FRAMEWORK / code-generation set (HOW to build).
175
- The delta's code is generated against the master design.md + delta-design.md; no
184
+ The delta's code is generated against the master backend-plan.md + delta-design.md; no
176
185
  domain file (domain reached the delta via delta-spec → delta-design). -->
177
186
  - guardrails/technology/dotnet-webapi/coding-standards.md
178
187
  - guardrails/technology/dotnet-webapi/dependency-policy.md
@@ -190,7 +199,7 @@ NOT listed here — every consumer refers to it directly, as-is.
190
199
  - guardrails/technology/dotnet-webapi/examples/clean-architecture.md
191
200
 
192
201
  ## /aw-spec-analyze-slice
193
- <!-- The design↔code conformance gate's TECHNICAL checklist: the code + tests are
202
+ <!-- The spec↔code conformance gate's TECHNICAL checklist: the code + tests are
194
203
  validated against these (alongside the DOMAIN gate overlays, loaded separately via
195
204
  resolve-domain `## /aw-spec-gate`). Validation input only — never authoring. -->
196
205
  - guardrails/technology/dotnet-webapi/testing.md
@@ -246,13 +255,13 @@ NOT listed here — every consumer refers to it directly, as-is.
246
255
  | Command | Technical rule files | Role |
247
256
  |---|---|---|
248
257
  | /aw-spec-specify | 6 | the modelling methodology the spec is expressed in: DDD for the domain model (+ its example), and the four ux/ rules for the experience model it lifts as UX- ids — no technology |
249
- | /aw-spec-design | 24 | architecture/security/interop the design author mediates the spec against, each with its example |
250
- | /aw-spec-design-ui | 11 | the frontend lane's design set — composition, routing, client state, interaction states, forms, auth surface, design system, accessibility, i18n, performance, and the cross-lane API pairing the UI design author works from (from spec.md) |
251
- | /aw-spec-implement | 5 | governance/architecture the code generator builds against (from design.md) |
252
- | /aw-spec-implement-ui | 13 | the frontend lane's code-generation set the UI generator builds against (from design.ui.md) — conventions, the generated client + its service pairing, auth, client security, states, forms, design system, accessibility, i18n, performance, observability and testing |
258
+ | /aw-spec-plan | 24 | architecture/security/interop the design author mediates the spec against, each with its example (also read by story-plan) |
259
+ | /aw-spec-plan-ui | 11 | the frontend lane's design set — composition, routing, client state, interaction states, forms, auth surface, design system, accessibility, i18n, performance, and the cross-lane API pairing the UI design author works from (from spec.md + interfaces.md) |
260
+ | /aw-spec-implement | 5 | governance/architecture the code generator builds against (from backend-plan.md + the story's design pass) |
261
+ | /aw-spec-implement-ui | 13 | the frontend lane's code-generation set the UI generator builds against (from frontend-plan.md) — conventions, the generated client + its service pairing, auth, client security, states, forms, design system, accessibility, i18n, performance, observability and testing |
253
262
  | /aw-spec-implement-delta | 5 | same code-generation set, scoped to the open change's delta-design |
254
263
  | /aw-spec-build | 3 | layering + coding rules the compile-fixer respects, + the layering example |
255
- | /aw-spec-analyze-slice | 2 | testing + coding rules the design↔code gate validates against |
264
+ | /aw-spec-analyze-slice | 2 | testing + coding rules the spec↔code gate validates against |
256
265
  | /aw-spec-constitution | 17 | what the technical half ratifies — the technology base, the standard technical rules, and the project team's technical-requirements.md |
257
266
  | /aw-spec-ui-constitution | 2 | what the frontend lane's half ratifies — the UI base + the project team's ui-requirements.md — and the signal that the lane exists |
258
267
  | /aw-spec-run | 2 | persistence rules the execution / data-migration step generates against, + its example |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aw-spec-cli",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "AppWeaver Spec-Driven Development CLI - scaffolds projects with vertical slices, DDD, CQRS, and agent skills",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",