aw-spec-cli 0.1.18 → 0.1.19

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 (53) hide show
  1. package/assets/.appweaver/DESIGN-FORMAT.md +45 -21
  2. package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +62 -14
  3. package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +6 -4
  4. package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +9 -1
  5. package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +21 -0
  6. package/assets/.appweaver/orchestrator/orchestrator.py +23 -1
  7. package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +18 -11
  8. package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +5 -3
  9. package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +298 -109
  10. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +161 -34
  11. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +125 -24
  12. package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +18 -7
  13. package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +182 -39
  14. package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +300 -35
  15. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +190 -31
  16. package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +93 -8
  17. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +34 -7
  18. package/assets/.appweaver/orchestrator/workflows/aw-spec-recall-delta.orch.yaml +319 -0
  19. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +125 -24
  20. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +846 -35
  21. package/assets/.appweaver/scripts/bash/common.sh +28 -1
  22. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +843 -46
  23. package/assets/.appweaver/scripts/python/aw-inventory.py +3 -2
  24. package/assets/.appweaver/templates/design-template.md +41 -30
  25. package/assets/.appweaver/templates/spec-template.md +7 -4
  26. package/assets/.appweaver/templates/ui-design-template.md +7 -3
  27. package/assets/guardrails/domain/healthcare/auditing.domain.md +3 -3
  28. package/assets/guardrails/domain/pharma/auditing.domain.md +3 -3
  29. package/assets/guardrails/technology/dotnet-webapi/api-versioning.md +1 -1
  30. package/assets/guardrails/technology/dotnet-webapi/auditing.md +1 -1
  31. package/assets/guardrails/technology/dotnet-webapi/authorization.md +1 -1
  32. package/assets/guardrails/technology/dotnet-webapi/clean-architecture.md +1 -1
  33. package/assets/guardrails/technology/dotnet-webapi/cqrs.md +1 -1
  34. package/assets/guardrails/technology/dotnet-webapi/data-classification.md +1 -1
  35. package/assets/guardrails/technology/dotnet-webapi/eventing.md +1 -1
  36. package/assets/guardrails/technology/dotnet-webapi/folder-structure.md +1 -1
  37. package/assets/guardrails/technology/dotnet-webapi/modular-monolith.md +1 -1
  38. package/assets/guardrails/technology/dotnet-webapi/persistence.md +1 -1
  39. package/assets/guardrails/technology/dotnet-webapi/vertical-slices.md +1 -1
  40. package/assets/guardrails/technology/dotnet-webapi/zero-trust.md +1 -1
  41. package/assets/guardrails/technology/nextjs/accessibility-implementation.md +1 -1
  42. package/assets/guardrails/technology/nextjs/api-integration.dotnet-webapi.md +1 -1
  43. package/assets/guardrails/technology/nextjs/api-integration.java-spring.md +1 -1
  44. package/assets/guardrails/technology/nextjs/auth-session.md +1 -1
  45. package/assets/guardrails/technology/nextjs/component-architecture.md +1 -1
  46. package/assets/guardrails/technology/nextjs/design-system.md +1 -1
  47. package/assets/guardrails/technology/nextjs/error-handling.md +1 -1
  48. package/assets/guardrails/technology/nextjs/forms-and-validation.md +1 -1
  49. package/assets/guardrails/technology/nextjs/i18n.md +1 -1
  50. package/assets/guardrails/technology/nextjs/performance-budgets.md +1 -1
  51. package/assets/guardrails/technology/nextjs/routing-navigation.md +1 -1
  52. package/assets/guardrails/technology/nextjs/state-management.md +1 -1
  53. package/package.json +1 -1
@@ -991,8 +991,9 @@ def _read_frontmatter(path):
991
991
 
992
992
  def cmd_concept(args):
993
993
  """Resolve the OKF bundle concept for an aggregate → its path + source_files
994
- (the code that IS the slice). The index adopt reverse-engineers spec.md +
995
- design.md FROM. Matches on title/filename slug; prefers an Aggregate type."""
994
+ (the code that IS the slice). The index adopt reverse-engineers spec.md, the
995
+ context's domain-model.md and the lane plans FROM. Matches on title/filename
996
+ slug; prefers an Aggregate type."""
996
997
  bundle = os.path.abspath(args.bundle)
997
998
  want = _slug(args.aggregate)
998
999
  best = None
@@ -4,7 +4,9 @@
4
4
 
5
5
  **Plan home**: `specs/[Aggregate]/backend-plan.md`
6
6
 
7
- **Source spec**: `specs/[Aggregate]/spec.md`
7
+ **Source spec**: `specs/[Aggregate]/spec.md` <!-- behaviour: what the system must DO -->
8
+
9
+ **Source model**: `specs/[Context]/domain-model.md` <!-- structure: what the domain IS -->
8
10
 
9
11
  **Version**: v1.0 <!-- moves in lockstep with the spec; every applied change request bumps this — see Change History -->
10
12
 
@@ -19,20 +21,26 @@
19
21
  behaviour, and decisions — enough for ANY capable LLM to generate correct,
20
22
  spec-satisfying code on ANY target stack, but no complete method bodies.
21
23
 
22
- spec.md ──▶ backend-plan.md ──▶ code (+ tests)
23
- behaviour structure & generated by `implement`
24
- (FR/BR/US/SC) decisions (HLD) (stack-bound at generation time)
24
+ domain-model.md ─┐
25
+ structure ├─▶ backend-plan.md ──▶ code (+ tests)
26
+ (BR-nnn) │ structure & generated by `implement`
27
+ spec.md ──┘ decisions (HLD) (stack-bound at generation time)
28
+ behaviour
29
+ (FR/US/SC/CN/DC/IC)
25
30
 
26
31
  ANCHORING RULES
27
- - Every design element traces UP to a spec id (FR-/BR-/CN-/DC-/IC-/US-/SC-) and
28
- the whole spec is covered DOWN here (see §6 Traceability). No design element
29
- without a spec reason; no spec requirement without a design home.
30
- - THE SPEC IS THE ONLY DOMAIN INPUT. Design reads the spec + the technical/
31
- architecture standards — NOT the domain rule files. The domain reached this doc
32
- only as spec ids: business invariants (BR-), domain-derived constraints (CN- —
33
- retention/immutability/audit/limits), data classification (DC-), and interop
34
- obligations (IC-). Realise each of those; invent no domain rule the spec omits
35
- (if one seems missing, record it as an Assumption in §7, never smuggle it in).
32
+ - Every design element traces UP to an id — behaviour ids (FR-/US-/SC-/CN-/DC-/IC-)
33
+ from the spec, invariant ids (BR-) from the context's domain-model.md — and the
34
+ whole spec is covered DOWN here (see §6 Traceability). No design element without
35
+ a reason in one of those two; no spec requirement without a design home.
36
+ - TWO AUTHORITIES, NOT ONE. Structure comes from the MODEL, behaviour from the SPEC.
37
+ domain-model.md fixes the aggregate's entities, value objects, boundary and
38
+ invariants; spec.md says what the system must DO with them and cites each invariant
39
+ by id. Design reads BOTH, plus the technical/architecture standards — but NOT the
40
+ domain rule files: a domain rule reaches this doc only as an id already lifted into
41
+ one of the two (BR- in the model; CN-/DC-/IC- in the spec). Realise each of those;
42
+ invent no entity, value object or rule that neither states (if one seems missing,
43
+ record it as an Assumption in §7, never smuggle it in).
36
44
  - Feature = aggregate. Commands (CreateOrder, UpdateOrder…) are USER STORIES,
37
45
  not features. One aggregate = one backend-plan.md = one owning design for its code
38
46
  files. A later requirement is a delta on THIS doc, never a new one.
@@ -111,9 +119,11 @@ trade-off. Layering follows the project architecture standard (constitution).]
111
119
  performance-as-a-limit land in §4 Infra / §5 Cross-Cutting.)
112
120
  You MAY add design-level structure — domain events, state machines, behaviour
113
121
  signatures — but ONLY to REALISE spec behaviour. Do NOT invent an entity, value
114
- object, or rule the spec does not state, and do NOT contradict it. If a genuinely
115
- new concept is unavoidable, record it as an Assumption (§7, DA-n) and flag it —
116
- never smuggle it in. Pure business model: no framework, no persistence, no I/O.
122
+ object, or invariant THE MODEL does not define, do NOT invent behaviour THE SPEC
123
+ does not state, and do NOT contradict either. If a genuinely new concept is
124
+ unavoidable, record it as an Assumption (§7, DA-n) and flag it — never smuggle it
125
+ in: a missing entity or invariant is a gap in the model, which /appweaver specify
126
+ owns and this document may not close. Pure business model: no framework, no persistence, no I/O.
117
127
  Model this section on a rich DDD reference (entities, VOs, events, state machines,
118
128
  invariants, behaviours). Repeat the blocks as the aggregate needs.
119
129
  -->
@@ -138,7 +148,7 @@ trade-off. Layering follows the project architecture standard (constitution).]
138
148
  <!--
139
149
  Per entity: attributes (conceptual types), lifecycle state machine if it has one,
140
150
  behaviours as SIGNATURE + pre/post/invariant/raises pseudocode (the most LLM-guidable,
141
- stack-neutral form), and the invariants it enforces (each = a spec BR-nnn).
151
+ stack-neutral form), and the invariants it enforces (each = a BR-nnn THE MODEL defines).
142
152
  -->
143
153
 
144
154
  #### `[Entity]` [(Aggregate Root)]
@@ -162,13 +172,14 @@ trade-off. Layering follows the project architecture standard (constitution).]
162
172
  ```
163
173
  [Entity].[Behaviour]([params])
164
174
  Pre-condition: [required state / inputs]
165
- Invariant: [what must hold — maps to a spec BR-nnn]
175
+ Invariant: [what must hold — maps to a BR-nnn in the domain model]
166
176
  Post-condition: [resulting state / outputs]
167
177
  Raises: [DomainEvent]
168
178
  Serves: FR-00X · US-Y · BR-00Z
169
179
  ```
170
180
 
171
- **Invariants** *(always-true; each maps to a spec BR-nnn — do not add rules absent from the spec)*
181
+ **Invariants** *(always-true; each cites a BR-nnn the domain model defines — never restate its
182
+ text, and do not add a rule the model does not carry)*
172
183
 
173
184
  - [Invariant statement] — **BR-00X**
174
185
 
@@ -320,22 +331,22 @@ trade-off. Layering follows the project architecture standard (constitution).]
320
331
 
321
332
  <!--
322
333
  The two-way guarantee: every FR/BR/CN/DC/IC/US/SC has a design home, and every
323
- design element has a spec reason. This is what makes impact analysis exact and lets
324
- the analyze gate verify coverage. Keep it complete — EVERY CN-/DC-/IC- in the spec
334
+ design element has a reason in one of the two authorities. This is what makes impact
335
+ analysis exact and lets the analyze gate verify coverage. Keep it complete — EVERY CN-/DC-/IC- in the spec
325
336
  MUST appear as a row here (that is how the analyze gate proves no lifted constraint
326
337
  was dropped). The Domain rows MUST match the domain model's entities and BR-nnn
327
338
  invariants exactly.
328
339
  -->
329
340
 
330
- | Spec id | Type | Design element(s) | Layer |
331
- |---|---|---|---|
332
- | FR-001 | requirement | `[Root].[Behaviour]`, `[Command]`, `[VERB /route]` | Domain·App·API |
333
- | BR-001 | invariant | `[Root]` invariant / `[VO]` validation | Domain |
334
- | CN-001 | constraint | [where realised — §1 invariant / §4 persistence / §5 cross-cutting] | [layer] |
335
- | DC-001 | classification | [exposure enforcement — §2 projection / §5 data-protection] | App·Infra |
336
- | IC-001 | contract | [adapter/port realising it — §4.2] | Infra |
337
- | US-1 | story | [end-to-end elements realising it] | all |
338
- | SC-001 | success | [where it is met + how verified] | [layer] |
341
+ | Id | Source | Type | Design element(s) | Layer |
342
+ |---|---|---|---|---|
343
+ | FR-001 | spec | requirement | `[Root].[Behaviour]`, `[Command]`, `[VERB /route]` | Domain·App·API |
344
+ | BR-001 | model | invariant | `[Root]` invariant / `[VO]` validation | Domain |
345
+ | CN-001 | spec | constraint | [where realised — §1 invariant / §4 persistence / §5 cross-cutting] | [layer] |
346
+ | DC-001 | spec | classification | [exposure enforcement — §2 projection / §5 data-protection] | App·Infra |
347
+ | IC-001 | spec | contract | [adapter/port realising it — §4.2] | Infra |
348
+ | US-1 | spec | story | [end-to-end elements realising it] | all |
349
+ | SC-001 | spec | success | [where it is met + how verified] | [layer] |
339
350
 
340
351
  ## 7. Assumptions (to clarify later)
341
352
 
@@ -289,10 +289,13 @@
289
289
 
290
290
  <!--
291
291
  The living-truth ledger. Every applied change request appends a row here, carrying
292
- the version it ships as. finalize-delta writes the row when it merges the delta;
293
- close-delta then archives the CR, bumps the minor version in active_version.json and
294
- stamps that same number into this document's **Version** header — one mechanism, one
295
- stage, so header, row and active_version.json never disagree. Newest last.
292
+ the version it ships as. finalize-delta writes the row when it MERGES the delta, with
293
+ the CR id and `(pending)` in the Version cell — at that point the number does not exist
294
+ yet. close-delta then archives the CR, bumps the minor version in active_version.json,
295
+ and stamps that same number into this document's **Version** header AND into the pending
296
+ cell — one mechanism, one stage, so header, row and active_version.json never disagree.
297
+ A row still reading `(pending)` is a change that merged and has not closed. The model
298
+ never writes a version here or anywhere; scripts stamp it. Newest last.
296
299
  -->
297
300
 
298
301
  | Version | Date | Change | User stories | CR |
@@ -32,9 +32,13 @@
32
32
  - UX- LIVES HERE AND ONLY HERE. The spec's Experience Standards are this
33
33
  document's to realise — backend-plan.md deliberately excludes them, so a UX- that
34
34
  reaches neither design is a dropped requirement.
35
- - THE SPEC IS THE ONLY DOMAIN INPUT — the same rule backend-plan.md keeps. This
36
- document reads the spec + the lane's own standards, never the domain rule
37
- files. A domain rule the spec omits is an §8 assumption, never an invention.
35
+ - THE SPEC IS THE ONLY DOMAIN INPUT for this lane. This document reads the spec
36
+ + the lane's own standards, never the domain rule files. A domain rule the
37
+ spec omits is an §8 assumption, never an invention. (The SERVICE lane reads a
38
+ second authority, the context's domain-model.md, because it realises the
39
+ aggregate's structure. This lane does not: it consumes the published surface
40
+ at §5, not the domain, so the model is not in its context and an entity or
41
+ invariant is never this document's to state.)
38
42
  - THE SERVICE LANE ENTERS ONLY AT §5. Cite the operations this surface
39
43
  consumes; never restate, re-derive or contradict the service design, and
40
44
  never place server-side behaviour here.
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Technology base: [[auditing]]. NON-NEGOTIABLE. Consumed by `/aw-spec-specify` (LIFTS the
4
4
  > auditing requirement into the spec) and `/aw-spec-gate` (VALIDATES the spec/design realise it).
5
- > `/aw-spec-design` and `/aw-spec-implement` never load this file — auditing reaches them through
5
+ > `/aw-spec-plan` and `/aw-spec-implement` never load this file — auditing reaches them through
6
6
  > the spec's **declared audit level per aggregate**, and the enablement mechanics live in the
7
7
  > technical base [[auditing]]. Keep this file technology-agnostic (levels + rules, **no code**).
8
8
 
@@ -24,7 +24,7 @@ audit interceptor populates every audit field automatically (handlers NEVER assi
24
24
 
25
25
  > Code realisation — marker interfaces (Basic = `IAuditedObject` / `IFullAuditedObject`; Advanced =
26
26
  > `+ IFieldAudited`), the one-time composition, and the audit query API — lives in the technical
27
- > base. See [[auditing]]; `/aw-spec-design` and `/aw-spec-implement` get the HOW from there.
27
+ > base. See [[auditing]]; `/aw-spec-plan` and `/aw-spec-implement` get the HOW from there.
28
28
 
29
29
  ## Aggregate assignment rule (how specify decides the level)
30
30
 
@@ -35,7 +35,7 @@ spec as an explicit, developer-editable declaration:
35
35
  history requires field-level before/after).
36
36
  - **Supporting aggregates** (collaborating/referenced roots, no PHI) → **Basic** by default.
37
37
  - A developer MAY raise or lower a level afterwards by editing the spec declaration — the level is
38
- a **spec** decision, never a design or implementation one. `/aw-spec-design` then follows the
38
+ a **spec** decision, never a design or implementation one. `/aw-spec-plan` then follows the
39
39
  declared level.
40
40
 
41
41
  Lift it as one line the gate can check, e.g. under Constraints:
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Technology base: [[auditing]]. NON-NEGOTIABLE. Consumed by `/aw-spec-specify` (LIFTS the
4
4
  > auditing requirement into the spec) and `/aw-spec-gate` (VALIDATES the spec/design realise it).
5
- > `/aw-spec-design` and `/aw-spec-implement` never load this file — auditing reaches them through
5
+ > `/aw-spec-plan` and `/aw-spec-implement` never load this file — auditing reaches them through
6
6
  > the spec's **declared audit level per aggregate**, and the enablement mechanics live in the
7
7
  > technical base [[auditing]]. Keep this file technology-agnostic (levels + rules, **no code**).
8
8
 
@@ -22,7 +22,7 @@ audit field automatically (handlers NEVER assign audit fields):
22
22
 
23
23
  > Code realisation — marker interfaces (Basic = `IAuditedObject` / `IFullAuditedObject`; Advanced =
24
24
  > `+ IFieldAudited`), the one-time composition, and the audit query API — lives in the technical
25
- > base. See [[auditing]]; `/aw-spec-design` and `/aw-spec-implement` get the HOW from there.
25
+ > base. See [[auditing]]; `/aw-spec-plan` and `/aw-spec-implement` get the HOW from there.
26
26
 
27
27
  ## Aggregate assignment rule (how specify decides the level)
28
28
 
@@ -32,7 +32,7 @@ spec as an explicit, developer-editable declaration:
32
32
  - The **main aggregate** of the requirement (the aggregate root the story is about) → **Advanced**.
33
33
  - **Supporting aggregates** (collaborating/referenced roots) → **Basic** by default.
34
34
  - A developer MAY raise or lower a level afterwards by editing the spec declaration — the level is
35
- a **spec** decision, never a design or implementation one. `/aw-spec-design` then follows the
35
+ a **spec** decision, never a design or implementation one. `/aw-spec-plan` then follows the
36
36
  declared level.
37
37
 
38
38
  Lift it as one line the gate can check, e.g. under Constraints:
@@ -1,6 +1,6 @@
1
1
  # API Versioning Policy
2
2
 
3
- > Pure technology (domain-agnostic) — domain (e.g. FHIR) versioning in [[api-versioning.domain]]. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic) — domain (e.g. FHIR) versioning in [[api-versioning.domain]]. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## REST versioning
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Auditing & Observability Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain audit additions in [[auditing.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic) — domain audit additions in [[auditing.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## Observability baseline
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Authorization Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain roles & matrix in [[authorization.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic) — domain roles & matrix in [[authorization.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## Authorization model
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Clean Architecture Standards
2
2
 
3
- > Pure technology (domain-agnostic). NON-NEGOTIABLE. Commands: `/aw-spec-design`, `/aw-spec-build`.
3
+ > Pure technology (domain-agnostic). NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-build`.
4
4
 
5
5
  ## Dependency direction
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CQRS + Mediator Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions in [[cqrs.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic) — domain additions in [[cqrs.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## Command / query patterns
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Data Classification Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain data categories in [[data-classification.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic) — domain data categories in [[data-classification.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## Classification framework
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Eventing Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions in [[eventing.domain]]. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic) — domain additions in [[eventing.domain]]. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## Domain events
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Mandatory Folder Structure
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions (Interop adapters, conformance tests, fixtures) in [[folder-structure.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-design`, `/aw-spec-implement`, `/aw-spec-implement-delta`.
3
+ > Pure technology (domain-agnostic) — domain additions (Interop adapters, conformance tests, fixtures) in [[folder-structure.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-implement`, `/aw-spec-implement-delta`.
4
4
  >
5
5
  > Replace `<SampleProjectName>` with the project name (e.g. `Acme.Billing`).
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Modular Monolith Standards
2
2
 
3
- > Pure technology (domain-agnostic). NON-NEGOTIABLE where marked. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic). NON-NEGOTIABLE where marked. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## Module boundaries
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Persistence Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions in [[persistence.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-design`, `/aw-spec-run`.
3
+ > Pure technology (domain-agnostic) — domain additions in [[persistence.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-plan`, `/aw-spec-run`.
4
4
 
5
5
  ## EF Core conventions
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Vertical Slice Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions in [[vertical-slices.domain]]. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic) — domain additions in [[vertical-slices.domain]]. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## Feature organization
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Zero-Trust Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions in [[zero-trust.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-design`.
3
+ > Pure technology (domain-agnostic) — domain additions in [[zero-trust.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-plan`.
4
4
 
5
5
  ## Transport security (mTLS / TLS)
6
6
 
@@ -1,7 +1,7 @@
1
1
  # Accessibility Standards — nextjs (frontend lane)
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE.
4
- > Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
4
+ > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
5
5
  > Detail layer under `constitution.ui.md` UX-I (accessibility floor).
6
6
 
7
7
  UX-I makes the floor non-negotiable; this file is what meeting it means in practice. The
@@ -2,7 +2,7 @@
2
2
 
3
3
  > The CROSS-LANE pairing rules: how the `nextjs` frontend lane consumes an
4
4
  > `dotnet-webapi` service lane. NON-NEGOTIABLE where marked.
5
- > Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
5
+ > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
6
6
  > Detail layer under `constitution.ui.md` UX-IV (the contract is the only server input).
7
7
 
8
8
  This file is named for the service lane it pairs with, and a project maps it through the
@@ -2,7 +2,7 @@
2
2
 
3
3
  > The CROSS-LANE pairing rules: how the `nextjs` frontend lane consumes a `java-spring`
4
4
  > (Spring Boot) service lane. NON-NEGOTIABLE where marked.
5
- > Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
5
+ > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
6
6
  > Detail layer under `constitution.ui.md` UX-IV (the contract is the only server input).
7
7
 
8
8
  This file is named for the service lane it pairs with, and a project maps it through the
@@ -1,7 +1,7 @@
1
1
  # Authentication & Session Standards — nextjs (frontend lane)
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE.
4
- > Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
4
+ > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
5
5
  > Detail layer under `constitution.ui.md` UX-VIII (client state carries no secret) and
6
6
  > UX-IV (the contract is the only server input).
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Component Architecture Standards — nextjs (frontend lane)
2
2
 
3
- > Pure technology (domain-agnostic). Commands: `/aw-spec-design-ui`.
3
+ > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`.
4
4
  > Detail layer under `constitution.ui.md` UX-II (design system) and UX-III (server components).
5
5
 
6
6
  The rules the UI design author composes a feature's `§3 Component Structure` from. They
@@ -1,7 +1,7 @@
1
1
  # Design System Standards — nextjs (frontend lane)
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE.
4
- > Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
4
+ > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
5
5
  > Detail layer under `constitution.ui.md` UX-II (the design system is the only source of
6
6
  > visual truth).
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Interaction & Error State Standards — nextjs (frontend lane)
2
2
 
3
- > Pure technology (domain-agnostic). Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
3
+ > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
4
4
  > Detail layer under `constitution.ui.md` UX-V (every interaction state is specified).
5
5
 
6
6
  The rules behind `design.ui.md §4 Interaction & Flow` — the section a backend-shaped
@@ -1,7 +1,7 @@
1
1
  # Forms & Validation Standards — nextjs (frontend lane)
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE where marked.
4
- > Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
4
+ > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
5
5
  > Detail layer under `constitution.ui.md` UX-V (every interaction state is specified) and
6
6
  > UX-VII (mutations flow through one path).
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Internationalization Standards — nextjs (frontend lane)
2
2
 
3
- > Pure technology (domain-agnostic). Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
3
+ > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
4
4
  > Detail layer under `constitution.ui.md` UX-X (internationalization is structural).
5
5
 
6
6
  Internationalization is structural: it is cheap while the surface is being designed and
@@ -1,7 +1,7 @@
1
1
  # Performance Budget Standards — nextjs (frontend lane)
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE.
4
- > Commands: `/aw-spec-design-ui`, `/aw-spec-implement-ui`.
4
+ > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
5
5
  > Detail layer under `constitution.ui.md` UX-IX (the performance budget is a gate).
6
6
 
7
7
  A budget that is not enforced is an aspiration. Core Web Vitals thresholds and a per-route
@@ -1,6 +1,6 @@
1
1
  # Routing & Navigation Standards — nextjs (frontend lane)
2
2
 
3
- > Pure technology (domain-agnostic). Commands: `/aw-spec-design-ui`.
3
+ > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`.
4
4
  > Detail layer under `constitution.ui.md` UX-III (server components) and UX-V (every
5
5
  > interaction state specified).
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Client State Standards — nextjs (frontend lane)
2
2
 
3
- > Pure technology (domain-agnostic). Commands: `/aw-spec-design-ui`.
3
+ > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`.
4
4
  > Detail layer under `constitution.ui.md` UX-VI (caching declared), UX-VII (one mutation
5
5
  > path) and UX-VIII (client state carries no secret).
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aw-spec-cli",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
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",