aw-spec-cli 0.1.5 → 0.1.7

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 (205) hide show
  1. package/assets/.agents/agent.json +1 -1
  2. package/assets/.agents/skills/{aw-spec-orch → appweaver}/SKILL.md +10 -10
  3. package/assets/.agents/skills/{aw-spec-orch-demo → appweaver-demo}/SKILL.md +9 -9
  4. package/assets/.claude/agent.json +1 -1
  5. package/assets/.claude/skills/{aw-spec-orch → appweaver}/SKILL.md +10 -10
  6. package/assets/.claude/skills/{aw-spec-orch-demo → appweaver-demo}/SKILL.md +9 -9
  7. package/assets/.kilocode/agent.json +1 -1
  8. package/assets/.kilocode/workflows/{aw-spec-orch-demo.md → appweaver-demo.md} +9 -9
  9. package/assets/.kilocode/workflows/{aw-spec-orch.md → appweaver.md} +10 -10
  10. package/assets/docs/pharma-constitution.my-ref.md +86 -0
  11. package/dist/utils/paths.js +1 -1
  12. package/dist/utils/paths.js.map +1 -1
  13. package/package.json +1 -1
  14. package/assets/.aw-spec/DESIGN-FORMAT.md +0 -151
  15. package/assets/.aw-spec/ORCH-DIALECT.md +0 -156
  16. package/assets/.aw-spec/RULE-PARTITION.md +0 -126
  17. package/assets/.aw-spec/domain.json +0 -3
  18. package/assets/.aw-spec/extensions/.registry +0 -19
  19. package/assets/.aw-spec/extensions/agent-context/README.md +0 -57
  20. package/assets/.aw-spec/extensions/agent-context/agent-context-config.yml +0 -4
  21. package/assets/.aw-spec/extensions/agent-context/commands/aw-spec.agent-context.update.md +0 -26
  22. package/assets/.aw-spec/extensions/agent-context/extension.yml +0 -37
  23. package/assets/.aw-spec/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -201
  24. package/assets/.aw-spec/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -237
  25. package/assets/.aw-spec/extensions.yml +0 -16
  26. package/assets/.aw-spec/feature.json +0 -3
  27. package/assets/.aw-spec/init-options.json +0 -9
  28. package/assets/.aw-spec/integration.json +0 -15
  29. package/assets/.aw-spec/integrations/aw-spec.manifest.json +0 -9
  30. package/assets/.aw-spec/interpreter/run-skill.py +0 -1158
  31. package/assets/.aw-spec/memory/constitution.md +0 -50
  32. package/assets/.aw-spec/orchestrator/AGENT-PROFILE.md +0 -94
  33. package/assets/.aw-spec/orchestrator/README.md +0 -300
  34. package/assets/.aw-spec/orchestrator/adapters/claude_agent_sdk.py +0 -74
  35. package/assets/.aw-spec/orchestrator/adapters/google_antigravity.py +0 -74
  36. package/assets/.aw-spec/orchestrator/modules/delta-design.orch.yaml +0 -105
  37. package/assets/.aw-spec/orchestrator/modules/delta-spec.orch.yaml +0 -79
  38. package/assets/.aw-spec/orchestrator/modules/domain-select.orch.yaml +0 -81
  39. package/assets/.aw-spec/orchestrator/modules/tech-select.orch.yaml +0 -75
  40. package/assets/.aw-spec/orchestrator/orchestrator.py +0 -1721
  41. package/assets/.aw-spec/orchestrator/rev-templates/ai-rules.reference.md +0 -40
  42. package/assets/.aw-spec/orchestrator/rev-templates/comandrulemap.skeleton.md +0 -59
  43. package/assets/.aw-spec/orchestrator/rev-templates/commandtechrulemap.skeleton.md +0 -97
  44. package/assets/.aw-spec/orchestrator/rev-templates/domain-constitution.skeleton.md +0 -61
  45. package/assets/.aw-spec/orchestrator/rev-templates/domain-requirements.skeleton.md +0 -48
  46. package/assets/.aw-spec/orchestrator/rev-templates/domain-rule-file.skeleton.md +0 -39
  47. package/assets/.aw-spec/orchestrator/rev-templates/technical-constitution.skeleton.md +0 -106
  48. package/assets/.aw-spec/orchestrator/rev-templates/technical-rule-file.skeleton.md +0 -54
  49. package/assets/.aw-spec/orchestrator/workflows/_smoke.orch.yaml +0 -160
  50. package/assets/.aw-spec/orchestrator/workflows/aw-spec-add-component.orch.yaml +0 -244
  51. package/assets/.aw-spec/orchestrator/workflows/aw-spec-adopt.orch.yaml +0 -775
  52. package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +0 -248
  53. package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +0 -261
  54. package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +0 -425
  55. package/assets/.aw-spec/orchestrator/workflows/aw-spec-build.orch.yaml +0 -188
  56. package/assets/.aw-spec/orchestrator/workflows/aw-spec-characterize.orch.yaml +0 -474
  57. package/assets/.aw-spec/orchestrator/workflows/aw-spec-close-delta.orch.yaml +0 -181
  58. package/assets/.aw-spec/orchestrator/workflows/aw-spec-constitution.orch.yaml +0 -284
  59. package/assets/.aw-spec/orchestrator/workflows/aw-spec-demo.orch.yaml +0 -103
  60. package/assets/.aw-spec/orchestrator/workflows/aw-spec-dependency-tree.orch.yaml +0 -69
  61. package/assets/.aw-spec/orchestrator/workflows/aw-spec-deploy.orch.yaml +0 -85
  62. package/assets/.aw-spec/orchestrator/workflows/aw-spec-design.orch.yaml +0 -382
  63. package/assets/.aw-spec/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +0 -382
  64. package/assets/.aw-spec/orchestrator/workflows/aw-spec-foundation.orch.yaml +0 -246
  65. package/assets/.aw-spec/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +0 -231
  66. package/assets/.aw-spec/orchestrator/workflows/aw-spec-implement.orch.yaml +0 -258
  67. package/assets/.aw-spec/orchestrator/workflows/aw-spec-inventory.orch.yaml +0 -236
  68. package/assets/.aw-spec/orchestrator/workflows/aw-spec-onboard.orch.yaml +0 -949
  69. package/assets/.aw-spec/orchestrator/workflows/aw-spec-parity.orch.yaml +0 -293
  70. package/assets/.aw-spec/orchestrator/workflows/aw-spec-run.orch.yaml +0 -177
  71. package/assets/.aw-spec/orchestrator/workflows/aw-spec-select-domain.orch.yaml +0 -79
  72. package/assets/.aw-spec/orchestrator/workflows/aw-spec-select-feature.orch.yaml +0 -128
  73. package/assets/.aw-spec/orchestrator/workflows/aw-spec-specify.orch.yaml +0 -412
  74. package/assets/.aw-spec/scripts/bash/aw-inventory.sh +0 -14
  75. package/assets/.aw-spec/scripts/bash/aw-parity.sh +0 -13
  76. package/assets/.aw-spec/scripts/bash/aw-rev-constitution.sh +0 -13
  77. package/assets/.aw-spec/scripts/bash/aw-spec-actions.sh +0 -1899
  78. package/assets/.aw-spec/scripts/bash/aw-xref.sh +0 -15
  79. package/assets/.aw-spec/scripts/bash/common.sh +0 -533
  80. package/assets/.aw-spec/scripts/powershell/aw-inventory.ps1 +0 -14
  81. package/assets/.aw-spec/scripts/powershell/aw-parity.ps1 +0 -13
  82. package/assets/.aw-spec/scripts/powershell/aw-rev-constitution.ps1 +0 -13
  83. package/assets/.aw-spec/scripts/powershell/aw-spec-actions.ps1 +0 -1563
  84. package/assets/.aw-spec/scripts/powershell/aw-xref.ps1 +0 -15
  85. package/assets/.aw-spec/scripts/python/aw-inventory.py +0 -683
  86. package/assets/.aw-spec/scripts/python/aw-parity.py +0 -380
  87. package/assets/.aw-spec/scripts/python/aw-rev-constitution.py +0 -312
  88. package/assets/.aw-spec/scripts/python/aw-xref.py +0 -1330
  89. package/assets/.aw-spec/scripts/python/validate_okf.py +0 -349
  90. package/assets/.aw-spec/templates/constitution-domain-template.md +0 -75
  91. package/assets/.aw-spec/templates/constitution-technical-template.md +0 -70
  92. package/assets/.aw-spec/templates/delta-design-template.md +0 -69
  93. package/assets/.aw-spec/templates/delta-spec-template.md +0 -60
  94. package/assets/.aw-spec/templates/design-template.md +0 -383
  95. package/assets/.aw-spec/templates/okf-concept-template.md +0 -103
  96. package/assets/.aw-spec/templates/parity-manifest-template.json +0 -49
  97. package/assets/.aw-spec/templates/source-map-template.md +0 -85
  98. package/assets/.aw-spec/templates/spec-template.md +0 -252
  99. package/assets/docs/ModularMonolith/ModularMonolith.Reference.pack.txt +0 -25248
  100. package/assets/docs/ModularMonolith/ModularMonolith.pack.txt +0 -5726
  101. package/assets/docs/ModularMonolith/pack-foundation.ps1 +0 -145
  102. package/assets/docs/ModularMonolith/pack-foundation.sh +0 -196
  103. package/assets/docs/ModularMonolith/pack-reference-foundation.ps1 +0 -157
  104. package/assets/docs/ModularMonolith/pack-reference-foundation.sh +0 -209
  105. package/assets/docs/ModularMonolith/unpack-foundation.ps1 +0 -126
  106. package/assets/docs/ModularMonolith/unpack-foundation.sh +0 -217
  107. package/assets/docs/ModularMonolith/unpack-reference-foundation.ps1 +0 -129
  108. package/assets/docs/ModularMonolith/unpack-reference-foundation.sh +0 -218
  109. package/assets/docs/README.md +0 -106
  110. package/assets/docs/VerticalSlice/PACKAGING.md +0 -185
  111. package/assets/docs/VerticalSlice/VerticalSlice.Reference.pack.txt +0 -19318
  112. package/assets/docs/VerticalSlice/VerticalSlice.pack.txt +0 -2833
  113. package/assets/docs/VerticalSlice/pack-foundation.ps1 +0 -145
  114. package/assets/docs/VerticalSlice/pack-foundation.sh +0 -196
  115. package/assets/docs/VerticalSlice/pack-reference-foundation.ps1 +0 -157
  116. package/assets/docs/VerticalSlice/pack-reference-foundation.sh +0 -209
  117. package/assets/docs/VerticalSlice/unpack-foundation.ps1 +0 -126
  118. package/assets/docs/VerticalSlice/unpack-foundation.sh +0 -217
  119. package/assets/docs/VerticalSlice/unpack-reference-foundation.ps1 +0 -129
  120. package/assets/docs/VerticalSlice/unpack-reference-foundation.sh +0 -218
  121. package/assets/docs/architecture/clean-architecture.md +0 -71
  122. package/assets/docs/architecture/cqrs.md +0 -141
  123. package/assets/docs/architecture/eventing.md +0 -83
  124. package/assets/docs/architecture/folder-structure.md +0 -61
  125. package/assets/docs/architecture/modular-monolith.md +0 -47
  126. package/assets/docs/architecture/persistence.md +0 -269
  127. package/assets/docs/architecture/testing.md +0 -55
  128. package/assets/docs/architecture/vertical-slices.md +0 -201
  129. package/assets/docs/components/Email/README.md +0 -119
  130. package/assets/docs/components/Email/ReferenceEndpoints/SendEmailEndpoint.cs +0 -84
  131. package/assets/docs/components/Email/integration.md +0 -300
  132. package/assets/docs/components/Jobs/README.md +0 -113
  133. package/assets/docs/components/Jobs/integration.md +0 -259
  134. package/assets/docs/components/QrGenerator/README.md +0 -85
  135. package/assets/docs/components/QrGenerator/ReferenceEndpoints/GenerateQrEndpoint.cs +0 -57
  136. package/assets/docs/components/QrGenerator/integration.md +0 -230
  137. package/assets/docs/components/README.md +0 -74
  138. package/assets/docs/domain/domain-driven-design.md +0 -212
  139. package/assets/docs/domainspecs/healthcare/ai-rules.domain.md +0 -34
  140. package/assets/docs/domainspecs/healthcare/api-versioning.domain.md +0 -17
  141. package/assets/docs/domainspecs/healthcare/auditing.domain.md +0 -97
  142. package/assets/docs/domainspecs/healthcare/authorization.domain.md +0 -26
  143. package/assets/docs/domainspecs/healthcare/clinical-terms.md +0 -20
  144. package/assets/docs/domainspecs/healthcare/coding-standards.domain.md +0 -26
  145. package/assets/docs/domainspecs/healthcare/comandrulemap.md +0 -100
  146. package/assets/docs/domainspecs/healthcare/commandtechrulemap.md +0 -119
  147. package/assets/docs/domainspecs/healthcare/consent.md +0 -19
  148. package/assets/docs/domainspecs/healthcare/cqrs.domain.md +0 -12
  149. package/assets/docs/domainspecs/healthcare/data-classification.domain.md +0 -28
  150. package/assets/docs/domainspecs/healthcare/dependency-policy.domain.md +0 -11
  151. package/assets/docs/domainspecs/healthcare/dicom.md +0 -15
  152. package/assets/docs/domainspecs/healthcare/domain-driven-design.domain.md +0 -28
  153. package/assets/docs/domainspecs/healthcare/domain-requirements.md +0 -55
  154. package/assets/docs/domainspecs/healthcare/eventing.domain.md +0 -18
  155. package/assets/docs/domainspecs/healthcare/fhir.md +0 -36
  156. package/assets/docs/domainspecs/healthcare/folder-structure.domain.md +0 -23
  157. package/assets/docs/domainspecs/healthcare/hipaa.md +0 -34
  158. package/assets/docs/domainspecs/healthcare/hl7.md +0 -15
  159. package/assets/docs/domainspecs/healthcare/integration-terms.md +0 -21
  160. package/assets/docs/domainspecs/healthcare/persistence.domain.md +0 -20
  161. package/assets/docs/domainspecs/healthcare/terminology.md +0 -30
  162. package/assets/docs/domainspecs/healthcare/testing.domain.md +0 -15
  163. package/assets/docs/domainspecs/healthcare/vertical-slices.domain.md +0 -18
  164. package/assets/docs/domainspecs/healthcare/zero-trust.domain.md +0 -12
  165. package/assets/docs/domainspecs/pharma/ai-rules.domain.md +0 -32
  166. package/assets/docs/domainspecs/pharma/api-versioning.domain.md +0 -20
  167. package/assets/docs/domainspecs/pharma/atc.md +0 -22
  168. package/assets/docs/domainspecs/pharma/auditing.domain.md +0 -90
  169. package/assets/docs/domainspecs/pharma/authorization.domain.md +0 -25
  170. package/assets/docs/domainspecs/pharma/coding-standards.domain.md +0 -28
  171. package/assets/docs/domainspecs/pharma/comandrulemap.md +0 -108
  172. package/assets/docs/domainspecs/pharma/commandtechrulemap.md +0 -119
  173. package/assets/docs/domainspecs/pharma/cqrs.domain.md +0 -16
  174. package/assets/docs/domainspecs/pharma/data-classification.domain.md +0 -24
  175. package/assets/docs/domainspecs/pharma/data-provenance.md +0 -21
  176. package/assets/docs/domainspecs/pharma/dependency-policy.domain.md +0 -11
  177. package/assets/docs/domainspecs/pharma/domain-driven-design.domain.md +0 -36
  178. package/assets/docs/domainspecs/pharma/domain-requirements.md +0 -99
  179. package/assets/docs/domainspecs/pharma/eventing.domain.md +0 -18
  180. package/assets/docs/domainspecs/pharma/fhir.md +0 -31
  181. package/assets/docs/domainspecs/pharma/folder-structure.domain.md +0 -24
  182. package/assets/docs/domainspecs/pharma/hl7.md +0 -17
  183. package/assets/docs/domainspecs/pharma/idmp.md +0 -26
  184. package/assets/docs/domainspecs/pharma/integration-terms.md +0 -21
  185. package/assets/docs/domainspecs/pharma/ndc.md +0 -28
  186. package/assets/docs/domainspecs/pharma/persistence.domain.md +0 -23
  187. package/assets/docs/domainspecs/pharma/pharma-terms.md +0 -27
  188. package/assets/docs/domainspecs/pharma/product-lifecycle.domain.md +0 -30
  189. package/assets/docs/domainspecs/pharma/regulatory-compliance.md +0 -19
  190. package/assets/docs/domainspecs/pharma/terminology.md +0 -32
  191. package/assets/docs/domainspecs/pharma/testing.domain.md +0 -19
  192. package/assets/docs/domainspecs/pharma/vertical-slices.domain.md +0 -17
  193. package/assets/docs/domainspecs/pharma/zero-trust.domain.md +0 -12
  194. package/assets/docs/glossary/ai-rules.md +0 -59
  195. package/assets/docs/governance/api-versioning.md +0 -99
  196. package/assets/docs/governance/coding-standards.md +0 -87
  197. package/assets/docs/governance/dependency-policy.md +0 -40
  198. package/assets/docs/interop/ihe-conformance.md +0 -31
  199. package/assets/docs/requirement-spec.txt +0 -27
  200. package/assets/docs/security/auditing.md +0 -160
  201. package/assets/docs/security/authorization-matrix.md +0 -14
  202. package/assets/docs/security/authorization.md +0 -87
  203. package/assets/docs/security/data-classification.md +0 -38
  204. package/assets/docs/security/zero-trust.md +0 -76
  205. package/assets/docs/technology-constitution.md +0 -172
@@ -1,231 +0,0 @@
1
- # =============================================================================
2
- # aw-spec-implement-delta (orchestrator) — generate the DELTA's code from the design
3
- #
4
- # The CR analog of implement, SCOPED to the open change. GENERATE / edit exactly the
5
- # source files + paired tests that delta-design.md marks ADDED or MODIFIED, into the
6
- # existing project tree, using the master design.md as the base context. The delta
7
- # design is the authoritative source for WHAT the change is — analyze-delta-design already
8
- # conformed it to the delta spec. The target STACK is bound from the constitution.
9
- # implement-delta does NOT touch spec.md / design.md and does NOT close the change —
10
- # finalize-delta merges the delta into the master docs afterward, and close-delta bumps
11
- # the version at the very end.
12
- #
13
- # specify → design → ⟨review⟩ → analyze-delta-design → implement-delta ← you are here
14
- # → build → finalize-delta → analyze-slice → close-delta
15
- #
16
- # Prereqs: run /aw-spec-orch analyze-delta-design first (the delta design is conformed),
17
- # and the project must already be scaffolded (/aw-spec-orch foundation) — implement-delta
18
- # GENERATES into that tree.
19
- #
20
- # Launch: /aw-spec-orch implement-delta [strategy] [guidance]
21
- # =============================================================================
22
-
23
- name: aw-spec-implement-delta
24
- description: Generate only the source files + paired tests the open change's delta-design.md marks ADDED/MODIFIED, into the existing project tree, bound to the project's stack. Model-driven, delta-design-scoped; does not touch the master docs or close the change.
25
- version: 1.0.0
26
- agent_agnostic: true
27
- dialect: aw-spec.orchestrator/v1
28
-
29
- inputs:
30
- user_input:
31
- description: Optional implementation guidance (stack hints, focus area).
32
- required: false
33
- bind: USER_INPUT
34
-
35
- scripts:
36
- actions:
37
- sh: .aw-spec/scripts/bash/aw-spec-actions.sh
38
- ps1: .aw-spec/scripts/powershell/aw-spec-actions.ps1
39
- xref:
40
- sh: .aw-spec/scripts/bash/aw-xref.sh
41
- ps1: .aw-spec/scripts/powershell/aw-xref.ps1
42
-
43
- # Sticky standards seed = the UNIVERSAL always-on rule only (ai-rules). Same FRAMEWORK /
44
- # code-generation set as the forward implement — HOW to build — but no longer hardcoded:
45
- # it is CONFIGURATION, loaded per-command from docs/domainspecs/<domain>/commandtechrulemap.md
46
- # by the tech-select module (see the tech_select step below). No domain rule files:
47
- # everything domain reached the delta via delta-spec → delta-design; the tech map lists
48
- # only technical files. The architecture principles come via constitution.technical.md
49
- # (referred to directly, as-is — NOT mapped); the structure via design.md. (missing skipped)
50
- standards:
51
- - { path: docs/glossary/ai-rules.md, optional: true }
52
-
53
- workflow:
54
-
55
- # 0. TECHNICAL rule files → sticky standards (configuration, not hardcoded).
56
- # tech-select reads docs/domainspecs/<domain>/commandtechrulemap.md under
57
- # "## /aw-spec-implement-delta" and loads that set into the sticky standards the
58
- # agent_generate step ALWAYS prepends. No domain rule file is loaded here — the tech
59
- # map lists only technical files (rule-partition intact). No blocking gate: an
60
- # unconfigured project soft-continues (constitution.technical.md still carries the
61
- # tech base, referred to directly below).
62
- - id: tech_select
63
- action: include
64
- module: .aw-spec/orchestrator/modules/tech-select.orch.yaml
65
- with: { command: aw-spec-implement-delta }
66
-
67
- # 1. Resolve the current feature + its master design (the base context).
68
- - id: feature_paths
69
- action: execute_script
70
- on_error: continue # never crash raw on 'no feature set' — the gate below explains it
71
- script: { ref: actions }
72
- subcommand: feature-paths
73
- outputs:
74
- - { name: feature_dir, from: "$.feature_dir" }
75
- - { name: design_doc, from: "$.design_file" }
76
- - { name: design_exists, from: "$.design_exists" }
77
-
78
- - id: require_feature
79
- action: verify_context
80
- require_non_empty: feature_dir
81
- on_empty: stop
82
- on_empty_message: "No active feature. Run /aw-spec-orch select-feature first (pick or create the aggregate, e.g. Order), then re-run implement-delta."
83
-
84
- - id: verify_design
85
- action: verify_context
86
- require_true: design_exists
87
- on_false: stop
88
- on_false_message: "No design.md for the current feature. Run /aw-spec-orch design (and, for a change, /aw-spec-orch specify + design + analyze-delta-design) first."
89
-
90
- # 1b. Read the OPEN change (opened by cr). implement-delta needs a change to implement.
91
- - id: read_change
92
- action: execute_script
93
- script: { ref: actions }
94
- subcommand: version-read
95
- args: ["--feature-dir", "{{feature_dir}}"]
96
- outputs:
97
- - { name: active_change, from: "$.active_change" }
98
- - { name: has_change, from: "$.has_change" }
99
-
100
- - id: require_change
101
- action: verify_context
102
- require_true: has_change
103
- on_false: stop
104
- on_false_message: "No open change on this feature. Run /aw-spec-orch specify <change> then /aw-spec-orch design, review the delta docs, and /aw-spec-orch analyze-delta-design before implement-delta."
105
-
106
- # 1c. Require the FOUNDATION — a scaffolded, compiling project — to be present.
107
- # implement-delta GENERATES the delta's code INTO that tree; with no project there
108
- # is nowhere to place the files.
109
- - id: detect_foundation
110
- action: execute_script
111
- script: { ref: actions }
112
- subcommand: detect-project
113
- outputs:
114
- - { name: foundation_present, from: "$.scaffolded" }
115
- - { name: project_markers, from: "$.markers" }
116
-
117
- - id: foundation_gate
118
- action: verify_context
119
- require_true: foundation_present
120
- on_false: stop
121
- on_false_message: "No scaffolded project found — run /aw-spec-orch foundation <FoundationName> <AppName> first. implement-delta GENERATES the delta's code into the foundation's project tree (.sln/.csproj); there is nowhere to place files without it."
122
-
123
- # 2. Pre-execution hooks.
124
- - id: resolve_pre_hooks
125
- action: execute_script
126
- script: { ref: actions }
127
- subcommand: resolve-hooks
128
- args: ["--phase", "before_implement_cr"]
129
- outputs:
130
- - { name: before_hooks, from: "$.hooks" }
131
- - id: dispatch_pre_hooks
132
- action: dispatch_hooks
133
- hooks_from_variable: before_hooks
134
-
135
- # 3. Model-driven generation SCOPED to the delta: delta-design.md → the ADDED/MODIFIED
136
- # source files + paired tests. The master design.md is the base (unchanged elements
137
- # the delta depends on); the constitution/stack profile fixes HOW. The delta spec is
138
- # in context ONLY to cite traceability ids on the paired tests.
139
- # Context is fed via build_context — agent_generate reads the ENVELOPE, not a
140
- # step-level context: key (unlike agent_author/agent_query which read both).
141
- - id: ctx_generate
142
- action: build_context
143
- context:
144
- - { path: "{{feature_dir}}/changes/{{active_change}}/delta-design.md" }
145
- - { path: "{{feature_dir}}/changes/{{active_change}}/delta-spec.md" }
146
- - { path: "{{design_doc}}" }
147
- - { path: .aw-spec/memory/constitution.technical.md, optional: true } # technology base ONLY — no domain
148
- - id: generate
149
- action: agent_generate
150
- tools: "Read,Write,Edit"
151
- permission_mode: acceptEdits
152
- task: |
153
- Implement ONLY this change into the existing project tree, STRICTLY from its
154
- delta-design.md (in context). The delta design is the authoritative source of
155
- WHAT changed — analyze-delta-design already conformed it to the delta spec. The
156
- master design.md (in context) is the BASE: the unchanged elements the delta
157
- depends on; do NOT regenerate them. Guidance: {{USER_INPUT}}
158
- Rules:
159
- - SCOPE = THE DELTA ONLY. Realise exactly the elements delta-design.md marks
160
- ADDED (create the new file) or MODIFIED (edit the existing file in place).
161
- Touch NOTHING the delta does not list, except the regression re-tests below.
162
- - THE DELTA DESIGN IS THE ONLY DOMAIN INPUT. You have the delta design + master
163
- design.md + framework/code standards, and NO domain rule files. Introduce NO
164
- domain rule, identifier, terminology, or behaviour the delta design does not
165
- state. If something domain seems missing, STOP and surface it (fix it in cr /
166
- analyze-delta-design); never invent it from memory.
167
- - BIND THE STACK from the constitution's technology base + the active stack
168
- profile (language, framework, persistence, test framework). The design is
169
- technology-agnostic; do not re-decide anything the constitution already fixes.
170
- - Follow the project's existing folder/layer convention + the loaded
171
- coding-standards, dependency-policy and testing standards for HOW to structure,
172
- name, and place files. Match the surrounding code already in the tree.
173
- - Realise EVERY ADDED/MODIFIED delta element as code: one file per Domain type /
174
- Application use-case / API endpoint / Infrastructure adapter, placed by layer.
175
- Preserve the ubiquitous-language names verbatim. Enforce each new/changed
176
- Domain invariant, handler orchestration, API error contract, and the §5
177
- cross-cutting realisations (audit / retention / data-exposure — CN-/DC-) and
178
- §4.2 integration contracts (IC-) exactly as the delta design states.
179
- - COMPONENTS: if a delta element depends on a framework component, code against
180
- its ABSTRACTION / port as the delta design declares — do NOT hand-roll it.
181
- Installing the component (packages, wiring, config) is /aw-spec-orch
182
- add-component <Component>; if the port isn't present, code to it and note that
183
- as the prerequisite.
184
- - Author a paired test for every ADDED/MODIFIED behaviour / use-case / endpoint;
185
- derive the cases from the delta design's pre/post/invariant contracts and cite
186
- the delta-spec id (FR / BR / CN / DC / IC / US).
187
- - REGRESSION: for each element in the delta design's "Regression targets", verify
188
- (add/adjust a test where needed) that the existing behaviour still holds after
189
- a shared element changed — but do NOT rewrite that existing behaviour.
190
- - Where generated code depends on a delta Assumption (DA-n) / Workaround (WA-n),
191
- mark it with a comment citing that id.
192
- outputs:
193
- - { name: files, from: "$.files" }
194
-
195
- - id: verify_generated
196
- action: verify_context
197
- require_non_empty: files
198
- on_empty: stop
199
- on_empty_message: "No files generated. Ensure /aw-spec-orch design produced a filled delta-design.md (not the empty template) and it passed /aw-spec-orch analyze-delta-design, then re-run."
200
-
201
- # 3b. Refresh THIS slice's OKF concept source_files with the delta's changed files —
202
- # UNION, never replace (the delta is scoped; {{files}} is only the ADDED/MODIFIED
203
- # files). The cross-slice EDGES are refreshed later in finalize-delta, AFTER the delta
204
- # merges into the master design.md (here the master still holds the pre-change deps,
205
- # so recording edges now would read stale references). Best-effort enrichment.
206
- - id: xref_concept_merge
207
- action: execute_script
208
- on_error: continue
209
- script: { ref: xref }
210
- subcommand: concept-upsert
211
- args: ["--feature-dir", "{{feature_dir}}", "--source-files", "{{files}}", "--merge"]
212
- outputs:
213
- - { name: okf_concept, from: "$.concept" }
214
-
215
- # 4. Post-execution hooks.
216
- - id: resolve_post_hooks
217
- action: execute_script
218
- script: { ref: actions }
219
- subcommand: resolve-hooks
220
- args: ["--phase", "after_implement_cr"]
221
- outputs:
222
- - { name: after_hooks, from: "$.hooks" }
223
- - id: dispatch_post_hooks
224
- action: dispatch_hooks
225
- hooks_from_variable: after_hooks
226
-
227
- outputs:
228
- feature_dir: "{{feature_dir}}"
229
- cr_id: "{{active_change}}"
230
- files: "{{files}}"
231
- next: "/aw-spec-orch build → finalize-delta → analyze-slice → close-delta. COMPILE FIRST (build), then finalize-delta runs the downstream fence and merges the delta into spec.md + design.md — but leaves the change OPEN. analyze-slice then verifies the slice against that now-merged master (tests, domain conformance, referrer blast radius) while a red result is still recoverable. close-delta LAST archives the change and bumps the version."
@@ -1,258 +0,0 @@
1
- # =============================================================================
2
- # aw-spec-implement (orchestrator) — model-driven code generation from the DESIGN
3
- #
4
- # The spec-anchored Implement phase: GENERATE the source files + paired tests for
5
- # the aggregate STRICTLY from its single high-level design.md — the mediator between
6
- # spec and code. Implement does NOT read spec.md: `analyze` already guaranteed the
7
- # design conforms to the spec (spec is the anchor), so the design is the complete,
8
- # authoritative source for WHAT to build. The target STACK is bound here from the
9
- # constitution + the active stack profile (the design is technology-agnostic).
10
- # Prereqs: run /aw-spec-orch design then analyze-design first (the gate conforms the
11
- # design to the spec + closes any open change), and scaffold the project once via
12
- # /aw-spec-orch foundation — implement GENERATES into that project tree, so with no
13
- # foundation there is nowhere to place the files.
14
- #
15
- # Next: Build (compile + fix; reconcile only high-level variations into design.md).
16
- #
17
- # Launch: /aw-spec-orch implement [strategy] [guidance]
18
- # =============================================================================
19
-
20
- name: aw-spec-implement
21
- description: Generate the aggregate's source files and paired tests STRICTLY from its design.md, bound to the project's stack. Model-driven, design-only (does not read the spec — analyze already conformed the design to it).
22
- version: 2.1.0
23
- agent_agnostic: true
24
- dialect: aw-spec.orchestrator/v1
25
-
26
- inputs:
27
- user_input:
28
- description: Optional implementation guidance (stack hints, focus area).
29
- required: false
30
- bind: USER_INPUT
31
-
32
- scripts:
33
- actions:
34
- sh: .aw-spec/scripts/bash/aw-spec-actions.sh
35
- ps1: .aw-spec/scripts/powershell/aw-spec-actions.ps1
36
- xref:
37
- sh: .aw-spec/scripts/bash/aw-xref.sh
38
- ps1: .aw-spec/scripts/powershell/aw-xref.ps1
39
-
40
- # Sticky standards seed = the UNIVERSAL always-on rule only (ai-rules). The
41
- # FRAMEWORK / code-generation rule files are no longer hardcoded here — they are now
42
- # CONFIGURATION, loaded per-command from docs/domainspecs/<domain>/commandtechrulemap.md
43
- # by the tech-select module (see the workflow's tech_select step), exactly as design's
44
- # technical rules are. Per the rule-partition, implement still generates from design.md +
45
- # these HOW-to-build standards and loads NO domain rule file — the tech map lists only
46
- # technical files. The architecture principles come via constitution.technical.md
47
- # (referred to directly, as-is — NOT mapped); the structure via design.md. Component
48
- # rule docs are NOT loaded here — implement codes against a component's PORT; adding the
49
- # component itself is a separate step, /aw-spec-orch add-component. (missing files skipped)
50
- standards:
51
- - { path: docs/glossary/ai-rules.md, optional: true }
52
-
53
- workflow:
54
-
55
- # 0. TECHNICAL rule files → sticky standards (configuration, not hardcoded).
56
- # tech-select reads docs/domainspecs/<domain>/commandtechrulemap.md under
57
- # "## /aw-spec-implement" and loads that set into the sticky standards the
58
- # agent_generate step ALWAYS prepends. No domain rule file is loaded here — the
59
- # tech map lists only technical files (rule-partition intact). No blocking gate:
60
- # an unconfigured project soft-continues (constitution.technical.md still carries
61
- # the tech base, referred to directly below).
62
- - id: tech_select
63
- action: include
64
- module: .aw-spec/orchestrator/modules/tech-select.orch.yaml
65
- with: { command: aw-spec-implement }
66
-
67
- # 1. Resolve the current feature + its design; require the DESIGN (implement's
68
- # only input). No spec — analyze already conformed the design to the spec.
69
- - id: feature_paths
70
- action: execute_script
71
- on_error: continue # never crash raw on 'no feature set' — the gate below explains it
72
- script: { ref: actions }
73
- subcommand: feature-paths
74
- outputs:
75
- - { name: feature_dir, from: "$.feature_dir" }
76
- - { name: design_doc, from: "$.design_file" }
77
- - { name: design_exists, from: "$.design_exists" }
78
-
79
- - id: require_feature
80
- action: verify_context
81
- require_non_empty: feature_dir
82
- on_empty: stop
83
- on_empty_message: "No active feature. Run /aw-spec-orch select-feature first (pick or create the aggregate, e.g. Order), then re-run implement."
84
-
85
- - id: verify_design
86
- action: verify_context
87
- require_true: design_exists
88
- on_false: stop
89
- on_false_message: "No design.md for the current feature. Run /aw-spec-orch design then /aw-spec-orch analyze-design first — implement generates STRICTLY from the conformed design."
90
-
91
- # 1b. Require the FOUNDATION — a scaffolded, compiling project — to be present.
92
- # Implement GENERATES the aggregate's code INTO the project tree the `foundation`
93
- # phase unpacked; with no project there is nowhere to place the files. Deterministic
94
- # structure gate: looks for a real .sln/.csproj (or other ecosystem manifest),
95
- # ignoring the framework/spec/docs dirs — never trusts the model for this.
96
- - id: detect_foundation
97
- action: execute_script
98
- script: { ref: actions }
99
- subcommand: detect-project
100
- outputs:
101
- - { name: foundation_present, from: "$.scaffolded" }
102
- - { name: project_markers, from: "$.markers" }
103
-
104
- - id: foundation_gate
105
- action: verify_context
106
- require_true: foundation_present
107
- on_false: stop
108
- on_false_message: "No scaffolded project found — run /aw-spec-orch foundation <FoundationName> <AppName> first. Implement GENERATES code into the foundation's project tree (.sln/.csproj); there is nowhere to place files without it."
109
-
110
- # 2. Pre-execution hooks.
111
- - id: resolve_pre_hooks
112
- action: execute_script
113
- script: { ref: actions }
114
- subcommand: resolve-hooks
115
- args: ["--phase", "before_implement"]
116
- outputs:
117
- - { name: before_hooks, from: "$.hooks" }
118
- - id: dispatch_pre_hooks
119
- action: dispatch_hooks
120
- hooks_from_variable: before_hooks
121
-
122
- # 3. Model-driven generation: design.md → source files + paired tests.
123
- # The design constrains WHAT to build; the constitution/stack profile fixes HOW.
124
- # The spec is deliberately NOT in context — the design is the single source here.
125
- - id: ctx_generate
126
- action: build_context
127
- context:
128
- - { path: "{{design_doc}}" }
129
- - { path: .aw-spec/memory/constitution.technical.md, optional: true } # technology base ONLY — no domain
130
- - id: generate
131
- action: agent_generate
132
- tools: "Read,Write,Edit"
133
- permission_mode: acceptEdits
134
- task: |
135
- Generate the production code AND paired tests for this aggregate STRICTLY from
136
- its design.md (in context). The design is the complete, authoritative source of
137
- WHAT to build — do NOT consult or infer from the spec; `analyze` already
138
- conformed the design to the spec. This phase is the HOME of the
139
- technology-specific, solution-wide code-generation rules. Guidance: {{USER_INPUT}}
140
- Rules:
141
- - THE DESIGN IS THE ONLY DOMAIN INPUT. You have design.md + framework/code
142
- standards, and NO domain rule files. Introduce NO domain rule, identifier,
143
- terminology, or behaviour that the design does not state — everything domain
144
- already passed through spec → design. If a domain specific seems missing, STOP
145
- and surface it; never invent it from memory.
146
- - BIND THE STACK from the constitution's technology base + the active stack
147
- profile (language, framework, persistence, test framework). The design is
148
- technology-agnostic; do not re-decide anything the constitution already fixes.
149
- - Follow the project's folder/layer convention + the loaded coding-standards,
150
- dependency-policy and testing standards for HOW to structure, name, and place
151
- files — the design says WHAT to build; these standards (identical for every
152
- feature) say HOW.
153
- - COMPONENTS: when the design's §4.2 depends on a framework component (e.g.
154
- `IEmailService`, `IJobScheduler`), code against that component's ABSTRACTION /
155
- port as the design declares — do NOT hand-roll it. Installing the component into
156
- the project (packages, provider wiring, config) is a SEPARATE step:
157
- /aw-spec-orch add-component <Component>. If the port isn't present yet, code to
158
- it and note add-component as the prerequisite; do not load component rule docs here.
159
- - Realise EVERY design element as code, changing nothing about WHAT it specifies:
160
- one file per Domain type / Application use-case / API endpoint / Infrastructure
161
- adapter, placed by layer. Preserve the ubiquitous-language names verbatim.
162
- - Enforce EXACTLY as the design states: every Domain invariant, Application
163
- handler orchestration, and API error contract; the cross-cutting constraints in
164
- §5 (audit / retention / data-exposure — the CN-/DC- realisations); and each
165
- §4.2 integration contract (IC-). Implement every port the design declares.
166
- - Author a paired test for every design behaviour / use-case / endpoint; derive
167
- the cases from the design's pre/post/invariant contracts and cite the spec id
168
- (FR / BR / CN / DC / IC / US) from the design's §6 Traceability. Include tests
169
- for the constraints — e.g. an audit record is emitted, a DC-restricted field is
170
- NOT exposed on the public surface, an IC- projection round-trips.
171
- - Do NOT add behaviour the design does not state, and do NOT omit any it does.
172
- If the design looks wrong or incomplete, STOP and surface it (it is fixed in
173
- design/analyze) — never compensate from the spec or from memory.
174
- - This aggregate OWNS its files; never regenerate a file another feature owns.
175
- - Where generated code depends on a design Assumption (DA-n) or Workaround
176
- (WA-n), mark it with a comment citing that id so it is easy to revisit later.
177
- outputs:
178
- - { name: files, from: "$.files" }
179
-
180
- - id: verify_generated
181
- action: verify_context
182
- require_non_empty: files
183
- on_empty: stop
184
- on_empty_message: "No files generated. Ensure /aw-spec-orch design produced a filled design.md (not the empty template) and passed analyze, then re-run."
185
-
186
- # 3b. OKF knowledge + cross-references (deterministic, design-derived). Greenfield's
187
- # entry into the shared OKF bundle: author THIS aggregate's concept (its source_files
188
- # = the files just generated), then record its cross-slice edges — write a
189
- # Cross-References row into every SIBLING aggregate it uses (from design.md §1
190
- # References-by-id + its External integrations table), reconcile-on-write so a dropped
191
- # dependency self-heals and a used sibling with no concept yet is stubbed. Finally
192
- # author the concept's Overview prose (3c). This is enrichment downstream of a
193
- # successful generate — it never re-decides WHAT was built.
194
- - id: xref_concept
195
- action: execute_script
196
- script: { ref: xref }
197
- subcommand: concept-upsert
198
- args: ["--feature-dir", "{{feature_dir}}", "--source-files", "{{files}}", "--origin", "greenfield"]
199
- outputs:
200
- - { name: okf_concept, from: "$.concept" }
201
-
202
- - id: xref_record
203
- action: execute_script
204
- script: { ref: xref }
205
- subcommand: record
206
- args: ["--feature-dir", "{{feature_dir}}", "--design", "{{design_doc}}", "--origin", "greenfield"]
207
- outputs:
208
- - { name: xref_wrote, from: "$.wrote" }
209
- - { name: xref_edge_count, from: "$.edge_count" }
210
-
211
- # 3c. The concept's Overview — the ONE part of the OKF concept a deterministic script
212
- # cannot produce (prose distilled from design.md §1). The model authors the text
213
- # only; concept-overview splices it into the `## Overview` section alone, so the
214
- # Cross-References rows other slices own are structurally out of reach.
215
- - id: okf_overview
216
- action: agent_query
217
- context: ["{{design_doc}}"]
218
- include_standards: false
219
- schema: { overview: "<2-4 sentences of prose>" }
220
- mock: { overview: "" }
221
- task: |
222
- Write the OKF knowledge-concept Overview for the aggregate that design.md (in
223
- context) describes. 2-4 sentences of PROSE, distilled from §1 Domain Model:
224
- - name the aggregate ROOT and what the aggregate IS;
225
- - state the INVARIANTS it guards (from §1 / the design's business rules);
226
- - state its TRANSACTION BOUNDARY — what it OWNS inside the boundary vs what it
227
- only REFERENCES by id.
228
- Plain prose only: no headings, no bullets, no code fences, no file paths, and no
229
- restating of the dependency edges (those live in the Depends-On / Cross-References
230
- tables). Describe only what the design states — invent nothing.
231
- outputs:
232
- - { name: okf_overview, from: "$.overview" }
233
-
234
- - id: okf_overview_write
235
- action: execute_script
236
- script: { ref: xref }
237
- subcommand: concept-overview
238
- args: ["--feature-dir", "{{feature_dir}}", "--text", "{{okf_overview}}"]
239
-
240
- # 4. Post-execution hooks.
241
- - id: resolve_post_hooks
242
- action: execute_script
243
- script: { ref: actions }
244
- subcommand: resolve-hooks
245
- args: ["--phase", "after_implement"]
246
- outputs:
247
- - { name: after_hooks, from: "$.hooks" }
248
- - id: dispatch_post_hooks
249
- action: dispatch_hooks
250
- hooks_from_variable: after_hooks
251
-
252
- outputs:
253
- feature_dir: "{{feature_dir}}"
254
- design_doc: "{{design_doc}}"
255
- files: "{{files}}"
256
- okf_concept: "{{okf_concept}}"
257
- xref_edge_count: "{{xref_edge_count}}"
258
- next: "/aw-spec-orch build (OKF concept authored at {{okf_concept}}; {{xref_edge_count}} cross-slice edge(s) recorded into sibling aggregates)"