aw-spec-cli 0.1.17 → 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.
- package/assets/.appweaver/DESIGN-FORMAT.md +45 -21
- package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +62 -14
- package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +6 -4
- package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +9 -1
- package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +21 -0
- package/assets/.appweaver/orchestrator/orchestrator.py +23 -1
- package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +18 -11
- package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +5 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +298 -109
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +161 -34
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +125 -24
- package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +18 -7
- package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +182 -39
- package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +300 -35
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +190 -31
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +93 -8
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +34 -7
- package/assets/.appweaver/orchestrator/workflows/aw-spec-recall-delta.orch.yaml +319 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +125 -24
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +846 -35
- package/assets/.appweaver/scripts/bash/common.sh +28 -1
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +843 -46
- package/assets/.appweaver/scripts/python/aw-inventory.py +3 -2
- package/assets/.appweaver/templates/design-template.md +41 -30
- package/assets/.appweaver/templates/spec-template.md +7 -4
- package/assets/.appweaver/templates/ui-design-template.md +7 -3
- package/assets/guardrails/domain/healthcare/auditing.domain.md +3 -3
- package/assets/guardrails/domain/pharma/auditing.domain.md +3 -3
- package/assets/guardrails/technology/dotnet-webapi/api-versioning.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/auditing.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/authorization.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/clean-architecture.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/cqrs.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/data-classification.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/eventing.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/folder-structure.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/modular-monolith.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/persistence.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/vertical-slices.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/zero-trust.md +1 -1
- package/assets/guardrails/technology/nextjs/accessibility-implementation.md +1 -1
- package/assets/guardrails/technology/nextjs/api-integration.dotnet-webapi.md +1 -1
- package/assets/guardrails/technology/nextjs/api-integration.java-spring.md +1 -1
- package/assets/guardrails/technology/nextjs/auth-session.md +1 -1
- package/assets/guardrails/technology/nextjs/component-architecture.md +1 -1
- package/assets/guardrails/technology/nextjs/design-system.md +1 -1
- package/assets/guardrails/technology/nextjs/error-handling.md +1 -1
- package/assets/guardrails/technology/nextjs/forms-and-validation.md +1 -1
- package/assets/guardrails/technology/nextjs/i18n.md +1 -1
- package/assets/guardrails/technology/nextjs/performance-budgets.md +1 -1
- package/assets/guardrails/technology/nextjs/routing-navigation.md +1 -1
- package/assets/guardrails/technology/nextjs/state-management.md +1 -1
- 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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
(
|
|
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
|
|
28
|
-
the
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
115
|
-
|
|
116
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
|
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
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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
|
|
36
|
-
|
|
37
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
# CQRS + Mediator Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions in [[cqrs.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-
|
|
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-
|
|
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
|
# 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-
|
|
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
|
# Persistence Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions in [[persistence.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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