agentic-dev 0.1.0 → 0.2.0

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 +373 -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,119 @@
1
+ # templates data modeling
2
+
3
+ - 작성 버전: 1.0.0
4
+
5
+ ## Purpose
6
+
7
+ 현재 구현된 backend domain model과 저장 관점을 entity 수준으로 요약한다.
8
+
9
+ ## 1. Auth Account
10
+
11
+ | Field | Type | Meaning |
12
+ | --- | --- | --- |
13
+ | `id` | `str` | 인증 계정 식별자 |
14
+ | `name` | `str` | 표시 이름 |
15
+ | `email` | `EmailStr` | 로그인 이메일 |
16
+ | `role` | `str` | `admin`, `operator` 등 인증 역할 |
17
+ | `status` | `str` | 인증 가능 상태 |
18
+ | `password_hash` | `str` | credential hash |
19
+
20
+ ## 2. User Profile
21
+
22
+ | Field | Type | Meaning |
23
+ | --- | --- | --- |
24
+ | `id` | `str` | 사용자 식별자 |
25
+ | `name` | `str` | 사용자 이름 |
26
+ | `email` | `EmailStr` | 연락/표시 이메일 |
27
+ | `role` | `str` | 운영 역할 |
28
+ | `status` | `str` | 활성 상태 |
29
+ | `timezone` | `str` | 지역/표시용 timezone |
30
+ | `last_login_at` | `str` | 최근 로그인 시각 |
31
+
32
+ ## 3. Catalog Product
33
+
34
+ | Field | Type | Meaning |
35
+ | --- | --- | --- |
36
+ | `id` | `str` | 상품 식별자 |
37
+ | `slug` | `str` | URL/업무용 유니크 slug |
38
+ | `name` | `str` | 상품명 |
39
+ | `brand` | `str` | 브랜드명 |
40
+ | `category` | `str` | 카테고리 |
41
+ | `status` | `draft|active|archived` | 카탈로그 노출 상태 |
42
+ | `short_description` | `str` | 카드용 요약 문구 |
43
+ | `description` | `str` | 상세 설명 |
44
+ | `hero_image` | `MediaAsset` | 대표 이미지 |
45
+ | `gallery` | `list[MediaAsset]` | 추가 이미지 |
46
+ | `price` | `Money` | 판매가 |
47
+ | `compare_at_price` | `Money?` | 비교가 |
48
+ | `tags` | `list[str]` | 태그 |
49
+ | `attributes` | `list[ProductAttribute]` | 속성 리스트 |
50
+ | `variants` | `list[ProductVariant]` | SKU variant 리스트 |
51
+ | `created_at` | `str` | 생성 시각 |
52
+ | `updated_at` | `str` | 수정 시각 |
53
+
54
+ ## 4. Inventory Level
55
+
56
+ | Field | Type | Meaning |
57
+ | --- | --- | --- |
58
+ | `sku` | `str` | 재고 식별 단위 |
59
+ | `product_id` | `str` | catalog product 참조 |
60
+ | `product_name` | `str` | 표시용 상품명 |
61
+ | `variant_name` | `str` | variant 이름 |
62
+ | `location_id` | `str` | 물류 거점 식별자 |
63
+ | `location_name` | `str` | 거점 이름 |
64
+ | `on_hand` | `int` | 실재고 |
65
+ | `reserved` | `int` | 선점 재고 |
66
+ | `safety_stock` | `int` | 안전 재고 |
67
+ | `reorder_point` | `int` | 재주문 기준점 |
68
+ | `updated_at` | `str` | 수정 시각 |
69
+
70
+ ## 5. Order
71
+
72
+ | Field | Type | Meaning |
73
+ | --- | --- | --- |
74
+ | `id` | `str` | 주문 식별자 |
75
+ | `product_id` | `str` | 상품 참조 |
76
+ | `product_name` | `str` | 표시용 상품명 |
77
+ | `customer_name` | `str` | 고객명 |
78
+ | `seller_name` | `str` | 판매자/셀러명 |
79
+ | `status` | `str` | 결제/주문 상태 |
80
+ | `fulfillment_status` | `str` | 이행 상태 |
81
+ | `created_at` | `str` | 생성 시각 |
82
+ | `amount_krw` | `int` | 주문 금액 |
83
+ | `risk` | `str` | 운영 위험도 |
84
+ | `stage` | `str` | 운영 단계 |
85
+ | `sla` | `str` | SLA 표시 |
86
+ | `is_new_today` | `bool` | 당일 신규 여부 |
87
+
88
+ ## 6. Fulfillment Task
89
+
90
+ | Field | Type | Meaning |
91
+ | --- | --- | --- |
92
+ | `id` | `str` | task 식별자 |
93
+ | `order_id` | `str` | 주문 참조 |
94
+ | `title` | `str` | 작업 제목 |
95
+ | `assignee` | `str` | 담당자 |
96
+ | `stage` | `str` | 이행 단계 |
97
+ | `status` | `str` | task 상태 |
98
+ | `priority` | `str` | 우선순위 |
99
+ | `channel` | `str` | 유입 채널 |
100
+ | `sla_minutes` | `int` | SLA 분 단위 |
101
+ | `units` | `int` | 처리 수량 |
102
+
103
+ ## 7. Support FAQ
104
+
105
+ | Field | Type | Meaning |
106
+ | --- | --- | --- |
107
+ | `id` | `str` | FAQ 식별자 |
108
+ | `question` | `str` | 질문 |
109
+ | `answer` | `str` | 답변 |
110
+ | `category` | `str` | FAQ 카테고리 |
111
+ | `visibility` | `str` | 노출 여부 |
112
+ | `updated_at` | `str` | 수정 시각 |
113
+
114
+ ## 8. Key Policy
115
+
116
+ - 현재 템플릿은 string id를 사용한다.
117
+ - 실제 서비스 구현 시 time-ordered UUID v7을 기본 식별자로 채택한다.
118
+ - legacy numeric id는 새 이커머스 baseline에서 사용하지 않는다.
119
+ - `auth`와 `user`는 같은 사람을 표현하더라도 저장 목적이 다르므로 독립 레코드로 유지한다.
@@ -0,0 +1,12 @@
1
+ # 05 API
2
+
3
+ API 원천 계약을 둔다.
4
+
5
+ - `/api/v1/auth/login`
6
+ - `/api/v1/auth/me`
7
+ - `/api/v1/users`
8
+ - template example endpoint
9
+
10
+ ## Canonical Docs
11
+
12
+ - [templates_api_contract.md](./templates_api_contract.md)
@@ -0,0 +1,90 @@
1
+ # templates server contract
2
+
3
+ - 작성 버전: 1.0.0
4
+
5
+ ## Purpose
6
+
7
+ 현재 server runtime이 제공하는 HTTP contract를 구현 기준으로 정리한다.
8
+
9
+ ## 1. HTTP Endpoint Matrix
10
+
11
+ | Method | Path | Domain | Purpose | Response |
12
+ | --- | --- | --- | --- | --- |
13
+ | `GET` | `/health` | health | root health probe | `{"status":"ok"}` |
14
+ | `GET` | `/api/v1/status` | health | API health/status probe | `{"service":"template-server","status":"healthy"}` |
15
+ | `POST` | `/api/v1/auth/login` | auth | credential 로그인과 token 발급 | `AuthToken` |
16
+ | `GET` | `/api/v1/auth/me` | auth | bearer token 기반 현재 사용자 조회 | `AuthenticatedUser` |
17
+ | `GET` | `/api/v1/users` | user | 사용자 summary 목록 조회 | `list[UserSummary]` |
18
+ | `GET` | `/api/v1/users/{user_id}` | user | 단일 사용자 상세 조회 | `UserDetail` |
19
+ | `PATCH` | `/api/v1/users/{user_id}/status` | user | 사용자 상태 변경 | `UserDetail` |
20
+ | `GET` | `/api/v1/catalog/products` | catalog | 공개/운영 상품 목록 조회 | `list[ProductSummary]` |
21
+ | `GET` | `/api/v1/catalog/products/{product_id}` | catalog | 단일 상품 상세 조회 | `ProductDetail` |
22
+ | `POST` | `/api/v1/catalog/products` | catalog | 상품 생성 | `ProductDetail` |
23
+ | `PUT` | `/api/v1/catalog/products/{product_id}` | catalog | 상품 수정 | `ProductDetail` |
24
+ | `PATCH` | `/api/v1/catalog/products/{product_id}/status` | catalog | 상품 상태 변경 | `ProductDetail` |
25
+ | `GET` | `/api/v1/inventory/levels` | inventory | 재고 레벨 목록 조회 | `list[InventoryLevel]` |
26
+ | `GET` | `/api/v1/inventory/levels/{sku}/{location_id}` | inventory | 단일 재고 레벨 조회 | `InventoryLevel` |
27
+ | `POST` | `/api/v1/inventory/levels/{sku}/{location_id}/adjustments` | inventory | 재고 증감 조정 | `InventoryMutationReceipt` |
28
+ | `POST` | `/api/v1/inventory/levels/{sku}/{location_id}/reservations` | inventory | 재고 선점 | `InventoryMutationReceipt` |
29
+ | `POST` | `/api/v1/inventory/levels/{sku}/{location_id}/releases` | inventory | 재고 선점 해제 | `InventoryMutationReceipt` |
30
+ | `PUT` | `/api/v1/inventory/levels/{sku}/{location_id}` | inventory | 재고 절대값 재설정 | `InventoryMutationReceipt` |
31
+ | `GET` | `/api/v1/orders/overview` | orders | platform dashboard overview 조회 | `OrderOverview` |
32
+ | `GET` | `/api/v1/orders` | orders | platform order table row 조회 | `list[OrderSummary]` |
33
+ | `POST` | `/api/v1/orders` | orders | 주문 생성 | `OrderRecord` |
34
+ | `PATCH` | `/api/v1/orders/{order_id}/status` | orders | 주문 상태 전이 | `OrderStatusTransition` |
35
+ | `GET` | `/api/v1/orders/admin/overview` | orders | admin dashboard 운영 overview 조회 | `AdminOrderOverview` |
36
+ | `GET` | `/api/v1/orders/admin/queue` | orders | admin queue table row 조회 | `list[AdminQueueItem]` |
37
+ | `GET` | `/api/v1/shipping/overview` | shipping | mobile 배송 overview 조회 | `ShippingOverview` |
38
+ | `GET` | `/api/v1/shipping/shipments` | shipping | shipment 목록 조회 | `list[ShipmentSummary]` |
39
+ | `PATCH` | `/api/v1/shipping/shipments/{shipment_id}/status` | shipping | 배송 상태 전이 | `ShipmentStatusTransition` |
40
+ | `GET` | `/api/v1/alerts` | alerts | admin 운영 알람 feed 조회 | `AlertsPayload` |
41
+ | `POST` | `/api/v1/alerts/{alert_id}/read` | alerts | 운영 알람 1건 읽음 처리 | `AlertReadResult` |
42
+ | `POST` | `/api/v1/alerts/read-all` | alerts | 운영 알람 전체 읽음 처리 | `AlertsReadAllResult` |
43
+ | `GET` | `/api/v1/support/faqs` | support | admin FAQ 목록 조회 | `list[SupportFaq]` |
44
+ | `POST` | `/api/v1/support/faqs` | support | FAQ 생성 | `SupportFaqRecord` |
45
+ | `PATCH` | `/api/v1/support/faqs/{faq_id}/visibility` | support | FAQ visibility 변경 | `SupportFaqRecord` |
46
+ | `GET` | `/api/v1/fulfillment/overview` | fulfillment | mobile dashboard 운영 overview 조회 | `FulfillmentOverview` |
47
+ | `GET` | `/api/v1/fulfillment/board` | fulfillment | mobile fulfillment board 조회 | `FulfillmentBoardPayload` |
48
+ | `PATCH` | `/api/v1/fulfillment/tasks/{task_id}/status` | fulfillment | fulfillment task 상태 전이 | `FulfillmentTaskStatusTransition` |
49
+
50
+ ## 2. Auth Contract
51
+
52
+ - 인증 방식: `Authorization: Bearer <token>`
53
+ - login 입력: `email`, `password`
54
+ - login 성공 시 `access_token`, `token_type`, `user_id` 반환
55
+ - `auth/me`는 유효 token subject를 `AuthenticatedUser`로 해석
56
+ - `users`, `catalog` command, `inventory`, `orders`, `shipping`, `alerts`, `support`, `fulfillment`는 보호된 contract다
57
+
58
+ ## 3. Error Baseline
59
+
60
+ - invalid credential: `401 Invalid credentials`
61
+ - invalid token: `401 Invalid token`
62
+ - forbidden role: `403 Forbidden`
63
+ - missing resource:
64
+ - HTTP: `404 ... not found`
65
+ - conflict:
66
+ - duplicate catalog slug: `409 Catalog product slug already exists`
67
+ - invalid inventory mutation: `409 ...`
68
+
69
+ ## 4. Frontend Binding Notes
70
+
71
+ - `client/platform`
72
+ - `/`는 `GET /api/v1/orders/overview`를 소비한다.
73
+ - `/orders`는 `GET /api/v1/orders`를 소비한다.
74
+ - `client/admin`
75
+ - `/`는 `GET /api/v1/orders/admin/overview`를 소비한다.
76
+ - admin shell과 dashboard는 `GET /api/v1/alerts`를 운영 알람 source로 사용한다.
77
+ - `/queue`는 `GET /api/v1/orders/admin/queue`를 소비한다.
78
+ - `/support`는 `GET /api/v1/support/faqs`를 소비한다.
79
+ - `client/mobile`
80
+ - `/`는 `GET /api/v1/fulfillment/overview`를 소비한다.
81
+ - `/fulfillment`는 `GET /api/v1/fulfillment/board`를 소비한다.
82
+ - `/shipping`은 `GET /api/v1/shipping/overview`, `GET /api/v1/shipping/shipments`를 소비한다.
83
+ - `client/landing`
84
+ - `/`와 `/workspace`는 `GET /api/v1/catalog/products`를 live catalog surface로 사용한다.
85
+ - auth flow는 네 app 모두 `POST /api/v1/auth/login`과 `GET /api/v1/auth/me`를 유지한다.
86
+
87
+ ## 5. Stack Notes
88
+
89
+ - HTTP: `FastAPI 0.116.x + Uvicorn 0.35.x`
90
+ - Compose runtime: `server`
@@ -0,0 +1,11 @@
1
+ # 06 IaC
2
+
3
+ 템플릿 런타임 부팅 원천 자료를 둔다.
4
+
5
+ - Dockerfile
6
+ - compose
7
+ - env contracts
8
+
9
+ ## Canonical Docs
10
+
11
+ - [templates_runtime_and_cicd_baseline.md](./templates_runtime_and_cicd_baseline.md)
@@ -0,0 +1,46 @@
1
+ # templates runtime and cicd baseline
2
+
3
+ - 작성 버전: 1.0.0
4
+
5
+ ## Purpose
6
+
7
+ 템플릿 저장소의 root compose runtime baseline과 CI baseline을 정리한다.
8
+
9
+ ## 1. Compose Runtime Baseline
10
+
11
+ | Surface | Default Port |
12
+ | --- | --- |
13
+ | landing | `3000` |
14
+ | platform | `3001` |
15
+ | mobile | `3002` |
16
+ | admin | `4000` |
17
+ | api | `8000` |
18
+
19
+ ## 2. Compose Rule
20
+
21
+ - root `compose.yml`이 canonical dev-focused runtime baseline이다.
22
+ - dedicated host용 DEV(개발계)/PROD overlay는 `infra/compose/dev.yml`, `infra/compose/prod.yml`을 사용한다.
23
+ - 환경변수 contract는 `.env.example`을 source-of-truth로 유지한다.
24
+
25
+ ## 3. CI/CD Rule
26
+
27
+ - 이 레포는 템플릿 저장소이므로 실제 배포를 수행하지 않는다.
28
+ - `.github/workflows`는 다음만 책임진다.
29
+ - root compose/overlay config validation
30
+ - backend test
31
+ - frontend build matrix
32
+ - AST build audit와 parity target resolution
33
+ - canonical Terraform skeleton validate
34
+
35
+ ## 4. Delivery Note
36
+
37
+ - 실제 서비스 레포로 clone된 뒤 DEV/PROD deploy workflow를 추가한다.
38
+ - template repo의 workflow는 `검증용 CI`만 유지한다.
39
+
40
+ ## 5. Remote Infra Template Layout
41
+
42
+ - canonical Terraform split은 `infra/terraform/aws/data`, `infra/terraform/aws/domain`, `infra/terraform/openstack/server`다.
43
+ - `infra/terraform/openstack/dev`, `infra/terraform/openstack/prod`는 lower-level starter root로 유지한다.
44
+ - 공통 OpenStack host/network/security group 로직은 `infra/terraform/openstack/modules/environment_host`에 둔다.
45
+ - DEV(개발계)와 PROD는 별도 Terraform state를 사용한다.
46
+ - cloud-init compose 자동 기동은 각 환경 root의 `compose_env_content`와 `deploy_compose_on_boot`로 제어한다.
@@ -0,0 +1,11 @@
1
+ # 07 Integration
2
+
3
+ 프론트와 `api`의 통합 원천 시나리오를 둔다.
4
+
5
+ - login flow
6
+ - token persistence
7
+ - adapter selection
8
+
9
+ ## Canonical Docs
10
+
11
+ - [templates_frontend_api_integration.md](./templates_frontend_api_integration.md)
@@ -0,0 +1,46 @@
1
+ # templates frontend api integration
2
+
3
+ - 작성 버전: 1.0.0
4
+
5
+ ## Purpose
6
+
7
+ 현재 frontend와 backend의 실제 연결 지점을 정리한다.
8
+
9
+ ## 1. Shared Integration Rule
10
+
11
+ - 네 개의 frontend 모두 공통 `auth` contract를 사용한다.
12
+ - `POST /api/v1/auth/login`으로 access token을 발급받고 로컬 storage에 저장한다.
13
+ - `GET /api/v1/auth/me`로 초기 세션을 복원한다.
14
+
15
+ ## 2. Service Coupling Summary
16
+
17
+ | Service | Real Backend Coupling | Note |
18
+ | --- | --- | --- |
19
+ | platform | `auth`, `orders` | dashboard overview와 orders table을 live contract에 연결 |
20
+ | admin | `auth`, `orders`, `alerts`, `support` | overview/queue/support surface와 alerts drawer를 live contract에 연결 |
21
+ | mobile | `auth`, `fulfillment`, `shipping` | dashboard overview와 fulfillment/shipping surface를 live contract에 연결 |
22
+ | landing | `auth`, `catalog` | home/workspace에서 catalog products를 읽어 public/protected surface를 구성 |
23
+
24
+ ## 3. Coupling Detail
25
+
26
+ - platform
27
+ - bearer session은 기존 `AuthProvider`가 유지한다.
28
+ - page load 시 `orders/overview`, `orders`를 fetch하고 search는 client-side filter로 처리한다.
29
+ - admin
30
+ - protected route는 그대로 유지한다.
31
+ - dashboard는 `orders/admin/overview`와 `alerts`를 병렬 fetch한다.
32
+ - queue, support, alerts drawer는 개별 page-level effect로 fetch한다.
33
+ - mobile
34
+ - overview와 board payload는 mobile shell 진입 후 fetch한다.
35
+ - status/tone badge는 response의 string field를 frontend palette에 매핑한다.
36
+ - board route는 `/fulfillment`다.
37
+ - shipping route는 `/shipping`이고 shipment status feed를 별도 fetch한다.
38
+ - landing
39
+ - public home에서도 `catalog/products`를 읽어 live catalog proof를 보여준다.
40
+ - protected workspace는 auth user summary와 catalog product grid를 함께 노출한다.
41
+
42
+ ## 4. Known Gaps
43
+
44
+ - platform/admin은 아직 catalog/inventory command surface를 직접 소비하지 않는다.
45
+ - order 생성, fulfillment 전이, shipping 전이, support create/update, alerts read는 backend contract로 존재하지만 frontend action UI는 baseline 최소 액션 중심이다.
46
+ - landing은 catalog read를 public/protected दोनों surface에 재사용하지만 category/detail 분해까지는 아직 없다.
@@ -0,0 +1,7 @@
1
+ # 08 Nonfunctional
2
+
3
+ 비기능 요구 원천 자료를 둔다.
4
+
5
+ - build reproducibility
6
+ - template startup speed
7
+ - DX requirements
@@ -0,0 +1,7 @@
1
+ # 09 Security
2
+
3
+ 보안 원천 자료를 둔다.
4
+
5
+ - bootstrap credential handling
6
+ - JWT secret rules
7
+ - CORS baseline
@@ -0,0 +1,12 @@
1
+ # 10 Test
2
+
3
+ 테스트 원천 목록을 둔다.
4
+
5
+ - frontend build matrix
6
+ - api pytest matrix
7
+ - auth runtime smoke
8
+ - compose validation
9
+
10
+ ## Canonical Docs
11
+
12
+ - [templates_test_strategy.md](./templates_test_strategy.md)
@@ -0,0 +1,60 @@
1
+ # templates test strategy
2
+
3
+ - 작성 버전: 1.0.0
4
+
5
+ ## Purpose
6
+
7
+ template baseline을 유지하기 위한 테스트 전략을 정의한다.
8
+
9
+ ## 1. Backend
10
+
11
+ - `server/tests/e2e/test_domain_feature_flows.py`
12
+ - `AUT-F001`
13
+ - `AUT-F002`
14
+ - `USR-F001`
15
+ - `USR-F002`
16
+ - `USR-F003`
17
+ - `CAT-F001`
18
+ - `CAT-F003`
19
+ - `CAT-F004`
20
+ - `CAT-F005`
21
+ - `INV-F001`
22
+ - `INV-F002`
23
+ - `INV-F003`
24
+ - `INV-F004`
25
+ - `INV-F005`
26
+ - `INV-F006`
27
+ - `ORD-F001`
28
+ - `ORD-F002`
29
+ - `ORD-F003`
30
+ - `ORD-F004`
31
+ - `ORD-F005`
32
+ - `ORD-F006`
33
+ - `SHP-F001`
34
+ - `SHP-F002`
35
+ - `SHP-F003`
36
+ - `ALR-F001`
37
+ - `ALR-F002`
38
+ - `ALR-F003`
39
+ - `SUP-F001`
40
+ - `SUP-F002`
41
+ - `SUP-F003`
42
+ - `FUL-F001`
43
+ - `FUL-F002`
44
+ - `FUL-F003`
45
+ - `server/tests/test_health.py`
46
+ - `HLT-F001`
47
+ - `HLT-F002`
48
+ - auth/user smoke
49
+
50
+ ## 2. Frontend
51
+
52
+ - `platform`, `admin`, `mobile`, `landing`는 각 서비스별 production build를 통과해야 한다.
53
+ - screen spec은 `PLT-S001`, `ADM-S001`, `MOB-S001`, `LND-S001` 규칙으로 구현 route와 관련 feature를 함께 검증한다.
54
+ - parity harness가 활성화되면 route-gap과 proof artifact를 추가 검증한다.
55
+
56
+ ## 3. CI Gate
57
+
58
+ - backend: `./.venv/bin/python -m pytest -q` 또는 CI 환경의 `uv run pytest -q`
59
+ - frontend: `pnpm build` matrix
60
+ - toolchain: `build_screen_spec_pdf.py`, `capture_screen_assets.mjs`, `new_plan.sh` shell validation
@@ -0,0 +1,19 @@
1
+ # Planning Index
2
+
3
+ - [01_feature/INDEX.md](./01_feature/INDEX.md)
4
+ - [02_screen/INDEX.md](./02_screen/INDEX.md)
5
+ - [03_architecture/INDEX.md](./03_architecture/INDEX.md)
6
+ - [04_data/INDEX.md](./04_data/INDEX.md)
7
+ - [05_api/README.md](./05_api/README.md)
8
+ - [06_iac/README.md](./06_iac/README.md)
9
+ - [07_integration/README.md](./07_integration/README.md)
10
+ - [08_nonfunctional/README.md](./08_nonfunctional/README.md)
11
+ - [09_security/README.md](./09_security/README.md)
12
+ - [10_test/README.md](./10_test/README.md)
13
+
14
+ ## Structure Rule
15
+
16
+ - `01_feature`, `02_screen`는 실제 서비스 표면(`platform`, `mobile`, `admin`, `landing`) 기준으로 유지한다.
17
+ - `03_architecture` 이후는 서비스별 실산출물이 없으면 common-first로 유지한다.
18
+ - `03_architecture`는 공통 문서를 먼저 두고 필요 시 `frontend/`, `backend/`, `infra/`, `tech-research/`로 세분화한다.
19
+ - 데이터 모델링은 `04_data`에서 다루고 architecture 문서에는 중복 기록하지 않는다.
@@ -0,0 +1,17 @@
1
+ # Planning Governance
2
+
3
+ ## Purpose
4
+
5
+ - `sdd/01_planning/`은 현재 구현과 검수의 기준이 되는 canonical spec을 유지한다.
6
+ - feature, screen, architecture, data, API, IAC, integration, nonfunctional, security, test planning 모두 현재 기준만 남긴다.
7
+
8
+ ## Final-Only Rule
9
+
10
+ - planning도 날짜별 작업 메모나 히스토리성 보조 문서를 쌓지 않는다.
11
+ - 계속 참고할 가치가 있는 리서치만 현재형 문서로 유지한다.
12
+ - source reference가 필요하면 현재 canonical source만 남기고, raw capture log나 일회성 추출 로그는 두지 않는다.
13
+
14
+ ## Structure Rule
15
+
16
+ - `01_feature`, `02_screen`는 실제 서비스 표면 기준으로 유지한다.
17
+ - `03_architecture` 이후 planning 폴더는 서비스별 실산출물이 없으면 common-first 구조로 유지한다.
@@ -0,0 +1,34 @@
1
+ # Feature TODO Rule
2
+
3
+ ## Common Rule
4
+
5
+ - 이 폴더는 `sdd/02_plan` 아래에서 에이전트의 현재 개발 계획을 관리한다.
6
+ - 다른 `02_plan` 폴더와 동일하게 `README.md + durable TODO 파일`만 유지하고, dated plan history는 두지 않는다.
7
+
8
+ ## Canonical Rule
9
+
10
+ - 기능 계획은 domain별 durable TODO 파일로 관리한다.
11
+ - 신규 작업이 생겨도 날짜별 파일을 추가하지 않는다.
12
+ - 같은 domain 파일 안에서는 canonical 기능코드 기준 표만 계속 갱신한다.
13
+ - service feature spec은 source reference로만 사용하고, active TODO는 domain 파일만 유지한다.
14
+
15
+ ## Naming
16
+
17
+ - 파일명은 날짜 prefix를 쓰지 않는다.
18
+ - 권장 형식: `{domain}_todos.md`
19
+
20
+ ## Location
21
+
22
+ - active feature TODO는 `sdd/02_plan/01_feature/` root에 둔다.
23
+
24
+ ## Minimum Sections
25
+
26
+ - domain summary
27
+ - feature items
28
+ - acceptance criteria
29
+ - current notes
30
+ - latest verification
31
+
32
+ ## Template
33
+
34
+ - [`_feature_todo_template.md`](_feature_todo_template.md)
@@ -0,0 +1,29 @@
1
+ # {domain code} {domain name}
2
+
3
+ - Owner: Codex
4
+ - Status: active
5
+
6
+ ## Domain Summary
7
+
8
+ - domain code:
9
+ - canonical source:
10
+ - update rule: 이 파일 안에서 feature code 기준으로 계속 갱신한다.
11
+
12
+ ## Feature Items
13
+
14
+ | Feature Code | Use Case | Status | Current Notes |
15
+ | --- | --- | --- | --- |
16
+ | `{DOMAIN}-F001` | | `planned` | |
17
+
18
+ ## Acceptance Criteria
19
+
20
+ - [ ] 이 파일이 해당 domain feature TODO의 single source of truth로 유지된다.
21
+ - [ ] 신규 작업은 해당 feature code row와 current notes만 갱신한다.
22
+
23
+ ## Current Notes
24
+
25
+ - TODO는 canonical domain feature code 기준으로만 유지한다.
26
+
27
+ ## Latest Verification
28
+
29
+ - current plan normalization reference: `sdd/02_plan/01_feature/<domain>_todos.md`
@@ -0,0 +1,19 @@
1
+ # Screen TODO Index
2
+
3
+ ## Canonical Sources
4
+
5
+ - [mobile_screen_spec.pdf](../../01_planning/02_screen/mobile_screen_spec.pdf)
6
+ - [platform_screen_spec.pdf](../../01_planning/02_screen/platform_screen_spec.pdf)
7
+ - [admin_screen_spec.pdf](../../01_planning/02_screen/admin_screen_spec.pdf)
8
+ - [landing_screen_spec.pdf](../../01_planning/02_screen/landing_screen_spec.pdf)
9
+
10
+ ## Current Planning Templates
11
+
12
+ - [README.md](./README.md)
13
+ - [_screen_todo_template.md](./_screen_todo_template.md)
14
+
15
+ ## Naming Rule
16
+
17
+ - active screen plan file: `<service>_todos.md`
18
+ - screen section identifier inside file: `{SERVICE}-S{NNN}`
19
+ - mobile legacy source key는 필요할 때만 문서 내부에서 `APP_###` field로 기록한다.
@@ -0,0 +1,39 @@
1
+ # Screen TODO Rule
2
+
3
+ ## Common Rule
4
+
5
+ - 이 폴더는 `sdd/02_plan` 아래에서 에이전트의 현재 개발 계획을 관리한다.
6
+ - 다른 `02_plan` 폴더와 동일하게 `README.md + durable TODO 파일`만 유지하고, dated plan history는 두지 않는다.
7
+ - 개발계가 있는 화면 작업은 `구현 -> build -> DEV(개발계) 배포 -> DEV 검수 -> 같은 TODO 파일 갱신`을 기본 루틴으로 둔다.
8
+
9
+ ## Canonical Rule
10
+
11
+ - 화면 계획은 service별 durable TODO 파일로 관리한다.
12
+ - `01_feature`와 동일하게 날짜별 작업 문서를 계속 추가하지 않는다.
13
+ - 같은 service 파일 안에서 화면코드 기준으로 계속 갱신한다.
14
+ - mobile source key인 `APP_###`는 파일명이 아니라 문서 내부 field로만 기록한다.
15
+ - 과거 screen plan 문서는 별도 보관하지 않고, 현재 기준 README와 service TODO만 유지한다.
16
+
17
+ ## Location
18
+
19
+ - 서비스별 화면 TODO는 `sdd/02_plan/02_screen/` root에 둔다.
20
+ - 예:
21
+ - `sdd/02_plan/02_screen/mobile_todos.md`
22
+ - `sdd/02_plan/02_screen/platform_todos.md`
23
+
24
+ ## Naming
25
+
26
+ - 파일명은 날짜 prefix를 쓰지 않는다.
27
+ - 권장 형식: `{service}_todos.md`
28
+
29
+ ## Minimum Sections
30
+
31
+ - service summary
32
+ - shared constraints or baseline
33
+ - screen items
34
+ - delivery phases or backlog
35
+ - latest verification references
36
+
37
+ ## Template
38
+
39
+ - [`_screen_todo_template.md`](_screen_todo_template.md)
@@ -0,0 +1,60 @@
1
+ # {service} screen TODO
2
+
3
+ - Owner: Codex
4
+ - Status: active
5
+
6
+ ## Service Summary
7
+
8
+ - service:
9
+ - canonical source:
10
+ - update rule: 이 파일 안에서 화면코드 기준으로 계속 갱신한다.
11
+
12
+ ## Shared Constraints
13
+
14
+ - source key rule:
15
+ - route baseline:
16
+ - shared API/modeling note:
17
+
18
+ ## Screen Items
19
+
20
+ ### {screen code} {screen name}
21
+
22
+ #### Screen Summary
23
+
24
+ - source key:
25
+ - route:
26
+ - retained runtime tree:
27
+ - local exactness suite id:
28
+ - canonical runner command: `python3 sdd/99_toolchain/01_automation/run_playwright_exactness.py --suite <suite-id> --base-url <url>`
29
+
30
+ #### Acceptance Criteria
31
+
32
+ - [ ]
33
+ - [ ] relevant builder/design guide baseline is current for this surface
34
+ - [ ] Playwright exactness suite exists or is extended in the same task
35
+ - [ ] verify artifact path (`json/png`) is identified before implementation closes
36
+
37
+ #### Open TODO
38
+
39
+ - [ ]
40
+
41
+ #### Current Notes
42
+
43
+ - current scope/status notes only
44
+ - use Browser Use/manual capture only as supplemental diagnosis when a Playwright suite already exists
45
+
46
+ #### Latest Verification
47
+
48
+ - current build/verify references:
49
+ - latest exactness command:
50
+ - latest exactness artifact:
51
+
52
+ ## Delivery Phases
53
+
54
+ - `P0`:
55
+ - `P1`:
56
+ - `P2`:
57
+
58
+ ## Current Notes
59
+
60
+ - current service-level notes only