aw-spec-cli 0.1.7 → 0.1.9

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 (261) 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/dist/commands/init.js +2 -2
  257. package/dist/commands/init.js.map +1 -1
  258. package/dist/utils/copy-assets.js +8 -8
  259. package/dist/utils/copy-assets.js.map +1 -1
  260. package/package.json +1 -1
  261. package/assets/docs/pharma-constitution.my-ref.md +0 -86
@@ -0,0 +1,116 @@
1
+ <!--
2
+ rev-templates/tech-rule-bindings.skeleton.md — SHAPE-ONLY reference for the
3
+ project's tech-rule-bindings.md (resolve-tech reads it by that exact name — the
4
+ TECHNICAL twin of domain-rule-bindings.md, which resolve-domain reads). It shows the
5
+ per-command headings, the TECHNICAL RULE PARTITION, the bullet shape, and the
6
+ quick-reference table. It lists NO real rule files — every bullet is a
7
+ placeholder for a service/ file the author actually generated from THIS
8
+ project's CODE.
9
+
10
+ Wire ONLY files you generated (all under guardrails/projects/[project]/service/).
11
+ Never list a file you did not write. Never list a path belonging to another
12
+ project (guardrails/projects/<other>/**) — that one is another project's
13
+ rules, not this one's.
14
+ -->
15
+ # [PROJECT_NAME] — Command → Technical-Rule-File Map (as-built)
16
+
17
+ Per-command list of the **[PROJECT_NAME] technical** rule files loaded (via `resolve-tech` +
18
+ the `tech-select` module, into the sticky standards set) for the spec-anchored orchestrator
19
+ pipeline. This is the technical counterpart of `domain-rule-bindings.md` (which maps the DOMAIN rule
20
+ files), and the CODE-DERIVED replacement for the greenfield technical map.
21
+
22
+ **The model:** the technical rule files (this project's own architecture / persistence /
23
+ concurrency / testing / security-posture set, reverse-engineered from the code into
24
+ `guardrails/projects/[project]/service/`) are CONFIGURATION — tune this map, not the workflows. The
25
+ technology base itself (`constitution.technical.md`) is NOT listed here — every consumer still
26
+ refers to it directly, as-is.
27
+
28
+ - All paths are workspace-relative and live in `guardrails/projects/[project]/service/`.
29
+ - `resolve-tech --command <name>` collects the `- ` bullets under `## /<name>`.
30
+ - **`## /aw-spec-specify` is the MODELLING-METHODOLOGY slot** — exactly one file,
31
+ `service/domain-modelling.md`: HOW this code expresses a domain model. Never an architecture /
32
+ persistence / codegen / security file; those would break specify's domain purity. Every other
33
+ heading below feeds the HOW phases.
34
+ - A command with no heading here loads no mapped technical file (only the workflow's universal
35
+ `ai-rules.md` seed + `constitution.technical.md`, referred to directly).
36
+
37
+ ---
38
+
39
+ ## /aw-spec-specify
40
+ <!-- MODELLING METHODOLOGY ONLY — exactly one file. HOW this codebase expresses a domain model
41
+ (what marks an aggregate root, entity vs value object, where invariants live, the context
42
+ boundary), NOT what the model is (that is the domain set's domain-driven-design.domain.md,
43
+ wired via domain-rule-bindings). No technology rule may appear under this heading. -->
44
+ - guardrails/projects/[project]/service/domain-modelling.md
45
+
46
+ ## /aw-spec-design
47
+ <!-- The as-built architecture / cross-cutting technical rules the design author mediates the spec
48
+ against. NO domain file here — domain reaches design only as spec ids. -->
49
+ - guardrails/projects/[project]/service/[as-built-architecture].md
50
+ - guardrails/projects/[project]/service/[each generated architecture/cross-cutting rule].md
51
+
52
+ ## /aw-spec-implement
53
+ <!-- The framework / code-generation rule set the generator builds against (from design.md). -->
54
+ - guardrails/projects/[project]/service/[each generated codegen/convention rule].md
55
+
56
+ ## /aw-spec-implement-delta
57
+ <!-- The CR analog of implement — same code-generation set, scoped to the delta-design. -->
58
+ - guardrails/projects/[project]/service/[each generated codegen/convention rule].md
59
+
60
+ ## /aw-spec-build
61
+ <!-- The layering + convention rules the compile-fixer respects. -->
62
+ - guardrails/projects/[project]/service/[as-built-architecture].md
63
+
64
+ ## /aw-spec-analyze-slice
65
+ <!-- The design↔code conformance gate's TECHNICAL checklist (validate, don't author). -->
66
+ - guardrails/projects/[project]/service/[testing/convention rule to validate against].md
67
+
68
+ ## /aw-spec-adopt
69
+ <!-- Brownfield reverse-engineering: the technical REFERENCE set the reversed design mediates the
70
+ reversed spec ↔ existing code against — the CODE wins, these are reference only. -->
71
+ - guardrails/projects/[project]/service/[architecture/cross-cutting reference rule].md
72
+
73
+ ## /aw-spec-constitution
74
+ <!-- The set the TECHNICAL half of the split constitution is RE-ratified from when /appweaver
75
+ constitution is run again on this repo — the same code-derived rules the HOW phases build
76
+ against, so a ratified principle can cite the rule it governs. onboard authored the first
77
+ constitution from code evidence directly, before these files existed; this heading is what
78
+ keeps a later re-run authoring from THIS project's rules instead of from nothing. List the
79
+ service/ files that carry a ratifiable standard, NOT every generated file, and NO worked examples/
80
+ sample (the ratified half is one declarative line per principle). NO domain file — the domain
81
+ half's sources are the DOMAIN map's ## /aw-spec-constitution. -->
82
+ - guardrails/projects/[project]/service/[ratifiable technical standard].md
83
+
84
+ ## /aw-spec-run
85
+ <!-- The runtime / execution conventions the app-run step honors — add ONLY if the code evidences
86
+ a runtime/hosting concern file. NOT data-migration (migration is the deferred later phase). -->
87
+ - guardrails/projects/[project]/service/[runtime/hosting rule].md
88
+
89
+ <!-- ## /aw-spec-ui-constitution — the FRONTEND LANE's heading. It is NOT written by the step
90
+ that authors this map; onboard's frontend rule-set step APPENDS it here, after the technical
91
+ headings and before the quick-reference table, but only where the scan found a UI in the
92
+ code. It maps the generated frontend/ lane rules (frontend/ui-constitution.md first), and
93
+ it is also the authoritative signal that this project HAS a frontend lane — a later
94
+ /appweaver constitution reads it to decide whether to author constitution.ui.md at all.
95
+ A backend-only repo simply never gets the heading.
96
+
97
+ Do NOT add /aw-spec-characterize or /aw-spec-parity in the DEV flow — characterize is
98
+ opt-on-touch and parity is deferred to the migration phase. Add any other heading later
99
+ ONLY if that phase is entered AND you generated a file it should load — an absent heading
100
+ soft-continues (loads nothing). -->
101
+
102
+ ---
103
+
104
+ ## Quick reference (command → technical file count)
105
+
106
+ | Command | Technical rule files | Role |
107
+ |---|---|---|
108
+ | /aw-spec-specify | 1 | the as-built modelling methodology the domain model is expressed in — no technology |
109
+ | /aw-spec-design | [n] | as-built architecture the design author mediates the spec against |
110
+ | /aw-spec-implement | [n] | code-generation set the generator builds against (from design.md) |
111
+ | /aw-spec-implement-delta | [n] | same code-generation set, scoped to the open change's delta-design |
112
+ | /aw-spec-build | [n] | layering + convention rules the compile-fixer respects |
113
+ | /aw-spec-analyze-slice | [n] | conformance rules the design↔code gate validates against |
114
+ | /aw-spec-adopt | [n] | technical reference set for the reversed design (brownfield) |
115
+ | /aw-spec-constitution | [n] | the standards the technical constitution half is re-ratified from |
116
+ | /aw-spec-run | [n] | runtime/execution conventions the app-run step honors (only if evidenced) |
@@ -0,0 +1,106 @@
1
+ <!--
2
+ ═══════════════════════════════════════════════════════════════════════════
3
+ rev-templates/technical-constitution.skeleton.md — SHAPE-ONLY reference.
4
+
5
+ This file is the FORMAT + VOCABULARY reference for the reverse-engineered
6
+ TECHNICAL half (constitution.technical.md). It is loaded as a `standards:`
7
+ entry for the technical-half author (include_standards:true). It carries the
8
+ AppWeaver principle-heading style, the Sync-Impact-Report shape, the
9
+ evidence-line pattern, and the section skeleton — and NOTHING ELSE.
10
+
11
+ IT DELIBERATELY CONTAINS NO PRINCIPLE SET. There is no fixed I–XV list to
12
+ inherit. Every [BRACKET] token below is a slot the author fills from evidence
13
+ — never a value to copy. Copy the SHAPE, discover the CONTENT from the code.
14
+
15
+ DISCIPLINE THIS SKELETON ENFORCES (structurally — there is no project content
16
+ here to leak):
17
+ • EVIDENCE-FIRST — author a principle ONLY for a technology trait the
18
+ adopted design.md files + the OKF overview/platform note actually
19
+ evidence. If the code does not show it, it is not a principle.
20
+ • CITE inline — every principle ends with an `(evidence: …)` line naming a
21
+ design section, a concrete type / port / persistence context / config, or
22
+ an OKF stack line. A principle with no groundable evidence does not belong.
23
+ • AS-BUILT LEVEL — state a partial / stubbed / optional trait at the level
24
+ the code actually reaches; never the aspirational ideal.
25
+ • OMIT pure aspiration — a trait the code shows zero of is not softened into
26
+ a principle; it is left out.
27
+ • ROUTE gaps — an unmet ideal / stub / inactive-optional concern goes into
28
+ the "As-Built Debt → migration backlog" list below, never asserted.
29
+ • VARIABLE LENGTH — number sequentially from I with no gaps and no padding
30
+ to a fixed count. The final numeral is the domain half's continuation
31
+ point.
32
+ ═══════════════════════════════════════════════════════════════════════════
33
+ -->
34
+ <!--
35
+ Sync Impact Report
36
+ - Version: [OLD] -> [NEW] (reverse-engineered technical baseline)
37
+ - Project: [PROJECT_NAME]
38
+ - Discovered technical principles: I–[N] (domain half continues at [N+1])
39
+ - Principle set (as-built):
40
+ I [PRINCIPLE_TITLE]
41
+ II [PRINCIPLE_TITLE]
42
+ … (only traits the code evidences — no fixed count)
43
+ - Template ideals DELIBERATELY OMITTED (lack of as-built evidence):
44
+ - [IDEAL] — [why the code does not evidence it]
45
+ - …
46
+ - As-Built Debt → migration backlog (see knowledge/migration-backlog.md; do not restate the table):
47
+ - [gap / stub / inactive-optional concern] — [where it is tracked]
48
+ - …
49
+ - Dependent artifacts:
50
+ - constitution.domain.md — ⚠ authored next; continues at [N+1]
51
+ - guardrails/projects/[project]/domain/domain-constitution.md — [✅/⚠] domain charter source
52
+ - guardrails/projects/[project]/service/ — [✅/⚠] technical rule set
53
+ - TODOs: [none mechanical | …]
54
+ -->
55
+ # [PROJECT_NAME] Constitution — Technical Base
56
+
57
+ > Reverse-engineered, **as-built**, domain-agnostic technical half. Authority for DESIGN and
58
+ > IMPLEMENT. Domain principles live in `constitution.domain.md` (continues at **[N+1]**).
59
+ > This file asserts only technology traits evidenced by the adopted designs + OKF overview/platform.
60
+
61
+ ## Core Principles
62
+
63
+ <!-- One block PER EVIDENCED TRAIT. Tag (NON-NEGOTIABLE) only where the code enforces it as such.
64
+ Replace the bracketed text; keep the `### <numeral>. <title>` + rule + `(evidence: …)` shape. -->
65
+
66
+ ### I. [PRINCIPLE TITLE] [(NON-NEGOTIABLE)?]
67
+ [One declarative, testable rule the adopted designs actually evidence. State it at the level the
68
+ code reaches — partial/stubbed/optional traits are stated as partial, not as the ideal.]
69
+ (evidence: [design §X.Y named type / port / persistence context / config; or OKF overview Tech-stack line])
70
+
71
+ ### II. [PRINCIPLE TITLE] [(NON-NEGOTIABLE)?]
72
+ […]
73
+ (evidence: […])
74
+
75
+ <!-- … continue with only the principles the code evidences … -->
76
+
77
+ > **Domain half continues at principle [N+1]** in `constitution.domain.md`.
78
+
79
+ ## Mandatory Folder Structure (base)
80
+
81
+ - [Solution projects / module layout AS INVENTORIED — from the OKF overview + designs, not an ideal.]
82
+ - [Cross-cutting host files that stay at their template levels.]
83
+ - Domain-specific folder additions (if any) are declared only in the domain constitution half.
84
+
85
+ ## Conventions, Forbidden Patterns, AI Rules & Quality Gates (base)
86
+
87
+ - [Prefer the framework abstractions ALREADY in use — name them from evidence.]
88
+ - [Forbidden patterns the code's structure implies — e.g. no cross-aggregate write, endpoints do not touch persistence.]
89
+ - Base AI operating rules: [pointer to the operating-rules reference].
90
+ - Any pre-existing greenfield standards docs are **reference only** until reverse-engineered against
91
+ this codebase — where they conflict with the as-built evidence above, **this constitution wins**.
92
+
93
+ ## Governance
94
+
95
+ - This technical half + the paired domain half supersede README / agent-context files where they
96
+ disagree on engineering rules.
97
+ - Amendments via PR that updates the affected half (+ the mapped rule set if needed), includes a migration
98
+ plan for non-compliant code, and bumps SemVer:
99
+ - **MAJOR** — remove/weaken a NON-NEGOTIABLE principle or break mandatory structure
100
+ - **MINOR** — add a principle or mandatory section
101
+ - **PATCH** — clarifications
102
+ - Reviewers cite principle numbers. Domain change-authority overrides live in the domain half.
103
+ - Runtime agent guidance MUST point at the composed constitution and MUST NOT restate these
104
+ principles at length.
105
+
106
+ **Version**: [X.Y.Z] | **Ratified**: [YYYY-MM-DD] | **Last Amended**: [YYYY-MM-DD]
@@ -0,0 +1,54 @@
1
+ ---
2
+ origin: reverse-engineered
3
+ generated_by: aw-spec-onboard/[VERSION]
4
+ concern: "[concern-slug]"
5
+ ---
6
+ <!--
7
+ rev-templates/technical-rule-file.skeleton.md — SHAPE-ONLY reference for ONE
8
+ generated technical rule file in the project's service/ folder
9
+ (guardrails/projects/[project]/service/<concern>.md). It is the TECHNICAL twin of
10
+ domain-rule-file.skeleton.md. Write one such file per TECHNOLOGY concern the
11
+ CODE ACTUALLY exhibits (evidenced-only, lean) — e.g. as-built-architecture,
12
+ persistence, concurrency, testing, security-posture, api-surface, eventing,
13
+ observability, hosting — NOT per domain concern (those are the *.domain.md
14
+ overlays), NOT per greenfield ideal.
15
+
16
+ ONE concern in this set is not a technology concern and is still written here:
17
+ `domain-modelling` — the as-built modelling METHODOLOGY (what marks an aggregate
18
+ root, entity vs value object, where invariants live, the context boundary). It is
19
+ the only file wired under `## /aw-spec-specify`, and it carries NO business
20
+ vocabulary: HOW this code models, never WHAT it models (that is the domain set's
21
+ domain-driven-design.domain.md). Same shape as below — cite code coordinates.
22
+
23
+ Every rule below MUST cite a CODE COORDINATE (a real file/folder path or named
24
+ type) and, where it maps, the technical-constitution principle numeral it
25
+ details. This is the DETAIL layer under constitution.technical.md — the thin
26
+ ratified principle points here; here is the enforceable rule. State what the
27
+ code DOES (quirks, stubs, partials included), never a greenfield assumption.
28
+ Keep the frontmatter (origin + generated_by + concern). Copy the SHAPE only —
29
+ this file carries NO real technology, path, or framework name.
30
+ -->
31
+ # [Concern] — [PROJECT_NAME] Technical Rule (as-built)
32
+
33
+ > Ratified by: constitution.technical.md principle [N] ([short principle title]).
34
+ > Commands: [the technical commands this file feeds, per the partition — e.g. design · implement · build].
35
+
36
+ > [One-line framing of what this concern IS in this codebase — from the code, not an ideal.]
37
+
38
+ ## [Section — e.g. Structure / Layering / Rules / Contracts]
39
+
40
+ - [As-built rule the code follows.] (code: [real file/folder path or named type]; principle [N])
41
+ - [As-built rule.] (code: […])
42
+
43
+ ## [Section — e.g. Dependency direction / Constraints / Conventions]
44
+
45
+ - [As-built rule.] (code: […])
46
+
47
+ <!-- Where the code's behaviour is a stub / partial / permissive / inactive, STATE IT AS-BUILT at the
48
+ level the code reaches, and mark it so — do NOT upgrade a stub into a satisfied greenfield ideal,
49
+ and do NOT invent a rule the code does not evidence. An unmet ideal is simply omitted here
50
+ (migration/modernization is a separate later phase, not this set's concern). -->
51
+
52
+ ## Related
53
+
54
+ - [[<sibling generated tech rule>]] · constitution.technical.md principle [N]
@@ -0,0 +1,125 @@
1
+ <!--
2
+ ═══════════════════════════════════════════════════════════════════════════
3
+ rev-templates/ui-constitution.skeleton.md — SHAPE-ONLY reference.
4
+
5
+ This file is the FORMAT + VOCABULARY reference for the reverse-engineered UI
6
+ half (constitution.ui.md) — the FRONTEND LANE's base, authored by onboard from
7
+ an EXISTING codebase. It is the lane's counterpart to
8
+ technical-constitution.skeleton.md, and it carries the AppWeaver principle-
9
+ heading style, the Sync-Impact-Report shape, the evidence-line pattern and the
10
+ section skeleton — and NOTHING ELSE.
11
+
12
+ IT DELIBERATELY CONTAINS NO PRINCIPLE SET, and it names no framework, router,
13
+ component library, design system, styling approach or conformance standard.
14
+ A named example in a skeleton becomes ratified law in a lane it does not fit,
15
+ and the frontend is where that risk is highest — every stack has a house style
16
+ and none of them is the kit's to assume. Every [BRACKET] token below is a slot
17
+ filled FROM THE CODE, never a value to copy.
18
+
19
+ WHERE THE CONTENT COMES FROM — the forward direction is INVERTED here. In a
20
+ greenfield project this half ratifies the project's mapped frontend rule files;
21
+ at onboard those files DO NOT EXIST YET. The evidence is therefore the UI
22
+ SOURCE ITSELF, read through the scan substrate's `frontend_signals` (candidate
23
+ roots, their kind, their component/route/store files) plus the OKF as-built
24
+ frontend note. The project's frontend/ rule files are generated AFTERWARDS, as
25
+ the detail layer under whatever this half ratifies — the same order the
26
+ technical tier already uses.
27
+
28
+ DISCIPLINE THIS SKELETON ENFORCES (structurally — there is no project content
29
+ here to leak):
30
+ • EVIDENCE-FIRST — author a UX principle ONLY for an experience trait the UI
31
+ code actually exhibits. If the code does not show it, it is not a principle.
32
+ • CITE inline — every principle ends with an `(evidence: …)` line naming a
33
+ real component / route / store / stylesheet / config path. A principle with
34
+ no groundable evidence does not belong.
35
+ • AS-BUILT LEVEL — state a partial / inconsistent / absent trait at the level
36
+ the code actually reaches. An app with no accessibility attributes does not
37
+ get an accessibility principle written as though it were met; it gets one
38
+ that says what IS enforced, or none at all.
39
+ • OMIT pure aspiration — a trait the UI shows zero of is not softened into a
40
+ principle. A short honest half a later run can extend is correct.
41
+ • UX-* SERIES — number UX-I, UX-II, … This half is PARALLEL to the technical
42
+ base, never a continuation of it, so its numbering is unaffected by how many
43
+ principles that base carries and it never resumes the domain half's.
44
+ • ONE LANE ONLY — this half governs the frontend lane and stands alone. It
45
+ does not restate service-lane principles, does not cite them by number, and
46
+ carries NO domain principle, identifier, terminology or regulatory rule.
47
+ ═══════════════════════════════════════════════════════════════════════════
48
+ -->
49
+ <!--
50
+ Sync Impact Report
51
+ - Version: [OLD] -> [NEW] (reverse-engineered frontend baseline)
52
+ - Project: [PROJECT_NAME]
53
+ - Lane: [LANE_ID] ([KIND]) at [ROOT] — [separable | rendered inside the service tree]
54
+ - Discovered experience principles: UX-I–UX-[N]
55
+ - Principle set (as-built):
56
+ UX-I [PRINCIPLE_TITLE]
57
+ UX-II [PRINCIPLE_TITLE]
58
+ … (only traits the UI code evidences — no fixed count)
59
+ - Experience concerns DELIBERATELY OMITTED (lack of as-built evidence):
60
+ - [CONCERN] — [what the code shows instead, or that it shows nothing]
61
+ - Dependent artifacts:
62
+ - guardrails/projects/[project]/frontend/ — [✅/⚠] generated lane rule set
63
+ - guardrails/projects/[project]/tech-rule-bindings.md — [✅/⚠] `## /aw-spec-ui-constitution`
64
+ - TODOs: [none mechanical | …]
65
+ -->
66
+ # [PROJECT_NAME] Constitution — User Experience Base
67
+
68
+ > Reverse-engineered, **as-built**, domain-agnostic frontend-lane half. Authority for the
69
+ > UI lane. Service-lane principles live in `constitution.technical.md` and domain principles
70
+ > in `constitution.domain.md`; this half neither restates nor renumbers either.
71
+ > It asserts only experience traits evidenced by the UI code itself.
72
+
73
+ ## Declared Lane
74
+
75
+ [UI_LANE_DECLARATION]
76
+ <!-- Form: one line naming the lane, what it is built with, and the root directory it owns —
77
+ all three READ FROM THE CODE (the scan's candidate root, its detected kind, the framework
78
+ markers), never invented and never taken from a stack profile. Where the UI is rendered
79
+ inside the service tree and owns no root of its own, SAY SO: that is a legitimate as-built
80
+ lane, reversed in place. Where .appweaver/stacks.json exists and disagrees with the code,
81
+ the disagreement is reported, not silently resolved — a declaration is a human's statement
82
+ of intent and the code is what shipped. -->
83
+
84
+ ## Experience Principles
85
+
86
+ <!-- One block PER EVIDENCED TRAIT. Tag (NON-NEGOTIABLE) only where the UI code enforces it
87
+ as such. Replace the bracketed text; keep the `### UX-<numeral>. <title>` + rule +
88
+ `(evidence: …)` shape. -->
89
+
90
+ ### UX-I. [PRINCIPLE TITLE] [(NON-NEGOTIABLE)?]
91
+ [One declarative, testable rule the UI code actually evidences, stated at the level it reaches.]
92
+ (evidence: [real component / route / store / stylesheet / config path])
93
+
94
+ ### UX-II. [PRINCIPLE TITLE] [(NON-NEGOTIABLE)?]
95
+ […]
96
+ (evidence: […])
97
+
98
+ <!-- … continue with only the principles the UI code evidences, then stop … -->
99
+
100
+ ## [UI_STRUCTURE_SECTION_NAME]
101
+
102
+ [UI_STRUCTURE_CONTENT]
103
+ <!-- Form: the lane's AS-BUILT layout under its own root — where components, screens/pages,
104
+ routing, client state, styling and assets actually live, named as THIS code names them.
105
+ Do not impose a folder taxonomy the code does not use. This layout sits entirely under
106
+ the lane's root and never adds to the service lane's structure. -->
107
+
108
+ ## [UI_CONVENTIONS_SECTION_NAME]
109
+
110
+ [UI_CONVENTIONS_CONTENT]
111
+ <!-- Form: the naming, state-management, data-fetching and styling conventions the code
112
+ visibly follows, plus the lane's existing quality gates (its test setup, lint/format
113
+ config, CI steps) — each a thin adopted line pointing at the generated frontend rule
114
+ file that carries the detail. Where the codebase is inconsistent, state the DOMINANT
115
+ convention and record the divergence rather than picking a winner. -->
116
+
117
+ ## Governance
118
+
119
+ [UI_GOVERNANCE_RULES]
120
+ <!-- Form: this half versions independently of the other two. State only the lane's own
121
+ overrides. Mark the whole half PROVISIONAL where onboard authored it from the scan
122
+ alone — a later adopt/constitution run reconciles it against per-slice evidence. -->
123
+
124
+ **Version**: [X.Y.Z] | **Ratified**: [YYYY-MM-DD] | **Last Amended**: [YYYY-MM-DD]
125
+ <!-- ISO YYYY-MM-DD dates. Versions INDEPENDENTLY of the other two halves. -->
@@ -0,0 +1,123 @@
1
+ <!--
2
+ ═══════════════════════════════════════════════════════════════════════════
3
+ rev-templates/ui-delta-design-template.skeleton.md — SHAPE-ONLY reference.
4
+
5
+ This file is the FORMAT reference for the reverse-engineered UI DELTA-design
6
+ TEMPLATE that onboard installs at
7
+ .appweaver/templates/overrides/ui-delta-design-template.md — the frontend lane's
8
+ twin of delta-design-template.skeleton.md, written only where the CODE has a
9
+ lane. It carries the classification triple, the impact and regression
10
+ sections, the two ledgers and the close contract, and NOTHING ELSE.
11
+
12
+ IT NAMES NO FRAMEWORK AND NO FIXED UI TAXONOMY. The "Section" column is a
13
+ SLOT, filled with the ACTUAL sections of the UI design template generated
14
+ alongside this one — including whatever composition axes §3 turned out to
15
+ carry. A change is classified against the document it amends.
16
+
17
+ ONE CHANGE, TWO LANES, ONE VERSION. A change request that touches both lanes
18
+ produces a service delta AND this one; `finalize-delta` merges the three
19
+ masters (spec.md, design.md, design.ui.md) and the change closes on ONE
20
+ version bump. This record never opens a second UI design document, and it
21
+ never restates the service delta — where the change starts in the service
22
+ contract, this document records only what the EXPERIENCE does with it.
23
+
24
+ DISCIPLINE THIS SKELETON ENFORCES (structurally — there is no project content
25
+ here to leak):
26
+ • ADDED / MODIFIED / REMOVED — the complete classification. A shared
27
+ component is MODIFIED in place, never duplicated into the change.
28
+ • EVERY ROW SERVES A SPEC ID — the delta reads the delta-spec, never the
29
+ domain rule files. A change's experience is stated in the spec first.
30
+ • STATES ARE PART OF THE CHANGE — a new interaction that ships without its
31
+ loading, empty, error and permission-denied states is an incomplete delta,
32
+ not a later refinement.
33
+ • TECHNOLOGY-AGNOSTIC — responsibilities, field shapes and events, no code.
34
+ ═══════════════════════════════════════════════════════════════════════════
35
+ -->
36
+ # UI Delta Design — [CR-ID]: [TITLE]
37
+
38
+ **Feature (aggregate)**: [Aggregate]
39
+
40
+ **Base version**: [vX.Y]
41
+
42
+ **Service delta**: [the companion delta-design for this CR, or `None — experience-only change`]
43
+
44
+ <!--
45
+ This delta applies to the SINGLE master UI design at
46
+ specs/[Aggregate]/design.ui.md — never a new document. Classify every change
47
+ ADDED / MODIFIED / REMOVED against the current master, per the MASTER'S OWN
48
+ SECTIONS, in the same technology-agnostic form: responsibilities, inputs as
49
+ field shapes, events and states — no code. After this delta is applied,
50
+ ⌛ `ui-implement-delta` regenerates the touched UI and regression re-verifies
51
+ every screen that shares a changed component or state.
52
+ -->
53
+
54
+ ## Change summary
55
+
56
+ [One paragraph: what the experience change is and which user story / spec delta
57
+ it serves.]
58
+
59
+ ## ADDED — new UI elements
60
+
61
+ <!-- New screens, components, state, interactions or contract bindings.
62
+ "Section" names a section of THIS project's master UI design — the same
63
+ section titles the generated UI design template carries. -->
64
+
65
+ | Section (§ in design.ui.md) | Element | Kind | Serves |
66
+ |---|---|---|---|
67
+ | [§ of the master's own structure] | `[element]` | [screen / component / state / binding] | US-[n] · FR-[nnn] |
68
+
69
+ ## MODIFIED — existing UI elements
70
+
71
+ <!-- Edits to elements the master already defines. A shared component or a
72
+ shared state container is modified here, in place — never copied. -->
73
+
74
+ | Section (§ in design.ui.md) | Element | What changes | Why |
75
+ |---|---|---|---|
76
+ | [§ of the master's own structure] | `[element]` | [the edit] | US-[n] |
77
+
78
+ ## REMOVED
79
+
80
+ - [UI element removed + why, including where its users now go] — or `None`
81
+
82
+ ## Interaction states touched
83
+
84
+ <!-- Every state the change adds or alters — loading, empty, error,
85
+ permission-denied, in-flight. A new interaction lists its full state set
86
+ here; an unlisted state reads as unchanged, not as absent. -->
87
+
88
+ | Interaction | States added / changed | What the user sees | Serves |
89
+ |---|---|---|---|
90
+ | `[interaction]` | [states] | [per-state behaviour] | US-[n] |
91
+
92
+ ## Contract impact
93
+
94
+ [What this change needs from the service lane, taken from the change's contract
95
+ projection: bindings added, changed or no longer used. Anything the experience
96
+ requires that the contract does not offer is raised back to the service lane —
97
+ never worked around in the client. Or `None`.]
98
+
99
+ ## Cross-section impact
100
+
101
+ [Which of the master's sections ripple; shared components or state containers
102
+ touched; navigation edges added or removed; any screen in ANOTHER feature that
103
+ depends on a changed shared element.]
104
+
105
+ ## Regression targets
106
+
107
+ [Existing user stories / screens to re-verify because a shared component, a
108
+ shared state container or a navigation edge changed.]
109
+
110
+ ## New assumptions / deviations (from this change)
111
+
112
+ <!-- Anything this change defers — folds into the master's DA-n / WA-n ledgers
113
+ on apply. -->
114
+
115
+ - **DA-[n]**: [assumption to clarify later] — or `None`
116
+ - **WA-[n]**: [deviation to clear later] — or `None`
117
+
118
+ ## On close
119
+
120
+ `finalize-delta` merges this record into the master design.ui.md alongside the
121
+ spec and service-design merges, and appends the Change History row;
122
+ `close-delta` bumps the ONE version both lanes share and archives the change
123
+ under `changes/archive/`.