aw-spec-cli 0.1.15 → 0.1.17
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 +18 -18
- package/assets/.appweaver/ORCH-DIALECT.md +1 -3
- package/assets/.appweaver/RULE-PARTITION.md +29 -13
- package/assets/.appweaver/STACK-PROFILES.md +10 -9
- package/assets/.appweaver/orchestrator/.state/smoke.state.json +32 -0
- package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +4 -1
- package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +251 -0
- package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +104 -35
- package/assets/.appweaver/orchestrator/orchestrator.py +5 -4
- package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +94 -36
- package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +1 -1
- package/assets/.appweaver/orchestrator/rev-templates/domain-model-template.skeleton.md +115 -0
- package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +2 -9
- package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +16 -40
- package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +38 -17
- package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +8 -8
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +10 -11
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +673 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +535 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +643 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +78 -626
- package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +7 -7
- package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +16 -14
- package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +243 -144
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +882 -464
- package/assets/.appweaver/orchestrator/workflows/aw-spec-inventory.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +32 -91
- package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +832 -477
- package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-bounded-context.orch.yaml +132 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +38 -5
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +271 -892
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +1096 -2911
- package/assets/.appweaver/scripts/bash/aw-xref.sh +1 -2
- package/assets/.appweaver/scripts/bash/common.sh +47 -0
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +936 -2766
- package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +1 -2
- package/assets/.appweaver/scripts/python/aw-payload-parity.py +174 -0
- package/assets/.appweaver/scripts/python/aw-stack.py +6 -2
- package/assets/.appweaver/scripts/python/aw-xref.py +185 -292
- package/assets/.appweaver/templates/constitution-ui-template.md +1 -1
- package/assets/.appweaver/templates/delta-design-template.md +120 -30
- package/assets/.appweaver/templates/delta-domain-model-template.md +81 -0
- package/assets/.appweaver/templates/delta-spec-template.md +43 -17
- package/assets/.appweaver/templates/design-template.md +68 -98
- package/assets/.appweaver/templates/domain-model-template.md +130 -0
- package/assets/.appweaver/templates/okf-concept-template.md +2 -2
- package/assets/.appweaver/templates/source-map-template.md +3 -3
- package/assets/.appweaver/templates/spec-template.md +100 -122
- package/assets/.appweaver/templates/ui-delta-design-template.md +159 -0
- package/assets/.appweaver/templates/ui-design-template.md +46 -75
- package/assets/guardrails/projects/dotnet-default-project/domain-rule-bindings.md +7 -18
- package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +34 -39
- package/assets/guardrails/requirement-spec.txt +2 -2
- package/assets/guardrails/technology/dotnet-webapi/testing.md +1 -1
- package/package.json +1 -1
- package/assets/.appweaver/orchestrator/modules/delta-design.orch.yaml +0 -105
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +0 -251
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +0 -749
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +0 -253
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-ui.orch.yaml +0 -540
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan-ui.orch.yaml +0 -597
- package/assets/.appweaver/orchestrator/workflows/aw-spec-story-plan.orch.yaml +0 -945
- package/assets/.appweaver/orchestrator/workflows/aw-spec-sync-stories.orch.yaml +0 -1040
- package/assets/.appweaver/templates/story-template.md +0 -147
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: [Feature-NNN]
|
|
3
|
-
type: functional
|
|
4
|
-
status: open
|
|
5
|
-
title: [one line — the outcome this story delivers]
|
|
6
|
-
exercises: []
|
|
7
|
-
spec_version: [vN.N]
|
|
8
|
-
depends_on: []
|
|
9
|
-
wave: 1
|
|
10
|
-
follows:
|
|
11
|
-
work_item:
|
|
12
|
-
created: [DATE]
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<!--
|
|
16
|
-
USER STORY — one execution slice over a feature's spec.
|
|
17
|
-
|
|
18
|
-
Canonical home: specs/<Feature>/stories/<Feature-NNN>.md
|
|
19
|
-
Execution artefacts, once story-plan has run: specs/<Feature>/stories/<Feature-NNN>/
|
|
20
|
-
(story-backend-plan.md and story-frontend-plan.md — the ephemeral designs, one per
|
|
21
|
-
declared lane; every run appends a pass to each lane in scope, the latest pass wins,
|
|
22
|
-
and a hand edit to that pass is what implement builds)
|
|
23
|
-
|
|
24
|
-
A story is a slice of work over a spec that is already written. It is NEVER a proposal
|
|
25
|
-
to change the spec — nothing here merges back into spec.md. When a story genuinely
|
|
26
|
-
needs the contract to change, update-spec folds it back through specify's
|
|
27
|
-
checklist -> clarify -> validate loop, and the spec's Change History gains a row.
|
|
28
|
-
|
|
29
|
-
ONE STORY, ONE FEATURE. A story whose design touches a second feature is failed by
|
|
30
|
-
analysis. Cross-feature ordering goes in depends_on, not in a second story.
|
|
31
|
-
|
|
32
|
-
FRONTMATTER — every field the gates read lives here, so checking the backlog is a
|
|
33
|
-
directory scan rather than a markdown parse.
|
|
34
|
-
|
|
35
|
-
id Minted by the kit: the feature name plus the next free number in
|
|
36
|
-
stories/. user-story refuses to write over an existing file, so a
|
|
37
|
-
collision is an add/add git conflict, never a silent overwrite.
|
|
38
|
-
change-story-id corrects it while it is still legal — see below.
|
|
39
|
-
|
|
40
|
-
type functional | technical
|
|
41
|
-
functional delivers requirement ids; exercises must be non-empty.
|
|
42
|
-
technical a refactor, dependency upgrade or performance fix. Changes
|
|
43
|
-
no requirement, so exercises stays empty and the EXISTING
|
|
44
|
-
TEST SUITE is the oracle: analyze-slice fails the story if
|
|
45
|
-
any test was MODIFIED, not only if a test is red. A test
|
|
46
|
-
that had to change means behaviour changed, and the work
|
|
47
|
-
was a functional story citing an FR-. Technical stories
|
|
48
|
-
deliver no requirement and do not count toward the
|
|
49
|
-
"no open stories" completeness rule.
|
|
50
|
-
|
|
51
|
-
status open | closed | cancelled
|
|
52
|
-
cancelled is what keeps "open" meaningful — abandoned work that stays
|
|
53
|
-
open blocks its requirement from ever reading as delivered.
|
|
54
|
-
|
|
55
|
-
exercises The FR-/BR- ids this story delivers, e.g. [FR-003, BR-002]. This is the
|
|
56
|
-
behavioural anchor: design and code trace to these ids, never to a story
|
|
57
|
-
id. A requirement is DELIVERED when it has NO OPEN STORIES — not when a
|
|
58
|
-
particular story closed, because a follow-on may carry the remainder.
|
|
59
|
-
|
|
60
|
-
spec_version The spec version this story last synced at. A row above this version
|
|
61
|
-
naming an id in exercises means the story is stale; check-stories
|
|
62
|
-
reports it and sync-stories acts on it. Restamped on every sync.
|
|
63
|
-
|
|
64
|
-
depends_on Story ids that must land first, e.g. [Payment-004]. About CODE ordering,
|
|
65
|
-
not spec: implement warns on an open dependency, which is where calling
|
|
66
|
-
into code that does not exist starts to cost something. close-story
|
|
67
|
-
warns but does not block — a dependency still being open does not make
|
|
68
|
-
this story's own work wrong. A cycle is rejected at authoring time.
|
|
69
|
-
sync-stories writes this as a UNION with what is already here, so an
|
|
70
|
-
edge added by hand — including one naming another feature's story — is
|
|
71
|
-
never lost to a re-sync.
|
|
72
|
-
|
|
73
|
-
wave The dependency LEVEL this story sits at, computed by sync-stories from
|
|
74
|
-
depends_on:. Wave 1 means nothing has to land before it; wave N means
|
|
75
|
-
every story in depends_on: sits in a wave below N. STORIES SHARING A WAVE
|
|
76
|
-
HAVE NO ORDERING BETWEEN THEM and can be picked up in parallel — which is
|
|
77
|
-
why it is a wave and not an order or a priority. A rank would have to
|
|
78
|
-
invent a difference between two stories that genuinely have none, and the
|
|
79
|
-
fact that they are equal is the useful half.
|
|
80
|
-
|
|
81
|
-
It says when a story becomes ELIGIBLE, not when anyone should start it.
|
|
82
|
-
Nothing waits for a whole wave to finish: a story is startable the moment
|
|
83
|
-
its own dependencies are done, whatever else shares its wave. A story
|
|
84
|
-
raised by hand floors at 1 — nothing is KNOWN to come first.
|
|
85
|
-
|
|
86
|
-
follows On a follow-on only: the story id this one carries the remainder of.
|
|
87
|
-
When the spec moves under a story that already has a story plan,
|
|
88
|
-
sync-stories leaves that story untouched and mints a follow-on
|
|
89
|
-
instead. There is no superseded status; the link is the whole record.
|
|
90
|
-
|
|
91
|
-
work_item Optional tracker id (JIRA-1234). The kit's id and the tracker's id stay
|
|
92
|
-
separate so the kit depends on no particular tracker.
|
|
93
|
-
|
|
94
|
-
CHANGE-STORY-ID IS LEGAL only while the story is open and stories/<ID>/ does not exist.
|
|
95
|
-
After story-plan runs, the id is in that directory's name, in the OKF log, in commit
|
|
96
|
-
messages and branch names — most of which the kit cannot rewrite. (The story plan's
|
|
97
|
-
TEXT never carries the id; its directory is its identity.)
|
|
98
|
-
|
|
99
|
-
stories.md beside this file is a GENERATED index. Never hand-edit it; it is rebuilt
|
|
100
|
-
from this directory, which is what keeps close-story conflict-free.
|
|
101
|
-
-->
|
|
102
|
-
|
|
103
|
-
# [Feature-NNN] — [Title]
|
|
104
|
-
|
|
105
|
-
## Story
|
|
106
|
-
|
|
107
|
-
As a [role], I want [capability], so that [outcome].
|
|
108
|
-
|
|
109
|
-
## Requirements delivered
|
|
110
|
-
|
|
111
|
-
<!-- One line per id in exercises:, saying what THIS story delivers of it. A story
|
|
112
|
-
rarely delivers a whole requirement; say which part. Empty for a technical story. -->
|
|
113
|
-
|
|
114
|
-
- **[FR-00n]** — [the part of this requirement this story delivers]
|
|
115
|
-
|
|
116
|
-
## Constraints
|
|
117
|
-
|
|
118
|
-
<!-- The spec-level bounds this slice must satisfy, carried BY ID from spec.md and never
|
|
119
|
-
restated — the spec is the wording, this is the subset that binds this story:
|
|
120
|
-
|
|
121
|
-
CN- constraints & NFRs DC- data classification
|
|
122
|
-
IC- integration contracts UX- experience standards
|
|
123
|
-
|
|
124
|
-
Plus the Experience Scope floors (device / browser / assistive technology) wherever
|
|
125
|
-
this slice has a UI surface. UX- and the floors are what stop a story being built to
|
|
126
|
-
a standard the product does not hold, and they are the half most often lost: they
|
|
127
|
-
reach no UI phase except through the story.
|
|
128
|
-
|
|
129
|
-
These are NOT in `exercises:`. That field is FR-/BR- only, because it is the
|
|
130
|
-
delivery relation — what this story DELIVERS — and a constraint is not delivered,
|
|
131
|
-
it is met. story-plan carries these ids into its design pass; analyze-slice
|
|
132
|
-
traces it. Write "None" for a class that does not touch this story. -->
|
|
133
|
-
|
|
134
|
-
- **[UX-00n]** — [what this slice must satisfy of it]
|
|
135
|
-
|
|
136
|
-
## Acceptance
|
|
137
|
-
|
|
138
|
-
<!-- Checkable statements, in the spec's vocabulary. These are what analyze-slice pairs
|
|
139
|
-
tests against. For a technical story, state the no-behaviour-change invariant here
|
|
140
|
-
and name the suite that proves it. -->
|
|
141
|
-
|
|
142
|
-
- [ ] [observable outcome]
|
|
143
|
-
|
|
144
|
-
## Notes
|
|
145
|
-
|
|
146
|
-
<!-- Optional: sequencing, risks, what is deliberately out of this slice. Anything that
|
|
147
|
-
belongs to the CONTRACT belongs in spec.md via update-spec, not here. -->
|