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,236 +0,0 @@
1
- # =============================================================================
2
- # aw-spec-inventory (orchestrator) — B0 of the Brownfield Pipeline
3
- #
4
- # The reverse front-end's first phase (see Brownfield-Pipeline.md). Scan
5
- # an EXISTING codebase, propose AGGREGATE-ROOT boundaries + dependency seams,
6
- # and emit an aggregate-organized OKF v0.1 knowledge bundle + a migration
7
- # backlog. Each candidate aggregate is a future specs/<Feature>/ vertical slice —
8
- # this bundle is the BASE the forward brownfield steps read to reverse-engineer
9
- # spec.md + design.md per slice.
10
- #
11
- # INVENTORY → adopt → (fidelity) → characterize → [ forward pipeline ] ← you are here
12
- #
13
- # Two-part shape, mirroring the OKF generate flow:
14
- # 1. a DETERMINISTIC scan (aw-inventory.py scan) → the factual JSON substrate
15
- # (files, languages, churn, entrypoints, data/route/api files, and
16
- # aggregate_signals = candidate roots clustered by vertical-slice layout);
17
- # 2. an ENRICHMENT agent that turns that substrate into the OKF bundle,
18
- # organized BY AGGREGATE ROOT, then a conformance gate (validate_okf.py).
19
- #
20
- # It does NOT author spec.md / design.md (that is /aw-spec-orch adopt per slice)
21
- # and does NOT touch source code — all writes stay inside the bundle dir.
22
- #
23
- # Launch: /aw-spec-orch inventory [strategy] [focus/scope hints]
24
- # =============================================================================
25
-
26
- name: aw-spec-inventory
27
- description: Scan a brownfield codebase and produce an aggregate-organized OKF v0.1 knowledge bundle plus a migration backlog — the base for reverse-engineering spec.md + design.md per aggregate/vertical slice. Deterministic scan + enrichment agent + conformance gate; never modifies source.
28
- version: 1.1.0
29
- agent_agnostic: true
30
- dialect: aw-spec.orchestrator/v1
31
-
32
- inputs:
33
- user_input:
34
- description: Optional focus / scope hints (e.g. an area to prioritize, or a granularity note).
35
- required: false
36
- bind: USER_INPUT
37
-
38
- scripts:
39
- inventory:
40
- sh: .aw-spec/scripts/bash/aw-inventory.sh
41
- ps1: .aw-spec/scripts/powershell/aw-inventory.ps1
42
- actions:
43
- sh: .aw-spec/scripts/bash/aw-spec-actions.sh
44
- ps1: .aw-spec/scripts/powershell/aw-spec-actions.ps1
45
-
46
- # Domain-modelling authority — helps the enrichment agent NAME/classify what it
47
- # finds (aggregate vs entity vs value object vs event) when drawing boundaries.
48
- # Optional: a non-DDD or non-domain repo simply has no overlay to load.
49
- standards:
50
- - { path: docs/domain/domain-driven-design.md, optional: true }
51
- - { path: docs/glossary/ai-rules.md, optional: true }
52
-
53
- vars:
54
- bundle_present: "false"
55
- conformant: "false"
56
-
57
- workflow:
58
-
59
- # 1. DETERMINISTIC scan of the current codebase → JSON substrate. Emits the
60
- # factual base (files, churn, categories, aggregate_signals) and reports
61
- # whether the target bundle already holds curation.
62
- - id: scan
63
- action: execute_script
64
- script: { ref: inventory }
65
- subcommand: scan
66
- outputs:
67
- - { name: inventory_json, from: "$.inventory_json" }
68
- - { name: root, from: "$.root" }
69
- - { name: head, from: "$.head" }
70
- - { name: file_count, from: "$.file_count" }
71
- - { name: aggregate_count, from: "$.aggregate_count" }
72
- - { name: bundle_dir, from: "$.bundle_dir" }
73
- - { name: bundle_present, from: "$.bundle_present" }
74
- - { name: bundle_md_count, from: "$.bundle_md_count" }
75
-
76
- # 1b. Substance gate: a scan that found no aggregate candidates has nothing to
77
- # organize a bundle around (empty repo, or no recognizable domain layout).
78
- - id: require_aggregates
79
- action: verify_context
80
- require_true: aggregate_count
81
- on_false: stop
82
- on_false_message: "Scan found no candidate aggregates in {{root}} (file_count={{file_count}}). Point /aw-spec-orch inventory at a codebase with a recognizable domain/vertical-slice layout, or scan a subtree that contains one."
83
-
84
- # 1c. Curation guard (OKF rule): a bundle that already has concept files is
85
- # hand/agent curation — regenerating from scratch would destroy it. Stop
86
- # and let the operator clear or back up {{bundle_dir}} before re-running.
87
- - id: bundle_guard
88
- action: verify_context
89
- require_value: bundle_present
90
- equals: "false"
91
- on_mismatch: stop
92
- on_mismatch_message: "The OKF bundle at {{bundle_dir}} already holds {{bundle_md_count}} concept file(s) — inventory would overwrite that curation. Back up or remove {{bundle_dir}} to regenerate from scratch (a future /aw-spec-orch inventory-update will refresh incrementally)."
93
-
94
- # 2. Pre-execution hooks.
95
- - id: resolve_pre_hooks
96
- action: execute_script
97
- script: { ref: actions }
98
- subcommand: resolve-hooks
99
- args: ["--phase", "before_inventory"]
100
- outputs:
101
- - { name: before_hooks, from: "$.hooks" }
102
- - id: dispatch_pre_hooks
103
- action: dispatch_hooks
104
- hooks_from_variable: before_hooks
105
-
106
- # 3. ENRICHMENT — turn the substrate into an aggregate-organized OKF bundle.
107
- # Context is fed via build_context (agent_generate reads the envelope, NOT a
108
- # step-level context: key): the factual substrate, the OKF format authority
109
- # (generate.md), and the brownfield design (seam/backlog framing).
110
- - id: ctx_author
111
- action: build_context
112
- context:
113
- - { path: "{{inventory_json}}" } # the deterministic substrate (aggregate_signals etc.)
114
- - { path: .aw-spec/templates/okf-concept-template.md } # OKF v0.1 format authority (frontmatter, index, log, rules)
115
- - { path: Brownfield-Pipeline.md } # seam-as-unit-of-work, migration backlog, source anchor
116
- - id: author_bundle
117
- action: agent_generate
118
- tools: "Read,Write,Edit"
119
- permission_mode: acceptEdits
120
- task: |
121
- Act as the OKF enrichment agent for the Brownfield-Pipeline INVENTORY (B0)
122
- phase. Produce a CONFORMANT OKF v0.1 knowledge bundle at {{bundle_dir}},
123
- organized BY AGGREGATE ROOT, from the deterministic substrate
124
- {{inventory_json}} (in context). Follow the OKF concept template in context for
125
- format (frontmatter, index.md/log.md rules, cross-linking, hard rules) —
126
- but ORGANIZE around aggregates, not services/modules. Scope/focus hints:
127
- {{USER_INPUT}}
128
-
129
- Read the substrate first. Its `aggregate_signals` are CANDIDATE roots,
130
- each with its files grouped by layer (domain / feature / infra / api) plus
131
- detected entities; `git.history.churn` ranks significance; the category
132
- lists (data_layer_files, route_like_files, api_definitions, ops_files,
133
- docs, adr_docs) and `top_level_dirs` fill in the rest. Signals are input,
134
- NOT decisions — YOU draw the real boundaries.
135
-
136
- Consolidate the candidates into REAL aggregates:
137
- - Merge a src module and its mirror test module into ONE aggregate (e.g.
138
- src/.../MedicinalProducts + tests/.../MedicinalProducts → MedicinalProduct).
139
- - Treat service-level / shared infrastructure (a shared DbContext, cross-
140
- cutting adapters) as a Platform/Shared concept, NOT an aggregate.
141
- - Fold value objects, entities, domain events and CQRS commands/endpoints
142
- into the aggregate that OWNS them — one aggregate concept, not one per type.
143
-
144
- Write the bundle (all paths under {{bundle_dir}}, bundle-relative links
145
- begin with "/", per OKF §5.1):
146
- - `index.md` (bundle root) — frontmatter EXACTLY `okf_version: "0.1"` and
147
- nothing else; body = sections of bulleted links reusing each concept's
148
- `description`.
149
- - `architecture/overview.md` (type: Reference) — system purpose, the
150
- AGGREGATE MAP (each aggregate + its seam), tech stack, and links to every
151
- other concept.
152
- - `aggregates/<aggregate>.md` (type: Aggregate) — ONE per aggregate root.
153
- Cover: Responsibilities; the entities / value objects / domain events /
154
- commands / API endpoints / persistence it owns (from the signal's layer
155
- files); invariants (INFERRED from code — mark confidence, park anything
156
- unclear in `open_questions`, never guess); the SEAM (the boundary you
157
- could route across — repository, endpoint, table owner, queue — and
158
- whether it is CLEAN or TORN, i.e. shares a transaction/table with another
159
- slice); and the candidate `specs/<Feature>/` slice name (feature =
160
- aggregate). Set `source_files` to the module's files, grouped with YAML
161
- comment headers by each file's OWN folder — the path segment that VARIES
162
- across the files after their shared parent directory (the layer folder in
163
- a vertical slice; the tier project in an n-tier / layered app; tests → a
164
- single `tests` group). Do NOT impose a fixed Domain/Application/UI
165
- taxonomy — the CODE's folders ARE the grouping, and the toolchain
166
- re-derives them the same way on every later write. Set `timestamp` to the
167
- latest commit time across them.
168
- - `data/` and `api/` concepts only where a data model or API surface needs
169
- its own home beyond the owning aggregate (medium granularity: prefer
170
- folding into the aggregate).
171
- - `migration-backlog.md` (type: Reference, at bundle root) — the B0
172
- deliverable: a table `| aggregate | candidate slice | seam (clean/torn) |
173
- depends on | risks | adopt order |`, sequenced so clean seams go first
174
- and TORN seams are flagged as remediation items (introduce the seam
175
- before adopting). This is the strangler rollout plan.
176
- - An `index.md` in EVERY subdirectory (no frontmatter).
177
- - `log.md` (bundle root) — first line under a `## <today's date>` heading
178
- must be `Commit: ` + backtick + `{{head}}` + backtick (validator rule E4),
179
- then a one-line Initialization entry noting the concept count.
180
-
181
- Provenance + safety (OKF hard rules):
182
- - Stamp every concept `origin: reverse-engineered` and `generated_by:
183
- aw-spec-inventory/1.1.0` in frontmatter.
184
- - The CODE is the source of truth; capture what IS (bugs/quirks included),
185
- not what SHOULD be. Where intent/invariants are unclear from code + git
186
- history, add a concrete `open_questions` entry rather than inventing one.
187
- - NEVER fabricate facts, and NEVER emit secrets/tokens/credentials/internal
188
- hostnames found in the code — describe shape, never values.
189
- - Write ONLY inside {{bundle_dir}}; do NOT modify any source file.
190
- Report the bundle tree and the concept count by type.
191
- outputs:
192
- - { name: bundle_files, from: "$.files" }
193
-
194
- - id: verify_authored
195
- action: verify_context
196
- require_non_empty: bundle_files
197
- on_empty: stop
198
- on_empty_message: "No bundle files were written to {{bundle_dir}}. Ensure the substrate {{inventory_json}} has aggregate_signals and re-run."
199
-
200
- # 4. CONFORMANCE gate — OKF v0.1 validator (errors block; warnings are noted).
201
- - id: validate_bundle
202
- action: execute_script
203
- script: { ref: inventory }
204
- subcommand: validate
205
- args: ["--bundle", "{{bundle_dir}}", "--repo-root", "{{root}}"]
206
- outputs:
207
- - { name: conformant, from: "$.conformant" }
208
- - { name: okf_errors, from: "$.errors" }
209
- - { name: okf_warnings, from: "$.warnings" }
210
- - { name: concepts, from: "$.concepts" }
211
-
212
- - id: conformance_gate
213
- action: verify_context
214
- require_true: conformant
215
- on_false: stop
216
- on_false_message: "The OKF bundle at {{bundle_dir}} is NON-CONFORMANT (errors: {{okf_errors}}). Fix the reported ERRORs (unparseable frontmatter, missing `type`, malformed index.md/log.md) and re-run — or edit the bundle by hand, then re-validate."
217
-
218
- # 5. Post-execution hooks.
219
- - id: resolve_post_hooks
220
- action: execute_script
221
- script: { ref: actions }
222
- subcommand: resolve-hooks
223
- args: ["--phase", "after_inventory"]
224
- outputs:
225
- - { name: after_hooks, from: "$.hooks" }
226
- - id: dispatch_post_hooks
227
- action: dispatch_hooks
228
- hooks_from_variable: after_hooks
229
-
230
- outputs:
231
- inventory_json: "{{inventory_json}}"
232
- bundle_dir: "{{bundle_dir}}"
233
- aggregate_count: "{{aggregate_count}}"
234
- concepts: "{{concepts}}"
235
- warnings: "{{okf_warnings}}"
236
- next: "Review {{bundle_dir}} (start with architecture/overview.md and migration-backlog.md). Then adopt a slice: /aw-spec-orch adopt <Aggregate> reverse-engineers its spec.md + design.md from the bundle, and the forward pipeline carries it from there."