aw-spec-cli 0.1.14 → 0.1.15
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/STACK-PROFILES.md +1 -1
- package/assets/.appweaver/orchestrator/orchestrator.py +5 -0
- package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +10 -3
- package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +38 -11
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +2 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +607 -123
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +625 -66
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-ui.orch.yaml +407 -134
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +452 -143
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +78 -14
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan-ui.orch.yaml +597 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +688 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +23 -23
- package/assets/.appweaver/orchestrator/workflows/aw-spec-story-plan.orch.yaml +945 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-sync-stories.orch.yaml +1040 -0
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +2069 -28
- package/assets/.appweaver/scripts/bash/aw-xref.sh +2 -1
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +1973 -13
- package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +2 -1
- package/assets/.appweaver/scripts/python/aw-xref.py +246 -20
- package/assets/.appweaver/templates/design-template.md +88 -54
- package/assets/.appweaver/templates/spec-template.md +12 -10
- package/assets/.appweaver/templates/story-template.md +48 -8
- package/assets/.appweaver/templates/ui-design-template.md +71 -39
- package/assets/guardrails/projects/dotnet-default-project/domain-rule-bindings.md +19 -7
- package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +35 -26
- package/package.json +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-design-ui.orch.yaml +0 -386
- package/assets/.appweaver/orchestrator/workflows/aw-spec-design.orch.yaml +0 -382
|
@@ -443,7 +443,7 @@ they are content the kit cannot invent:
|
|
|
443
443
|
| `{{backend_ecosystem}}` / `{{frontend_ecosystem}}` | that lane's `ecosystem` |
|
|
444
444
|
|
|
445
445
|
```md
|
|
446
|
-
## /aw-spec-
|
|
446
|
+
## /aw-spec-plan
|
|
447
447
|
- guardrails/technology/{{stack}}/persistence.md
|
|
448
448
|
- guardrails/technology/{{frontend_stack}}/ui-constitution.md
|
|
449
449
|
```
|
|
@@ -1345,6 +1345,11 @@ class Orchestrator:
|
|
|
1345
1345
|
raise Stop(f"loop '{loop_id}': 'over' is not a list: {step.get('over')}")
|
|
1346
1346
|
for idx, item in enumerate(items):
|
|
1347
1347
|
if max_it is not None and idx >= max_it:
|
|
1348
|
+
# Says so, the way the while branch does. A foreach that stops early
|
|
1349
|
+
# drops the tail of its list, and a run that drops work in silence
|
|
1350
|
+
# reports the same success as one that did all of it.
|
|
1351
|
+
self.emit(f"[loop] {loop_id} hit max_iterations={max_it} — "
|
|
1352
|
+
f"{len(items) - max_it} item(s) not run")
|
|
1348
1353
|
break
|
|
1349
1354
|
self.vars[as_name] = item
|
|
1350
1355
|
self.vars[as_name + "_index"] = idx
|
|
@@ -35,8 +35,15 @@ partition; preserve it exactly.
|
|
|
35
35
|
into the spec's CN-/DC-/IC- (design/implement never see these files). -->
|
|
36
36
|
- guardrails/projects/[project]/domain/[each generated domain rule file].md
|
|
37
37
|
|
|
38
|
-
## /aw-spec-
|
|
39
|
-
_None — design loads no domain file. Domain reaches
|
|
38
|
+
## /aw-spec-plan
|
|
39
|
+
_None — the service lane's design loads no domain file. Domain reaches it only through the spec
|
|
40
|
+
(BR-/CN-/DC-/IC-)._
|
|
41
|
+
|
|
42
|
+
## /aw-spec-plan-ui
|
|
43
|
+
_None — the frontend lane's design loads no domain file either: domain reaches frontend-plan.md
|
|
44
|
+
as spec ids (UX-/CN-/DC-/IC-). Written out rather than left absent, because an absent heading and
|
|
45
|
+
an empty one behave identically and only one of them is a decision. Keep this heading even in a
|
|
46
|
+
backend-only repo — it costs nothing and records the partition._
|
|
40
47
|
|
|
41
48
|
## /aw-spec-implement
|
|
42
49
|
_None — implement loads no domain file. Domain reaches implement only through design.md._
|
|
@@ -54,6 +61,6 @@ _None — implement loads no domain file. Domain reaches implement only through
|
|
|
54
61
|
|---|---|---|
|
|
55
62
|
| /aw-spec-constitution | [n] | domain principles |
|
|
56
63
|
| /aw-spec-specify | [n] | author into spec (lift → CN-/DC-/IC-) |
|
|
57
|
-
| /aw-spec-
|
|
64
|
+
| /aw-spec-plan | 0 | none — spec is the only domain input |
|
|
58
65
|
| /aw-spec-implement | 0 | none — design is the only domain input |
|
|
59
66
|
| /aw-spec-gate | [n] | conformance checklist (validate, don't author) |
|
|
@@ -43,7 +43,7 @@ refers to it directly, as-is.
|
|
|
43
43
|
wired via domain-rule-bindings). No technology rule may appear under this heading. -->
|
|
44
44
|
- guardrails/projects/[project]/service/domain-modelling.md
|
|
45
45
|
|
|
46
|
-
## /aw-spec-
|
|
46
|
+
## /aw-spec-plan
|
|
47
47
|
<!-- The as-built architecture / cross-cutting technical rules the design author mediates the spec
|
|
48
48
|
against. NO domain file here — domain reaches design only as spec ids. -->
|
|
49
49
|
- guardrails/projects/[project]/service/[as-built-architecture].md
|
|
@@ -62,7 +62,7 @@ refers to it directly, as-is.
|
|
|
62
62
|
- guardrails/projects/[project]/service/[as-built-architecture].md
|
|
63
63
|
|
|
64
64
|
## /aw-spec-analyze-slice
|
|
65
|
-
<!-- The
|
|
65
|
+
<!-- The spec↔code conformance gate's TECHNICAL checklist (validate, don't author). -->
|
|
66
66
|
- guardrails/projects/[project]/service/[testing/convention rule to validate against].md
|
|
67
67
|
|
|
68
68
|
## /aw-spec-adopt
|
|
@@ -86,13 +86,34 @@ refers to it directly, as-is.
|
|
|
86
86
|
a runtime/hosting concern file. NOT data-migration (migration is the deferred later phase). -->
|
|
87
87
|
- guardrails/projects/[project]/service/[runtime/hosting rule].md
|
|
88
88
|
|
|
89
|
-
<!--
|
|
90
|
-
|
|
91
|
-
headings and before the quick-reference table,
|
|
92
|
-
code.
|
|
93
|
-
|
|
94
|
-
/
|
|
95
|
-
|
|
89
|
+
<!-- THE FRONTEND LANE'S THREE HEADINGS. None of them is written by the step that authors
|
|
90
|
+
this map; onboard's frontend rule-set step APPENDS all three here, after the technical
|
|
91
|
+
headings and before the quick-reference table, and ONLY where the scan found a UI in the
|
|
92
|
+
code. A backend-only repo never gets any of them, which is correct and not an omission.
|
|
93
|
+
|
|
94
|
+
## /aw-spec-ui-constitution — the ratifiable lane standards, frontend/ui-constitution.md
|
|
95
|
+
first. It is also the authoritative signal that this project HAS a frontend lane: a
|
|
96
|
+
later /appweaver constitution reads it to decide whether to author constitution.ui.md
|
|
97
|
+
at all.
|
|
98
|
+
## /aw-spec-plan-ui — the DESIGN set /appweaver plan-ui works from when it authors
|
|
99
|
+
or conforms frontend-plan.md: composition, routing, client state, interaction states,
|
|
100
|
+
forms, accessibility, i18n, performance — whichever of those the generated set holds.
|
|
101
|
+
## /aw-spec-implement-ui — the CODE-GENERATION set /appweaver implement-ui builds
|
|
102
|
+
against: conventions, the client/service pairing, styling, forms, accessibility, i18n,
|
|
103
|
+
performance, testing — again, whichever exist.
|
|
104
|
+
|
|
105
|
+
THE TWO PHASE SETS OVERLAP ON PURPOSE. A concern like forms, accessibility, i18n or
|
|
106
|
+
performance carries a DESIGN half and an IMPLEMENT half of one rule — the design decides
|
|
107
|
+
the states, affordances and targets; implement realises them. A rule mapped under only
|
|
108
|
+
one heading loses the pairing, and the half that goes unread is the half that goes
|
|
109
|
+
unbuilt. Map such a file under BOTH.
|
|
110
|
+
|
|
111
|
+
WHY ALL THREE AND NOT JUST THE FIRST. `## /aw-spec-ui-constitution` alone wires the lane
|
|
112
|
+
for re-ratification and NOTHING else: with no `## /aw-spec-plan-ui`, plan-ui loads zero
|
|
113
|
+
mapped frontend rules and designs the experience from constitution.ui.md alone, while the
|
|
114
|
+
files it needed sit on disk unreferenced — and because an absent heading soft-continues,
|
|
115
|
+
nobody is told. Both phases ship (/appweaver plan-ui, /appweaver implement-ui), so both
|
|
116
|
+
headings are claims the kit CAN honour.
|
|
96
117
|
|
|
97
118
|
Do NOT add /aw-spec-characterize or /aw-spec-parity in the DEV flow — characterize is
|
|
98
119
|
opt-on-touch and parity is deferred to the migration phase. Add any other heading later
|
|
@@ -106,11 +127,17 @@ refers to it directly, as-is.
|
|
|
106
127
|
| Command | Technical rule files | Role |
|
|
107
128
|
|---|---|---|
|
|
108
129
|
| /aw-spec-specify | 1 | the as-built modelling methodology the domain model is expressed in — no technology |
|
|
109
|
-
| /aw-spec-
|
|
130
|
+
| /aw-spec-plan | [n] | as-built architecture the design author mediates the spec against |
|
|
110
131
|
| /aw-spec-implement | [n] | code-generation set the generator builds against (from design.md) |
|
|
111
132
|
| /aw-spec-implement-delta | [n] | same code-generation set, scoped to the open change's delta-design |
|
|
112
133
|
| /aw-spec-build | [n] | layering + convention rules the compile-fixer respects |
|
|
113
|
-
| /aw-spec-analyze-slice | [n] | conformance rules the
|
|
134
|
+
| /aw-spec-analyze-slice | [n] | conformance rules the spec↔code gate validates against |
|
|
114
135
|
| /aw-spec-adopt | [n] | technical reference set for the reversed design (brownfield) |
|
|
115
136
|
| /aw-spec-constitution | [n] | the standards the technical constitution half is re-ratified from |
|
|
116
137
|
| /aw-spec-run | [n] | runtime/execution conventions the app-run step honors (only if evidenced) |
|
|
138
|
+
|
|
139
|
+
<!-- The frontend lane's rows are appended by the same step that appends its headings, and
|
|
140
|
+
only where the lane exists:
|
|
141
|
+
| /aw-spec-ui-constitution | [n] | the ratifiable lane standards the UI constitution half is re-ratified from |
|
|
142
|
+
| /aw-spec-plan-ui | [n] | the as-built experience rules plan-ui authors frontend-plan.md against |
|
|
143
|
+
| /aw-spec-implement-ui | [n] | the as-built code-generation set implement-ui builds the UI against | -->
|
|
@@ -637,7 +637,8 @@ workflow:
|
|
|
637
637
|
spec.md (a resolved [NEEDS CLARIFICATION] / Assumption) or log a deviation.
|
|
638
638
|
Review items: {{review_items}}
|
|
639
639
|
- "## How to proceed": resolve blocking gaps first; then the slice is a normal
|
|
640
|
-
feature — run /appweaver
|
|
640
|
+
feature — run /appweaver plan (which renames this design.md to backend-plan.md and
|
|
641
|
+
conforms it) and then /appweaver analyze-design (the spec↔plan gate), then
|
|
641
642
|
drive every change through the CR delta loop. If a change edits untested legacy
|
|
642
643
|
behaviour with blast radius, characterize just that surface first (optional
|
|
643
644
|
on-touch fence) — it is not a required phase.
|