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.
Files changed (69) hide show
  1. package/assets/.appweaver/DESIGN-FORMAT.md +18 -18
  2. package/assets/.appweaver/ORCH-DIALECT.md +1 -3
  3. package/assets/.appweaver/RULE-PARTITION.md +29 -13
  4. package/assets/.appweaver/STACK-PROFILES.md +10 -9
  5. package/assets/.appweaver/orchestrator/.state/smoke.state.json +32 -0
  6. package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +4 -1
  7. package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +251 -0
  8. package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +104 -35
  9. package/assets/.appweaver/orchestrator/orchestrator.py +5 -4
  10. package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +94 -36
  11. package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +1 -1
  12. package/assets/.appweaver/orchestrator/rev-templates/domain-model-template.skeleton.md +115 -0
  13. package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +2 -9
  14. package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +16 -40
  15. package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +38 -17
  16. package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +8 -8
  17. package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +10 -11
  18. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +673 -0
  19. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +535 -0
  20. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +643 -0
  21. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +78 -626
  22. package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +4 -4
  23. package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +7 -7
  24. package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +16 -14
  25. package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +2 -2
  26. package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +243 -144
  27. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +882 -464
  28. package/assets/.appweaver/orchestrator/workflows/aw-spec-inventory.orch.yaml +4 -4
  29. package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +32 -91
  30. package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +2 -2
  31. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +832 -477
  32. package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +2 -2
  33. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-bounded-context.orch.yaml +132 -0
  34. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +38 -5
  35. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +3 -3
  36. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +271 -892
  37. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +1096 -2911
  38. package/assets/.appweaver/scripts/bash/aw-xref.sh +1 -2
  39. package/assets/.appweaver/scripts/bash/common.sh +47 -0
  40. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +936 -2766
  41. package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +1 -2
  42. package/assets/.appweaver/scripts/python/aw-payload-parity.py +174 -0
  43. package/assets/.appweaver/scripts/python/aw-stack.py +6 -2
  44. package/assets/.appweaver/scripts/python/aw-xref.py +185 -292
  45. package/assets/.appweaver/templates/constitution-ui-template.md +1 -1
  46. package/assets/.appweaver/templates/delta-design-template.md +120 -30
  47. package/assets/.appweaver/templates/delta-domain-model-template.md +81 -0
  48. package/assets/.appweaver/templates/delta-spec-template.md +43 -17
  49. package/assets/.appweaver/templates/design-template.md +68 -98
  50. package/assets/.appweaver/templates/domain-model-template.md +130 -0
  51. package/assets/.appweaver/templates/okf-concept-template.md +2 -2
  52. package/assets/.appweaver/templates/source-map-template.md +3 -3
  53. package/assets/.appweaver/templates/spec-template.md +100 -122
  54. package/assets/.appweaver/templates/ui-delta-design-template.md +159 -0
  55. package/assets/.appweaver/templates/ui-design-template.md +46 -75
  56. package/assets/guardrails/projects/dotnet-default-project/domain-rule-bindings.md +7 -18
  57. package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +34 -39
  58. package/assets/guardrails/requirement-spec.txt +2 -2
  59. package/assets/guardrails/technology/dotnet-webapi/testing.md +1 -1
  60. package/package.json +1 -1
  61. package/assets/.appweaver/orchestrator/modules/delta-design.orch.yaml +0 -105
  62. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +0 -251
  63. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +0 -749
  64. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +0 -253
  65. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-ui.orch.yaml +0 -540
  66. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan-ui.orch.yaml +0 -597
  67. package/assets/.appweaver/orchestrator/workflows/aw-spec-story-plan.orch.yaml +0 -945
  68. package/assets/.appweaver/orchestrator/workflows/aw-spec-sync-stories.orch.yaml +0 -1040
  69. 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. -->