agentic-dev 0.2.10 → 0.2.12

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 (603) hide show
  1. package/README.md +50 -29
  2. package/bin/agentic-dev.mjs +656 -124
  3. package/lib/scaffold.mjs +109 -6
  4. package/package.json +8 -22
  5. package/.agent/prd.json +0 -29
  6. package/.agent/progress.txt +0 -1
  7. package/.agent/prompt.md +0 -21
  8. package/.agent/ralph-loop-state.json +0 -13
  9. package/.agent/ralph-supervisor-state.json +0 -12
  10. package/.agent/ralph-supervisor.sh +0 -238
  11. package/.agent/ralph.sh +0 -305
  12. package/.agent/runs/README.md +0 -7
  13. package/.agent/sdd-build-ast-audit.json +0 -13
  14. package/.claude/CLAUDE.md +0 -44
  15. package/.claude/agentic-dev.json +0 -3
  16. package/.claude/agents/ai-dev.md +0 -27
  17. package/.claude/agents/backend-dev.md +0 -26
  18. package/.claude/agents/db-dev.md +0 -26
  19. package/.claude/agents/devops.md +0 -27
  20. package/.claude/agents/frontend-dev.md +0 -25
  21. package/.claude/agents/github-ops.md +0 -25
  22. package/.claude/agents/test-dev.md +0 -26
  23. package/.claude/agents/uiux-designer.md +0 -25
  24. package/.claude/settings.json +0 -49
  25. package/.claude/settings.local.json +0 -8
  26. package/.claude/skills/sdd/SKILL.md +0 -189
  27. package/.claude/skills/sdd/agents/openai.yaml +0 -4
  28. package/.claude/skills/sdd/references/section-map.md +0 -67
  29. package/.claude/workspace-config.json +0 -3
  30. package/.codex/agentic-dev.json +0 -3
  31. package/.codex/agents/README.md +0 -22
  32. package/.codex/agents/api.toml +0 -11
  33. package/.codex/agents/architecture.toml +0 -11
  34. package/.codex/agents/ci.toml +0 -11
  35. package/.codex/agents/gitops.toml +0 -11
  36. package/.codex/agents/orchestrator.toml +0 -11
  37. package/.codex/agents/quality.toml +0 -11
  38. package/.codex/agents/runtime.toml +0 -11
  39. package/.codex/agents/security.toml +0 -11
  40. package/.codex/agents/specs.toml +0 -11
  41. package/.codex/agents/ui.toml +0 -11
  42. package/.codex/config.toml +0 -46
  43. package/.codex/skills/SKILL.md +0 -13
  44. package/.codex/skills/sdd/SKILL.md +0 -189
  45. package/.codex/skills/sdd/agents/openai.yaml +0 -4
  46. package/.codex/skills/sdd/references/section-map.md +0 -67
  47. package/.dockerignore +0 -8
  48. package/.env.example +0 -50
  49. package/.gitignore +0 -16
  50. package/AGENTS.md +0 -86
  51. package/SDD_SKILL.md +0 -589
  52. package/client/admin/.dockerignore +0 -3
  53. package/client/admin/.env.example +0 -1
  54. package/client/admin/Dockerfile +0 -16
  55. package/client/admin/Dockerfile.dev +0 -18
  56. package/client/admin/README.md +0 -20
  57. package/client/admin/index.html +0 -12
  58. package/client/admin/package.json +0 -41
  59. package/client/admin/postcss.config.js +0 -6
  60. package/client/admin/scripts/ui-parity-admin-adapter.mjs +0 -65
  61. package/client/admin/src/api/alerts.ts +0 -33
  62. package/client/admin/src/api/client.ts +0 -71
  63. package/client/admin/src/api/orders.ts +0 -33
  64. package/client/admin/src/api/support.ts +0 -11
  65. package/client/admin/src/app/App.tsx +0 -23
  66. package/client/admin/src/auth/AuthProvider.tsx +0 -122
  67. package/client/admin/src/auth/ProtectedRoute.tsx +0 -22
  68. package/client/admin/src/auth/auth-client.ts +0 -38
  69. package/client/admin/src/auth/types.ts +0 -18
  70. package/client/admin/src/components/AdminNotificationsDrawer.tsx +0 -162
  71. package/client/admin/src/components/AdminShell.tsx +0 -76
  72. package/client/admin/src/components/ui/button.tsx +0 -34
  73. package/client/admin/src/components/ui/input.tsx +0 -21
  74. package/client/admin/src/lib/cn.ts +0 -6
  75. package/client/admin/src/lib/specRouteCatalog.json +0 -30
  76. package/client/admin/src/lib/specScreens.json +0 -22
  77. package/client/admin/src/main.tsx +0 -17
  78. package/client/admin/src/pages/AdminDashboardPage.tsx +0 -171
  79. package/client/admin/src/pages/AdminLoginPage.tsx +0 -75
  80. package/client/admin/src/pages/AdminQueuePage.tsx +0 -107
  81. package/client/admin/src/pages/AdminSupportPage.tsx +0 -61
  82. package/client/admin/src/styles/globals.css +0 -17
  83. package/client/admin/src/theme-vars.ts +0 -18
  84. package/client/admin/src/theme.ts +0 -25
  85. package/client/admin/src/vite-env.d.ts +0 -1
  86. package/client/admin/tailwind.config.js +0 -8
  87. package/client/admin/tsconfig.json +0 -25
  88. package/client/admin/vite.config.ts +0 -12
  89. package/client/landing/.dockerignore +0 -3
  90. package/client/landing/.env.example +0 -1
  91. package/client/landing/Dockerfile +0 -16
  92. package/client/landing/Dockerfile.dev +0 -18
  93. package/client/landing/README.md +0 -18
  94. package/client/landing/index.html +0 -12
  95. package/client/landing/package.json +0 -41
  96. package/client/landing/postcss.config.js +0 -6
  97. package/client/landing/scripts/ui-parity-landing-adapter.mjs +0 -65
  98. package/client/landing/src/App.tsx +0 -21
  99. package/client/landing/src/api/catalog.ts +0 -30
  100. package/client/landing/src/api/client.ts +0 -30
  101. package/client/landing/src/auth/AuthProvider.tsx +0 -122
  102. package/client/landing/src/auth/ProtectedRoute.tsx +0 -22
  103. package/client/landing/src/auth/auth-client.ts +0 -38
  104. package/client/landing/src/auth/types.ts +0 -18
  105. package/client/landing/src/components/LandingShell.tsx +0 -34
  106. package/client/landing/src/lib/specRouteCatalog.json +0 -23
  107. package/client/landing/src/lib/specScreens.json +0 -17
  108. package/client/landing/src/main.tsx +0 -17
  109. package/client/landing/src/pages/LandingHomePage.tsx +0 -215
  110. package/client/landing/src/pages/LandingLoginPage.tsx +0 -90
  111. package/client/landing/src/pages/LandingWorkspacePage.tsx +0 -126
  112. package/client/landing/src/styles/globals.css +0 -17
  113. package/client/landing/src/theme-vars.ts +0 -16
  114. package/client/landing/src/theme.ts +0 -21
  115. package/client/landing/src/vite-env.d.ts +0 -1
  116. package/client/landing/tailwind.config.js +0 -8
  117. package/client/landing/tsconfig.json +0 -25
  118. package/client/landing/vite.config.ts +0 -12
  119. package/client/mobile/.dockerignore +0 -2
  120. package/client/mobile/.env.example +0 -1
  121. package/client/mobile/Dockerfile +0 -16
  122. package/client/mobile/Dockerfile.dev +0 -18
  123. package/client/mobile/README.md +0 -19
  124. package/client/mobile/index.html +0 -12
  125. package/client/mobile/package.json +0 -42
  126. package/client/mobile/postcss.config.js +0 -6
  127. package/client/mobile/scripts/ui-parity-mobile-adapter.mjs +0 -67
  128. package/client/mobile/src/App.tsx +0 -1
  129. package/client/mobile/src/api/client.ts +0 -62
  130. package/client/mobile/src/api/fulfillment.ts +0 -55
  131. package/client/mobile/src/api/shipping.ts +0 -56
  132. package/client/mobile/src/app/App.tsx +0 -23
  133. package/client/mobile/src/auth/AuthProvider.tsx +0 -122
  134. package/client/mobile/src/auth/ProtectedRoute.tsx +0 -27
  135. package/client/mobile/src/auth/auth-client.ts +0 -38
  136. package/client/mobile/src/auth/types.ts +0 -18
  137. package/client/mobile/src/components/InShell.tsx +0 -74
  138. package/client/mobile/src/components/ui/button.tsx +0 -35
  139. package/client/mobile/src/components/ui/card.tsx +0 -15
  140. package/client/mobile/src/components/ui/input.tsx +0 -21
  141. package/client/mobile/src/lib/cn.ts +0 -6
  142. package/client/mobile/src/lib/specRouteCatalog.json +0 -26
  143. package/client/mobile/src/lib/specScreens.json +0 -22
  144. package/client/mobile/src/lib/useSpeechRecognitionInput.ts +0 -271
  145. package/client/mobile/src/main.tsx +0 -17
  146. package/client/mobile/src/pages/DashboardPage.tsx +0 -172
  147. package/client/mobile/src/pages/FulfillmentPage.tsx +0 -138
  148. package/client/mobile/src/pages/LoginPage.tsx +0 -74
  149. package/client/mobile/src/pages/ShippingPage.tsx +0 -338
  150. package/client/mobile/src/styles/globals.css +0 -23
  151. package/client/mobile/src/theme-vars.ts +0 -16
  152. package/client/mobile/src/theme.ts +0 -21
  153. package/client/mobile/src/vite-env.d.ts +0 -1
  154. package/client/mobile/tailwind.config.js +0 -8
  155. package/client/mobile/tsconfig.json +0 -25
  156. package/client/mobile/vite.config.ts +0 -12
  157. package/client/web/.dockerignore +0 -3
  158. package/client/web/.env.example +0 -1
  159. package/client/web/Dockerfile +0 -16
  160. package/client/web/Dockerfile.dev +0 -18
  161. package/client/web/README.md +0 -47
  162. package/client/web/index.html +0 -12
  163. package/client/web/package.json +0 -42
  164. package/client/web/postcss.config.js +0 -6
  165. package/client/web/scripts/ui-parity-web-adapter.mjs +0 -66
  166. package/client/web/src/api/client.ts +0 -30
  167. package/client/web/src/api/orders.ts +0 -42
  168. package/client/web/src/app/App.tsx +0 -21
  169. package/client/web/src/auth/AuthProvider.tsx +0 -122
  170. package/client/web/src/auth/ProtectedRoute.tsx +0 -22
  171. package/client/web/src/auth/auth-client.ts +0 -38
  172. package/client/web/src/auth/types.ts +0 -18
  173. package/client/web/src/components/AppShell.tsx +0 -59
  174. package/client/web/src/components/ui/button.tsx +0 -35
  175. package/client/web/src/components/ui/card.tsx +0 -7
  176. package/client/web/src/components/ui/input.tsx +0 -21
  177. package/client/web/src/lib/cn.ts +0 -6
  178. package/client/web/src/lib/specRouteCatalog.json +0 -23
  179. package/client/web/src/lib/specScreens.json +0 -17
  180. package/client/web/src/main.tsx +0 -17
  181. package/client/web/src/pages/DashboardPage.tsx +0 -158
  182. package/client/web/src/pages/LoginPage.tsx +0 -72
  183. package/client/web/src/pages/OrdersPage.tsx +0 -123
  184. package/client/web/src/styles/globals.css +0 -17
  185. package/client/web/src/theme-vars.ts +0 -18
  186. package/client/web/src/theme.ts +0 -25
  187. package/client/web/src/vite-env.d.ts +0 -1
  188. package/client/web/tailwind.config.js +0 -8
  189. package/client/web/tsconfig.json +0 -25
  190. package/client/web/vite.config.ts +0 -12
  191. package/compose.yml +0 -206
  192. package/infra/compose/.env.dev.example +0 -28
  193. package/infra/compose/.env.prod.example +0 -29
  194. package/infra/compose/README.md +0 -35
  195. package/infra/compose/dev.yml +0 -125
  196. package/infra/compose/prod.yml +0 -126
  197. package/infra/terraform/README.md +0 -34
  198. package/infra/terraform/aws/data/.terraform.lock.hcl +0 -25
  199. package/infra/terraform/aws/data/README.md +0 -18
  200. package/infra/terraform/aws/data/main.tf +0 -147
  201. package/infra/terraform/aws/data/outputs.tf +0 -14
  202. package/infra/terraform/aws/data/variables.tf +0 -57
  203. package/infra/terraform/aws/data/versions.tf +0 -10
  204. package/infra/terraform/aws/domain/.terraform.lock.hcl +0 -25
  205. package/infra/terraform/aws/domain/README.md +0 -20
  206. package/infra/terraform/aws/domain/env/dev.tfvars.example +0 -6
  207. package/infra/terraform/aws/domain/env/prod.tfvars.example +0 -7
  208. package/infra/terraform/aws/domain/main.tf +0 -149
  209. package/infra/terraform/aws/domain/outputs.tf +0 -29
  210. package/infra/terraform/aws/domain/variables.tf +0 -58
  211. package/infra/terraform/aws/domain/versions.tf +0 -10
  212. package/infra/terraform/openstack/README.md +0 -38
  213. package/infra/terraform/openstack/dev/.terraform.lock.hcl +0 -24
  214. package/infra/terraform/openstack/dev/README.md +0 -18
  215. package/infra/terraform/openstack/dev/main.tf +0 -49
  216. package/infra/terraform/openstack/dev/providers.tf +0 -15
  217. package/infra/terraform/openstack/dev/terraform.tfvars.example +0 -54
  218. package/infra/terraform/openstack/dev/variables.tf +0 -210
  219. package/infra/terraform/openstack/dev/versions.tf +0 -10
  220. package/infra/terraform/openstack/modules/environment_host/main.tf +0 -143
  221. package/infra/terraform/openstack/modules/environment_host/outputs.tf +0 -25
  222. package/infra/terraform/openstack/modules/environment_host/templates/docker-host-user-data.sh.tftpl +0 -40
  223. package/infra/terraform/openstack/modules/environment_host/variables.tf +0 -145
  224. package/infra/terraform/openstack/modules/environment_host/versions.tf +0 -7
  225. package/infra/terraform/openstack/prod/.terraform.lock.hcl +0 -24
  226. package/infra/terraform/openstack/prod/README.md +0 -18
  227. package/infra/terraform/openstack/prod/main.tf +0 -49
  228. package/infra/terraform/openstack/prod/providers.tf +0 -15
  229. package/infra/terraform/openstack/prod/terraform.tfvars.example +0 -55
  230. package/infra/terraform/openstack/prod/variables.tf +0 -210
  231. package/infra/terraform/openstack/prod/versions.tf +0 -10
  232. package/infra/terraform/openstack/server/.terraform.lock.hcl +0 -45
  233. package/infra/terraform/openstack/server/README.md +0 -47
  234. package/infra/terraform/openstack/server/main.tf +0 -161
  235. package/infra/terraform/openstack/server/outputs.tf +0 -30
  236. package/infra/terraform/openstack/server/providers.tf +0 -30
  237. package/infra/terraform/openstack/server/templates/server-user-data.sh.tftpl +0 -50
  238. package/infra/terraform/openstack/server/variables.tf +0 -233
  239. package/infra/terraform/openstack/server/zz_aspace.auto.tfvars.example.json +0 -29
  240. package/pnpm-workspace.yaml +0 -2
  241. package/scripts/dev/audit_sdd_build_ast.py +0 -277
  242. package/sdd/01_planning/01_feature/INDEX.md +0 -16
  243. package/sdd/01_planning/01_feature/README.md +0 -76
  244. package/sdd/01_planning/01_feature/alerts_feature_spec.md +0 -55
  245. package/sdd/01_planning/01_feature/auth_feature_spec.md +0 -57
  246. package/sdd/01_planning/01_feature/catalog_feature_spec.md +0 -61
  247. package/sdd/01_planning/01_feature/fulfillment_feature_spec.md +0 -58
  248. package/sdd/01_planning/01_feature/health_feature_spec.md +0 -52
  249. package/sdd/01_planning/01_feature/inventory_feature_spec.md +0 -60
  250. package/sdd/01_planning/01_feature/order_feature_spec.md +0 -63
  251. package/sdd/01_planning/01_feature/shipping_feature_spec.md +0 -55
  252. package/sdd/01_planning/01_feature/support_feature_spec.md +0 -53
  253. package/sdd/01_planning/01_feature/user_feature_spec.md +0 -54
  254. package/sdd/01_planning/02_screen/INDEX.md +0 -13
  255. package/sdd/01_planning/02_screen/README.md +0 -41
  256. package/sdd/01_planning/02_screen/admin_screen_spec.pdf +0 -0
  257. package/sdd/01_planning/02_screen/assets/README.md +0 -16
  258. package/sdd/01_planning/02_screen/assets/example/README.md +0 -13
  259. package/sdd/01_planning/02_screen/landing_screen_spec.pdf +0 -0
  260. package/sdd/01_planning/02_screen/mobile_screen_spec.pdf +0 -0
  261. package/sdd/01_planning/02_screen/web_screen_spec.pdf +0 -0
  262. package/sdd/01_planning/03_architecture/INDEX.md +0 -9
  263. package/sdd/01_planning/03_architecture/README.md +0 -25
  264. package/sdd/01_planning/03_architecture/architecture_document_structure.md +0 -77
  265. package/sdd/01_planning/03_architecture/backend/README.md +0 -10
  266. package/sdd/01_planning/03_architecture/frontend/README.md +0 -12
  267. package/sdd/01_planning/03_architecture/infra/README.md +0 -10
  268. package/sdd/01_planning/03_architecture/tech-research/README.md +0 -4
  269. package/sdd/01_planning/03_architecture/templates_system_architecture.md +0 -84
  270. package/sdd/01_planning/04_data/INDEX.md +0 -4
  271. package/sdd/01_planning/04_data/README.md +0 -10
  272. package/sdd/01_planning/04_data/templates_data_modeling.md +0 -119
  273. package/sdd/01_planning/05_api/README.md +0 -12
  274. package/sdd/01_planning/05_api/templates_api_contract.md +0 -90
  275. package/sdd/01_planning/06_iac/README.md +0 -11
  276. package/sdd/01_planning/06_iac/templates_runtime_and_cicd_baseline.md +0 -46
  277. package/sdd/01_planning/07_integration/README.md +0 -11
  278. package/sdd/01_planning/07_integration/templates_frontend_api_integration.md +0 -46
  279. package/sdd/01_planning/08_nonfunctional/README.md +0 -7
  280. package/sdd/01_planning/09_security/README.md +0 -7
  281. package/sdd/01_planning/10_test/README.md +0 -12
  282. package/sdd/01_planning/10_test/templates_test_strategy.md +0 -60
  283. package/sdd/01_planning/INDEX.md +0 -19
  284. package/sdd/01_planning/README.md +0 -17
  285. package/sdd/02_plan/01_feature/README.md +0 -34
  286. package/sdd/02_plan/01_feature/_feature_todo_template.md +0 -29
  287. package/sdd/02_plan/02_screen/INDEX.md +0 -19
  288. package/sdd/02_plan/02_screen/README.md +0 -39
  289. package/sdd/02_plan/02_screen/_screen_todo_template.md +0 -60
  290. package/sdd/02_plan/03_architecture/README.md +0 -23
  291. package/sdd/02_plan/03_architecture/architecture_document_governance.md +0 -40
  292. package/sdd/02_plan/03_architecture/build_ast_runtime_tree_governance.md +0 -53
  293. package/sdd/02_plan/03_architecture/repository_governance.md +0 -39
  294. package/sdd/02_plan/03_architecture/runtime_and_structure_governance.md +0 -38
  295. package/sdd/02_plan/03_architecture/templates-hexagonal-template-architecture.md +0 -9
  296. package/sdd/02_plan/03_architecture/toolchain_governance.md +0 -98
  297. package/sdd/02_plan/04_data/README.md +0 -5
  298. package/sdd/02_plan/05_api/README.md +0 -5
  299. package/sdd/02_plan/06_iac/README.md +0 -11
  300. package/sdd/02_plan/06_iac/dev_runtime_delivery.md +0 -36
  301. package/sdd/02_plan/06_iac/template_runtime_delivery.md +0 -50
  302. package/sdd/02_plan/07_integration/README.md +0 -5
  303. package/sdd/02_plan/07_integration/frontend_live_integration.md +0 -31
  304. package/sdd/02_plan/08_nonfunctional/README.md +0 -5
  305. package/sdd/02_plan/08_nonfunctional/repository_hygiene.md +0 -26
  306. package/sdd/02_plan/09_security/README.md +0 -5
  307. package/sdd/02_plan/10_test/README.md +0 -11
  308. package/sdd/02_plan/10_test/regression_verification.md +0 -39
  309. package/sdd/02_plan/10_test/templates/README.md +0 -8
  310. package/sdd/02_plan/10_test/templates/ui_parity_web_contract.template.yaml +0 -23
  311. package/sdd/02_plan/10_test/verification_strategy.md +0 -43
  312. package/sdd/02_plan/99_generated/from_planning/ui_parity/.gitkeep +0 -1
  313. package/sdd/02_plan/README.md +0 -40
  314. package/sdd/03_build/01_feature/README.md +0 -20
  315. package/sdd/03_build/01_feature/domain/README.md +0 -3
  316. package/sdd/03_build/01_feature/domain/account_and_access.md +0 -20
  317. package/sdd/03_build/01_feature/domain/catalog_and_inventory.md +0 -20
  318. package/sdd/03_build/01_feature/domain/ordering_and_fulfillment.md +0 -21
  319. package/sdd/03_build/01_feature/domain/support_and_observability.md +0 -21
  320. package/sdd/03_build/01_feature/domain_surfaces.md +0 -28
  321. package/sdd/03_build/01_feature/service/README.md +0 -3
  322. package/sdd/03_build/01_feature/service/admin_surface.md +0 -15
  323. package/sdd/03_build/01_feature/service/landing_surface.md +0 -13
  324. package/sdd/03_build/01_feature/service/mobile_surface.md +0 -14
  325. package/sdd/03_build/01_feature/service/web_surface.md +0 -14
  326. package/sdd/03_build/02_screen/README.md +0 -25
  327. package/sdd/03_build/02_screen/_screen_build_template.md +0 -26
  328. package/sdd/03_build/02_screen/admin/README.md +0 -5
  329. package/sdd/03_build/02_screen/landing/README.md +0 -5
  330. package/sdd/03_build/02_screen/mobile/README.md +0 -5
  331. package/sdd/03_build/02_screen/web/README.md +0 -5
  332. package/sdd/03_build/03_architecture/README.md +0 -10
  333. package/sdd/03_build/03_architecture/architecture_document_governance.md +0 -30
  334. package/sdd/03_build/03_architecture/build_ast_runtime_tree_governance.md +0 -24
  335. package/sdd/03_build/03_architecture/repository_governance.md +0 -18
  336. package/sdd/03_build/03_architecture/toolchain_governance.md +0 -36
  337. package/sdd/03_build/06_iac/README.md +0 -3
  338. package/sdd/03_build/06_iac/dev_runtime_delivery.md +0 -10
  339. package/sdd/03_build/06_iac/template_runtime_delivery.md +0 -49
  340. package/sdd/03_build/07_integration/README.md +0 -3
  341. package/sdd/03_build/07_integration/frontend_live_integration.md +0 -11
  342. package/sdd/03_build/08_nonfunctional/README.md +0 -3
  343. package/sdd/03_build/08_nonfunctional/repository_hygiene.md +0 -10
  344. package/sdd/03_build/10_test/README.md +0 -9
  345. package/sdd/03_build/10_test/regression_verification.md +0 -16
  346. package/sdd/03_build/10_test/verification_harness.md +0 -11
  347. package/sdd/03_build/README.md +0 -35
  348. package/sdd/03_verify/01_feature/README.md +0 -5
  349. package/sdd/03_verify/01_feature/domain_verification.md +0 -14
  350. package/sdd/03_verify/01_feature/service_verification.md +0 -22
  351. package/sdd/03_verify/02_screen/README.md +0 -6
  352. package/sdd/03_verify/02_screen/_screen_verify_template.md +0 -20
  353. package/sdd/03_verify/02_screen/admin/README.md +0 -4
  354. package/sdd/03_verify/02_screen/landing/README.md +0 -4
  355. package/sdd/03_verify/02_screen/mobile/README.md +0 -4
  356. package/sdd/03_verify/02_screen/web/README.md +0 -4
  357. package/sdd/03_verify/03_architecture/README.md +0 -10
  358. package/sdd/03_verify/03_architecture/architecture_document_governance.md +0 -15
  359. package/sdd/03_verify/03_architecture/build_ast_runtime_tree_governance.md +0 -28
  360. package/sdd/03_verify/03_architecture/repository_governance.md +0 -16
  361. package/sdd/03_verify/03_architecture/toolchain_governance.md +0 -58
  362. package/sdd/03_verify/06_iac/README.md +0 -3
  363. package/sdd/03_verify/06_iac/dev_runtime_delivery.md +0 -10
  364. package/sdd/03_verify/06_iac/template_runtime_delivery.md +0 -42
  365. package/sdd/03_verify/07_integration/README.md +0 -3
  366. package/sdd/03_verify/07_integration/frontend_live_integration.md +0 -16
  367. package/sdd/03_verify/08_nonfunctional/README.md +0 -3
  368. package/sdd/03_verify/08_nonfunctional/repository_hygiene.md +0 -14
  369. package/sdd/03_verify/10_test/README.md +0 -9
  370. package/sdd/03_verify/10_test/regression_verification.md +0 -16
  371. package/sdd/03_verify/10_test/ui_parity/README.md +0 -4
  372. package/sdd/03_verify/10_test/ui_parity/loop_runs/.gitkeep +0 -0
  373. package/sdd/03_verify/10_test/ui_parity/reference/.gitkeep +0 -0
  374. package/sdd/03_verify/10_test/ui_parity/staged_runs/.gitkeep +0 -0
  375. package/sdd/03_verify/10_test/verification_harness.md +0 -17
  376. package/sdd/03_verify/README.md +0 -22
  377. package/sdd/05_operate/01_runbooks/.gitkeep +0 -1
  378. package/sdd/05_operate/01_runbooks/README.md +0 -4
  379. package/sdd/05_operate/02_delivery_status/README.md +0 -4
  380. package/sdd/05_operate/02_delivery_status/service_status.md +0 -16
  381. package/sdd/05_operate/README.md +0 -12
  382. package/sdd/99_toolchain/01_automation/.gitkeep +0 -1
  383. package/sdd/99_toolchain/01_automation/README.md +0 -76
  384. package/sdd/99_toolchain/01_automation/agentic-dev/analyze_proof_results.py +0 -132
  385. package/sdd/99_toolchain/01_automation/agentic-dev/analyze_route_gap.py +0 -85
  386. package/sdd/99_toolchain/01_automation/agentic-dev/assets/repo-contract.template.json +0 -75
  387. package/sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh +0 -84
  388. package/sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh +0 -33
  389. package/sdd/99_toolchain/01_automation/agentic-dev/init_repo_contract.sh +0 -51
  390. package/sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json +0 -76
  391. package/sdd/99_toolchain/01_automation/agentic-dev/resolve_frontend_target.py +0 -52
  392. package/sdd/99_toolchain/01_automation/agentic-dev/resolve_repo_contract.py +0 -56
  393. package/sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh +0 -100
  394. package/sdd/99_toolchain/01_automation/agentic-dev/run_repo_phase.sh +0 -140
  395. package/sdd/99_toolchain/01_automation/agentic-dev/validate_json_schema.py +0 -39
  396. package/sdd/99_toolchain/01_automation/agentic-parity-harness-design.md +0 -291
  397. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/dashboard.png +0 -0
  398. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/login.png +0 -0
  399. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/queue.png +0 -0
  400. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/support.png +0 -0
  401. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/home.png +0 -0
  402. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/login.png +0 -0
  403. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/workspace.png +0 -0
  404. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/dashboard.png +0 -0
  405. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/fulfillment.png +0 -0
  406. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/login.png +0 -0
  407. package/sdd/99_toolchain/01_automation/assets/web_screen_capture/dashboard.png +0 -0
  408. package/sdd/99_toolchain/01_automation/assets/web_screen_capture/login.png +0 -0
  409. package/sdd/99_toolchain/01_automation/assets/web_screen_capture/orders.png +0 -0
  410. package/sdd/99_toolchain/01_automation/build_asset_recipes.py +0 -10
  411. package/sdd/99_toolchain/01_automation/build_screen_spec_pdf.py +0 -427
  412. package/sdd/99_toolchain/01_automation/capture_screen_assets.mjs +0 -148
  413. package/sdd/99_toolchain/01_automation/harness-layout.md +0 -34
  414. package/sdd/99_toolchain/01_automation/parity-execution-tooling-design.md +0 -319
  415. package/sdd/99_toolchain/01_automation/playwright_exactness_manifest.py +0 -21
  416. package/sdd/99_toolchain/01_automation/run_playwright_exactness.py +0 -87
  417. package/sdd/99_toolchain/01_automation/screen_spec_manifest.py +0 -321
  418. package/sdd/99_toolchain/01_automation/spec_asset_builder.py +0 -274
  419. package/sdd/99_toolchain/01_automation/ui-contract-projection.md +0 -79
  420. package/sdd/99_toolchain/01_automation/ui-parity/README.md +0 -60
  421. package/sdd/99_toolchain/01_automation/ui-parity/cli/extract-reference-pages.mjs +0 -2
  422. package/sdd/99_toolchain/01_automation/ui-parity/cli/materialize-reference-assets.mjs +0 -58
  423. package/sdd/99_toolchain/01_automation/ui-parity/cli/normalize-reference-assets.mjs +0 -2
  424. package/sdd/99_toolchain/01_automation/ui-parity/cli/route-gap-report.mjs +0 -187
  425. package/sdd/99_toolchain/01_automation/ui-parity/cli/run-proof.mjs +0 -50
  426. package/sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs +0 -62
  427. package/sdd/99_toolchain/01_automation/ui-parity/cli/upload-parity1.mjs +0 -2
  428. package/sdd/99_toolchain/01_automation/ui-parity/contracts/collector-metadata.schema.json +0 -33
  429. package/sdd/99_toolchain/01_automation/ui-parity/contracts/proof-result.schema.json +0 -76
  430. package/sdd/99_toolchain/01_automation/ui-parity/contracts/route-gap-report.schema.json +0 -95
  431. package/sdd/99_toolchain/01_automation/ui-parity/core/capture-runner.mjs +0 -55
  432. package/sdd/99_toolchain/01_automation/ui-parity/core/load-adapter.mjs +0 -25
  433. package/sdd/99_toolchain/01_automation/ui-parity/core/load-contract.mjs +0 -81
  434. package/sdd/99_toolchain/01_automation/ui-parity/core/paths.mjs +0 -23
  435. package/sdd/99_toolchain/01_automation/ui-parity/core/proof-runner.mjs +0 -255
  436. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-artifact-layout.md +0 -23
  437. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-proof-interface.md +0 -60
  438. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-route-gap-interface.md +0 -82
  439. package/sdd/99_toolchain/01_automation/ui-parity/runtime/playwright-runtime.mjs +0 -16
  440. package/sdd/99_toolchain/01_automation/ui-parity/runtime/static-runtime.mjs +0 -6
  441. package/sdd/99_toolchain/02_policies/.gitkeep +0 -1
  442. package/sdd/99_toolchain/02_policies/build-ast-governance-policy.md +0 -22
  443. package/sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md +0 -24
  444. package/sdd/99_toolchain/02_policies/convention-storage-policy.md +0 -26
  445. package/sdd/99_toolchain/02_policies/main-push-before-dev-deploy-policy.md +0 -27
  446. package/sdd/99_toolchain/02_policies/regression-verification-policy.md +0 -22
  447. package/sdd/99_toolchain/03_templates/.gitkeep +0 -1
  448. package/sdd/99_toolchain/03_templates/asset_recipe_manifest.example.py +0 -38
  449. package/sdd/99_toolchain/03_templates/generated_assets/README.md +0 -11
  450. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-lockup.svg +0 -3
  451. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-mark.svg +0 -3
  452. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-wordmark.svg +0 -3
  453. package/sdd/99_toolchain/03_templates/playwright_exactness_manifest.example.py +0 -21
  454. package/sdd/99_toolchain/README.md +0 -23
  455. package/sdd/README.md +0 -21
  456. package/server/.dockerignore +0 -4
  457. package/server/.env.example +0 -19
  458. package/server/Dockerfile +0 -22
  459. package/server/Dockerfile.dev +0 -19
  460. package/server/README.md +0 -33
  461. package/server/__init__.py +0 -0
  462. package/server/api/__init__.py +0 -1
  463. package/server/api/http/__init__.py +0 -4
  464. package/server/api/http/app.py +0 -53
  465. package/server/api/http/router.py +0 -24
  466. package/server/config.py +0 -52
  467. package/server/contexts/__init__.py +0 -12
  468. package/server/contexts/alerts/__init__.py +0 -1
  469. package/server/contexts/alerts/application/__init__.py +0 -13
  470. package/server/contexts/alerts/application/services.py +0 -41
  471. package/server/contexts/alerts/contracts/__init__.py +0 -3
  472. package/server/contexts/alerts/contracts/http/__init__.py +0 -3
  473. package/server/contexts/alerts/contracts/http/router.py +0 -37
  474. package/server/contexts/alerts/domain/__init__.py +0 -15
  475. package/server/contexts/alerts/domain/models.py +0 -29
  476. package/server/contexts/alerts/infrastructure/__init__.py +0 -11
  477. package/server/contexts/alerts/infrastructure/repository.py +0 -41
  478. package/server/contexts/auth/__init__.py +0 -1
  479. package/server/contexts/auth/application/__init__.py +0 -3
  480. package/server/contexts/auth/application/ports.py +0 -10
  481. package/server/contexts/auth/application/services.py +0 -64
  482. package/server/contexts/auth/contracts/__init__.py +0 -4
  483. package/server/contexts/auth/contracts/http/__init__.py +0 -4
  484. package/server/contexts/auth/contracts/http/dependencies.py +0 -37
  485. package/server/contexts/auth/contracts/http/router.py +0 -19
  486. package/server/contexts/auth/domain/__init__.py +0 -3
  487. package/server/contexts/auth/domain/models.py +0 -24
  488. package/server/contexts/auth/infrastructure/__init__.py +0 -4
  489. package/server/contexts/auth/infrastructure/adapters/memory.py +0 -19
  490. package/server/contexts/auth/infrastructure/adapters/mongodb.py +0 -24
  491. package/server/contexts/auth/infrastructure/adapters/sqlalchemy.py +0 -74
  492. package/server/contexts/auth/infrastructure/repository.py +0 -28
  493. package/server/contexts/catalog/__init__.py +0 -1
  494. package/server/contexts/catalog/application/__init__.py +0 -28
  495. package/server/contexts/catalog/application/ports.py +0 -15
  496. package/server/contexts/catalog/application/services.py +0 -154
  497. package/server/contexts/catalog/contracts/__init__.py +0 -3
  498. package/server/contexts/catalog/contracts/http/__init__.py +0 -3
  499. package/server/contexts/catalog/contracts/http/router.py +0 -60
  500. package/server/contexts/catalog/domain/__init__.py +0 -45
  501. package/server/contexts/catalog/domain/models.py +0 -113
  502. package/server/contexts/catalog/infrastructure/__init__.py +0 -4
  503. package/server/contexts/catalog/infrastructure/adapters/memory.py +0 -62
  504. package/server/contexts/catalog/infrastructure/repository.py +0 -8
  505. package/server/contexts/fulfillment/__init__.py +0 -1
  506. package/server/contexts/fulfillment/application/__init__.py +0 -13
  507. package/server/contexts/fulfillment/application/ports.py +0 -20
  508. package/server/contexts/fulfillment/application/services.py +0 -85
  509. package/server/contexts/fulfillment/contracts/__init__.py +0 -3
  510. package/server/contexts/fulfillment/contracts/http/__init__.py +0 -3
  511. package/server/contexts/fulfillment/contracts/http/router.py +0 -40
  512. package/server/contexts/fulfillment/domain/__init__.py +0 -25
  513. package/server/contexts/fulfillment/domain/models.py +0 -73
  514. package/server/contexts/fulfillment/infrastructure/__init__.py +0 -13
  515. package/server/contexts/fulfillment/infrastructure/adapters/memory.py +0 -43
  516. package/server/contexts/fulfillment/infrastructure/repository.py +0 -97
  517. package/server/contexts/health/__init__.py +0 -1
  518. package/server/contexts/health/application/__init__.py +0 -3
  519. package/server/contexts/health/application/services.py +0 -2
  520. package/server/contexts/health/contracts/__init__.py +0 -3
  521. package/server/contexts/health/contracts/http/__init__.py +0 -3
  522. package/server/contexts/health/contracts/http/router.py +0 -10
  523. package/server/contexts/inventory/__init__.py +0 -1
  524. package/server/contexts/inventory/application/__init__.py +0 -28
  525. package/server/contexts/inventory/application/ports.py +0 -11
  526. package/server/contexts/inventory/application/services.py +0 -214
  527. package/server/contexts/inventory/contracts/__init__.py +0 -3
  528. package/server/contexts/inventory/contracts/http/__init__.py +0 -3
  529. package/server/contexts/inventory/contracts/http/router.py +0 -82
  530. package/server/contexts/inventory/domain/__init__.py +0 -33
  531. package/server/contexts/inventory/domain/models.py +0 -93
  532. package/server/contexts/inventory/infrastructure/__init__.py +0 -4
  533. package/server/contexts/inventory/infrastructure/adapters/memory.py +0 -24
  534. package/server/contexts/inventory/infrastructure/repository.py +0 -8
  535. package/server/contexts/orders/__init__.py +0 -1
  536. package/server/contexts/orders/application/__init__.py +0 -19
  537. package/server/contexts/orders/application/services.py +0 -127
  538. package/server/contexts/orders/contracts/__init__.py +0 -3
  539. package/server/contexts/orders/contracts/http/__init__.py +0 -3
  540. package/server/contexts/orders/contracts/http/router.py +0 -82
  541. package/server/contexts/orders/domain/__init__.py +0 -29
  542. package/server/contexts/orders/domain/models.py +0 -95
  543. package/server/contexts/orders/infrastructure/__init__.py +0 -7
  544. package/server/contexts/orders/infrastructure/repository.py +0 -104
  545. package/server/contexts/shipping/__init__.py +0 -1
  546. package/server/contexts/shipping/application/__init__.py +0 -13
  547. package/server/contexts/shipping/application/services.py +0 -92
  548. package/server/contexts/shipping/contracts/__init__.py +0 -3
  549. package/server/contexts/shipping/contracts/http/__init__.py +0 -3
  550. package/server/contexts/shipping/contracts/http/router.py +0 -40
  551. package/server/contexts/shipping/domain/__init__.py +0 -19
  552. package/server/contexts/shipping/domain/models.py +0 -48
  553. package/server/contexts/shipping/infrastructure/__init__.py +0 -9
  554. package/server/contexts/shipping/infrastructure/repository.py +0 -50
  555. package/server/contexts/support/__init__.py +0 -1
  556. package/server/contexts/support/application/__init__.py +0 -13
  557. package/server/contexts/support/application/services.py +0 -29
  558. package/server/contexts/support/contracts/__init__.py +0 -3
  559. package/server/contexts/support/contracts/http/__init__.py +0 -3
  560. package/server/contexts/support/contracts/http/router.py +0 -40
  561. package/server/contexts/support/domain/__init__.py +0 -13
  562. package/server/contexts/support/domain/models.py +0 -27
  563. package/server/contexts/support/infrastructure/__init__.py +0 -11
  564. package/server/contexts/support/infrastructure/repository.py +0 -70
  565. package/server/contexts/user/__init__.py +0 -1
  566. package/server/contexts/user/application/__init__.py +0 -3
  567. package/server/contexts/user/application/ports.py +0 -11
  568. package/server/contexts/user/application/services.py +0 -44
  569. package/server/contexts/user/contracts/__init__.py +0 -3
  570. package/server/contexts/user/contracts/http/__init__.py +0 -3
  571. package/server/contexts/user/contracts/http/router.py +0 -26
  572. package/server/contexts/user/domain/__init__.py +0 -3
  573. package/server/contexts/user/domain/models.py +0 -22
  574. package/server/contexts/user/infrastructure/__init__.py +0 -3
  575. package/server/contexts/user/infrastructure/adapters/memory.py +0 -27
  576. package/server/contexts/user/infrastructure/adapters/mongodb.py +0 -41
  577. package/server/contexts/user/infrastructure/adapters/sqlalchemy.py +0 -94
  578. package/server/contexts/user/infrastructure/factory.py +0 -28
  579. package/server/data/README.md +0 -24
  580. package/server/data/bootstrap/alerts.json +0 -38
  581. package/server/data/bootstrap/auth_accounts.json +0 -18
  582. package/server/data/bootstrap/catalog_products.json +0 -179
  583. package/server/data/bootstrap/fulfillment_events.json +0 -5
  584. package/server/data/bootstrap/fulfillment_notes.json +0 -5
  585. package/server/data/bootstrap/fulfillment_tasks.json +0 -50
  586. package/server/data/bootstrap/inventory_levels.json +0 -80
  587. package/server/data/bootstrap/orders.json +0 -62
  588. package/server/data/bootstrap/shipping_shipments.json +0 -50
  589. package/server/data/bootstrap/support_faqs.json +0 -26
  590. package/server/data/bootstrap/users.json +0 -20
  591. package/server/data/bootstrap_loader.py +0 -15
  592. package/server/docker-entrypoint.sh +0 -56
  593. package/server/main.py +0 -3
  594. package/server/pyproject.toml +0 -36
  595. package/server/shared/__init__.py +0 -1
  596. package/server/shared/application/__init__.py +0 -3
  597. package/server/shared/application/health.py +0 -2
  598. package/server/shared/infrastructure/__init__.py +0 -10
  599. package/server/shared/infrastructure/runtime.py +0 -6
  600. package/server/shared/infrastructure/security.py +0 -33
  601. package/server/tests/e2e/test_domain_feature_flows.py +0 -483
  602. package/server/tests/test_health.py +0 -49
  603. package/server/uv.lock +0 -1169
@@ -1,233 +0,0 @@
1
- variable "auth_url" {
2
- type = string
3
- description = "OpenStack Keystone auth URL."
4
- }
5
-
6
- variable "region" {
7
- type = string
8
- description = "OpenStack region name."
9
- default = "RegionOne"
10
- }
11
-
12
- variable "interface" {
13
- type = string
14
- description = "OpenStack endpoint interface."
15
- default = "public"
16
- }
17
-
18
- variable "auth_type" {
19
- type = string
20
- description = "OpenStack auth type."
21
- default = "password"
22
- }
23
-
24
- variable "username" {
25
- type = string
26
- description = "OpenStack username."
27
- default = ""
28
- }
29
-
30
- variable "password" {
31
- type = string
32
- description = "OpenStack password."
33
- default = ""
34
- sensitive = true
35
- }
36
-
37
- variable "project_name" {
38
- type = string
39
- description = "OpenStack project name."
40
- default = ""
41
- }
42
-
43
- variable "user_domain_name" {
44
- type = string
45
- description = "OpenStack user domain name."
46
- default = "Default"
47
- }
48
-
49
- variable "project_domain_name" {
50
- type = string
51
- description = "OpenStack project domain name."
52
- default = "Default"
53
- }
54
-
55
- variable "application_credential_id" {
56
- type = string
57
- description = "OpenStack application credential id."
58
- default = ""
59
- }
60
-
61
- variable "application_credential_secret" {
62
- type = string
63
- description = "OpenStack application credential secret."
64
- default = ""
65
- sensitive = true
66
- }
67
-
68
- variable "insecure" {
69
- type = bool
70
- description = "Disable TLS validation."
71
- default = false
72
- }
73
-
74
- variable "service_name" {
75
- type = string
76
- description = "Service short name."
77
- default = "template-service"
78
- }
79
-
80
- variable "application_name" {
81
- type = string
82
- description = "Human-readable application name passed to the backend environment."
83
- default = "Template API"
84
- }
85
-
86
- variable "phase" {
87
- type = string
88
- description = "Deployment phase."
89
- default = "dev"
90
-
91
- validation {
92
- condition = contains(["dev", "prod"], lower(var.phase))
93
- error_message = "phase must be one of: dev, prod"
94
- }
95
- }
96
-
97
- variable "external_network_name" {
98
- type = string
99
- description = "External provider network used for router gateway and floating IP."
100
- default = "public"
101
- }
102
-
103
- variable "app_network_name" {
104
- type = string
105
- description = "Tenant app network name. Leave empty to derive from service+phase."
106
- default = ""
107
- }
108
-
109
- variable "app_subnet_name" {
110
- type = string
111
- description = "Tenant app subnet name. Leave empty to derive from service+phase."
112
- default = ""
113
- }
114
-
115
- variable "app_subnet_cidr" {
116
- type = string
117
- description = "App subnet CIDR."
118
- default = "10.42.0.0/24"
119
- }
120
-
121
- variable "dns_nameservers" {
122
- type = list(string)
123
- description = "Optional DNS nameservers for the app subnet."
124
- default = ["1.1.1.1", "8.8.8.8"]
125
- }
126
-
127
- variable "backend_image_name" {
128
- type = string
129
- description = "Boot image name for the API compute instance."
130
- default = "ubuntu-24.04-noble-amd64"
131
- }
132
-
133
- variable "instance_flavor_name" {
134
- type = string
135
- description = "Flavor for the API compute instance."
136
- default = "m1.small"
137
- }
138
-
139
- variable "backend_port" {
140
- type = number
141
- description = "API service port."
142
- default = 8080
143
- }
144
-
145
- variable "associate_floating_ip" {
146
- type = bool
147
- description = "Whether to attach a floating IP to the API instance."
148
- default = true
149
- }
150
-
151
- variable "backend_ingress_cidrs" {
152
- type = list(string)
153
- description = "CIDRs allowed to reach the API service port."
154
- default = ["0.0.0.0/0"]
155
- }
156
-
157
- variable "ssh_ingress_cidrs" {
158
- type = list(string)
159
- description = "CIDRs allowed to SSH to the API instance."
160
- default = []
161
- }
162
-
163
- variable "ssh_keypair_name" {
164
- type = string
165
- description = "OpenStack keypair name used for browser-terminal SSH access."
166
- default = ""
167
- }
168
-
169
- variable "ssh_public_key" {
170
- type = string
171
- description = "Public key material registered in OpenStack for browser-terminal SSH access."
172
- default = ""
173
- }
174
-
175
- variable "desired_state" {
176
- type = string
177
- description = "Desired server instance power state."
178
- default = "running"
179
-
180
- validation {
181
- condition = contains(["running", "stopped"], lower(var.desired_state))
182
- error_message = "desired_state must be one of: running, stopped"
183
- }
184
- }
185
-
186
- variable "backend_container_image" {
187
- type = string
188
- description = "Prebuilt backend image. If empty, repo bootstrap build is used."
189
- default = ""
190
- }
191
-
192
- variable "backend_container_name" {
193
- type = string
194
- description = "Runtime container name."
195
- default = "template-service-server"
196
- }
197
-
198
- variable "backend_repo_url" {
199
- type = string
200
- description = "Repo URL used for bootstrap build."
201
- default = "https://github.com/example-org/example-service.git"
202
- }
203
-
204
- variable "backend_repo_ref" {
205
- type = string
206
- description = "Repo ref for bootstrap build."
207
- default = "main"
208
- }
209
-
210
- variable "backend_repo_subdir" {
211
- type = string
212
- description = "Repo-relative server directory."
213
- default = "server"
214
- }
215
-
216
- variable "jwt_secret_key" {
217
- type = string
218
- description = "JWT secret key. Leave empty to auto-generate."
219
- default = ""
220
- sensitive = true
221
- }
222
-
223
- variable "backend_env" {
224
- type = map(string)
225
- description = "Additional backend environment variables."
226
- default = {}
227
- }
228
-
229
- variable "tags" {
230
- type = map(string)
231
- description = "Additional metadata tags."
232
- default = {}
233
- }
@@ -1,29 +0,0 @@
1
- {
2
- "auth_type": "password",
3
- "auth_url": "https://keystone.example.com:5000/v3",
4
- "backend_repo_ref": "main",
5
- "backend_repo_url": "https://github.com/example-org/example-service.git",
6
- "backend_image_name": "ubuntu-24.04-noble-amd64",
7
- "backend_port": 8080,
8
- "instance_flavor_name": "m1.small",
9
- "ssh_ingress_cidrs": ["0.0.0.0/0"],
10
- "ssh_keypair_name": "template-dev-terminal",
11
- "ssh_public_key": "ssh-ed25519 AAAA... replace-me",
12
- "insecure": false,
13
- "interface": "public",
14
- "phase": "dev",
15
- "external_network_name": "public",
16
- "app_subnet_cidr": "10.52.0.0/24",
17
- "project_domain_name": "Default",
18
- "project_name": "template-service",
19
- "region": "RegionOne",
20
- "service_name": "template-service",
21
- "application_name": "Template API",
22
- "user_domain_name": "Default",
23
- "username": "admin",
24
- "backend_env": {
25
- "API_PREFIX": "/api/v1",
26
- "DATABASE_BACKEND": "postgres",
27
- "POSTGRES_URL": "postgresql://template:template@db:5432/template"
28
- }
29
- }
@@ -1,2 +0,0 @@
1
- packages:
2
- - client/*
@@ -1,277 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- from __future__ import annotations
4
-
5
- import argparse
6
- import json
7
- import re
8
- from pathlib import Path
9
-
10
-
11
- ROOT = Path(__file__).resolve().parents[2]
12
-
13
- SERVICE_DOCS = {
14
- "mobile": ROOT / "sdd/03_build/01_feature/service/mobile_surface.md",
15
- "web": ROOT / "sdd/03_build/01_feature/service/web_surface.md",
16
- "admin": ROOT / "sdd/03_build/01_feature/service/admin_surface.md",
17
- "landing": ROOT / "sdd/03_build/01_feature/service/landing_surface.md",
18
- }
19
-
20
- BUILD_AST_DOC = ROOT / "sdd/03_build/03_architecture/build_ast_runtime_tree_governance.md"
21
-
22
-
23
- def read(path: Path) -> str:
24
- return path.read_text(encoding="utf-8")
25
-
26
-
27
- def score(value: float, maximum: float) -> int:
28
- if maximum <= 0:
29
- return 0
30
- scaled = round((value / maximum) * 10)
31
- return max(0, min(10, scaled))
32
-
33
-
34
- def contains_all(text: str, needles: list[str]) -> bool:
35
- return all(needle in text for needle in needles)
36
-
37
-
38
- def ast_similarity() -> tuple[int, list[str]]:
39
- findings: list[str] = []
40
- points = 0.0
41
- maximum = 10.0
42
-
43
- mobile = read(SERVICE_DOCS["mobile"])
44
- if contains_all(
45
- mobile,
46
- [
47
- "client/mobile/src/main.tsx",
48
- "AuthProvider",
49
- "BrowserRouter",
50
- "client/mobile/src/app/App.tsx",
51
- "ProtectedRoute",
52
- "InShell",
53
- "DashboardPage",
54
- "FulfillmentPage",
55
- "ShippingPage",
56
- ],
57
- ):
58
- points += 2.5
59
- else:
60
- findings.append("mobile surface summary does not reflect the real provider/router/shell chain.")
61
-
62
- web = read(SERVICE_DOCS["web"])
63
- if contains_all(
64
- web,
65
- [
66
- "client/web/src/main.tsx",
67
- "AuthProvider",
68
- "BrowserRouter",
69
- "client/web/src/app/App.tsx",
70
- "ProtectedRoute",
71
- "AppShell",
72
- "DashboardPage",
73
- "OrdersPage",
74
- ],
75
- ):
76
- points += 2.5
77
- else:
78
- findings.append("web surface summary does not reflect the real app shell route tree.")
79
-
80
- admin = read(SERVICE_DOCS["admin"])
81
- if contains_all(
82
- admin,
83
- [
84
- "client/admin/src/main.tsx",
85
- "AuthProvider",
86
- "BrowserRouter",
87
- "client/admin/src/app/App.tsx",
88
- "ProtectedRoute",
89
- "AdminShell",
90
- "AdminDashboardPage",
91
- "AdminQueuePage",
92
- "AdminSupportPage",
93
- ],
94
- ):
95
- points += 2.5
96
- else:
97
- findings.append("admin surface summary does not reflect the real admin shell route tree.")
98
-
99
- landing = read(SERVICE_DOCS["landing"])
100
- if contains_all(
101
- landing,
102
- [
103
- "client/landing/src/main.tsx",
104
- "AuthProvider",
105
- "BrowserRouter",
106
- "client/landing/src/App.tsx",
107
- "LandingHomePage",
108
- "LandingLoginPage",
109
- "ProtectedRoute",
110
- "LandingShell",
111
- "LandingWorkspacePage",
112
- ],
113
- ):
114
- points += 2.5
115
- else:
116
- findings.append("landing surface summary does not reflect the public and gated route assembly.")
117
-
118
- return score(points, maximum), findings
119
-
120
-
121
- def implementation_traceability() -> tuple[int, list[str]]:
122
- findings: list[str] = []
123
- points = 0.0
124
- maximum = 10.0
125
-
126
- mobile = read(SERVICE_DOCS["mobile"])
127
- if contains_all(
128
- mobile,
129
- [
130
- "server/main.py",
131
- "server/api/http/app.py",
132
- "server/api/http/router.py",
133
- "contexts/auth/contracts/http/router.py",
134
- "contexts/fulfillment/contracts/http/router.py",
135
- "contexts/shipping/contracts/http/router.py",
136
- ],
137
- ):
138
- points += 2.0
139
- else:
140
- findings.append("mobile surface summary does not trace route leaves to backend contract leaves.")
141
-
142
- web = read(SERVICE_DOCS["web"])
143
- if contains_all(
144
- web,
145
- [
146
- "server/main.py",
147
- "server/api/http/app.py",
148
- "server/api/http/router.py",
149
- "contexts/auth/contracts/http/router.py",
150
- "contexts/catalog/contracts/http/router.py",
151
- "contexts/orders/contracts/http/router.py",
152
- ],
153
- ):
154
- points += 2.0
155
- else:
156
- findings.append("web surface summary does not trace dashboard and orders routes to backend contracts.")
157
-
158
- admin = read(SERVICE_DOCS["admin"])
159
- if contains_all(
160
- admin,
161
- [
162
- "server/main.py",
163
- "server/api/http/app.py",
164
- "server/api/http/router.py",
165
- "contexts/alerts/contracts/http/router.py",
166
- "contexts/inventory/contracts/http/router.py",
167
- "contexts/support/contracts/http/router.py",
168
- ],
169
- ):
170
- points += 2.0
171
- else:
172
- findings.append("admin surface summary does not trace admin routes to backend contracts.")
173
-
174
- landing = read(SERVICE_DOCS["landing"])
175
- if contains_all(
176
- landing,
177
- [
178
- "server/main.py",
179
- "server/api/http/app.py",
180
- "server/api/http/router.py",
181
- "contexts/catalog/contracts/http/router.py",
182
- "contexts/health/contracts/http/router.py",
183
- "contexts/user/contracts/http/router.py",
184
- ],
185
- ):
186
- points += 2.0
187
- else:
188
- findings.append("landing surface summary does not trace public/workspace routes to backend contracts.")
189
-
190
- architecture = read(BUILD_AST_DOC)
191
- if contains_all(
192
- architecture,
193
- [
194
- ".agent/ralph.sh",
195
- ".claude/agents/",
196
- ".codex/skills/SKILL.md",
197
- "infra/terraform/README.md",
198
- ],
199
- ):
200
- points += 2.0
201
- else:
202
- findings.append("build AST architecture summary does not retain the canonical harness and infra roots.")
203
-
204
- return score(points, maximum), findings
205
-
206
-
207
- def human_agent_readability() -> tuple[int, list[str]]:
208
- findings: list[str] = []
209
- points = 10.0
210
- maximum = 10.0
211
-
212
- build_md_files = sorted((ROOT / "sdd/03_build").rglob("*.md"))
213
- combined = "\n".join(read(path) for path in build_md_files)
214
-
215
- pattern_penalties = [
216
- (r"## Current Build Note", 2.0, "build docs still use a Current Build Note section instead of current-state structure."),
217
- (r"\bRalph\b", 2.0, "build docs still contain Ralph loop narrative."),
218
- (r"2026-\d{2}-\d{2}", 2.0, "build docs still contain dated history markers."),
219
- (r"이번 턴", 1.0, "build docs still contain turn-specific execution narrative."),
220
- (r"run `\d+", 1.0, "build docs still contain run-id style execution narrative."),
221
- (r"\biteration\b", 1.0, "build docs still contain iteration-oriented loop narrative."),
222
- ]
223
-
224
- for pattern, penalty, message in pattern_penalties:
225
- if re.search(pattern, combined):
226
- points -= penalty
227
- findings.append(message)
228
-
229
- for path in SERVICE_DOCS.values():
230
- if len(read(path).splitlines()) > 80:
231
- points -= 0.5
232
- findings.append(f"{path.name} is too large to serve as a concise runtime tree summary.")
233
-
234
- if points < 0:
235
- points = 0
236
-
237
- return score(points, maximum), findings
238
-
239
-
240
- def main() -> int:
241
- parser = argparse.ArgumentParser()
242
- parser.add_argument("--write", type=Path, default=None)
243
- args = parser.parse_args()
244
-
245
- ast_score, ast_findings = ast_similarity()
246
- trace_score, trace_findings = implementation_traceability()
247
- readability_score, readability_findings = human_agent_readability()
248
-
249
- payload = {
250
- "scores": {
251
- "ast_similarity": ast_score,
252
- "implementation_traceability": trace_score,
253
- "human_agent_readability": readability_score,
254
- },
255
- "all_ten": ast_score == 10 and trace_score == 10 and readability_score == 10,
256
- "findings": {
257
- "ast_similarity": ast_findings,
258
- "implementation_traceability": trace_findings,
259
- "human_agent_readability": readability_findings,
260
- },
261
- }
262
-
263
- output = json.dumps(payload, ensure_ascii=False, indent=2)
264
- print(output)
265
-
266
- if args.write is not None:
267
- target = args.write
268
- if not target.is_absolute():
269
- target = ROOT / target
270
- target.parent.mkdir(parents=True, exist_ok=True)
271
- target.write_text(output + "\n", encoding="utf-8")
272
-
273
- return 0 if payload["all_ten"] else 1
274
-
275
-
276
- if __name__ == "__main__":
277
- raise SystemExit(main())
@@ -1,16 +0,0 @@
1
- # Feature Index
2
-
3
- 현재 canonical feature spec은 backend domain 기준으로 작성한다.
4
-
5
- - [auth_feature_spec.md](./auth_feature_spec.md)
6
- - [alerts_feature_spec.md](./alerts_feature_spec.md)
7
- - [catalog_feature_spec.md](./catalog_feature_spec.md)
8
- - [fulfillment_feature_spec.md](./fulfillment_feature_spec.md)
9
- - [health_feature_spec.md](./health_feature_spec.md)
10
- - [inventory_feature_spec.md](./inventory_feature_spec.md)
11
- - [order_feature_spec.md](./order_feature_spec.md)
12
- - [shipping_feature_spec.md](./shipping_feature_spec.md)
13
- - [support_feature_spec.md](./support_feature_spec.md)
14
- - [user_feature_spec.md](./user_feature_spec.md)
15
-
16
- 현재 canonical owner domain은 `auth`, `user`, `catalog`, `inventory`, `orders`, `fulfillment`, `shipping`, `alerts`, `support`, `health`다.
@@ -1,76 +0,0 @@
1
- # Feature Planning
2
-
3
- ## Naming
4
-
5
- - Folder name: `01_feature`
6
- - Document naming: `{domain}_feature_spec.md`
7
- - Source-of-truth feature spec files are backend domain based.
8
-
9
- ## Scope
10
-
11
- - feature spec은 DDD 관점의 도메인 유스케이스 문서다.
12
- - route, navigation, sidebar, modal, tab, client local state, 화면 전이는 feature spec에 쓰지 않는다.
13
- - 위 항목은 `02_screen`에서 관리한다.
14
- - 하나의 feature code는 하나의 핵심 query 또는 command 유스케이스를 대표한다.
15
-
16
- ## Implementation Basis
17
-
18
- - `Bounded Context`는 실제 backend owner module에 맞춰 작성한다.
19
- - feature spec은 현재 구현을 기준으로 먼저 정리하고, 미구현 요구는 `02_plan` backlog로 관리한다.
20
- - frontend-only mock, redirect, client local state machine은 feature spec에 쓰지 않는다.
21
- - 개별 domain feature spec은 `Purpose -> Scope -> Actor Summary -> Domain Summary -> Aggregate / Model -> Use Case Matrix` 흐름을 기본 뼈대로 사용한다.
22
-
23
- ## Code Rule
24
-
25
- - Feature code format: `{DOMAIN}-F{NNN}`
26
- - 각 segment는 고정 길이로 유지한다.
27
-
28
- | Segment | Rule | Example |
29
- | --- | --- | --- |
30
- | `DOMAIN` | 3-letter uppercase domain code | `AUT`, `USR`, `CAT` |
31
- | `TYPE` | feature 식별자 고정값 | `F` |
32
- | `NNN` | 3-digit sequence | `001`, `002` |
33
-
34
- 현재 canonical backend domain code는 `AUT`, `USR`, `CAT`, `INV`, `ORD`, `FUL`, `SHP`, `ALR`, `SUP`, `HLT`다.
35
-
36
- ## Required Fields
37
-
38
- 모든 feature row는 아래 정보를 포함한다.
39
-
40
- | Field | Purpose |
41
- | --- | --- |
42
- | `Feature Code` | 유스케이스의 고유 식별자 |
43
- | `Use Case` | 비즈니스 의도 |
44
- | `Actor` | 유스케이스를 시작하거나 소비하는 주체 |
45
- | `Bounded Context` | 해당 유스케이스가 속한 DDD 경계 |
46
- | `Aggregate / Model` | 핵심 aggregate, entity, policy, read model |
47
- | `Type` | `Query` 또는 `Command` |
48
- | `Preconditions` | 유스케이스가 성립하기 위한 선행 조건 |
49
- | `Domain Outcome` | 도메인 상태 변화 또는 조회 결과 |
50
- | `Invariant / Business Rule` | 반드시 지켜야 하는 규칙 |
51
-
52
- 개별 domain feature spec은 use case matrix 외에 아래 섹션을 포함한다.
53
-
54
- | Section | Purpose |
55
- | --- | --- |
56
- | `Scope` | 포함/제외 범위를 분리해 screen, transport, backlog와의 경계를 명시한다 |
57
- | `Actor Summary` | use case matrix에 등장하는 각 actor의 책임과 사용 맥락을 설명한다 |
58
-
59
- ## Document Boundary
60
-
61
- | Folder | Role |
62
- | --- | --- |
63
- | `01_feature` | actor, use case, aggregate, invariant 중심의 도메인 유스케이스 |
64
- | `02_screen` | route, UI surface, CTA, local interaction, transition |
65
- | `03_architecture` | bounded context 관계, 시스템 경계, 런타임 구조 |
66
- | `04_data` | 저장 모델, 관계, 키 정책 |
67
- | `05_api` | request/response, endpoint contract, transport 규약 |
68
-
69
- ## Writing Rule
70
-
71
- - feature spec은 도메인 유스케이스 문서다.
72
- - `Type`은 `Query` 또는 `Command`만 사용한다.
73
- - use case matrix에 등장하는 모든 actor는 같은 문서의 `Actor Summary`에서 최소 1회 설명한다.
74
- - actor 이름은 화면 이름이 아니라 도메인 상호작용을 시작하거나 소비하는 주체 기준으로 유지한다.
75
- - 식별자는 UUID v7을 기준으로 해석하고, legacy numeric id는 기준 식별자로 간주하지 않는다.
76
- - 기본 정렬은 `created_at` 또는 time-ordered UUID v7을 사용하고, 명시 순서가 필요해질 때만 `order` 계열 필드를 추가한다.
@@ -1,55 +0,0 @@
1
- # alerts feature spec
2
-
3
- - 작성 버전: 1.0.0
4
-
5
- ## 1. Purpose
6
-
7
- `alerts` bounded context가 제공하는 운영 알람 feed와 읽음 처리 기능을 구현 기준으로 정리한다.
8
-
9
- ## 2. Scope
10
-
11
- - 포함 범위:
12
- - admin surface의 운영 알람 목록 조회
13
- - 알람 단건 읽음 처리와 전체 읽음 처리
14
- - 제외 범위:
15
- - email, SMS, push 같은 외부 발송 인프라
16
- - 주문/배송/재고 도메인 내부의 원인 계산 로직 자체
17
-
18
- ## 3. Actor Summary
19
-
20
- | Actor | Description | Appears In |
21
- | --- | --- | --- |
22
- | `Admin Operator` | admin 서비스에서 운영 이벤트와 예외 상황을 확인하고 알람 읽음 상태를 관리하는 운영 관리자다. | `ALR-F001`, `ALR-F002`, `ALR-F003` |
23
-
24
- ## 4. Bounded Context Summary
25
-
26
- | Item | Value |
27
- | --- | --- |
28
- | Domain Code | `ALR` |
29
- | Bounded Context | Alert Center |
30
- | Primary Backend Owner | `server/contexts/alerts` |
31
- | Related Context | `orders`, `shipping`, `inventory`, `support` |
32
- | Main Entry Contract | `GET /api/v1/alerts`, `POST /api/v1/alerts/{alert_id}/read`, `POST /api/v1/alerts/read-all` |
33
-
34
- ## 5. Aggregate / Model Snapshot
35
-
36
- | Aggregate / Model | Role |
37
- | --- | --- |
38
- | `AlertRecord` | 운영 알람 저장 모델 |
39
- | `AlertItem` | 알람 feed 응답 모델 |
40
- | `AlertsPayload` | unread count와 목록을 묶은 응답 모델 |
41
- | `AlertReadResult` | 단건 읽음 처리 결과 |
42
- | `AlertsReadAllResult` | 전체 읽음 처리 결과 |
43
-
44
- ## 6. Use Case Matrix
45
-
46
- | Feature Code | Use Case | Actor | Bounded Context | Aggregate / Model | Type | Preconditions | Domain Outcome | Invariant / Business Rule |
47
- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
48
- | `ALR-F001` | 운영 알람 feed를 조회한다 | Admin Operator | Alert Center | `AlertsPayload`, `AlertItem`, `AlertRecord` | Query | 관리자 토큰이 유효하고 alert bootstrap 데이터가 존재해야 한다 | unread count와 최신 운영 알람 목록을 반환한다 | feed 조회는 알람 읽음 상태를 변경하지 않는다 |
49
- | `ALR-F002` | 운영 알람 1건을 읽음 처리한다 | Admin Operator | Alert Center | `AlertReadResult`, `AlertRecord` | Command | 관리자 토큰이 유효하고 요청한 `alert_id`가 존재해야 한다 | 선택한 알람의 `read` 상태가 `true`가 된다 | 존재하지 않는 `alert_id`면 `404`를 반환한다 |
50
- | `ALR-F003` | 운영 알람 전체를 읽음 처리한다 | Admin Operator | Alert Center | `AlertsReadAllResult`, `AlertRecord` | Command | 관리자 토큰이 유효하고 alert bootstrap 데이터가 존재해야 한다 | 미읽음 알람이 모두 읽음 상태로 갱신된다 | 이미 읽은 알람은 중복 변경하지 않는다 |
51
-
52
- ## 7. Notes
53
-
54
- - `alerts`는 admin dashboard의 보조 read model이 아니라 독립 운영 피드로 취급한다.
55
- - 원인 도메인이 무엇이든 admin이 소비하는 알람 표현과 읽음 상태는 `alerts` context가 소유한다.