aw-spec-cli 0.1.8 → 0.1.10

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 (257) hide show
  1. package/assets/.appweaver/DESIGN-FORMAT.md +200 -0
  2. package/assets/.appweaver/ORCH-DIALECT.md +156 -0
  3. package/assets/.appweaver/RULE-PARTITION.md +175 -0
  4. package/assets/.appweaver/STACK-PROFILES.md +461 -0
  5. package/assets/.appweaver/ai-rules.md +180 -0
  6. package/assets/.appweaver/domain.json +1 -0
  7. package/assets/.appweaver/extensions/.registry +19 -0
  8. package/assets/.appweaver/extensions/agent-context/README.md +57 -0
  9. package/assets/.appweaver/extensions/agent-context/agent-context-config.yml +4 -0
  10. package/assets/.appweaver/extensions/agent-context/commands/aw-spec.agent-context.update.md +26 -0
  11. package/assets/.appweaver/extensions/agent-context/extension.yml +37 -0
  12. package/assets/.appweaver/extensions/agent-context/scripts/bash/update-agent-context.sh +201 -0
  13. package/assets/.appweaver/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +237 -0
  14. package/assets/.appweaver/extensions.yml +16 -0
  15. package/assets/.appweaver/feature.json +3 -0
  16. package/assets/.appweaver/init-options.json +9 -0
  17. package/assets/.appweaver/integration.json +15 -0
  18. package/assets/.appweaver/integrations/aw-spec.manifest.json +9 -0
  19. package/assets/.appweaver/interpreter/run-skill.py +1176 -0
  20. package/assets/.appweaver/memory/constitution.md +50 -0
  21. package/assets/.appweaver/orchestrator/.smoke-out/smoke.md +6 -0
  22. package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +94 -0
  23. package/assets/.appweaver/orchestrator/README.md +300 -0
  24. package/assets/.appweaver/orchestrator/adapters/claude_agent_sdk.py +74 -0
  25. package/assets/.appweaver/orchestrator/adapters/google_antigravity.py +74 -0
  26. package/assets/.appweaver/orchestrator/modules/delta-design.orch.yaml +105 -0
  27. package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +101 -0
  28. package/assets/.appweaver/orchestrator/modules/domain-select.orch.yaml +90 -0
  29. package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +126 -0
  30. package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +123 -0
  31. package/assets/.appweaver/orchestrator/orchestrator.py +1721 -0
  32. package/assets/.appweaver/orchestrator/rev-templates/ai-rules.reference.md +40 -0
  33. package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +101 -0
  34. package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +245 -0
  35. package/assets/.appweaver/orchestrator/rev-templates/domain-constitution.skeleton.md +63 -0
  36. package/assets/.appweaver/orchestrator/rev-templates/domain-requirements.skeleton.md +48 -0
  37. package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +59 -0
  38. package/assets/.appweaver/orchestrator/rev-templates/domain-rule-file.skeleton.md +39 -0
  39. package/assets/.appweaver/orchestrator/rev-templates/frontend-rule-file.skeleton.md +63 -0
  40. package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +116 -0
  41. package/assets/.appweaver/orchestrator/rev-templates/technical-constitution.skeleton.md +106 -0
  42. package/assets/.appweaver/orchestrator/rev-templates/technical-rule-file.skeleton.md +54 -0
  43. package/assets/.appweaver/orchestrator/rev-templates/ui-constitution.skeleton.md +125 -0
  44. package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +123 -0
  45. package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +294 -0
  46. package/assets/.appweaver/orchestrator/workflows/_smoke.orch.yaml +160 -0
  47. package/assets/.appweaver/orchestrator/workflows/aw-spec-add-component.orch.yaml +270 -0
  48. package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +934 -0
  49. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +251 -0
  50. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +265 -0
  51. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +437 -0
  52. package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +197 -0
  53. package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +475 -0
  54. package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +181 -0
  55. package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +727 -0
  56. package/assets/.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml +100 -0
  57. package/assets/.appweaver/orchestrator/workflows/aw-spec-dependency-tree.orch.yaml +69 -0
  58. package/assets/.appweaver/orchestrator/workflows/aw-spec-deploy.orch.yaml +85 -0
  59. package/assets/.appweaver/orchestrator/workflows/aw-spec-design-ui.orch.yaml +386 -0
  60. package/assets/.appweaver/orchestrator/workflows/aw-spec-design.orch.yaml +382 -0
  61. package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +462 -0
  62. package/assets/.appweaver/orchestrator/workflows/aw-spec-foundation.orch.yaml +265 -0
  63. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +253 -0
  64. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-ui.orch.yaml +267 -0
  65. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +287 -0
  66. package/assets/.appweaver/orchestrator/workflows/aw-spec-inventory.orch.yaml +238 -0
  67. package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +1822 -0
  68. package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +293 -0
  69. package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +194 -0
  70. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-domain.orch.yaml +83 -0
  71. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +128 -0
  72. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +296 -0
  73. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +439 -0
  74. package/assets/.appweaver/scripts/bash/aw-inventory.sh +17 -0
  75. package/assets/.appweaver/scripts/bash/aw-parity.sh +13 -0
  76. package/assets/.appweaver/scripts/bash/aw-rev-constitution.sh +13 -0
  77. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +2626 -0
  78. package/assets/.appweaver/scripts/bash/aw-xref.sh +15 -0
  79. package/assets/.appweaver/scripts/bash/common.sh +533 -0
  80. package/assets/.appweaver/scripts/powershell/aw-inventory.ps1 +17 -0
  81. package/assets/.appweaver/scripts/powershell/aw-parity.ps1 +13 -0
  82. package/assets/.appweaver/scripts/powershell/aw-rev-constitution.ps1 +13 -0
  83. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +2232 -0
  84. package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +15 -0
  85. package/assets/.appweaver/scripts/python/aw-component-catalog.py +121 -0
  86. package/assets/.appweaver/scripts/python/aw-inventory.py +1180 -0
  87. package/assets/.appweaver/scripts/python/aw-parity.py +380 -0
  88. package/assets/.appweaver/scripts/python/aw-rev-constitution.py +329 -0
  89. package/assets/.appweaver/scripts/python/aw-stack.py +1251 -0
  90. package/assets/.appweaver/scripts/python/aw-xref.py +1330 -0
  91. package/assets/.appweaver/scripts/python/validate_okf.py +352 -0
  92. package/assets/.appweaver/stack-profiles/angular.json +16 -0
  93. package/assets/.appweaver/stack-profiles/blazor-wasm.json +17 -0
  94. package/assets/.appweaver/stack-profiles/dotnet-webapi.json +15 -0
  95. package/assets/.appweaver/stack-profiles/go-chi.json +14 -0
  96. package/assets/.appweaver/stack-profiles/java-spring.json +16 -0
  97. package/assets/.appweaver/stack-profiles/nextjs.json +16 -0
  98. package/assets/.appweaver/stack-profiles/node-express.json +15 -0
  99. package/assets/.appweaver/stack-profiles/python-fastapi.json +16 -0
  100. package/assets/.appweaver/stack-profiles/react-vite.json +17 -0
  101. package/assets/.appweaver/stack-profiles/sveltekit.json +16 -0
  102. package/assets/.appweaver/stack-profiles/vue-vite.json +17 -0
  103. package/assets/.appweaver/stacks.json +3 -0
  104. package/assets/.appweaver/templates/constitution-domain-template.md +116 -0
  105. package/assets/.appweaver/templates/constitution-technical-template.md +108 -0
  106. package/assets/.appweaver/templates/constitution-ui-template.md +116 -0
  107. package/assets/.appweaver/templates/delta-design-template.md +69 -0
  108. package/assets/.appweaver/templates/delta-spec-template.md +63 -0
  109. package/assets/.appweaver/templates/design-template.md +383 -0
  110. package/assets/.appweaver/templates/okf-concept-template.md +114 -0
  111. package/assets/.appweaver/templates/parity-manifest-template.json +49 -0
  112. package/assets/.appweaver/templates/source-map-template.md +85 -0
  113. package/assets/.appweaver/templates/spec-template.md +309 -0
  114. package/assets/.appweaver/templates/ui-design-template.md +273 -0
  115. package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.Reference.pack.txt +25248 -0
  116. package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.pack.txt +5726 -0
  117. package/assets/foundations/dotnet/ModularMonolith/pack-foundation.ps1 +145 -0
  118. package/assets/foundations/dotnet/ModularMonolith/pack-foundation.sh +196 -0
  119. package/assets/foundations/dotnet/ModularMonolith/pack-reference-foundation.ps1 +157 -0
  120. package/assets/foundations/dotnet/ModularMonolith/pack-reference-foundation.sh +209 -0
  121. package/assets/foundations/dotnet/ModularMonolith/unpack-foundation.ps1 +126 -0
  122. package/assets/foundations/dotnet/ModularMonolith/unpack-foundation.sh +217 -0
  123. package/assets/foundations/dotnet/ModularMonolith/unpack-reference-foundation.ps1 +129 -0
  124. package/assets/foundations/dotnet/ModularMonolith/unpack-reference-foundation.sh +218 -0
  125. package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.Reference.pack.txt +19318 -0
  126. package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.pack.txt +2833 -0
  127. package/assets/foundations/dotnet/VerticalSlice/pack-foundation.ps1 +145 -0
  128. package/assets/foundations/dotnet/VerticalSlice/pack-foundation.sh +196 -0
  129. package/assets/foundations/dotnet/VerticalSlice/pack-reference-foundation.ps1 +157 -0
  130. package/assets/foundations/dotnet/VerticalSlice/pack-reference-foundation.sh +209 -0
  131. package/assets/foundations/dotnet/VerticalSlice/unpack-foundation.ps1 +126 -0
  132. package/assets/foundations/dotnet/VerticalSlice/unpack-foundation.sh +217 -0
  133. package/assets/foundations/dotnet/VerticalSlice/unpack-reference-foundation.ps1 +129 -0
  134. package/assets/foundations/dotnet/VerticalSlice/unpack-reference-foundation.sh +218 -0
  135. package/assets/foundations/dotnet/components/Email/README.md +119 -0
  136. package/assets/foundations/dotnet/components/Email/ReferenceEndpoints/SendEmailEndpoint.cs +84 -0
  137. package/assets/foundations/dotnet/components/Email/integration.md +300 -0
  138. package/assets/foundations/dotnet/components/Jobs/README.md +113 -0
  139. package/assets/foundations/dotnet/components/Jobs/integration.md +259 -0
  140. package/assets/foundations/dotnet/components/QrGenerator/README.md +85 -0
  141. package/assets/foundations/dotnet/components/QrGenerator/ReferenceEndpoints/GenerateQrEndpoint.cs +57 -0
  142. package/assets/foundations/dotnet/components/QrGenerator/integration.md +230 -0
  143. package/assets/foundations/dotnet/components/README.md +74 -0
  144. package/assets/guardrails/README.md +222 -0
  145. package/assets/guardrails/domain/healthcare/ai-rules.domain.md +34 -0
  146. package/assets/guardrails/domain/healthcare/api-versioning.domain.md +17 -0
  147. package/assets/guardrails/domain/healthcare/auditing.domain.md +97 -0
  148. package/assets/guardrails/domain/healthcare/authorization.domain.md +26 -0
  149. package/assets/guardrails/domain/healthcare/clinical-terms.md +20 -0
  150. package/assets/guardrails/domain/healthcare/coding-standards.domain.md +26 -0
  151. package/assets/guardrails/domain/healthcare/consent.md +19 -0
  152. package/assets/guardrails/domain/healthcare/cqrs.domain.md +12 -0
  153. package/assets/guardrails/domain/healthcare/data-classification.domain.md +28 -0
  154. package/assets/guardrails/domain/healthcare/dependency-policy.domain.md +11 -0
  155. package/assets/guardrails/domain/healthcare/dicom.md +15 -0
  156. package/assets/guardrails/domain/healthcare/domain-constitution.md +119 -0
  157. package/assets/guardrails/domain/healthcare/domain-driven-design.domain.md +28 -0
  158. package/assets/guardrails/domain/healthcare/eventing.domain.md +18 -0
  159. package/assets/guardrails/domain/healthcare/fhir.md +36 -0
  160. package/assets/guardrails/domain/healthcare/folder-structure.domain.md +25 -0
  161. package/assets/guardrails/domain/healthcare/hipaa.md +34 -0
  162. package/assets/guardrails/domain/healthcare/hl7.md +15 -0
  163. package/assets/guardrails/domain/healthcare/ihe-conformance.md +31 -0
  164. package/assets/guardrails/domain/healthcare/integration-terms.md +21 -0
  165. package/assets/guardrails/domain/healthcare/persistence.domain.md +20 -0
  166. package/assets/guardrails/domain/healthcare/terminology.md +30 -0
  167. package/assets/guardrails/domain/healthcare/testing.domain.md +15 -0
  168. package/assets/guardrails/domain/healthcare/ux/accessibility-standards.md +36 -0
  169. package/assets/guardrails/domain/healthcare/ux/content-design.md +32 -0
  170. package/assets/guardrails/domain/healthcare/ux/interaction-states.md +44 -0
  171. package/assets/guardrails/domain/healthcare/ux/journey-mapping.md +40 -0
  172. package/assets/guardrails/domain/healthcare/vertical-slices.domain.md +18 -0
  173. package/assets/guardrails/domain/healthcare/zero-trust.domain.md +12 -0
  174. package/assets/guardrails/domain/pharma/ai-rules.domain.md +32 -0
  175. package/assets/guardrails/domain/pharma/api-versioning.domain.md +20 -0
  176. package/assets/guardrails/domain/pharma/atc.md +22 -0
  177. package/assets/guardrails/domain/pharma/auditing.domain.md +90 -0
  178. package/assets/guardrails/domain/pharma/authorization.domain.md +25 -0
  179. package/assets/guardrails/domain/pharma/coding-standards.domain.md +28 -0
  180. package/assets/guardrails/domain/pharma/cqrs.domain.md +16 -0
  181. package/assets/guardrails/domain/pharma/data-classification.domain.md +24 -0
  182. package/assets/guardrails/domain/pharma/data-provenance.md +21 -0
  183. package/assets/guardrails/domain/pharma/dependency-policy.domain.md +11 -0
  184. package/assets/guardrails/domain/pharma/domain-constitution.md +113 -0
  185. package/assets/guardrails/domain/pharma/domain-driven-design.domain.md +36 -0
  186. package/assets/guardrails/domain/pharma/domain-requirements.sample.md +103 -0
  187. package/assets/guardrails/domain/pharma/eventing.domain.md +18 -0
  188. package/assets/guardrails/domain/pharma/fhir.md +31 -0
  189. package/assets/guardrails/domain/pharma/folder-structure.domain.md +26 -0
  190. package/assets/guardrails/domain/pharma/hl7.md +17 -0
  191. package/assets/guardrails/domain/pharma/idmp.md +26 -0
  192. package/assets/guardrails/domain/pharma/integration-terms.md +21 -0
  193. package/assets/guardrails/domain/pharma/ndc.md +28 -0
  194. package/assets/guardrails/domain/pharma/persistence.domain.md +23 -0
  195. package/assets/guardrails/domain/pharma/pharma-terms.md +27 -0
  196. package/assets/guardrails/domain/pharma/product-lifecycle.domain.md +30 -0
  197. package/assets/guardrails/domain/pharma/regulatory-compliance.md +19 -0
  198. package/assets/guardrails/domain/pharma/terminology.md +32 -0
  199. package/assets/guardrails/domain/pharma/testing.domain.md +19 -0
  200. package/assets/guardrails/domain/pharma/vertical-slices.domain.md +17 -0
  201. package/assets/guardrails/domain/pharma/zero-trust.domain.md +12 -0
  202. package/assets/guardrails/projects/dotnet-default-project/domain/domain-requirements.md +58 -0
  203. package/assets/guardrails/projects/dotnet-default-project/domain-rule-bindings.md +113 -0
  204. package/assets/guardrails/projects/dotnet-default-project/frontend/ui-requirements.md +43 -0
  205. package/assets/guardrails/projects/dotnet-default-project/service/technical-requirements.md +40 -0
  206. package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +263 -0
  207. package/assets/guardrails/requirement-spec.txt +27 -0
  208. package/assets/guardrails/technology/dotnet-webapi/PACKAGING.md +184 -0
  209. package/assets/guardrails/technology/dotnet-webapi/api-versioning.md +44 -0
  210. package/assets/guardrails/technology/dotnet-webapi/auditing.md +96 -0
  211. package/assets/guardrails/technology/dotnet-webapi/authorization-matrix.md +14 -0
  212. package/assets/guardrails/technology/dotnet-webapi/authorization.md +39 -0
  213. package/assets/guardrails/technology/dotnet-webapi/clean-architecture.md +54 -0
  214. package/assets/guardrails/technology/dotnet-webapi/coding-standards.md +87 -0
  215. package/assets/guardrails/technology/dotnet-webapi/cqrs.md +63 -0
  216. package/assets/guardrails/technology/dotnet-webapi/data-classification.md +38 -0
  217. package/assets/guardrails/technology/dotnet-webapi/dependency-policy.md +40 -0
  218. package/assets/guardrails/technology/dotnet-webapi/domain-driven-design.md +91 -0
  219. package/assets/guardrails/technology/dotnet-webapi/eventing.md +57 -0
  220. package/assets/guardrails/technology/dotnet-webapi/examples/api-versioning.md +75 -0
  221. package/assets/guardrails/technology/dotnet-webapi/examples/auditing.md +84 -0
  222. package/assets/guardrails/technology/dotnet-webapi/examples/authorization.md +68 -0
  223. package/assets/guardrails/technology/dotnet-webapi/examples/clean-architecture.md +37 -0
  224. package/assets/guardrails/technology/dotnet-webapi/examples/cqrs.md +97 -0
  225. package/assets/guardrails/technology/dotnet-webapi/examples/domain-driven-design.md +141 -0
  226. package/assets/guardrails/technology/dotnet-webapi/examples/eventing.md +46 -0
  227. package/assets/guardrails/technology/dotnet-webapi/examples/persistence.md +207 -0
  228. package/assets/guardrails/technology/dotnet-webapi/examples/vertical-slices.md +151 -0
  229. package/assets/guardrails/technology/dotnet-webapi/examples/zero-trust.md +48 -0
  230. package/assets/guardrails/technology/dotnet-webapi/folder-structure.md +61 -0
  231. package/assets/guardrails/technology/dotnet-webapi/modular-monolith.md +47 -0
  232. package/assets/guardrails/technology/dotnet-webapi/persistence.md +82 -0
  233. package/assets/guardrails/technology/dotnet-webapi/technology-constitution.md +162 -0
  234. package/assets/guardrails/technology/dotnet-webapi/testing.md +55 -0
  235. package/assets/guardrails/technology/dotnet-webapi/vertical-slices.md +70 -0
  236. package/assets/guardrails/technology/dotnet-webapi/zero-trust.md +48 -0
  237. package/assets/guardrails/technology/java-spring/README.md +62 -0
  238. package/assets/guardrails/technology/nextjs/accessibility-implementation.md +56 -0
  239. package/assets/guardrails/technology/nextjs/api-client.md +56 -0
  240. package/assets/guardrails/technology/nextjs/api-integration.dotnet-webapi.md +174 -0
  241. package/assets/guardrails/technology/nextjs/api-integration.java-spring.md +203 -0
  242. package/assets/guardrails/technology/nextjs/auth-session.md +68 -0
  243. package/assets/guardrails/technology/nextjs/client-security.md +69 -0
  244. package/assets/guardrails/technology/nextjs/component-architecture.md +60 -0
  245. package/assets/guardrails/technology/nextjs/component-conventions.md +58 -0
  246. package/assets/guardrails/technology/nextjs/design-system.md +60 -0
  247. package/assets/guardrails/technology/nextjs/error-handling.md +72 -0
  248. package/assets/guardrails/technology/nextjs/forms-and-validation.md +75 -0
  249. package/assets/guardrails/technology/nextjs/frontend-testing.md +94 -0
  250. package/assets/guardrails/technology/nextjs/i18n.md +57 -0
  251. package/assets/guardrails/technology/nextjs/observability.md +67 -0
  252. package/assets/guardrails/technology/nextjs/performance-budgets.md +66 -0
  253. package/assets/guardrails/technology/nextjs/routing-navigation.md +52 -0
  254. package/assets/guardrails/technology/nextjs/state-management.md +70 -0
  255. package/assets/guardrails/technology/nextjs/ui-constitution.md +166 -0
  256. package/package.json +1 -1
  257. package/assets/docs/pharma-constitution.my-ref.md +0 -86
@@ -0,0 +1,108 @@
1
+ # [PROJECT_NAME] Constitution — Technical Base
2
+ <!--
3
+ AppWeaver split-constitution model. This is the TECHNICAL half — the
4
+ domain-agnostic constitution derived from the set mapped under
5
+ "## /aw-spec-constitution" in the active project's tech-rule-bindings.md: the technology
6
+ base (the mapped stack corpus's technology-constitution.md — its principles and base
7
+ governance), that corpus's STANDARD technical rules, and the project team's own
8
+ service/technical-requirements.md. A project reverse-engineered by `onboard` has no
9
+ such set when this half is authored: there the AS-BUILT CODE is the whole evidence, and
10
+ the rule files are generated afterwards as the detail layer under whatever is ratified
11
+ here.
12
+ It carries NO domain-specific principle, identifier, terminology, or regulatory rule —
13
+ those live in the paired constitution.domain.md.
14
+
15
+ ══ THIS FILE IS SHAPE. THE EVIDENCE IS CONTENT. ══════════════════════════════════
16
+ This template is part of the kit and governs projects in any industry, any language
17
+ and any stack. It therefore names NO technology, library, type, framework or
18
+ architectural pattern anywhere — deliberately. An example that named one would be a
19
+ suggestion, and a suggestion in a template becomes ratified law in a project it does
20
+ not fit.
21
+
22
+ Take the principles — their SUBJECTS, their WORDING, their ORDER and their COUNT —
23
+ from the evidence the run puts in front of you: the mapped technology base and the
24
+ project's own technical-requirements where a corpus is mapped, and the CODEBASE ITSELF
25
+ where this half is being reverse-engineered from an existing repo and no map exists
26
+ yet. Never from this file, and never from a stack you happen to know. If the evidence
27
+ supports eight principles this half ends at VIII; if it supports twenty-six it ends at
28
+ XXVI. The five slots below are a scaffold, not a set: add or delete '### ' blocks
29
+ freely and number them I, II, III … in the evidence's own order. The domain half
30
+ resumes at the number after your last one, so where you stop is a fact the domain half
31
+ depends on.
32
+ ═══════════════════════════════════════════════════════════════════════════════════
33
+
34
+ Where the project's own requirements file diverges from a standard rule, that is a
35
+ DEVIATION: ratify it as one, naming the rule it departs from and who approved it.
36
+
37
+ This file is the standing technical authority for the TECHNICAL authoring phases —
38
+ DESIGN and IMPLEMENT (specify loads constitution.domain, not this; the gates load
39
+ neither). Keeping it domain-free is what lets design author architecture from "spec
40
+ + technical docs only" and lets the tech base stay swappable. Do NOT add domain
41
+ principles here.
42
+
43
+ THIN AUTHORITY: each principle is ONE declarative, testable line + a pointer to its
44
+ rule doc. Do NOT restate the rule doc's detail here — this file says WHICH rules are
45
+ supreme/non-negotiable and adopted; the docs (also loaded in the phase) carry the
46
+ detail. That keeps the authority/detail overlap to one line.
47
+ -->
48
+
49
+ ## Core Principles
50
+
51
+ ### [PRINCIPLE_1_NAME]
52
+ <!-- Form: "I. <the base's first principle, by its own name> (NON-NEGOTIABLE)". The
53
+ numeral, the name and whether the marker applies all come from the mapped base. -->
54
+ [PRINCIPLE_1_DESCRIPTION]
55
+ <!-- Form: ONE declarative, testable sentence saying what MUST hold, then the rule doc
56
+ that carries the detail. State the rule, not the mechanism that implements it —
57
+ an implementation choice belongs in the rule doc, not in the ratified line. -->
58
+
59
+ ### [PRINCIPLE_2_NAME]
60
+ [PRINCIPLE_2_DESCRIPTION]
61
+
62
+ ### [PRINCIPLE_3_NAME]
63
+ [PRINCIPLE_3_DESCRIPTION]
64
+
65
+ ### [PRINCIPLE_4_NAME]
66
+ [PRINCIPLE_4_DESCRIPTION]
67
+
68
+ ### [PRINCIPLE_5_NAME]
69
+ <!-- Form: continue one '### ' block per principle through the base's LAST one, then
70
+ stop. Do not pad to a round number, do not stop early because a count "looks
71
+ right", and do not import a principle the base does not state. Mark NON-NEGOTIABLE
72
+ only where the base does. -->
73
+ [PRINCIPLE_5_DESCRIPTION]
74
+
75
+ ## [SECTION_2_NAME]
76
+ <!-- Form: the base's structural mandate — how the codebase must be laid out and what
77
+ that layout is not allowed to blur. Name the section as the base names it. -->
78
+
79
+ [SECTION_2_CONTENT]
80
+ <!-- Form: the layout as the base defines it for THIS project's stack, plus a pointer to
81
+ the rule doc holding the full structure. Domain folder ADDITIONS are declared in
82
+ constitution.domain.md, not here. -->
83
+
84
+ ## [SECTION_3_NAME]
85
+ <!-- Form: the base's conventions / forbidden-patterns / quality-gate section. -->
86
+
87
+ [SECTION_3_CONTENT]
88
+ <!-- Form: naming and coding conventions, forbidden patterns, dependency governance, CI
89
+ quality gates and the base AI operating rules — each a thin adopted line pointing at
90
+ the rule doc that carries it. Domain overlays are referenced from
91
+ constitution.domain.md. -->
92
+
93
+ ## Governance
94
+ <!-- Form: this constitution's authority over other engineering guidance, the amendment
95
+ procedure, and the versioning policy. This base governance also applies to
96
+ constitution.domain.md; domain-specific approver / change-authority overrides are
97
+ declared there. -->
98
+
99
+ [GOVERNANCE_RULES]
100
+ <!-- Form: amendment procedure; SemVer-for-governance (MAJOR = weaken a NON-NEGOTIABLE or
101
+ break the mandated structure; MINOR = new principle or mandatory requirement;
102
+ PATCH = clarification); compliance review cadence. Reviewers cite the principle
103
+ NUMBER, so the numbering above is load-bearing. The paired constitution.domain.md
104
+ extends this section with domain change-authority. -->
105
+
106
+ **Version**: [CONSTITUTION_VERSION] | **Ratified**: [RATIFICATION_DATE] | **Last Amended**: [LAST_AMENDED_DATE]
107
+ <!-- ISO YYYY-MM-DD dates. This file versions INDEPENDENTLY of constitution.domain.md —
108
+ a technical-base change need not bump the domain half, and vice-versa. -->
@@ -0,0 +1,116 @@
1
+ # [PROJECT_NAME] Constitution — User Experience Base
2
+ <!--
3
+ AppWeaver split-constitution model. This is the UI half — the standing
4
+ governance for the FRONTEND LANE, derived from the set mapped under
5
+ "## /aw-spec-ui-constitution" in the active project's tech-rule-bindings.md: the standard
6
+ frontend rules (the mapped lane corpus's ui-constitution.md) and the project team's own
7
+ frontend/ui-requirements.md. A lane reverse-engineered by `onboard` has no such set when
8
+ this half is authored: there the UI SOURCE is the whole evidence, and the lane's rule
9
+ files are generated afterwards as the detail layer under whatever is ratified here.
10
+ It exists only in a project that HAS a frontend lane;
11
+ a backend-only project has no such file at all.
12
+
13
+ ══ THIS FILE IS SHAPE. THE EVIDENCE IS CONTENT. ══════════════════════════════════
14
+ This template is part of the kit and governs frontends on any stack. It therefore
15
+ names NO framework, language, router, design system, component library or conformance
16
+ standard anywhere — deliberately. An example that named one would be a suggestion, and
17
+ a suggestion in a template becomes ratified law in a lane it does not fit.
18
+
19
+ Take the principles — their SUBJECTS, their WORDING, their ORDER and their COUNT —
20
+ from the evidence the run puts in front of you: the mapped ui-constitution.md and the
21
+ team's ui-requirements where a lane corpus is mapped, and the LANE'S OWN SOURCE where
22
+ this half is being reverse-engineered. The five slots below are a scaffold, not a set.
23
+ ═══════════════════════════════════════════════════════════════════════════════════
24
+
25
+ It is the UI lane's counterpart to constitution.technical.md, not a third tier
26
+ of governance. Like that file it is DOMAIN-FREE: it is authored before
27
+ domain-select runs, so no domain rule file can reach it. Domain reaches the UI
28
+ lane the same way it reaches the service lane — through the spec.
29
+
30
+ Loading policy: standing input to UI-DESIGN and UI-IMPLEMENT. It is NOT loaded
31
+ by specify (which loads constitution.domain.md), and NOT by the service lane's
32
+ design/implement (which load constitution.technical.md). One lane's
33
+ constitution never governs the other lane's code.
34
+
35
+ NUMBERING: principles are a UX-* series (UX-I, UX-II, …) and deliberately do NOT
36
+ continue the technical half's numbering or the domain half's. This half is PARALLEL
37
+ to the technical base, not a continuation of it, and the composed constitution.md
38
+ must not read as though one series ran on into another. Because the series is its
39
+ own, it is unaffected by how many principles the technology base happens to have.
40
+
41
+ WHAT THE LANE'S GOVERNANCE MUST SETTLE — as principles, in the lane rules' own terms:
42
+ the accessibility obligation; where visual truth comes from; that the UI's only input
43
+ from the service lane is the design contract, so an interface it needs but the contract
44
+ lacks is a contract change and never a local workaround; that every reachable
45
+ interaction state is a specified requirement rather than something invented in a
46
+ component; and the lane's own testing obligation. Cover what the mapped rules cover —
47
+ this list is the agenda, not the wording.
48
+
49
+ THIN AUTHORITY: each principle is ONE declarative, testable line. Do NOT restate
50
+ the source's detail here — this file says WHICH experience rules are supreme,
51
+ non-negotiable and adopted; the mapped ui-constitution.md carries the detail.
52
+ -->
53
+
54
+ ## Declared Lane
55
+
56
+ [UI_LANE_DECLARATION]
57
+ <!-- Form: one line naming the lane, its stack and the root directory it owns — all three
58
+ taken from the mapped ui-constitution.md, which declares them, and never invented
59
+ here. The root is the subtree ui-implement may write; it must match
60
+ .appweaver/stacks.json where that file exists, and a disagreement is a STACK-MISMATCH:
61
+ failure, not a silent rewrite. -->
62
+
63
+ ## Experience Principles
64
+ <!-- A UX-* series. Parallel to the technical half, never a continuation of it. -->
65
+
66
+ ### [PRINCIPLE_UX_1_NAME]
67
+ <!-- Form: "UX-I. <the experience concern this rule governs> (NON-NEGOTIABLE)". -->
68
+ [PRINCIPLE_UX_1_DESCRIPTION]
69
+ <!-- Form: ONE declarative, testable sentence saying what MUST hold, plus a pointer to the
70
+ lane rule file that carries the detail. Where a principle depends on a threshold or a
71
+ conformance target, say that the target is binding and cite where the spec records
72
+ it — do not restate the target here, and do not invent one. -->
73
+
74
+ ### [PRINCIPLE_UX_2_NAME]
75
+ [PRINCIPLE_UX_2_DESCRIPTION]
76
+
77
+ ### [PRINCIPLE_UX_3_NAME]
78
+ [PRINCIPLE_UX_3_DESCRIPTION]
79
+
80
+ ### [PRINCIPLE_UX_4_NAME]
81
+ [PRINCIPLE_UX_4_DESCRIPTION]
82
+
83
+ ### [PRINCIPLE_UX_5_NAME]
84
+ <!-- Form: continue UX-V+ with one '### ' block per principle the mapped lane rules state,
85
+ then stop. Service-lane principles stay in constitution.technical.md and domain
86
+ principles in constitution.domain.md. -->
87
+ [PRINCIPLE_UX_5_DESCRIPTION]
88
+
89
+ ## [UI_STRUCTURE_SECTION_NAME]
90
+ <!-- Form: the lane's structural mandate, named as the lane rules name it. -->
91
+
92
+ [UI_STRUCTURE_CONTENT]
93
+ <!-- Form: the lane root and the layout beneath it, as the mapped rules define it for this
94
+ lane's stack, including where generated contract clients land. This layout sits
95
+ ENTIRELY under the lane's root; it never adds to the service lane's structure in
96
+ constitution.technical.md. -->
97
+
98
+ ## [UI_CONVENTIONS_SECTION_NAME]
99
+ <!-- Form: the lane's conventions / forbidden-patterns / quality-gate section. -->
100
+
101
+ [UI_CONVENTIONS_CONTENT]
102
+ <!-- Form: naming, state-management policy, forbidden patterns, and the lane's CI gates —
103
+ each a thin adopted line pointing at the lane rule file that carries it. -->
104
+
105
+ ## Governance
106
+
107
+ [UI_GOVERNANCE_RULES]
108
+ <!-- Form: this half versions independently of the other two. The base amendment procedure
109
+ and SemVer policy in constitution.technical.md apply unchanged — state only the
110
+ UI-lane overrides here (who may amend the lane's visual authority, who signs off a
111
+ waiver against an accessibility obligation). Retiring the frontend lane is a decision
112
+ to retire this file; nothing removes it automatically. -->
113
+
114
+ **Version**: [CONSTITUTION_VERSION] | **Ratified**: [RATIFICATION_DATE] | **Last Amended**: [LAST_AMENDED_DATE]
115
+ <!-- ISO YYYY-MM-DD dates. Versions INDEPENDENTLY of constitution.technical.md and
116
+ constitution.domain.md — a change to the lane's rules bumps this file only. -->
@@ -0,0 +1,69 @@
1
+ # Delta Design — [CR-ID]: [TITLE]
2
+
3
+ **Feature (aggregate)**: [Aggregate]
4
+
5
+ **Base version**: [vX.Y] <!-- the current master design version; the design phase bumps the minor on close -->
6
+
7
+ <!--
8
+ This delta applies to the SINGLE master design at specs/[Aggregate]/design.md —
9
+ never a new design doc. Classify every design change ADDED / MODIFIED / REMOVED
10
+ against the current master, per LAYER section (Domain · Application · API · Infra),
11
+ in the SAME technology-agnostic form as the master: behaviour as signatures +
12
+ pre/post/invariant/raises, contracts as field shapes — NO code. A new command
13
+ (e.g. UpdateOrder) is a new USER STORY realised as delta design elements, NOT a
14
+ new feature/aggregate. After this delta is applied to design.md, `implement`
15
+ regenerates the touched slice; regression re-tests the shared-element dependents.
16
+ -->
17
+
18
+ ## Change summary
19
+
20
+ [One paragraph: what the design change is and which user story / spec delta it serves.]
21
+
22
+ ## ADDED — new design elements
23
+
24
+ <!-- New entities/VOs/events, use-cases/handlers, endpoints, ports, adapters, and the
25
+ realisation of any new spec constraint/classification/contract. Serves = a spec id
26
+ (FR-/BR-/CN-/DC-/IC-/US-); design reads the spec, never the domain rule files. -->
27
+
28
+ | Layer (§) | Element | Kind | Serves |
29
+ |---|---|---|---|
30
+ | Application (§2) | `[Command/Query]` + handler | use-case | US-[n] · FR-[nnn] |
31
+ | API (§3) | `[VERB] [/route]` | endpoint | US-[n] · FR-[nnn] |
32
+ | Domain (§1) | `[Event]` / `[VO]` | event / value object | BR-[nnn] · CN-[nnn] |
33
+ | Infrastructure (§4.2) | `I[External]` adapter | contract realisation | IC-[nnn] |
34
+ | Cross-cutting (§5) | [audit / retention / exposure decision] | constraint realisation | CN-[nnn] · DC-[nnn] |
35
+
36
+ ## MODIFIED — existing design elements
37
+
38
+ <!-- Edits to elements the master already defines (add a behaviour, change a contract). -->
39
+
40
+ | Layer (§) | Element | What changes | Why |
41
+ |---|---|---|---|
42
+ | Domain (§1) | `[Root].[Behaviour]` | add [method] + invariant | US-[n] |
43
+ | Infrastructure (§4) | `I[Aggregate]Repository` | add [operation] | US-[n] |
44
+
45
+ ## REMOVED
46
+
47
+ - [design element removed + why] — or `None`
48
+
49
+ ## Cross-layer impact
50
+
51
+ [Which layer sections ripple; shared elements touched (e.g. the aggregate root);
52
+ new migration needed? (yes/no); any contract change other systems couple to.]
53
+
54
+ ## Regression targets
55
+
56
+ [Existing user stories / behaviours to re-verify because a shared element changed —
57
+ e.g. re-test CreateOrder when the Order root or its repository is MODIFIED.]
58
+
59
+ ## New assumptions / workarounds (from this change)
60
+
61
+ <!-- Anything this change defers — folds into the master's §7 / §8 ledgers on apply. -->
62
+
63
+ - **DA-[n]**: [assumption to clarify later] — or `None`
64
+ - **WA-[n]**: [structural workaround to clear later] — or `None`
65
+
66
+ ## On close
67
+
68
+ The design phase amends the master design.md doc-first, appends the Change History
69
+ row, bumps the version (minor), and archives this record under `changes/archive/`.
@@ -0,0 +1,63 @@
1
+ # Delta Spec — [CR-ID]: [TITLE]
2
+
3
+ **Feature (aggregate)**: [Aggregate]
4
+
5
+ **Change type**: [new-requirement | changed-requirement | defect | refactor]
6
+
7
+ **Created**: [DATE]
8
+
9
+ **Base version**: [vX.Y] <!-- the current master version; close-delta bumps the minor at the end of the chain -->
10
+
11
+ <!--
12
+ A change request is a DELTA on the feature's existing spec.md — never a new spec.
13
+ Classify every item ADDED / MODIFIED / REMOVED against the current master, using
14
+ the SAME vocabulary as the master spec: System Requirements in EARS, Business
15
+ Rules (BR-n) as invariants, User Stories with Given/When/Then acceptance criteria,
16
+ and — where their rules apply — Constraints & NFRs (CN-n), Data Classification
17
+ (DC-n), Integration Contracts (IC-n) and Experience Standards (UX-n). A CR that changes
18
+ a retention/audit rule, a data-exposure rule, an interop obligation or a project-wide
19
+ experience standard is a CN-/DC-/IC-/UX- delta, not a smuggled code change. A UX- delta
20
+ states the standard only — never a screen, page or component, which the prototype and
21
+ design.ui.md settle. Adding a command (e.g. UpdateOrder to the Order aggregate) is a new
22
+ user story (US-n), NOT a new feature. Feature = aggregate (see spec-template.md).
23
+ -->
24
+
25
+ ## Change summary
26
+
27
+ [One paragraph: what is changing and why.]
28
+
29
+ ## ADDED
30
+
31
+ <!-- New user stories, system requirements, business rules, entities, or lifted items (CN/DC/IC/UX). -->
32
+
33
+ - **US-[n] — [title]** (Priority: P?)
34
+ - **Why this priority**: [the value and why it ranks here]
35
+ - **Exercises**: [FR-nnn, BR-nnn]
36
+ - **Acceptance**: Given [state], When [action], Then [outcome]
37
+ - **Independent test**: [how this story is verified on its own]
38
+ - **FR-[nnn]**: WHEN [trigger] THE SYSTEM SHALL [response] <!-- EARS — pick the fitting pattern -->
39
+ - **BR-[nnn]**: [a new invariant that must always hold] — or `None`
40
+ - **CN-[nnn]**: [new constraint / NFR — retention, immutability, audit, performance-as-a-limit; cite lifted source] — or `None`
41
+ - **DC-[nnn]**: [new data-classification category or exposure rule] — or `None`
42
+ - **IC-[nnn]**: [new integration contract / interop obligation] — or `None`
43
+ - **UX-[nnn]**: [new project-wide experience standard — accessibility, interaction states, content, journey integrity, responsiveness-as-a-limit; cite lifted source] — or `None`
44
+ - **Entity**: [new entity / value object + what it represents] — or `None`
45
+
46
+ ## MODIFIED
47
+
48
+ - **FR-[nnn]**: was [old] → now [new] <!-- keep EARS form -->
49
+ - **BR-[nnn]**: was [old] → now [new]
50
+ - **CN-[nnn]** / **DC-[nnn]** / **IC-[nnn]** / **UX-[nnn]**: was [old] → now [new]
51
+ - **US-[n]**: [what changes and why]
52
+
53
+ ## REMOVED
54
+
55
+ - [FR / BR / CN / DC / IC / UX / US / entity removed and why] — or `None`
56
+
57
+ ## Impact
58
+
59
+ - **Affected FR / BR / CN / DC / IC / UX / US / SC**: [ids]
60
+ - **Regression risk**: [existing behaviour that must still hold — e.g. CreateOrder must still pass]
61
+ - **On merge**: the new US-[n] is tagged `Added: (this CR)` in the master; finalize-delta
62
+ merges this delta into spec.md + design.md and appends the Change History row, and
63
+ close-delta (after analyze-slice) archives the change and bumps the minor version.