agentic-dev 0.1.0 → 0.2.1

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 (677) hide show
  1. package/.agent/prd.json +29 -0
  2. package/.agent/progress.txt +1 -0
  3. package/.agent/prompt.md +21 -0
  4. package/.agent/ralph-loop-state.json +13 -0
  5. package/.agent/ralph-supervisor-state.json +12 -0
  6. package/.agent/ralph-supervisor.sh +238 -0
  7. package/.agent/ralph.sh +305 -0
  8. package/.agent/runs/README.md +7 -0
  9. package/.agent/sdd-build-ast-audit.json +13 -0
  10. package/.claude/CLAUDE.md +44 -0
  11. package/.claude/agentic-dev.json +3 -0
  12. package/.claude/agents/ai-dev.md +27 -0
  13. package/.claude/agents/backend-dev.md +26 -0
  14. package/.claude/agents/db-dev.md +26 -0
  15. package/.claude/agents/devops.md +27 -0
  16. package/.claude/agents/frontend-dev.md +25 -0
  17. package/.claude/agents/github-ops.md +25 -0
  18. package/.claude/agents/test-dev.md +26 -0
  19. package/.claude/agents/uiux-designer.md +25 -0
  20. package/.claude/settings.json +49 -0
  21. package/.claude/settings.local.json +8 -0
  22. package/.claude/skills/commit/SKILL.md +37 -0
  23. package/.claude/skills/dev-browser/SKILL.md +30 -0
  24. package/.claude/skills/otro/SKILL.md +43 -0
  25. package/.claude/skills/planning-with-files/SKILL.md +37 -0
  26. package/.claude/skills/prd/SKILL.md +27 -0
  27. package/.claude/skills/ralph-loop/SKILL.md +42 -0
  28. package/.claude/skills/sdd/SKILL.md +13 -0
  29. package/.claude/skills/sdd-dev/SKILL.md +71 -0
  30. package/.claude/skills/sdd-development/SKILL.md +13 -0
  31. package/.claude/workspace-config.json +3 -0
  32. package/.codex/agentic-dev.json +3 -0
  33. package/.codex/agents/README.md +22 -0
  34. package/.codex/agents/api.toml +11 -0
  35. package/.codex/agents/architecture.toml +11 -0
  36. package/.codex/agents/ci.toml +11 -0
  37. package/.codex/agents/gitops.toml +11 -0
  38. package/.codex/agents/orchestrator.toml +11 -0
  39. package/.codex/agents/quality.toml +11 -0
  40. package/.codex/agents/runtime.toml +11 -0
  41. package/.codex/agents/security.toml +11 -0
  42. package/.codex/agents/specs.toml +11 -0
  43. package/.codex/agents/ui.toml +11 -0
  44. package/.codex/config.toml +46 -0
  45. package/.codex/skills/SKILL.md +13 -0
  46. package/.codex/skills/agents/openai.yaml +4 -0
  47. package/.codex/skills/commit/SKILL.md +219 -0
  48. package/.codex/skills/commit/references/commit_examples.md +292 -0
  49. package/.codex/skills/dev-browser/SKILL.md +211 -0
  50. package/.codex/skills/dev-browser/bun.lock +443 -0
  51. package/.codex/skills/dev-browser/package-lock.json +2988 -0
  52. package/.codex/skills/dev-browser/package.json +31 -0
  53. package/.codex/skills/dev-browser/references/scraping.md +155 -0
  54. package/.codex/skills/dev-browser/scripts/start-relay.ts +32 -0
  55. package/.codex/skills/dev-browser/scripts/start-server.ts +117 -0
  56. package/.codex/skills/dev-browser/server.sh +24 -0
  57. package/.codex/skills/dev-browser/src/client.ts +474 -0
  58. package/.codex/skills/dev-browser/src/index.ts +287 -0
  59. package/.codex/skills/dev-browser/src/relay.ts +731 -0
  60. package/.codex/skills/dev-browser/src/snapshot/__tests__/snapshot.test.ts +223 -0
  61. package/.codex/skills/dev-browser/src/snapshot/browser-script.ts +877 -0
  62. package/.codex/skills/dev-browser/src/snapshot/index.ts +14 -0
  63. package/.codex/skills/dev-browser/src/snapshot/inject.ts +13 -0
  64. package/.codex/skills/dev-browser/src/types.ts +34 -0
  65. package/.codex/skills/dev-browser/tsconfig.json +36 -0
  66. package/.codex/skills/dev-browser/vitest.config.ts +12 -0
  67. package/.codex/skills/otro/SKILL.md +74 -0
  68. package/.codex/skills/otro/agents/openai.yaml +4 -0
  69. package/.codex/skills/otro/references/agent-prompts.md +61 -0
  70. package/.codex/skills/otro/references/contracts.md +146 -0
  71. package/.codex/skills/otro/references/orchestration-loop.md +51 -0
  72. package/.codex/skills/otro/references/runtime.md +79 -0
  73. package/.codex/skills/otro/runs/README.md +11 -0
  74. package/.codex/skills/otro/schemas/step_plan.schema.json +289 -0
  75. package/.codex/skills/otro/schemas/task_result.schema.json +142 -0
  76. package/.codex/skills/otro/schemas/wave_plan.schema.json +4 -0
  77. package/.codex/skills/otro/scripts/README.md +38 -0
  78. package/.codex/skills/otro/scripts/bump_validation_header.py +179 -0
  79. package/.codex/skills/otro/scripts/check_validation_header.py +84 -0
  80. package/.codex/skills/otro/scripts/common.py +303 -0
  81. package/.codex/skills/otro/scripts/init_run.sh +68 -0
  82. package/.codex/skills/otro/scripts/plan_loop.py +8 -0
  83. package/.codex/skills/otro/scripts/plan_step.py +367 -0
  84. package/.codex/skills/otro/scripts/plan_wave.py +8 -0
  85. package/.codex/skills/otro/scripts/reconcile_loop.py +8 -0
  86. package/.codex/skills/otro/scripts/reconcile_step.py +37 -0
  87. package/.codex/skills/otro/scripts/reconcile_wave.py +8 -0
  88. package/.codex/skills/otro/scripts/run_loop.py +300 -0
  89. package/.codex/skills/otro/scripts/run_loop_step.py +8 -0
  90. package/.codex/skills/otro/scripts/run_step.py +246 -0
  91. package/.codex/skills/otro/scripts/run_wave.py +8 -0
  92. package/.codex/skills/otro/validation/validation.md +15 -0
  93. package/.codex/skills/planning-with-files/SKILL.md +42 -0
  94. package/.codex/skills/planning-with-files/agents/openai.yaml +4 -0
  95. package/.codex/skills/planning-with-files/assets/plan-template.md +37 -0
  96. package/.codex/skills/planning-with-files/references/plan-rules.md +35 -0
  97. package/.codex/skills/planning-with-files/scripts/new_plan.sh +65 -0
  98. package/.codex/skills/prd/SKILL.md +235 -0
  99. package/.codex/skills/ralph-loop/SKILL.md +46 -0
  100. package/.codex/skills/ralph-loop/agents/openai.yaml +4 -0
  101. package/.codex/skills/ralph-loop/references/failure-triage.md +32 -0
  102. package/.codex/skills/ralph-loop/scripts/loop_until_success.sh +97 -0
  103. package/.codex/skills/sdd/SKILL.md +184 -0
  104. package/.codex/skills/sdd/agents/openai.yaml +4 -0
  105. package/.codex/skills/sdd/references/section-map.md +67 -0
  106. package/.dockerignore +8 -0
  107. package/.env.example +50 -0
  108. package/.gitignore +16 -0
  109. package/AGENTS.md +78 -0
  110. package/README.md +83 -47
  111. package/SDD_SKILL.md +589 -0
  112. package/bin/agentic-dev.mjs +97 -0
  113. package/client/admin/.dockerignore +3 -0
  114. package/client/admin/.env.example +1 -0
  115. package/client/admin/Dockerfile +16 -0
  116. package/client/admin/Dockerfile.dev +18 -0
  117. package/client/admin/README.md +20 -0
  118. package/client/admin/index.html +12 -0
  119. package/client/admin/package.json +41 -0
  120. package/client/admin/postcss.config.js +6 -0
  121. package/client/admin/scripts/ui-parity-admin-adapter.mjs +65 -0
  122. package/client/admin/src/api/alerts.ts +33 -0
  123. package/client/admin/src/api/client.ts +71 -0
  124. package/client/admin/src/api/orders.ts +33 -0
  125. package/client/admin/src/api/support.ts +11 -0
  126. package/client/admin/src/app/App.tsx +23 -0
  127. package/client/admin/src/auth/AuthProvider.tsx +122 -0
  128. package/client/admin/src/auth/ProtectedRoute.tsx +22 -0
  129. package/client/admin/src/auth/auth-client.ts +38 -0
  130. package/client/admin/src/auth/types.ts +18 -0
  131. package/client/admin/src/components/AdminNotificationsDrawer.tsx +162 -0
  132. package/client/admin/src/components/AdminShell.tsx +76 -0
  133. package/client/admin/src/components/ui/button.tsx +34 -0
  134. package/client/admin/src/components/ui/input.tsx +21 -0
  135. package/client/admin/src/lib/cn.ts +6 -0
  136. package/client/admin/src/lib/specRouteCatalog.json +30 -0
  137. package/client/admin/src/lib/specScreens.json +22 -0
  138. package/client/admin/src/main.tsx +17 -0
  139. package/client/admin/src/pages/AdminDashboardPage.tsx +171 -0
  140. package/client/admin/src/pages/AdminLoginPage.tsx +75 -0
  141. package/client/admin/src/pages/AdminQueuePage.tsx +107 -0
  142. package/client/admin/src/pages/AdminSupportPage.tsx +61 -0
  143. package/client/admin/src/styles/globals.css +17 -0
  144. package/client/admin/src/theme-vars.ts +18 -0
  145. package/client/admin/src/theme.ts +25 -0
  146. package/client/admin/src/vite-env.d.ts +1 -0
  147. package/client/admin/tailwind.config.js +8 -0
  148. package/client/admin/tsconfig.json +25 -0
  149. package/client/admin/vite.config.ts +12 -0
  150. package/client/landing/.dockerignore +3 -0
  151. package/client/landing/.env.example +1 -0
  152. package/client/landing/Dockerfile +16 -0
  153. package/client/landing/Dockerfile.dev +18 -0
  154. package/client/landing/README.md +18 -0
  155. package/client/landing/index.html +12 -0
  156. package/client/landing/package.json +41 -0
  157. package/client/landing/postcss.config.js +6 -0
  158. package/client/landing/scripts/ui-parity-landing-adapter.mjs +65 -0
  159. package/client/landing/src/App.tsx +21 -0
  160. package/client/landing/src/api/catalog.ts +30 -0
  161. package/client/landing/src/api/client.ts +30 -0
  162. package/client/landing/src/auth/AuthProvider.tsx +122 -0
  163. package/client/landing/src/auth/ProtectedRoute.tsx +22 -0
  164. package/client/landing/src/auth/auth-client.ts +38 -0
  165. package/client/landing/src/auth/types.ts +18 -0
  166. package/client/landing/src/components/LandingShell.tsx +34 -0
  167. package/client/landing/src/lib/specRouteCatalog.json +23 -0
  168. package/client/landing/src/lib/specScreens.json +17 -0
  169. package/client/landing/src/main.tsx +17 -0
  170. package/client/landing/src/pages/LandingHomePage.tsx +215 -0
  171. package/client/landing/src/pages/LandingLoginPage.tsx +90 -0
  172. package/client/landing/src/pages/LandingWorkspacePage.tsx +126 -0
  173. package/client/landing/src/styles/globals.css +17 -0
  174. package/client/landing/src/theme-vars.ts +16 -0
  175. package/client/landing/src/theme.ts +21 -0
  176. package/client/landing/src/vite-env.d.ts +1 -0
  177. package/client/landing/tailwind.config.js +8 -0
  178. package/client/landing/tsconfig.json +25 -0
  179. package/client/landing/vite.config.ts +12 -0
  180. package/client/mobile/.dockerignore +2 -0
  181. package/client/mobile/.env.example +1 -0
  182. package/client/mobile/Dockerfile +16 -0
  183. package/client/mobile/Dockerfile.dev +18 -0
  184. package/client/mobile/README.md +19 -0
  185. package/client/mobile/index.html +12 -0
  186. package/client/mobile/package.json +42 -0
  187. package/client/mobile/postcss.config.js +6 -0
  188. package/client/mobile/scripts/ui-parity-mobile-adapter.mjs +67 -0
  189. package/client/mobile/src/App.tsx +1 -0
  190. package/client/mobile/src/api/client.ts +62 -0
  191. package/client/mobile/src/api/fulfillment.ts +55 -0
  192. package/client/mobile/src/api/shipping.ts +56 -0
  193. package/client/mobile/src/app/App.tsx +23 -0
  194. package/client/mobile/src/auth/AuthProvider.tsx +122 -0
  195. package/client/mobile/src/auth/ProtectedRoute.tsx +27 -0
  196. package/client/mobile/src/auth/auth-client.ts +38 -0
  197. package/client/mobile/src/auth/types.ts +18 -0
  198. package/client/mobile/src/components/InShell.tsx +74 -0
  199. package/client/mobile/src/components/ui/button.tsx +35 -0
  200. package/client/mobile/src/components/ui/card.tsx +15 -0
  201. package/client/mobile/src/components/ui/input.tsx +21 -0
  202. package/client/mobile/src/lib/cn.ts +6 -0
  203. package/client/mobile/src/lib/specRouteCatalog.json +26 -0
  204. package/client/mobile/src/lib/specScreens.json +22 -0
  205. package/client/mobile/src/lib/useSpeechRecognitionInput.ts +271 -0
  206. package/client/mobile/src/main.tsx +17 -0
  207. package/client/mobile/src/pages/DashboardPage.tsx +172 -0
  208. package/client/mobile/src/pages/FulfillmentPage.tsx +138 -0
  209. package/client/mobile/src/pages/LoginPage.tsx +74 -0
  210. package/client/mobile/src/pages/ShippingPage.tsx +338 -0
  211. package/client/mobile/src/styles/globals.css +23 -0
  212. package/client/mobile/src/theme-vars.ts +16 -0
  213. package/client/mobile/src/theme.ts +21 -0
  214. package/client/mobile/src/vite-env.d.ts +1 -0
  215. package/client/mobile/tailwind.config.js +8 -0
  216. package/client/mobile/tsconfig.json +25 -0
  217. package/client/mobile/vite.config.ts +12 -0
  218. package/client/platform/.dockerignore +3 -0
  219. package/client/platform/.env.example +1 -0
  220. package/client/platform/Dockerfile +16 -0
  221. package/client/platform/Dockerfile.dev +18 -0
  222. package/client/platform/README.md +47 -0
  223. package/client/platform/index.html +12 -0
  224. package/client/platform/package.json +42 -0
  225. package/client/platform/postcss.config.js +6 -0
  226. package/client/platform/scripts/ui-parity-platform-adapter.mjs +66 -0
  227. package/client/platform/src/api/client.ts +30 -0
  228. package/client/platform/src/api/orders.ts +42 -0
  229. package/client/platform/src/app/App.tsx +21 -0
  230. package/client/platform/src/auth/AuthProvider.tsx +122 -0
  231. package/client/platform/src/auth/ProtectedRoute.tsx +22 -0
  232. package/client/platform/src/auth/auth-client.ts +38 -0
  233. package/client/platform/src/auth/types.ts +18 -0
  234. package/client/platform/src/components/AppShell.tsx +59 -0
  235. package/client/platform/src/components/ui/button.tsx +35 -0
  236. package/client/platform/src/components/ui/card.tsx +7 -0
  237. package/client/platform/src/components/ui/input.tsx +21 -0
  238. package/client/platform/src/lib/cn.ts +6 -0
  239. package/client/platform/src/lib/specRouteCatalog.json +23 -0
  240. package/client/platform/src/lib/specScreens.json +17 -0
  241. package/client/platform/src/main.tsx +17 -0
  242. package/client/platform/src/pages/DashboardPage.tsx +158 -0
  243. package/client/platform/src/pages/LoginPage.tsx +72 -0
  244. package/client/platform/src/pages/OrdersPage.tsx +123 -0
  245. package/client/platform/src/styles/globals.css +17 -0
  246. package/client/platform/src/theme-vars.ts +18 -0
  247. package/client/platform/src/theme.ts +25 -0
  248. package/client/platform/src/vite-env.d.ts +1 -0
  249. package/client/platform/tailwind.config.js +8 -0
  250. package/client/platform/tsconfig.json +25 -0
  251. package/client/platform/vite.config.ts +12 -0
  252. package/compose.yml +206 -0
  253. package/infra/compose/.env.dev.example +28 -0
  254. package/infra/compose/.env.prod.example +29 -0
  255. package/infra/compose/README.md +35 -0
  256. package/infra/compose/dev.yml +125 -0
  257. package/infra/compose/prod.yml +126 -0
  258. package/infra/terraform/README.md +34 -0
  259. package/infra/terraform/aws/data/.terraform.lock.hcl +25 -0
  260. package/infra/terraform/aws/data/README.md +18 -0
  261. package/infra/terraform/aws/data/main.tf +147 -0
  262. package/infra/terraform/aws/data/outputs.tf +14 -0
  263. package/infra/terraform/aws/data/variables.tf +57 -0
  264. package/infra/terraform/aws/data/versions.tf +10 -0
  265. package/infra/terraform/aws/domain/.terraform.lock.hcl +25 -0
  266. package/infra/terraform/aws/domain/README.md +20 -0
  267. package/infra/terraform/aws/domain/env/dev.tfvars.example +6 -0
  268. package/infra/terraform/aws/domain/env/prod.tfvars.example +7 -0
  269. package/infra/terraform/aws/domain/main.tf +149 -0
  270. package/infra/terraform/aws/domain/outputs.tf +29 -0
  271. package/infra/terraform/aws/domain/variables.tf +58 -0
  272. package/infra/terraform/aws/domain/versions.tf +10 -0
  273. package/infra/terraform/openstack/README.md +38 -0
  274. package/infra/terraform/openstack/dev/.terraform.lock.hcl +24 -0
  275. package/infra/terraform/openstack/dev/README.md +18 -0
  276. package/infra/terraform/openstack/dev/main.tf +49 -0
  277. package/infra/terraform/openstack/dev/providers.tf +15 -0
  278. package/infra/terraform/openstack/dev/terraform.tfvars.example +54 -0
  279. package/infra/terraform/openstack/dev/variables.tf +210 -0
  280. package/infra/terraform/openstack/dev/versions.tf +10 -0
  281. package/infra/terraform/openstack/modules/environment_host/main.tf +143 -0
  282. package/infra/terraform/openstack/modules/environment_host/outputs.tf +25 -0
  283. package/infra/terraform/openstack/modules/environment_host/templates/docker-host-user-data.sh.tftpl +40 -0
  284. package/infra/terraform/openstack/modules/environment_host/variables.tf +145 -0
  285. package/infra/terraform/openstack/modules/environment_host/versions.tf +7 -0
  286. package/infra/terraform/openstack/prod/.terraform.lock.hcl +24 -0
  287. package/infra/terraform/openstack/prod/README.md +18 -0
  288. package/infra/terraform/openstack/prod/main.tf +49 -0
  289. package/infra/terraform/openstack/prod/providers.tf +15 -0
  290. package/infra/terraform/openstack/prod/terraform.tfvars.example +55 -0
  291. package/infra/terraform/openstack/prod/variables.tf +210 -0
  292. package/infra/terraform/openstack/prod/versions.tf +10 -0
  293. package/infra/terraform/openstack/server/.terraform.lock.hcl +45 -0
  294. package/infra/terraform/openstack/server/README.md +47 -0
  295. package/infra/terraform/openstack/server/main.tf +161 -0
  296. package/infra/terraform/openstack/server/outputs.tf +30 -0
  297. package/infra/terraform/openstack/server/providers.tf +30 -0
  298. package/infra/terraform/openstack/server/templates/server-user-data.sh.tftpl +50 -0
  299. package/infra/terraform/openstack/server/variables.tf +233 -0
  300. package/infra/terraform/openstack/server/zz_aspace.auto.tfvars.example.json +29 -0
  301. package/lib/scaffold.mjs +379 -0
  302. package/package.json +33 -12
  303. package/pnpm-workspace.yaml +2 -0
  304. package/scripts/dev/audit_sdd_build_ast.py +277 -0
  305. package/sdd/01_planning/01_feature/INDEX.md +16 -0
  306. package/sdd/01_planning/01_feature/README.md +76 -0
  307. package/sdd/01_planning/01_feature/alerts_feature_spec.md +55 -0
  308. package/sdd/01_planning/01_feature/auth_feature_spec.md +57 -0
  309. package/sdd/01_planning/01_feature/catalog_feature_spec.md +61 -0
  310. package/sdd/01_planning/01_feature/fulfillment_feature_spec.md +58 -0
  311. package/sdd/01_planning/01_feature/health_feature_spec.md +52 -0
  312. package/sdd/01_planning/01_feature/inventory_feature_spec.md +60 -0
  313. package/sdd/01_planning/01_feature/order_feature_spec.md +63 -0
  314. package/sdd/01_planning/01_feature/shipping_feature_spec.md +55 -0
  315. package/sdd/01_planning/01_feature/support_feature_spec.md +53 -0
  316. package/sdd/01_planning/01_feature/user_feature_spec.md +54 -0
  317. package/sdd/01_planning/02_screen/INDEX.md +13 -0
  318. package/sdd/01_planning/02_screen/README.md +41 -0
  319. package/sdd/01_planning/02_screen/admin_screen_spec.pdf +0 -0
  320. package/sdd/01_planning/02_screen/assets/README.md +16 -0
  321. package/sdd/01_planning/02_screen/assets/example/README.md +13 -0
  322. package/sdd/01_planning/02_screen/landing_screen_spec.pdf +0 -0
  323. package/sdd/01_planning/02_screen/mobile_screen_spec.pdf +0 -0
  324. package/sdd/01_planning/02_screen/platform_screen_spec.pdf +0 -0
  325. package/sdd/01_planning/03_architecture/INDEX.md +9 -0
  326. package/sdd/01_planning/03_architecture/README.md +25 -0
  327. package/sdd/01_planning/03_architecture/architecture_document_structure.md +77 -0
  328. package/sdd/01_planning/03_architecture/backend/README.md +10 -0
  329. package/sdd/01_planning/03_architecture/frontend/README.md +12 -0
  330. package/sdd/01_planning/03_architecture/infra/README.md +10 -0
  331. package/sdd/01_planning/03_architecture/tech-research/README.md +4 -0
  332. package/sdd/01_planning/03_architecture/templates_system_architecture.md +84 -0
  333. package/sdd/01_planning/04_data/INDEX.md +4 -0
  334. package/sdd/01_planning/04_data/README.md +10 -0
  335. package/sdd/01_planning/04_data/templates_data_modeling.md +119 -0
  336. package/sdd/01_planning/05_api/README.md +12 -0
  337. package/sdd/01_planning/05_api/templates_api_contract.md +90 -0
  338. package/sdd/01_planning/06_iac/README.md +11 -0
  339. package/sdd/01_planning/06_iac/templates_runtime_and_cicd_baseline.md +46 -0
  340. package/sdd/01_planning/07_integration/README.md +11 -0
  341. package/sdd/01_planning/07_integration/templates_frontend_api_integration.md +46 -0
  342. package/sdd/01_planning/08_nonfunctional/README.md +7 -0
  343. package/sdd/01_planning/09_security/README.md +7 -0
  344. package/sdd/01_planning/10_test/README.md +12 -0
  345. package/sdd/01_planning/10_test/templates_test_strategy.md +60 -0
  346. package/sdd/01_planning/INDEX.md +19 -0
  347. package/sdd/01_planning/README.md +17 -0
  348. package/sdd/02_plan/01_feature/README.md +34 -0
  349. package/sdd/02_plan/01_feature/_feature_todo_template.md +29 -0
  350. package/sdd/02_plan/02_screen/INDEX.md +19 -0
  351. package/sdd/02_plan/02_screen/README.md +39 -0
  352. package/sdd/02_plan/02_screen/_screen_todo_template.md +60 -0
  353. package/sdd/02_plan/03_architecture/README.md +23 -0
  354. package/sdd/02_plan/03_architecture/architecture_document_governance.md +40 -0
  355. package/sdd/02_plan/03_architecture/build_ast_runtime_tree_governance.md +53 -0
  356. package/sdd/02_plan/03_architecture/repository_governance.md +39 -0
  357. package/sdd/02_plan/03_architecture/runtime_and_structure_governance.md +38 -0
  358. package/sdd/02_plan/03_architecture/templates-hexagonal-template-architecture.md +9 -0
  359. package/sdd/02_plan/03_architecture/toolchain_governance.md +98 -0
  360. package/sdd/02_plan/04_data/README.md +5 -0
  361. package/sdd/02_plan/05_api/README.md +5 -0
  362. package/sdd/02_plan/06_iac/README.md +11 -0
  363. package/sdd/02_plan/06_iac/dev_runtime_delivery.md +36 -0
  364. package/sdd/02_plan/06_iac/template_runtime_delivery.md +50 -0
  365. package/sdd/02_plan/07_integration/README.md +5 -0
  366. package/sdd/02_plan/07_integration/frontend_live_integration.md +31 -0
  367. package/sdd/02_plan/08_nonfunctional/README.md +5 -0
  368. package/sdd/02_plan/08_nonfunctional/repository_hygiene.md +26 -0
  369. package/sdd/02_plan/09_security/README.md +5 -0
  370. package/sdd/02_plan/10_test/README.md +11 -0
  371. package/sdd/02_plan/10_test/regression_verification.md +39 -0
  372. package/sdd/02_plan/10_test/templates/README.md +8 -0
  373. package/sdd/02_plan/10_test/templates/ui_parity_platform_contract.template.yaml +23 -0
  374. package/sdd/02_plan/10_test/verification_strategy.md +43 -0
  375. package/sdd/02_plan/99_generated/from_planning/ui_parity/.gitkeep +1 -0
  376. package/sdd/02_plan/README.md +40 -0
  377. package/sdd/03_build/01_feature/README.md +20 -0
  378. package/sdd/03_build/01_feature/domain/README.md +3 -0
  379. package/sdd/03_build/01_feature/domain/account_and_access.md +20 -0
  380. package/sdd/03_build/01_feature/domain/catalog_and_inventory.md +20 -0
  381. package/sdd/03_build/01_feature/domain/ordering_and_fulfillment.md +21 -0
  382. package/sdd/03_build/01_feature/domain/support_and_observability.md +21 -0
  383. package/sdd/03_build/01_feature/domain_surfaces.md +28 -0
  384. package/sdd/03_build/01_feature/service/README.md +3 -0
  385. package/sdd/03_build/01_feature/service/admin_surface.md +15 -0
  386. package/sdd/03_build/01_feature/service/landing_surface.md +13 -0
  387. package/sdd/03_build/01_feature/service/mobile_surface.md +14 -0
  388. package/sdd/03_build/01_feature/service/platform_surface.md +14 -0
  389. package/sdd/03_build/02_screen/README.md +25 -0
  390. package/sdd/03_build/02_screen/_screen_build_template.md +26 -0
  391. package/sdd/03_build/02_screen/admin/README.md +5 -0
  392. package/sdd/03_build/02_screen/landing/README.md +5 -0
  393. package/sdd/03_build/02_screen/mobile/README.md +5 -0
  394. package/sdd/03_build/02_screen/platform/README.md +5 -0
  395. package/sdd/03_build/03_architecture/README.md +10 -0
  396. package/sdd/03_build/03_architecture/architecture_document_governance.md +30 -0
  397. package/sdd/03_build/03_architecture/build_ast_runtime_tree_governance.md +24 -0
  398. package/sdd/03_build/03_architecture/repository_governance.md +18 -0
  399. package/sdd/03_build/03_architecture/toolchain_governance.md +36 -0
  400. package/sdd/03_build/06_iac/README.md +3 -0
  401. package/sdd/03_build/06_iac/dev_runtime_delivery.md +10 -0
  402. package/sdd/03_build/06_iac/template_runtime_delivery.md +49 -0
  403. package/sdd/03_build/07_integration/README.md +3 -0
  404. package/sdd/03_build/07_integration/frontend_live_integration.md +11 -0
  405. package/sdd/03_build/08_nonfunctional/README.md +3 -0
  406. package/sdd/03_build/08_nonfunctional/repository_hygiene.md +10 -0
  407. package/sdd/03_build/10_test/README.md +9 -0
  408. package/sdd/03_build/10_test/regression_verification.md +16 -0
  409. package/sdd/03_build/10_test/verification_harness.md +11 -0
  410. package/sdd/03_build/README.md +35 -0
  411. package/sdd/04_verify/01_feature/README.md +5 -0
  412. package/sdd/04_verify/01_feature/domain_verification.md +14 -0
  413. package/sdd/04_verify/01_feature/service_verification.md +22 -0
  414. package/sdd/04_verify/02_screen/README.md +6 -0
  415. package/sdd/04_verify/02_screen/_screen_verify_template.md +20 -0
  416. package/sdd/04_verify/02_screen/admin/README.md +4 -0
  417. package/sdd/04_verify/02_screen/landing/README.md +4 -0
  418. package/sdd/04_verify/02_screen/mobile/README.md +4 -0
  419. package/sdd/04_verify/02_screen/platform/README.md +4 -0
  420. package/sdd/04_verify/03_architecture/README.md +10 -0
  421. package/sdd/04_verify/03_architecture/architecture_document_governance.md +15 -0
  422. package/sdd/04_verify/03_architecture/build_ast_runtime_tree_governance.md +28 -0
  423. package/sdd/04_verify/03_architecture/repository_governance.md +16 -0
  424. package/sdd/04_verify/03_architecture/toolchain_governance.md +58 -0
  425. package/sdd/04_verify/06_iac/README.md +3 -0
  426. package/sdd/04_verify/06_iac/dev_runtime_delivery.md +10 -0
  427. package/sdd/04_verify/06_iac/template_runtime_delivery.md +42 -0
  428. package/sdd/04_verify/07_integration/README.md +3 -0
  429. package/sdd/04_verify/07_integration/frontend_live_integration.md +16 -0
  430. package/sdd/04_verify/08_nonfunctional/README.md +3 -0
  431. package/sdd/04_verify/08_nonfunctional/repository_hygiene.md +14 -0
  432. package/sdd/04_verify/10_test/README.md +9 -0
  433. package/sdd/04_verify/10_test/regression_verification.md +16 -0
  434. package/sdd/04_verify/10_test/ui_parity/README.md +4 -0
  435. package/sdd/04_verify/10_test/ui_parity/loop_runs/.gitkeep +0 -0
  436. package/sdd/04_verify/10_test/ui_parity/reference/.gitkeep +0 -0
  437. package/sdd/04_verify/10_test/ui_parity/staged_runs/.gitkeep +0 -0
  438. package/sdd/04_verify/10_test/verification_harness.md +17 -0
  439. package/sdd/04_verify/README.md +22 -0
  440. package/sdd/05_operate/01_runbooks/.gitkeep +1 -0
  441. package/sdd/05_operate/01_runbooks/README.md +4 -0
  442. package/sdd/05_operate/02_delivery_status/README.md +4 -0
  443. package/sdd/05_operate/02_delivery_status/service_status.md +16 -0
  444. package/sdd/05_operate/README.md +12 -0
  445. package/sdd/99_toolchain/01_automation/.gitkeep +1 -0
  446. package/sdd/99_toolchain/01_automation/README.md +76 -0
  447. package/sdd/99_toolchain/01_automation/agentic-dev/analyze_proof_results.py +132 -0
  448. package/sdd/99_toolchain/01_automation/agentic-dev/analyze_route_gap.py +85 -0
  449. package/sdd/99_toolchain/01_automation/agentic-dev/assets/repo-contract.template.json +75 -0
  450. package/sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh +84 -0
  451. package/sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh +33 -0
  452. package/sdd/99_toolchain/01_automation/agentic-dev/init_repo_contract.sh +51 -0
  453. package/sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json +76 -0
  454. package/sdd/99_toolchain/01_automation/agentic-dev/resolve_frontend_target.py +52 -0
  455. package/sdd/99_toolchain/01_automation/agentic-dev/resolve_repo_contract.py +56 -0
  456. package/sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh +100 -0
  457. package/sdd/99_toolchain/01_automation/agentic-dev/run_repo_phase.sh +140 -0
  458. package/sdd/99_toolchain/01_automation/agentic-dev/validate_json_schema.py +39 -0
  459. package/sdd/99_toolchain/01_automation/agentic-parity-harness-design.md +291 -0
  460. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/dashboard.png +0 -0
  461. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/login.png +0 -0
  462. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/queue.png +0 -0
  463. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/support.png +0 -0
  464. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/home.png +0 -0
  465. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/login.png +0 -0
  466. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/workspace.png +0 -0
  467. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/dashboard.png +0 -0
  468. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/fulfillment.png +0 -0
  469. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/login.png +0 -0
  470. package/sdd/99_toolchain/01_automation/assets/platform_screen_capture/dashboard.png +0 -0
  471. package/sdd/99_toolchain/01_automation/assets/platform_screen_capture/login.png +0 -0
  472. package/sdd/99_toolchain/01_automation/assets/platform_screen_capture/orders.png +0 -0
  473. package/sdd/99_toolchain/01_automation/build_asset_recipes.py +10 -0
  474. package/sdd/99_toolchain/01_automation/build_screen_spec_pdf.py +427 -0
  475. package/sdd/99_toolchain/01_automation/capture_screen_assets.mjs +148 -0
  476. package/sdd/99_toolchain/01_automation/harness-layout.md +34 -0
  477. package/sdd/99_toolchain/01_automation/parity-execution-tooling-design.md +319 -0
  478. package/sdd/99_toolchain/01_automation/playwright_exactness_manifest.py +21 -0
  479. package/sdd/99_toolchain/01_automation/run_playwright_exactness.py +87 -0
  480. package/sdd/99_toolchain/01_automation/screen_spec_manifest.py +321 -0
  481. package/sdd/99_toolchain/01_automation/spec_asset_builder.py +274 -0
  482. package/sdd/99_toolchain/01_automation/ui-contract-projection.md +79 -0
  483. package/sdd/99_toolchain/01_automation/ui-parity/README.md +60 -0
  484. package/sdd/99_toolchain/01_automation/ui-parity/cli/extract-reference-pages.mjs +2 -0
  485. package/sdd/99_toolchain/01_automation/ui-parity/cli/materialize-reference-assets.mjs +58 -0
  486. package/sdd/99_toolchain/01_automation/ui-parity/cli/normalize-reference-assets.mjs +2 -0
  487. package/sdd/99_toolchain/01_automation/ui-parity/cli/route-gap-report.mjs +187 -0
  488. package/sdd/99_toolchain/01_automation/ui-parity/cli/run-proof.mjs +50 -0
  489. package/sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs +62 -0
  490. package/sdd/99_toolchain/01_automation/ui-parity/cli/upload-parity1.mjs +2 -0
  491. package/sdd/99_toolchain/01_automation/ui-parity/contracts/collector-metadata.schema.json +33 -0
  492. package/sdd/99_toolchain/01_automation/ui-parity/contracts/proof-result.schema.json +76 -0
  493. package/sdd/99_toolchain/01_automation/ui-parity/contracts/route-gap-report.schema.json +95 -0
  494. package/sdd/99_toolchain/01_automation/ui-parity/core/capture-runner.mjs +55 -0
  495. package/sdd/99_toolchain/01_automation/ui-parity/core/load-adapter.mjs +25 -0
  496. package/sdd/99_toolchain/01_automation/ui-parity/core/load-contract.mjs +81 -0
  497. package/sdd/99_toolchain/01_automation/ui-parity/core/paths.mjs +23 -0
  498. package/sdd/99_toolchain/01_automation/ui-parity/core/proof-runner.mjs +255 -0
  499. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-artifact-layout.md +23 -0
  500. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-proof-interface.md +60 -0
  501. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-route-gap-interface.md +82 -0
  502. package/sdd/99_toolchain/01_automation/ui-parity/runtime/playwright-runtime.mjs +16 -0
  503. package/sdd/99_toolchain/01_automation/ui-parity/runtime/static-runtime.mjs +6 -0
  504. package/sdd/99_toolchain/02_policies/.gitkeep +1 -0
  505. package/sdd/99_toolchain/02_policies/build-ast-governance-policy.md +22 -0
  506. package/sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md +24 -0
  507. package/sdd/99_toolchain/02_policies/convention-storage-policy.md +26 -0
  508. package/sdd/99_toolchain/02_policies/main-push-before-dev-deploy-policy.md +27 -0
  509. package/sdd/99_toolchain/02_policies/otro-orchestration-policy.md +30 -0
  510. package/sdd/99_toolchain/02_policies/regression-verification-policy.md +22 -0
  511. package/sdd/99_toolchain/03_templates/.gitkeep +1 -0
  512. package/sdd/99_toolchain/03_templates/asset_recipe_manifest.example.py +38 -0
  513. package/sdd/99_toolchain/03_templates/generated_assets/README.md +11 -0
  514. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-lockup.svg +3 -0
  515. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-mark.svg +3 -0
  516. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-wordmark.svg +3 -0
  517. package/sdd/99_toolchain/03_templates/playwright_exactness_manifest.example.py +21 -0
  518. package/sdd/99_toolchain/README.md +23 -0
  519. package/sdd/README.md +21 -0
  520. package/server/.dockerignore +4 -0
  521. package/server/.env.example +19 -0
  522. package/server/Dockerfile +22 -0
  523. package/server/Dockerfile.dev +19 -0
  524. package/server/README.md +33 -0
  525. package/server/__init__.py +0 -0
  526. package/server/api/__init__.py +1 -0
  527. package/server/api/http/__init__.py +4 -0
  528. package/server/api/http/app.py +53 -0
  529. package/server/api/http/router.py +24 -0
  530. package/server/config.py +52 -0
  531. package/server/contexts/__init__.py +12 -0
  532. package/server/contexts/alerts/__init__.py +1 -0
  533. package/server/contexts/alerts/application/__init__.py +13 -0
  534. package/server/contexts/alerts/application/services.py +41 -0
  535. package/server/contexts/alerts/contracts/__init__.py +3 -0
  536. package/server/contexts/alerts/contracts/http/__init__.py +3 -0
  537. package/server/contexts/alerts/contracts/http/router.py +37 -0
  538. package/server/contexts/alerts/domain/__init__.py +15 -0
  539. package/server/contexts/alerts/domain/models.py +29 -0
  540. package/server/contexts/alerts/infrastructure/__init__.py +11 -0
  541. package/server/contexts/alerts/infrastructure/repository.py +41 -0
  542. package/server/contexts/auth/__init__.py +1 -0
  543. package/server/contexts/auth/application/__init__.py +3 -0
  544. package/server/contexts/auth/application/ports.py +10 -0
  545. package/server/contexts/auth/application/services.py +64 -0
  546. package/server/contexts/auth/contracts/__init__.py +4 -0
  547. package/server/contexts/auth/contracts/http/__init__.py +4 -0
  548. package/server/contexts/auth/contracts/http/dependencies.py +37 -0
  549. package/server/contexts/auth/contracts/http/router.py +19 -0
  550. package/server/contexts/auth/domain/__init__.py +3 -0
  551. package/server/contexts/auth/domain/models.py +24 -0
  552. package/server/contexts/auth/infrastructure/__init__.py +4 -0
  553. package/server/contexts/auth/infrastructure/adapters/memory.py +19 -0
  554. package/server/contexts/auth/infrastructure/adapters/mongodb.py +24 -0
  555. package/server/contexts/auth/infrastructure/adapters/sqlalchemy.py +74 -0
  556. package/server/contexts/auth/infrastructure/repository.py +28 -0
  557. package/server/contexts/catalog/__init__.py +1 -0
  558. package/server/contexts/catalog/application/__init__.py +28 -0
  559. package/server/contexts/catalog/application/ports.py +15 -0
  560. package/server/contexts/catalog/application/services.py +154 -0
  561. package/server/contexts/catalog/contracts/__init__.py +3 -0
  562. package/server/contexts/catalog/contracts/http/__init__.py +3 -0
  563. package/server/contexts/catalog/contracts/http/router.py +60 -0
  564. package/server/contexts/catalog/domain/__init__.py +45 -0
  565. package/server/contexts/catalog/domain/models.py +113 -0
  566. package/server/contexts/catalog/infrastructure/__init__.py +4 -0
  567. package/server/contexts/catalog/infrastructure/adapters/memory.py +62 -0
  568. package/server/contexts/catalog/infrastructure/repository.py +8 -0
  569. package/server/contexts/fulfillment/__init__.py +1 -0
  570. package/server/contexts/fulfillment/application/__init__.py +13 -0
  571. package/server/contexts/fulfillment/application/ports.py +20 -0
  572. package/server/contexts/fulfillment/application/services.py +85 -0
  573. package/server/contexts/fulfillment/contracts/__init__.py +3 -0
  574. package/server/contexts/fulfillment/contracts/http/__init__.py +3 -0
  575. package/server/contexts/fulfillment/contracts/http/router.py +40 -0
  576. package/server/contexts/fulfillment/domain/__init__.py +25 -0
  577. package/server/contexts/fulfillment/domain/models.py +73 -0
  578. package/server/contexts/fulfillment/infrastructure/__init__.py +13 -0
  579. package/server/contexts/fulfillment/infrastructure/adapters/memory.py +43 -0
  580. package/server/contexts/fulfillment/infrastructure/repository.py +97 -0
  581. package/server/contexts/health/__init__.py +1 -0
  582. package/server/contexts/health/application/__init__.py +3 -0
  583. package/server/contexts/health/application/services.py +2 -0
  584. package/server/contexts/health/contracts/__init__.py +3 -0
  585. package/server/contexts/health/contracts/http/__init__.py +3 -0
  586. package/server/contexts/health/contracts/http/router.py +10 -0
  587. package/server/contexts/inventory/__init__.py +1 -0
  588. package/server/contexts/inventory/application/__init__.py +28 -0
  589. package/server/contexts/inventory/application/ports.py +11 -0
  590. package/server/contexts/inventory/application/services.py +214 -0
  591. package/server/contexts/inventory/contracts/__init__.py +3 -0
  592. package/server/contexts/inventory/contracts/http/__init__.py +3 -0
  593. package/server/contexts/inventory/contracts/http/router.py +82 -0
  594. package/server/contexts/inventory/domain/__init__.py +33 -0
  595. package/server/contexts/inventory/domain/models.py +93 -0
  596. package/server/contexts/inventory/infrastructure/__init__.py +4 -0
  597. package/server/contexts/inventory/infrastructure/adapters/memory.py +24 -0
  598. package/server/contexts/inventory/infrastructure/repository.py +8 -0
  599. package/server/contexts/orders/__init__.py +1 -0
  600. package/server/contexts/orders/application/__init__.py +19 -0
  601. package/server/contexts/orders/application/services.py +127 -0
  602. package/server/contexts/orders/contracts/__init__.py +3 -0
  603. package/server/contexts/orders/contracts/http/__init__.py +3 -0
  604. package/server/contexts/orders/contracts/http/router.py +82 -0
  605. package/server/contexts/orders/domain/__init__.py +29 -0
  606. package/server/contexts/orders/domain/models.py +95 -0
  607. package/server/contexts/orders/infrastructure/__init__.py +7 -0
  608. package/server/contexts/orders/infrastructure/repository.py +104 -0
  609. package/server/contexts/shipping/__init__.py +1 -0
  610. package/server/contexts/shipping/application/__init__.py +13 -0
  611. package/server/contexts/shipping/application/services.py +92 -0
  612. package/server/contexts/shipping/contracts/__init__.py +3 -0
  613. package/server/contexts/shipping/contracts/http/__init__.py +3 -0
  614. package/server/contexts/shipping/contracts/http/router.py +40 -0
  615. package/server/contexts/shipping/domain/__init__.py +19 -0
  616. package/server/contexts/shipping/domain/models.py +48 -0
  617. package/server/contexts/shipping/infrastructure/__init__.py +9 -0
  618. package/server/contexts/shipping/infrastructure/repository.py +50 -0
  619. package/server/contexts/support/__init__.py +1 -0
  620. package/server/contexts/support/application/__init__.py +13 -0
  621. package/server/contexts/support/application/services.py +29 -0
  622. package/server/contexts/support/contracts/__init__.py +3 -0
  623. package/server/contexts/support/contracts/http/__init__.py +3 -0
  624. package/server/contexts/support/contracts/http/router.py +40 -0
  625. package/server/contexts/support/domain/__init__.py +13 -0
  626. package/server/contexts/support/domain/models.py +27 -0
  627. package/server/contexts/support/infrastructure/__init__.py +11 -0
  628. package/server/contexts/support/infrastructure/repository.py +70 -0
  629. package/server/contexts/user/__init__.py +1 -0
  630. package/server/contexts/user/application/__init__.py +3 -0
  631. package/server/contexts/user/application/ports.py +11 -0
  632. package/server/contexts/user/application/services.py +44 -0
  633. package/server/contexts/user/contracts/__init__.py +3 -0
  634. package/server/contexts/user/contracts/http/__init__.py +3 -0
  635. package/server/contexts/user/contracts/http/router.py +26 -0
  636. package/server/contexts/user/domain/__init__.py +3 -0
  637. package/server/contexts/user/domain/models.py +22 -0
  638. package/server/contexts/user/infrastructure/__init__.py +3 -0
  639. package/server/contexts/user/infrastructure/adapters/memory.py +27 -0
  640. package/server/contexts/user/infrastructure/adapters/mongodb.py +41 -0
  641. package/server/contexts/user/infrastructure/adapters/sqlalchemy.py +94 -0
  642. package/server/contexts/user/infrastructure/factory.py +28 -0
  643. package/server/data/README.md +24 -0
  644. package/server/data/bootstrap/alerts.json +38 -0
  645. package/server/data/bootstrap/auth_accounts.json +18 -0
  646. package/server/data/bootstrap/catalog_products.json +179 -0
  647. package/server/data/bootstrap/fulfillment_events.json +5 -0
  648. package/server/data/bootstrap/fulfillment_notes.json +5 -0
  649. package/server/data/bootstrap/fulfillment_tasks.json +50 -0
  650. package/server/data/bootstrap/inventory_levels.json +80 -0
  651. package/server/data/bootstrap/orders.json +62 -0
  652. package/server/data/bootstrap/shipping_shipments.json +50 -0
  653. package/server/data/bootstrap/support_faqs.json +26 -0
  654. package/server/data/bootstrap/users.json +20 -0
  655. package/server/data/bootstrap_loader.py +15 -0
  656. package/server/docker-entrypoint.sh +56 -0
  657. package/server/main.py +3 -0
  658. package/server/pyproject.toml +36 -0
  659. package/server/shared/__init__.py +1 -0
  660. package/server/shared/application/__init__.py +3 -0
  661. package/server/shared/application/health.py +2 -0
  662. package/server/shared/infrastructure/__init__.py +10 -0
  663. package/server/shared/infrastructure/runtime.py +6 -0
  664. package/server/shared/infrastructure/security.py +33 -0
  665. package/server/tests/e2e/test_domain_feature_flows.py +483 -0
  666. package/server/tests/test_health.py +49 -0
  667. package/server/uv.lock +1169 -0
  668. package/bin/agentic-dev.js +0 -9
  669. package/src/cli.js +0 -37
  670. package/src/init-command.js +0 -230
  671. package/src/lib/command.js +0 -14
  672. package/src/lib/fs.js +0 -92
  673. package/src/lib/git.js +0 -57
  674. package/src/lib/github.js +0 -77
  675. package/src/lib/prompt.js +0 -52
  676. package/src/lib/system.js +0 -15
  677. package/src/lib/template.js +0 -143
@@ -0,0 +1,5 @@
1
+ # Feature Verification
2
+
3
+ - 이 폴더는 feature 범주별 현재 retained verification 상태를 요약한다.
4
+ - service와 domain을 각각 큰 범주로 묶어 관리한다.
5
+ - 오래된 개별 test run 문서는 유지하지 않고, 현재 남겨둘 가치가 있는 검증 결과만 요약한다.
@@ -0,0 +1,14 @@
1
+ # domain verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - feature spec은 current domain split을 기준으로 유지된다.
10
+ - dated planning metadata는 제거되어 final-only 기준을 따른다.
11
+
12
+ ## Residual Risk
13
+
14
+ - domain contract가 바뀌면 feature spec과 build summary를 함께 갱신해야 한다.
@@ -0,0 +1,22 @@
1
+ # service verification
2
+
3
+ ## Scope
4
+
5
+ - platform, admin, mobile, landing 서비스 surface의 현재 retained verification을 요약한다.
6
+
7
+ ## Current Status
8
+
9
+ - `platform`: pass
10
+ - `admin`: pass
11
+ - `mobile`: pass
12
+ - `landing`: pass
13
+
14
+ ## Retained Checks
15
+
16
+ - service별 frontend build가 current baseline 검증 surface다.
17
+ - typed API contract와 backend domain contract 정합성은 domain verification을 상속한다.
18
+ - screen surface 상세는 `04_verify/02_screen/` 기준으로 읽는다.
19
+
20
+ ## Residual Risk
21
+
22
+ - 실제 서비스 repo에 적용할 때는 각 app별 targeted build와 proof를 다시 재실행해야 한다.
@@ -0,0 +1,6 @@
1
+ # Screen Verification
2
+
3
+ - 이 폴더는 screen별 현재 retained verification 상태를 유지한다.
4
+ - service split을 따라 `04_verify/02_screen/<service>/` 아래에 둔다.
5
+ - dated gate/test log를 쌓지 않고, current retained checks와 residual risk만 남긴다.
6
+ - 새 verify section을 추가할 때는 `_screen_verify_template.md`를 기준으로 runtime tree, Playwright suite id, canonical runner command, artifact path를 함께 남긴다.
@@ -0,0 +1,20 @@
1
+ # Screen Verify Summary Template
2
+
3
+ ## Status
4
+
5
+ - pass | fail | partial
6
+
7
+ ## Retained Checks
8
+
9
+ - runtime tree:
10
+ - canonical Playwright suite id:
11
+ - canonical runner command: `python3 sdd/99_toolchain/01_automation/run_playwright_exactness.py --suite <suite-id> --base-url <url>`
12
+ - retained screenshot/json artifacts:
13
+ - builder/design guide/asset checks:
14
+ - live-vs-local split:
15
+
16
+ ## Residual Risk
17
+
18
+ - exactness gap:
19
+ - live verification gap:
20
+ - shared surface regression gap:
@@ -0,0 +1,4 @@
1
+ # Admin Screen Verification
2
+
3
+ - current source: `sdd/01_planning/02_screen/admin_screen_spec.pdf`
4
+ - 이 폴더는 admin screen별 retained verification summary를 유지한다.
@@ -0,0 +1,4 @@
1
+ # Landing Screen Verification
2
+
3
+ - current source: `sdd/01_planning/02_screen/landing_screen_spec.pdf`
4
+ - 이 폴더는 landing screen별 retained verification summary를 유지한다.
@@ -0,0 +1,4 @@
1
+ # Mobile Screen Verification
2
+
3
+ - current source: `sdd/01_planning/02_screen/mobile_screen_spec.pdf`
4
+ - 이 폴더는 mobile screen별 retained verification summary를 유지한다.
@@ -0,0 +1,4 @@
1
+ # Platform Screen Verification
2
+
3
+ - current source: `sdd/01_planning/02_screen/platform_screen_spec.pdf`
4
+ - 이 폴더는 platform screen별 retained verification summary를 유지한다.
@@ -0,0 +1,10 @@
1
+ # Architecture Verification
2
+
3
+ - 구조/거버넌스 관련 retained verification summary를 유지한다.
4
+ - architecture planning 구조와 저장소 거버넌스가 현재 문서 체계에 맞게 유지되는지 검증한다.
5
+
6
+ ## Current Documents
7
+
8
+ - [architecture_document_governance.md](architecture_document_governance.md)
9
+ - [repository_governance.md](repository_governance.md)
10
+ - [toolchain_governance.md](toolchain_governance.md)
@@ -0,0 +1,15 @@
1
+ # architecture document governance verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - `sdd/01_planning/03_architecture/README.md`, `INDEX.md`가 공통/특화 구조를 함께 설명한다.
10
+ - `sdd/01_planning/03_architecture/frontend`, `backend`, `infra`, `tech-research` README가 각 architecture 범위를 분리해 설명한다.
11
+ - `sdd/01_planning/04_data/README.md`가 data modeling 경계를 architecture 밖으로 유지한다.
12
+
13
+ ## Residual Risk
14
+
15
+ - 아직 `frontend/`, `backend/`, `infra`, `tech-research` 하위의 상세 architecture 문서는 skeleton README 수준이므로, 실제 구조 논점이 늘어나면 개별 문서를 계속 채워야 한다.
@@ -0,0 +1,28 @@
1
+ # build ast runtime tree governance
2
+
3
+ ## Verification Target
4
+
5
+ - `templates` AST-style build/runtime-tree governance
6
+
7
+ ## Gate Commands
8
+
9
+ - `python3 scripts/dev/audit_sdd_build_ast.py --write .agent/sdd-build-ast-audit.json`
10
+ - `rg -n "Ralph|iteration|Current Build Note|2026-" sdd/03_build -g '*.md'`
11
+
12
+ ## Latest Known Status
13
+
14
+ - status: pass
15
+ - primary command: `python3 scripts/dev/audit_sdd_build_ast.py --write .agent/sdd-build-ast-audit.json`
16
+ - machine-readable result: `.agent/sdd-build-ast-audit.json`
17
+ - scores: `ast_similarity=10`, `implementation_traceability=10`, `human_agent_readability=10`
18
+ - finding summary: residual finding 없음, `all_ten=true`
19
+ - supporting check: `rg -n "Ralph|iteration|Current Build Note|2026-" sdd/03_build -g '*.md'` returned no matches
20
+ - supporting infra checks:
21
+ - `terraform -chdir=infra/terraform/aws/data init -backend=false && terraform -chdir=infra/terraform/aws/data validate`
22
+ - `terraform -chdir=infra/terraform/aws/domain init -backend=false && terraform -chdir=infra/terraform/aws/domain validate`
23
+ - `terraform -chdir=infra/terraform/openstack/server init -backend=false && terraform -chdir=infra/terraform/openstack/server validate`
24
+
25
+ ## Residual Risk
26
+
27
+ - runtime entrypoint나 shell structure가 바뀌면 service summary와 audit needle을 함께 갱신하지 않으면 AST 점수가 어긋난다.
28
+ - downstream repo가 template를 복제한 뒤 role agent나 skill alias만 가져가고 policy를 생략하면 build current-state 규칙이 약해질 수 있다.
@@ -0,0 +1,16 @@
1
+ # repository governance verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - `AGENTS.md`와 `sdd/README.md`가 final-only SDD 규칙을 설명한다.
10
+ - build/verify/operate가 history-style section 없이 current-state 문서로 정리된다.
11
+ - planning data modeling root가 `04_data`로 유지된다.
12
+ - screen build/verify summary가 service split 아래에 정리된다.
13
+
14
+ ## Residual Risk
15
+
16
+ - toolchain이나 skill이 legacy path를 다시 참조하면 구조와 충돌한다.
@@ -0,0 +1,58 @@
1
+ # toolchain governance verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - `python3 sdd/99_toolchain/01_automation/run_playwright_exactness.py --list`
10
+ - pass
11
+ - canonical Playwright suite registry entrypoint가 현재 toolchain에 추가됐다
12
+ - `python3 sdd/99_toolchain/01_automation/run_playwright_exactness.py --suite example --base-url http://127.0.0.1:3000 --dry-run`
13
+ - not run
14
+ - template repo에는 아직 등록된 suite가 없어 dry-run 대상 suite는 downstream repo가 채운 뒤 검증해야 한다
15
+ - `python3 -m py_compile sdd/99_toolchain/01_automation/playwright_exactness_manifest.py sdd/99_toolchain/01_automation/run_playwright_exactness.py`
16
+ - pass
17
+ - Playwright exactness wrapper/manifest Python syntax가 유효하다
18
+ - `git check-ignore -v .claude/settings.local.json .agent/sdd-build-ast-audit.json .agent/runs/README.md client/admin/dist server/.venv`
19
+ - pass
20
+ - durable scaffold/config는 unignore 대상으로 승격했고, generated artifact는 계속 ignore 대상으로 남겼다
21
+ - `rg -n "trigger하는가|정본과 우선순위|문서 거버넌스와 산출물 원칙|Schema parity와 persistence 작업은 왜 별도 축인가|Regression verification은 왜 별도 구조를 갖는가|완료 기준을 어떻게 봐야 하는가" SDD_SKILL.md`
22
+ - pass
23
+ - 루트 `SDD_SKILL.md`가 `sdd` 스킬의 trigger, governance, schema parity, regression, completion gate까지 설명하도록 확장됐다
24
+ - `rg -n "Toolchain을 어떻게 봐야 하는가|Visual Fidelity를 맞추는 구조|Exactness를 맞추는 구조|기능 정합성을 맞추는 구조" SDD_SKILL.md`
25
+ - pass
26
+ - 루트 `SDD_SKILL.md`가 toolchain, visual fidelity, exactness, 기능 정합성 구조를 별도 섹션으로 설명한다
27
+ - `rg -n "folder structure|Feature 플로우|Screen 플로우|Architecture 플로우|Operate / Rollout 플로우" SDD_SKILL.md`
28
+ - pass
29
+ - 루트 `SDD_SKILL.md`가 workflow와 `sdd/` 구조, flow별 설명을 포함하도록 확장됐다
30
+ - `rg -n "sdd-dev/|screen_design_guide_builder\\.py|explicitly in scope|Do not infer rollout scope" .codex/skills/sdd .claude/skills/sdd*`
31
+ - pass
32
+ - stale `.codex/skills/sdd-dev/` reference가 제거됐고, rollout gate는 explicit deployment scope 기준으로 정리됐으며, 없는 design guide builder file path 고정도 제거됐다
33
+ - `test -f SDD_SKILL.md`
34
+ - pass
35
+ - 프로젝트 루트에 `sdd` skill 요약 entrypoint가 추가됐다
36
+ - `rg -n "brand_assets|brand asset|Brand Asset|브랜드 자산|브랜드 에셋|build_mobile_brand_assets|mobile_brand_asset_manifest|BRAND_ASSET_RECIPES" sdd/01_planning/02_screen sdd/02_plan/03_architecture sdd/03_build/03_architecture sdd/99_toolchain .codex/skills/sdd .claude/skills/sdd`
37
+ - pass
38
+ - template repo planning/toolchain/local skill에서 legacy brand asset naming이 제거됐다
39
+ - `git diff --check -- SDD_SKILL.md sdd/02_plan/03_architecture/toolchain_governance.md sdd/03_build/03_architecture/toolchain_governance.md sdd/04_verify/03_architecture/toolchain_governance.md .codex/skills/sdd/SKILL.md .claude/skills/sdd-dev/SKILL.md`
40
+ - pass
41
+ - `sdd/99_toolchain/02_policies/regression-verification-policy.md`가 회귀 검수 규칙의 정본으로 추가됐다.
42
+ - `AGENTS.md`, `.codex/skills/sdd/SKILL.md`, `sdd/99_toolchain/01_automation/README.md`가 direct-only verification 금지와 selected regression surface 기록 규칙을 함께 설명한다.
43
+ - `sdd/01_planning/02_screen/assets/README.md`, `.codex/skills/sdd/SKILL.md`, `.claude/skills/sdd/SKILL.md`, `sdd/99_toolchain/01_automation/README.md`가 reusable asset planning root를 `assets/`로 일치시킨다.
44
+ - `sdd/02_plan/10_test/regression_verification.md`, `sdd/03_build/10_test/regression_verification.md`, `sdd/04_verify/10_test/regression_verification.md`가 current-state trail을 이룬다.
45
+ - `.claude/skills/sdd-dev/SKILL.md`가 현재 Codex canonical path와 section map path를 직접 가리킨다.
46
+ - `.codex/skills/sdd/SKILL.md`는 rollout scope를 `sdd/05_operate` 존재 여부가 아니라 explicit deployment scope 또는 completion policy로 해석한다.
47
+ - `.codex/skills/sdd/SKILL.md`, `sdd/99_toolchain/01_automation/README.md`, `sdd/99_toolchain/02_policies/regression-verification-policy.md`가 Playwright exactness wrapper/manifest를 canonical local gate로 함께 설명한다.
48
+ - `SDD_SKILL.md`는 루트에서 빠르게 찾는 설명 entrypoint이고, workflow/structure 설명과 canonical source 분리를 함께 명시한다.
49
+ - `SDD_SKILL.md`는 visual fidelity, exactness, 기능 정합성을 각각 분리해 설명하고, toolchain과 verify artifact가 이 셋을 어떻게 연결하는지 명시한다.
50
+ - `SDD_SKILL.md`는 이제 `sdd` 스킬 전체를 이해하기 위한 루트 해설서 역할을 하며, skill 원문 해석 전에 필요한 mental model을 제공한다.
51
+ - durable local scaffold와 generated artifact를 구분하는 ignore policy가 `.gitignore`에 반영됐다.
52
+
53
+ ## Residual Risk
54
+
55
+ - regression surface selector 자동화가 아직 없어서 initial scope selection은 문서 기준/manual 판단에 의존한다.
56
+ - template repo에는 concrete Playwright suite source가 아직 없으므로, downstream repo가 harness root와 suite registry를 채우기 전까지는 runner가 empty registry 상태로 유지된다.
57
+ - rollout completion bar 해석은 여전히 저장소 정책과 사용자 요청의 명시성에 의존하므로, 배포가 애매한 요청은 시작 시 scope를 분명히 해야 한다.
58
+ - `.claude/settings.local.json`은 local override 이름을 유지하므로 downstream에서 환경별 차이가 생기면 별도 override policy 정리가 필요할 수 있다.
@@ -0,0 +1,3 @@
1
+ # IaC Verification
2
+
3
+ - delivery/runtime 관련 retained verification summary를 유지한다.
@@ -0,0 +1,10 @@
1
+ # dev runtime delivery verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - current delivery baseline은 frontend build, backend test, screen capture/PDF generation 조합으로 유지된다.
10
+ - proof/output path는 current `sdd/04_verify/10_test/ui_parity/` 구조를 따른다.
@@ -0,0 +1,42 @@
1
+ # template runtime delivery verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - `rg -n "canonical dev-focused|dedicated host|AWS edge/domain|compose.yml" README.md infra/compose/README.md sdd/02_plan/06_iac/template_runtime_delivery.md sdd/03_build/06_iac/template_runtime_delivery.md sdd/99_toolchain/README.md sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md`
10
+ - pass
11
+ - root compose baseline과 dedicated overlay positioning이 target docs에서 같은 표현으로 유지된다.
12
+ - `rg -n '/home/sh/Documents/Github/templates/' . -g '*.md'`
13
+ - pass
14
+ - canonical template docs에 절대 filesystem 링크가 남아 있지 않다.
15
+ - `docker compose --env-file .env.example -f compose.yml config`
16
+ - pass
17
+ - `docker compose --env-file infra/compose/.env.dev.example -f infra/compose/dev.yml config`
18
+ - pass
19
+ - `docker compose --env-file infra/compose/.env.prod.example -f infra/compose/prod.yml config`
20
+ - pass
21
+ - `docker compose --env-file .env.example -f compose.yml build server client-landing client-platform client-mobile client-admin`
22
+ - pass
23
+ - `SERVER_HTTP_PORT=38080 CLIENT_LANDING_PORT=33000 CLIENT_PLATFORM_PORT=33001 CLIENT_MOBILE_PORT=33002 CLIENT_ADMIN_PORT=34000 docker compose --env-file .env.example -f compose.yml up -d postgres server client-landing client-platform client-mobile client-admin`
24
+ - pass
25
+ - root compose baseline이 high-port override에서도 `postgres + server + 4 clients`를 모두 기동했다.
26
+ - `curl -sf http://127.0.0.1:38080/health`
27
+ - pass
28
+ - backend health 응답은 `{"status":"ok"}`였다.
29
+ - `SERVER_HTTP_PORT=38080 CLIENT_LANDING_PORT=33000 CLIENT_PLATFORM_PORT=33001 CLIENT_MOBILE_PORT=33002 CLIENT_ADMIN_PORT=34000 docker compose --env-file .env.example -f compose.yml down`
30
+ - pass
31
+ - `terraform -chdir=infra/terraform/aws/data init -backend=false && terraform -chdir=infra/terraform/aws/data validate`
32
+ - pass
33
+ - `terraform -chdir=infra/terraform/aws/domain init -backend=false && terraform -chdir=infra/terraform/aws/domain validate`
34
+ - pass
35
+ - `terraform -chdir=infra/terraform/openstack/server init -backend=false && terraform -chdir=infra/terraform/openstack/server validate`
36
+ - pass
37
+ - `git diff --check -- README.md infra/compose/README.md sdd/02_plan/06_iac/template_runtime_delivery.md sdd/03_build/06_iac/template_runtime_delivery.md sdd/04_verify/06_iac/template_runtime_delivery.md sdd/99_toolchain/README.md sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md sdd/99_toolchain/02_policies/convention-storage-policy.md`
38
+ - pass
39
+
40
+ ## Residual Risk
41
+
42
+ - root compose service graph나 remote overlay 역할이 다시 바뀌면 README, IaC summary, toolchain policy를 같은 턴에 다시 맞춰야 한다.
@@ -0,0 +1,3 @@
1
+ # Integration Verification
2
+
3
+ - integration retained verification summary를 유지한다.
@@ -0,0 +1,16 @@
1
+ # frontend live integration verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - service app split과 backend domain owner 매핑이 current integration baseline으로 유지된다.
10
+ - parity tooling reference path는 stable current path를 사용한다.
11
+ - `client/mobile/src/lib/useSpeechRecognitionInput.ts` shared utility가 template mobile build/typecheck에 포함된다.
12
+
13
+ ## Residual Risk
14
+
15
+ - app별 adapter/contract path가 바뀌면 parity tooling 경로도 함께 갱신해야 한다.
16
+ - browser speech recognition support와 permission UX는 template utility만으로 보장되지 않으므로, 실제 consumer screen에서 별도 verify가 필요하다.
@@ -0,0 +1,3 @@
1
+ # Nonfunctional Verification
2
+
3
+ - repository hygiene 관련 retained verification summary를 유지한다.
@@ -0,0 +1,14 @@
1
+ # repository hygiene verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - dated SDD log section은 제거되고 final-only section만 유지된다.
10
+ - planning spec의 작성일 metadata는 제거된다.
11
+
12
+ ## Residual Risk
13
+
14
+ - generator가 날짜 메타데이터를 다시 쓰면 planning current-state rule과 충돌한다.
@@ -0,0 +1,9 @@
1
+ # Test Verification
2
+
3
+ - 반복 사용하는 검증 harness summary를 유지한다.
4
+ - regression verification summary도 같은 section에서 유지한다.
5
+
6
+ ## Current Documents
7
+
8
+ - [verification_harness.md](verification_harness.md)
9
+ - [regression_verification.md](regression_verification.md)
@@ -0,0 +1,16 @@
1
+ # regression verification
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - `sdd/02_plan/10_test/regression_verification.md`가 current regression scope baseline으로 추가됐다.
10
+ - `AGENTS.md`, `.codex/skills/sdd/SKILL.md`, `sdd/99_toolchain/01_automation/README.md`가 direct-only verification 금지와 selected regression surface 기록 규칙을 함께 유지한다.
11
+ - `sdd/03_build/10_test/regression_verification.md`가 template workflow 반영 상태를 current-state로 설명한다.
12
+ - screen exact automation gate가 Playwright인 경우 suite id, toolchain runner command, artifact path를 retained check에 함께 남긴다.
13
+
14
+ ## Residual Risk
15
+
16
+ - regression scope selection은 아직 자동 selector가 없어서 문서 규칙과 reviewer 판단에 의존한다.
@@ -0,0 +1,4 @@
1
+ # UI Parity Artifacts
2
+
3
+ - UI parity reference asset과 proof output의 current durable 위치다.
4
+ - latest-named artifact를 같은 경로에서 덮어써 유지한다.
@@ -0,0 +1,17 @@
1
+ # verification harness
2
+
3
+ ## Status
4
+
5
+ - pass
6
+
7
+ ## Retained Checks
8
+
9
+ - verify harness는 stable current artifact path를 사용한다.
10
+ - UI parity reference asset과 proof output은 current durable location을 사용한다.
11
+ - screen local exactness는 `python3 sdd/99_toolchain/01_automation/run_playwright_exactness.py --suite <suite-id> --base-url <url>`를 canonical harness entrypoint로 사용한다.
12
+ - regression verification scope는 별도 durable baseline에서 선택하고, harness는 selected surface 중 automation 가능한 slice를 담당한다.
13
+
14
+ ## Residual Risk
15
+
16
+ - harness CLI default path가 legacy verify folder를 다시 가리키면 drift가 생긴다.
17
+ - regression surface selector 자동화가 없어 shared-impact 판정은 문서와 reviewer 판단에 의존한다.
@@ -0,0 +1,22 @@
1
+ # Verify Governance
2
+
3
+ ## Purpose
4
+
5
+ - `sdd/04_verify/`는 현재 구현 상태에 대한 retained verification을 durable 문서로 유지하는 루트다.
6
+ - 날짜별 gate/test log를 쌓지 않고, 현재 기준의 pass/fail 상태와 residual risk만 남긴다.
7
+
8
+ ## Canonical Rule
9
+
10
+ - `04_verify`는 `02_plan`, `03_build`와 같은 section 축을 따른다.
11
+ - feature, screen, architecture, IAC, test surface별 verification summary를 같은 파일에서 갱신한다.
12
+ - history성 gate/test 로그는 `04_verify`에 두지 않는다.
13
+
14
+ ## Sections
15
+
16
+ - `01_feature/`: feature 범주별 retained verification summary
17
+ - `02_screen/`: screen별 retained verification summary
18
+ - `03_architecture/`: 거버넌스/구조 관련 verification summary
19
+ - `06_iac/`: delivery/runtime verification summary
20
+ - `07_integration/`: integration verification summary
21
+ - `08_nonfunctional/`: nonfunctional verification summary
22
+ - `10_test/`: 반복 사용하는 검증 harness summary
@@ -0,0 +1,4 @@
1
+ # Runbooks
2
+
3
+ - 이 폴더는 현재 유효한 운영 절차를 durable runbook으로 유지한다.
4
+ - 날짜별 운영 이력은 두지 않고, 지금 따라야 하는 절차만 갱신한다.
@@ -0,0 +1,4 @@
1
+ # Delivery Status
2
+
3
+ - 이 폴더는 현재 live deployment와 monitoring baseline을 durable 문서로 유지한다.
4
+ - service surface별 current status만 남기고, 과거 release log는 보관하지 않는다.
@@ -0,0 +1,16 @@
1
+ # service status
2
+
3
+ ## Current Live State
4
+
5
+ - template repo는 root compose/developer baseline 기준의 current buildable state를 유지한다.
6
+ - production release timeline은 SDD에 누적하지 않는다.
7
+
8
+ ## Monitoring Baseline
9
+
10
+ - backend `pytest`
11
+ - frontend app build
12
+ - parity harness current output path 확인
13
+
14
+ ## Residual Risk
15
+
16
+ - 실제 서비스 레포에 이식할 때는 각 서비스의 runtime/edge 기준으로 다시 구체화해야 한다.
@@ -0,0 +1,12 @@
1
+ # Operate Governance
2
+
3
+ ## Purpose
4
+
5
+ - `sdd/05_operate/`는 현재 배포 상태, 모니터링 기준, 운영 절차를 durable 문서로 유지하는 루트다.
6
+ - raw 운영 로그나 히스토리성 release note는 남기지 않는다.
7
+
8
+ ## Canonical Rule
9
+
10
+ - runbook은 절차를 설명하는 durable 문서로 유지한다.
11
+ - delivery status는 현재 live state와 확인 기준만 남기고 덮어쓴다.
12
+ - raw runtime log와 상세 incident timeline은 backend/application logging system의 역할이다.
@@ -0,0 +1,76 @@
1
+ # Automation Toolchain
2
+
3
+ `01_automation`은 screen spec 생성, capture asset 수집, parity harness 실행, Playwright exactness orchestration, recipe 기반 정적 자산 생성을 위한 자동화 자산을 둔다.
4
+
5
+ ## Scope
6
+
7
+ - screen spec capture script
8
+ - screen spec PDF generator
9
+ - parity harness
10
+ - Playwright exactness runner / suite registry
11
+ - generator manifest
12
+ - asset recipe builder
13
+ - regression verification scope selection rule
14
+
15
+ ## Screen Spec Rule
16
+
17
+ - feature code: `DOMAIN-FNNN`
18
+ - screen code: `SERVICE-SNNN`
19
+ - desktop capture 기준 visible area: `1710x951`
20
+ - 기본 capture viewport: `1690x940`
21
+ - capture mode: `viewport-first`
22
+
23
+ ## Canonical Tools
24
+
25
+ - [screen_spec_manifest.py](./screen_spec_manifest.py)
26
+ - [capture_screen_assets.mjs](./capture_screen_assets.mjs)
27
+ - [build_screen_spec_pdf.py](./build_screen_spec_pdf.py)
28
+ - [spec_asset_builder.py](./spec_asset_builder.py)
29
+ - [build_asset_recipes.py](./build_asset_recipes.py)
30
+ - [playwright_exactness_manifest.py](./playwright_exactness_manifest.py)
31
+ - [run_playwright_exactness.py](./run_playwright_exactness.py)
32
+
33
+ ## Storage Rule
34
+
35
+ - generated runtime asset은 각 구현 repo 경로에 둔다.
36
+ - planning 산출물은 `sdd/01_planning/02_screen/assets/` 아래에 둔다.
37
+ - generator와 manifest는 `sdd/99_toolchain/01_automation/`에 둔다.
38
+ - Playwright harness source는 repo 상황에 따라 `research/agent-browser/pocs/playwright-dev-e2e/` 같은 runtime location에 둘 수 있지만, canonical invocation과 suite registry는 `sdd/99_toolchain/01_automation/`이 소유한다.
39
+
40
+ ## Regression Verification Rule
41
+
42
+ - toolchain은 builder/harness를 제공하더라도 direct target만 확인하고 종료하는 흐름을 허용하지 않는다.
43
+ - `sdd` 작업은 `sdd/02_plan/10_test/regression_verification.md`를 기준으로 direct, upstream, downstream, shared surface를 선택한다.
44
+ - parity harness나 build check는 회귀 검수의 일부일 뿐이고, 실제 완료 기준은 선택한 regression surface 전체에 대한 retained evidence다.
45
+ - Playwright exactness suite가 있는 surface는 `run_playwright_exactness.py`를 canonical local gate로 사용한다.
46
+ - shared route, shell, auth/session, shared component, API/data contract, generated asset, builder output 변경은 adjacent consumer까지 검수 범위를 넓힌다.
47
+ - 아직 자동화가 없는 회귀 surface는 command/manual verification으로 메우고, automation gap은 `sdd/03_build`, `sdd/04_verify`에 residual risk로 남긴다.
48
+ - Browser Use나 수동 시각 점검은 Playwright exactness gate를 대체하지 않고 보강/진단 용도로만 사용한다.
49
+
50
+ ## Asset Recipe Rule
51
+
52
+ - 정적 디자인 자산 추출의 canonical tool name은 `스펙에셋빌더`다.
53
+ - generic 실행 파일은 `[spec_asset_builder.py](./spec_asset_builder.py)`다.
54
+ - `[build_asset_recipes.py](./build_asset_recipes.py)`는 기존 호출 호환용 wrapper다.
55
+ - 화면명세서에 있는 icon, logo, illustration, 기타 재사용 가능한 static asset은 먼저 `스펙에셋빌더`로 추출한 뒤 구현 코드에서 사용한다.
56
+ - reusable asset planning 문서는 `sdd/01_planning/02_screen/assets/` 아래에 둔다.
57
+ - 프로젝트별 규칙은 Python manifest에서 `ASSET_RECIPES` 리스트로 선언한다.
58
+ - 각 recipe는 `source`, `crop_box`, `transparent_white_threshold`, `trim`, `output`, `children`을 조합해 재사용 가능한 SVG/PNG 자산을 생성한다.
59
+ - `--verify-exact`를 사용하면 generated output이 source crop과 픽셀 단위로 동일한지 검증한다.
60
+ - builder로 표현 가능한 자산을 수동 redraw나 screenshot crop으로 대체하지 않는다.
61
+ - 수동 예외가 필요하면 plan/build/verify 문서에 source, 예외 사유, 최종 자산 경로를 함께 남긴다.
62
+ - 예시 manifest는 [`../03_templates/asset_recipe_manifest.example.py`](../03_templates/asset_recipe_manifest.example.py)에 둔다.
63
+ - 예시 generated output은 [`../03_templates/generated_assets/README.md`](../03_templates/generated_assets/README.md) 경로를 사용한다.
64
+
65
+ ## Playwright Exactness Rule
66
+
67
+ - Playwright exactness의 canonical registry는 [playwright_exactness_manifest.py](./playwright_exactness_manifest.py)다.
68
+ - canonical runner는 [run_playwright_exactness.py](./run_playwright_exactness.py)다.
69
+ - downstream repo는 suite source를 runtime location에 둘 수 있지만, retained command는 wrapper 기준으로 남긴다.
70
+ - suite id, spec file, target screen batch, artifact path는 durable current-state로 관리한다.
71
+ - screen 작업의 기본 local exactness gate는 다음 순서를 따른다.
72
+ - design guide / asset / screen spec baseline 확인
73
+ - `python3 sdd/99_toolchain/01_automation/run_playwright_exactness.py --suite <suite-id> --base-url <url>`
74
+ - 필요하면 `--api-base-url`, `--browser`, `--grep`를 추가한다.
75
+ - 실행 결과와 artifact path를 `sdd/04_verify` current summary에 기록한다.
76
+ - 시작점 예시는 [`../03_templates/playwright_exactness_manifest.example.py`](../03_templates/playwright_exactness_manifest.example.py)를 따른다.