agentic-dev 0.2.3 → 0.2.6

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 (153) hide show
  1. package/.agent/prd.json +1 -1
  2. package/.agent/prompt.md +1 -1
  3. package/.claude/CLAUDE.md +1 -1
  4. package/.claude/agents/db-dev.md +1 -1
  5. package/.claude/agents/frontend-dev.md +1 -1
  6. package/.claude/agents/test-dev.md +1 -1
  7. package/.claude/skills/sdd/SKILL.md +9 -9
  8. package/.claude/skills/sdd/references/section-map.md +5 -5
  9. package/.codex/skills/sdd/SKILL.md +9 -9
  10. package/.codex/skills/sdd/references/section-map.md +5 -5
  11. package/.env.example +2 -2
  12. package/AGENTS.md +4 -4
  13. package/README.md +48 -15
  14. package/SDD_SKILL.md +7 -7
  15. package/bin/agentic-dev.mjs +53 -18
  16. package/client/admin/scripts/ui-parity-admin-adapter.mjs +1 -1
  17. package/client/landing/scripts/ui-parity-landing-adapter.mjs +1 -1
  18. package/client/mobile/scripts/ui-parity-mobile-adapter.mjs +1 -1
  19. package/client/{platform → web}/Dockerfile +3 -3
  20. package/client/web/Dockerfile.dev +18 -0
  21. package/client/{platform → web}/README.md +3 -3
  22. package/client/{platform → web}/index.html +1 -1
  23. package/client/{platform → web}/package.json +7 -7
  24. package/client/{platform/scripts/ui-parity-platform-adapter.mjs → web/scripts/ui-parity-web-adapter.mjs} +8 -8
  25. package/client/{platform → web}/src/auth/AuthProvider.tsx +1 -1
  26. package/compose.yml +6 -6
  27. package/infra/compose/.env.dev.example +3 -3
  28. package/infra/compose/.env.prod.example +3 -3
  29. package/infra/compose/README.md +1 -1
  30. package/infra/compose/dev.yml +5 -5
  31. package/infra/compose/prod.yml +6 -6
  32. package/infra/terraform/openstack/dev/terraform.tfvars.example +3 -3
  33. package/infra/terraform/openstack/prod/terraform.tfvars.example +3 -3
  34. package/lib/scaffold.mjs +254 -279
  35. package/package.json +2 -2
  36. package/scripts/dev/audit_sdd_build_ast.py +9 -9
  37. package/sdd/01_planning/01_feature/auth_feature_spec.md +2 -2
  38. package/sdd/01_planning/01_feature/catalog_feature_spec.md +3 -3
  39. package/sdd/01_planning/01_feature/order_feature_spec.md +11 -11
  40. package/sdd/01_planning/02_screen/INDEX.md +2 -2
  41. package/sdd/01_planning/02_screen/README.md +2 -2
  42. package/sdd/01_planning/03_architecture/templates_system_architecture.md +3 -3
  43. package/sdd/01_planning/05_api/templates_api_contract.md +3 -3
  44. package/sdd/01_planning/06_iac/templates_runtime_and_cicd_baseline.md +1 -1
  45. package/sdd/01_planning/07_integration/templates_frontend_api_integration.md +3 -3
  46. package/sdd/01_planning/10_test/templates_test_strategy.md +2 -2
  47. package/sdd/01_planning/INDEX.md +1 -1
  48. package/sdd/02_plan/02_screen/INDEX.md +1 -1
  49. package/sdd/02_plan/02_screen/README.md +1 -1
  50. package/sdd/02_plan/03_architecture/build_ast_runtime_tree_governance.md +1 -1
  51. package/sdd/02_plan/03_architecture/repository_governance.md +2 -2
  52. package/sdd/02_plan/03_architecture/runtime_and_structure_governance.md +1 -1
  53. package/sdd/02_plan/03_architecture/toolchain_governance.md +2 -2
  54. package/sdd/02_plan/06_iac/dev_runtime_delivery.md +1 -1
  55. package/sdd/02_plan/07_integration/frontend_live_integration.md +3 -3
  56. package/sdd/02_plan/10_test/regression_verification.md +2 -2
  57. package/sdd/02_plan/10_test/templates/{ui_parity_platform_contract.template.yaml → ui_parity_web_contract.template.yaml} +2 -2
  58. package/sdd/02_plan/10_test/verification_strategy.md +2 -2
  59. package/sdd/03_build/01_feature/domain/account_and_access.md +1 -1
  60. package/sdd/03_build/01_feature/domain/catalog_and_inventory.md +1 -1
  61. package/sdd/03_build/01_feature/domain/ordering_and_fulfillment.md +1 -1
  62. package/sdd/03_build/01_feature/service/README.md +1 -1
  63. package/sdd/03_build/01_feature/service/{platform_surface.md → web_surface.md} +3 -3
  64. package/sdd/03_build/02_screen/README.md +1 -1
  65. package/sdd/03_build/02_screen/web/README.md +5 -0
  66. package/sdd/03_build/03_architecture/toolchain_governance.md +1 -1
  67. package/sdd/03_build/06_iac/template_runtime_delivery.md +1 -1
  68. package/sdd/03_build/07_integration/frontend_live_integration.md +1 -1
  69. package/sdd/{04_verify → 03_verify}/01_feature/service_verification.md +3 -3
  70. package/sdd/{04_verify → 03_verify}/02_screen/README.md +1 -1
  71. package/sdd/03_verify/02_screen/web/README.md +4 -0
  72. package/sdd/{04_verify → 03_verify}/03_architecture/toolchain_governance.md +2 -2
  73. package/sdd/{04_verify → 03_verify}/06_iac/dev_runtime_delivery.md +1 -1
  74. package/sdd/{04_verify → 03_verify}/06_iac/template_runtime_delivery.md +4 -4
  75. package/sdd/{04_verify → 03_verify}/README.md +3 -3
  76. package/sdd/99_toolchain/01_automation/README.md +2 -2
  77. package/sdd/99_toolchain/01_automation/agentic-dev/assets/repo-contract.template.json +15 -15
  78. package/sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh +1 -1
  79. package/sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json +16 -16
  80. package/sdd/99_toolchain/01_automation/agentic-parity-harness-design.md +9 -9
  81. package/sdd/99_toolchain/01_automation/capture_screen_assets.mjs +4 -4
  82. package/sdd/99_toolchain/01_automation/harness-layout.md +2 -2
  83. package/sdd/99_toolchain/01_automation/parity-execution-tooling-design.md +7 -7
  84. package/sdd/99_toolchain/01_automation/screen_spec_manifest.py +17 -17
  85. package/sdd/99_toolchain/01_automation/ui-parity/README.md +10 -10
  86. package/sdd/99_toolchain/01_automation/ui-parity/cli/materialize-reference-assets.mjs +1 -1
  87. package/sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs +2 -2
  88. package/sdd/99_toolchain/01_automation/ui-parity/core/proof-runner.mjs +1 -1
  89. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-artifact-layout.md +2 -2
  90. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-route-gap-interface.md +2 -2
  91. package/sdd/99_toolchain/02_policies/build-ast-governance-policy.md +2 -2
  92. package/sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md +2 -2
  93. package/sdd/99_toolchain/02_policies/regression-verification-policy.md +1 -1
  94. package/sdd/99_toolchain/03_templates/playwright_exactness_manifest.example.py +1 -1
  95. package/sdd/99_toolchain/README.md +1 -1
  96. package/sdd/README.md +1 -1
  97. package/server/data/README.md +1 -1
  98. package/client/platform/Dockerfile.dev +0 -18
  99. package/sdd/03_build/02_screen/platform/README.md +0 -5
  100. package/sdd/04_verify/02_screen/platform/README.md +0 -4
  101. /package/client/{platform → web}/.dockerignore +0 -0
  102. /package/client/{platform → web}/.env.example +0 -0
  103. /package/client/{platform → web}/postcss.config.js +0 -0
  104. /package/client/{platform → web}/src/api/client.ts +0 -0
  105. /package/client/{platform → web}/src/api/orders.ts +0 -0
  106. /package/client/{platform → web}/src/app/App.tsx +0 -0
  107. /package/client/{platform → web}/src/auth/ProtectedRoute.tsx +0 -0
  108. /package/client/{platform → web}/src/auth/auth-client.ts +0 -0
  109. /package/client/{platform → web}/src/auth/types.ts +0 -0
  110. /package/client/{platform → web}/src/components/AppShell.tsx +0 -0
  111. /package/client/{platform → web}/src/components/ui/button.tsx +0 -0
  112. /package/client/{platform → web}/src/components/ui/card.tsx +0 -0
  113. /package/client/{platform → web}/src/components/ui/input.tsx +0 -0
  114. /package/client/{platform → web}/src/lib/cn.ts +0 -0
  115. /package/client/{platform → web}/src/lib/specRouteCatalog.json +0 -0
  116. /package/client/{platform → web}/src/lib/specScreens.json +0 -0
  117. /package/client/{platform → web}/src/main.tsx +0 -0
  118. /package/client/{platform → web}/src/pages/DashboardPage.tsx +0 -0
  119. /package/client/{platform → web}/src/pages/LoginPage.tsx +0 -0
  120. /package/client/{platform → web}/src/pages/OrdersPage.tsx +0 -0
  121. /package/client/{platform → web}/src/styles/globals.css +0 -0
  122. /package/client/{platform → web}/src/theme-vars.ts +0 -0
  123. /package/client/{platform → web}/src/theme.ts +0 -0
  124. /package/client/{platform → web}/src/vite-env.d.ts +0 -0
  125. /package/client/{platform → web}/tailwind.config.js +0 -0
  126. /package/client/{platform → web}/tsconfig.json +0 -0
  127. /package/client/{platform → web}/vite.config.ts +0 -0
  128. /package/sdd/01_planning/02_screen/{platform_screen_spec.pdf → web_screen_spec.pdf} +0 -0
  129. /package/sdd/{04_verify → 03_verify}/01_feature/README.md +0 -0
  130. /package/sdd/{04_verify → 03_verify}/01_feature/domain_verification.md +0 -0
  131. /package/sdd/{04_verify → 03_verify}/02_screen/_screen_verify_template.md +0 -0
  132. /package/sdd/{04_verify → 03_verify}/02_screen/admin/README.md +0 -0
  133. /package/sdd/{04_verify → 03_verify}/02_screen/landing/README.md +0 -0
  134. /package/sdd/{04_verify → 03_verify}/02_screen/mobile/README.md +0 -0
  135. /package/sdd/{04_verify → 03_verify}/03_architecture/README.md +0 -0
  136. /package/sdd/{04_verify → 03_verify}/03_architecture/architecture_document_governance.md +0 -0
  137. /package/sdd/{04_verify → 03_verify}/03_architecture/build_ast_runtime_tree_governance.md +0 -0
  138. /package/sdd/{04_verify → 03_verify}/03_architecture/repository_governance.md +0 -0
  139. /package/sdd/{04_verify → 03_verify}/06_iac/README.md +0 -0
  140. /package/sdd/{04_verify → 03_verify}/07_integration/README.md +0 -0
  141. /package/sdd/{04_verify → 03_verify}/07_integration/frontend_live_integration.md +0 -0
  142. /package/sdd/{04_verify → 03_verify}/08_nonfunctional/README.md +0 -0
  143. /package/sdd/{04_verify → 03_verify}/08_nonfunctional/repository_hygiene.md +0 -0
  144. /package/sdd/{04_verify → 03_verify}/10_test/README.md +0 -0
  145. /package/sdd/{04_verify → 03_verify}/10_test/regression_verification.md +0 -0
  146. /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/README.md +0 -0
  147. /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/loop_runs/.gitkeep +0 -0
  148. /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/reference/.gitkeep +0 -0
  149. /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/staged_runs/.gitkeep +0 -0
  150. /package/sdd/{04_verify → 03_verify}/10_test/verification_harness.md +0 -0
  151. /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/dashboard.png +0 -0
  152. /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/login.png +0 -0
  153. /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/orders.png +0 -0
@@ -44,7 +44,7 @@
44
44
  - parity harness나 build check는 회귀 검수의 일부일 뿐이고, 실제 완료 기준은 선택한 regression surface 전체에 대한 retained evidence다.
45
45
  - Playwright exactness suite가 있는 surface는 `run_playwright_exactness.py`를 canonical local gate로 사용한다.
46
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로 남긴다.
47
+ - 아직 자동화가 없는 회귀 surface는 command/manual verification으로 메우고, automation gap은 `sdd/03_build`, `sdd/03_verify`에 residual risk로 남긴다.
48
48
  - Browser Use나 수동 시각 점검은 Playwright exactness gate를 대체하지 않고 보강/진단 용도로만 사용한다.
49
49
 
50
50
  ## Asset Recipe Rule
@@ -72,5 +72,5 @@
72
72
  - design guide / asset / screen spec baseline 확인
73
73
  - `python3 sdd/99_toolchain/01_automation/run_playwright_exactness.py --suite <suite-id> --base-url <url>`
74
74
  - 필요하면 `--api-base-url`, `--browser`, `--grep`를 추가한다.
75
- - 실행 결과와 artifact path를 `sdd/04_verify` current summary에 기록한다.
75
+ - 실행 결과와 artifact path를 `sdd/03_verify` current summary에 기록한다.
76
76
  - 시작점 예시는 [`../03_templates/playwright_exactness_manifest.example.py`](../03_templates/playwright_exactness_manifest.example.py)를 따른다.
@@ -9,18 +9,18 @@
9
9
  "canonical_targets_dir": "sdd/02_plan"
10
10
  },
11
11
  "frontend": {
12
- "default_target": "platform",
12
+ "default_target": "web",
13
13
  "targets": {
14
- "platform": {
15
- "dir": "client/platform",
16
- "adapter_path": "client/platform/scripts/ui-parity-platform-adapter.mjs",
17
- "screens_path": "client/platform/src/lib/specScreens.json",
18
- "routes_path": "client/platform/src/lib/specRouteCatalog.json",
14
+ "web": {
15
+ "dir": "client/web",
16
+ "adapter_path": "client/web/scripts/ui-parity-web-adapter.mjs",
17
+ "screens_path": "client/web/src/lib/specScreens.json",
18
+ "routes_path": "client/web/src/lib/specRouteCatalog.json",
19
19
  "preview_url": "http://127.0.0.1:4301",
20
- "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_platform_contract.yaml",
21
- "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_platform_route_gap_report.json",
22
- "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_platform_route_gap_report.md",
23
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_platform_agentic_dev_latest.json"
20
+ "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_web_contract.yaml",
21
+ "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_web_route_gap_report.json",
22
+ "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_web_route_gap_report.md",
23
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_web_agentic_dev_latest.json"
24
24
  },
25
25
  "mobile": {
26
26
  "dir": "client/mobile",
@@ -31,7 +31,7 @@
31
31
  "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_mobile_contract.yaml",
32
32
  "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_mobile_route_gap_report.json",
33
33
  "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_mobile_route_gap_report.md",
34
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_mobile_agentic_dev_latest.json"
34
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_mobile_agentic_dev_latest.json"
35
35
  },
36
36
  "admin": {
37
37
  "dir": "client/admin",
@@ -42,7 +42,7 @@
42
42
  "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_admin_contract.yaml",
43
43
  "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_admin_route_gap_report.json",
44
44
  "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_admin_route_gap_report.md",
45
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_admin_agentic_dev_latest.json"
45
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_admin_agentic_dev_latest.json"
46
46
  },
47
47
  "landing": {
48
48
  "dir": "client/landing",
@@ -53,7 +53,7 @@
53
53
  "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_landing_contract.yaml",
54
54
  "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_landing_route_gap_report.json",
55
55
  "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_landing_route_gap_report.md",
56
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_landing_agentic_dev_latest.json"
56
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_landing_agentic_dev_latest.json"
57
57
  }
58
58
  }
59
59
  },
@@ -65,8 +65,8 @@
65
65
  "verify_dev": "echo 'replace verify_dev command' >&2"
66
66
  },
67
67
  "artifacts": {
68
- "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_platform_route_gap_report.json",
69
- "proof_output": "sdd/04_verify/10_test/ui_parity/replace_agentic_dev_latest.json"
68
+ "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_web_route_gap_report.json",
69
+ "proof_output": "sdd/03_verify/10_test/ui_parity/replace_agentic_dev_latest.json"
70
70
  },
71
71
  "notes": [
72
72
  "Replace the commands and proof output path after cloning the template.",
@@ -47,7 +47,7 @@ PY
47
47
  target_name="$(read_target_value "name")"
48
48
  target_dir="$(read_target_value "target.dir")"
49
49
  preview_url="$(read_target_value "target.preview_url")"
50
- preview_log="${repo_root}/sdd/04_verify/10_test/ui_parity/${target_name}-preview.log"
50
+ preview_log="${repo_root}/sdd/03_verify/10_test/ui_parity/${target_name}-preview.log"
51
51
  preview_pid=""
52
52
 
53
53
  cleanup() {
@@ -9,18 +9,18 @@
9
9
  "canonical_targets_dir": "sdd/02_plan"
10
10
  },
11
11
  "frontend": {
12
- "default_target": "platform",
12
+ "default_target": "web",
13
13
  "targets": {
14
- "platform": {
15
- "dir": "client/platform",
16
- "adapter_path": "client/platform/scripts/ui-parity-platform-adapter.mjs",
17
- "screens_path": "client/platform/src/lib/specScreens.json",
18
- "routes_path": "client/platform/src/lib/specRouteCatalog.json",
14
+ "web": {
15
+ "dir": "client/web",
16
+ "adapter_path": "client/web/scripts/ui-parity-web-adapter.mjs",
17
+ "screens_path": "client/web/src/lib/specScreens.json",
18
+ "routes_path": "client/web/src/lib/specRouteCatalog.json",
19
19
  "preview_url": "http://127.0.0.1:4301",
20
- "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_platform_contract.yaml",
21
- "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_platform_route_gap_report.json",
22
- "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_platform_route_gap_report.md",
23
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_platform_agentic_dev_latest.json"
20
+ "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_web_contract.yaml",
21
+ "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_web_route_gap_report.json",
22
+ "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_web_route_gap_report.md",
23
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_web_agentic_dev_latest.json"
24
24
  },
25
25
  "mobile": {
26
26
  "dir": "client/mobile",
@@ -31,7 +31,7 @@
31
31
  "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_mobile_contract.yaml",
32
32
  "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_mobile_route_gap_report.json",
33
33
  "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_mobile_route_gap_report.md",
34
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_mobile_agentic_dev_latest.json"
34
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_mobile_agentic_dev_latest.json"
35
35
  },
36
36
  "admin": {
37
37
  "dir": "client/admin",
@@ -42,7 +42,7 @@
42
42
  "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_admin_contract.yaml",
43
43
  "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_admin_route_gap_report.json",
44
44
  "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_admin_route_gap_report.md",
45
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_admin_agentic_dev_latest.json"
45
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_admin_agentic_dev_latest.json"
46
46
  },
47
47
  "landing": {
48
48
  "dir": "client/landing",
@@ -53,7 +53,7 @@
53
53
  "parity_contract_path": "sdd/02_plan/10_test/templates/ui_parity_landing_contract.yaml",
54
54
  "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_landing_route_gap_report.json",
55
55
  "route_gap_markdown_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_landing_route_gap_report.md",
56
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_landing_agentic_dev_latest.json"
56
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_landing_agentic_dev_latest.json"
57
57
  }
58
58
  }
59
59
  },
@@ -62,11 +62,11 @@
62
62
  "build": "bash sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh build .",
63
63
  "proof": "bash sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh proof .",
64
64
  "deploy_dev": "echo 'configure deploy_dev command in sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json for the cloned service' >&2",
65
- "verify_dev": "test -f \"$PWD/sdd/04_verify/10_test/ui_parity/templates_platform_agentic_dev_latest.json\" && echo verify-dev-placeholder-ok"
65
+ "verify_dev": "test -f \"$PWD/sdd/03_verify/10_test/ui_parity/templates_web_agentic_dev_latest.json\" && echo verify-dev-placeholder-ok"
66
66
  },
67
67
  "artifacts": {
68
- "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_platform_route_gap_report.json",
69
- "proof_output": "sdd/04_verify/10_test/ui_parity/templates_platform_agentic_dev_latest.json"
68
+ "route_gap_output": "sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_web_route_gap_report.json",
69
+ "proof_output": "sdd/03_verify/10_test/ui_parity/templates_web_agentic_dev_latest.json"
70
70
  },
71
71
  "notes": [
72
72
  "This template contract is intentionally self-contained and points at repo-local 99_toolchain automation.",
@@ -46,7 +46,7 @@
46
46
  - deterministic proof:
47
47
  - `proof`는 strict parity 또는 동등한 결정적 UI 증거를 남겨야 한다.
48
48
  - evidence-first:
49
- - 성공/실패는 콘솔 로그가 아니라 `sdd/04_verify/...` 산출물로 판단한다.
49
+ - 성공/실패는 콘솔 로그가 아니라 `sdd/03_verify/...` 산출물로 판단한다.
50
50
  - deploy discipline:
51
51
  - DEV 반영이 필요한 작업은 `main push -> DEV deploy -> DEV verify`를 따른다.
52
52
  - external integration boundary:
@@ -96,7 +96,7 @@
96
96
  "verify_dev": "<repo-local DEV verify command>"
97
97
  },
98
98
  "artifacts": {
99
- "proof_output": "sdd/04_verify/10_test/<tool>/<latest>.json"
99
+ "proof_output": "sdd/03_verify/10_test/<tool>/<latest>.json"
100
100
  }
101
101
  }
102
102
  ```
@@ -118,7 +118,7 @@ Frontend-capable template에는 다음 두 층이 있어야 한다.
118
118
  - toolchain-owned engine:
119
119
  - `sdd/99_toolchain/01_automation/ui-parity/*`
120
120
  - app-specific adapter:
121
- - `frontend/scripts/ui-parity-platform-adapter.mjs`
121
+ - `frontend/scripts/ui-parity-web-adapter.mjs`
122
122
 
123
123
  참조 구현 기준으로 초기 이관 대상 스크립트 묶음은 다음과 같다.
124
124
 
@@ -161,7 +161,7 @@ Frontend-capable template에는 다음 두 층이 있어야 한다.
161
161
 
162
162
  - `sdd/02_plan/10_test/<service>/ui_parity_<target>_contract.yaml`
163
163
  - `sdd/02_plan/99_generated/from_planning/ui_parity/`
164
- - `sdd/04_verify/10_test/ui_parity/`
164
+ - `sdd/03_verify/10_test/ui_parity/`
165
165
 
166
166
  권장 evidence 구조:
167
167
 
@@ -224,7 +224,7 @@ Frontend-capable template에는 다음 두 층이 있어야 한다.
224
224
  - `sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json`
225
225
  - `.codex/agentic-dev.json`
226
226
  - `.claude/agentic-dev.json`
227
- - `frontend/scripts/ui-parity-platform-adapter.mjs`
227
+ - `frontend/scripts/ui-parity-web-adapter.mjs`
228
228
  - app-side collector upload adapter
229
229
  - repo-local loop/sweep scripts
230
230
  - evidence path declarations
@@ -260,16 +260,16 @@ Frontend-capable template에는 다음 두 층이 있어야 한다.
260
260
  - `sdd/99_toolchain/01_automation/agentic-dev/` vendored runtime
261
261
  - `sdd/99_toolchain/01_automation/ui-parity/` parity tooling
262
262
  - optional `scripts/dev/` parity orchestration wrappers
263
- - `sdd/02_plan/10_test/templates/ui_parity_platform_contract.template.yaml`
263
+ - `sdd/02_plan/10_test/templates/ui_parity_web_contract.template.yaml`
264
264
  - `sdd/02_plan/99_generated/from_planning/ui_parity/.gitkeep`
265
- - `sdd/04_verify/10_test/ui_parity/.gitkeep`
265
+ - `sdd/03_verify/10_test/ui_parity/.gitkeep`
266
266
 
267
267
  ### Frontend template
268
268
 
269
- `templates/client/platform` 또는 별도 frontend template에는 다음을 넣는다.
269
+ `templates/client/web` 또는 별도 frontend template에는 다음을 넣는다.
270
270
 
271
271
  - parity npm scripts
272
- - `client/platform/scripts/ui-parity-platform-adapter.mjs`
272
+ - `client/web/scripts/ui-parity-web-adapter.mjs`
273
273
  - minimal screen catalog / route catalog placeholder
274
274
  - proof output path convention
275
275
 
@@ -11,7 +11,7 @@ const require = createRequire(import.meta.url);
11
11
  function loadPlaywright() {
12
12
  const resolutionRoots = [
13
13
  ROOT,
14
- path.join(ROOT, "client/platform"),
14
+ path.join(ROOT, "client/web"),
15
15
  path.join(ROOT, "client/admin"),
16
16
  path.join(ROOT, "client/mobile"),
17
17
  path.join(ROOT, "client/landing"),
@@ -32,12 +32,12 @@ function loadPlaywright() {
32
32
  const { chromium } = loadPlaywright();
33
33
 
34
34
  const manifests = {
35
- platform: {
35
+ web: {
36
36
  baseUrl: "http://127.0.0.1:3001",
37
37
  apiBase: "http://127.0.0.1:8000/api/v1",
38
- storageKey: "platform.auth.token",
38
+ storageKey: "web.auth.token",
39
39
  credentials: { email: "admin@example.com", password: "<CHANGE_ME>" },
40
- assetDir: path.join(ROOT, "sdd/99_toolchain/01_automation/assets/platform_screen_capture"),
40
+ assetDir: path.join(ROOT, "sdd/99_toolchain/01_automation/assets/web_screen_capture"),
41
41
  screens: [
42
42
  { route: "/login", asset: "login.png", requiresAuth: false },
43
43
  { route: "/", asset: "dashboard.png", requiresAuth: true },
@@ -24,9 +24,9 @@
24
24
 
25
25
  - UI parity와 `agentic-dev` 강제 흐름은 [agentic-parity-harness-design.md](agentic-parity-harness-design.md)에 정의된 계약을 따른다.
26
26
  - parity 실행 도구 자체의 소유 위치와 계층 분리는 [parity-execution-tooling-design.md](parity-execution-tooling-design.md)를 따른다.
27
- - 프론트 템플릿 복제 직후에는 `bash sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh . platform`을 먼저 실행해 repo contract와 route-gap/generated parity 기초 자산을 만든다.
27
+ - 프론트 템플릿 복제 직후에는 `bash sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh . web`을 먼저 실행해 repo contract와 route-gap/generated parity 기초 자산을 만든다.
28
28
  - `mobile`도 같은 parity target 규약을 따르며 `run_frontend_target.sh ... mobile`으로 동일하게 실행한다.
29
- - 첫 실행 검증은 `bash sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh . platform`으로 route-gap gate와 proof gate까지 닫는다.
29
+ - 첫 실행 검증은 `bash sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh . web`으로 route-gap gate와 proof gate까지 닫는다.
30
30
 
31
31
  ## Sanitization Rules
32
32
 
@@ -109,7 +109,7 @@ UI parity 관련 `실행 도구`는 `sdd/99_toolchain/01_automation`의 소유
109
109
 
110
110
  위치:
111
111
 
112
- - `frontend/scripts/ui-parity-platform-adapter.mjs`
112
+ - `frontend/scripts/ui-parity-web-adapter.mjs`
113
113
  - 또는 `frontend/src/lib/ui-parity/*`
114
114
 
115
115
  역할:
@@ -158,11 +158,11 @@ sdd/
158
158
  02_plan/
159
159
  10_test/
160
160
  <service>/
161
- ui_parity_platform_contract.yaml
161
+ ui_parity_web_contract.yaml
162
162
  99_generated/
163
163
  from_planning/
164
164
  ui_parity/
165
- 04_verify/
165
+ 03_verify/
166
166
  10_test/
167
167
  ui_parity/
168
168
  99_toolchain/
@@ -184,7 +184,7 @@ sdd/
184
184
 
185
185
  frontend/
186
186
  scripts/
187
- ui-parity-platform-adapter.mjs
187
+ ui-parity-web-adapter.mjs
188
188
  src/
189
189
  lib/
190
190
  specScreens.json
@@ -209,12 +209,12 @@ frontend/
209
209
  - `sdd/99_toolchain/01_automation/agentic-dev/run_repo_phase.sh`가 contract를 읽는다.
210
210
  - contract의 `proof`는 `sdd/99_toolchain/01_automation/ui-parity/cli/run-proof`를 호출한다.
211
211
  - `run-proof`는 app adapter를 읽고 strict parity를 실행한다.
212
- - 결과는 `sdd/04_verify/10_test/ui_parity/...`에 저장한다.
212
+ - 결과는 `sdd/03_verify/10_test/ui_parity/...`에 저장한다.
213
213
 
214
214
  예시 shape:
215
215
 
216
216
  ```json
217
- "proof": "node sdd/99_toolchain/01_automation/ui-parity/cli/run-proof.mjs --adapter frontend/scripts/ui-parity-platform-adapter.mjs --contract sdd/02_plan/10_test/<service>/ui_parity_platform_contract.yaml --out sdd/04_verify/10_test/ui_parity/<service>_agentic_dev_latest.json"
217
+ "proof": "node sdd/99_toolchain/01_automation/ui-parity/cli/run-proof.mjs --adapter frontend/scripts/ui-parity-web-adapter.mjs --contract sdd/02_plan/10_test/<service>/ui_parity_web_contract.yaml --out sdd/03_verify/10_test/ui_parity/<service>_agentic_dev_latest.json"
218
218
  ```
219
219
 
220
220
  ### deploy_dev
@@ -307,7 +307,7 @@ agentic contract는 parity 내부 로직을 몰라도 된다.
307
307
  현재 reference implementation에서 템플릿 정본으로 승격할 때는 다음 순서를 권장한다.
308
308
 
309
309
  1. `frontend/scripts/ui-parity-*.mjs` 중 app-agnostic 로직을 `sdd/99_toolchain/01_automation/ui-parity/`로 이동
310
- 2. app-specific 로직만 `frontend/scripts/ui-parity-platform-adapter.mjs`로 축소
310
+ 2. app-specific 로직만 `frontend/scripts/ui-parity-web-adapter.mjs`로 축소
311
311
  3. `agentic-dev` runner를 `sdd/99_toolchain/01_automation/agentic-dev/`로 이동
312
312
  4. `sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json`은 새 toolchain CLI를 호출하도록 단순화
313
313
  5. `scripts/dev/*parity*.sh`는 필요할 때만 repo별로 추가하고, base template에는 포함하지 않는다
@@ -44,26 +44,26 @@ def screen(
44
44
 
45
45
 
46
46
  SCREEN_MANIFESTS = {
47
- "platform": {
48
- "title": "Templates Platform Screen Spec",
49
- "service_label": "platform",
50
- "output": str(SCREEN_DIR / "platform_screen_spec.pdf"),
51
- "asset_dir": str(ASSET_DIR / "platform_screen_capture"),
47
+ "web": {
48
+ "title": "Templates Web Screen Spec",
49
+ "service_label": "web",
50
+ "output": str(SCREEN_DIR / "web_screen_spec.pdf"),
51
+ "asset_dir": str(ASSET_DIR / "web_screen_capture"),
52
52
  "base_url": "http://127.0.0.1:3001",
53
53
  "api_base": "http://127.0.0.1:8000/api/v1",
54
- "storage_key": "platform.auth.token",
54
+ "storage_key": "web.auth.token",
55
55
  "capture_policy": DESKTOP_CAPTURE_POLICY,
56
56
  "trim_background": False,
57
- "cover_note": "첫 페이지는 platform 화면코드 인덱스다. 이후 페이지는 좌측 화면 캡처와 우측 번호형 기능 테이블을 함께 제공한다.",
57
+ "cover_note": "첫 페이지는 web 화면코드 인덱스다. 이후 페이지는 좌측 화면 캡처와 우측 번호형 기능 테이블을 함께 제공한다.",
58
58
  "source_refs": [
59
- {"label": "implementation", "path": "client/platform/src/app/App.tsx"},
60
- {"label": "implementation", "path": "client/platform/src/pages"},
61
- {"label": "capture assets", "path": "sdd/99_toolchain/01_automation/assets/platform_screen_capture"},
59
+ {"label": "implementation", "path": "client/web/src/app/App.tsx"},
60
+ {"label": "implementation", "path": "client/web/src/pages"},
61
+ {"label": "capture assets", "path": "sdd/99_toolchain/01_automation/assets/web_screen_capture"},
62
62
  ],
63
63
  "screens": [
64
64
  screen(
65
- code="PLT-S001",
66
- name="Platform Login",
65
+ code="WEB-S001",
66
+ name="Web Login",
67
67
  route="/login",
68
68
  access="public",
69
69
  features=["AUT-F001", "AUT-F002"],
@@ -71,14 +71,14 @@ SCREEN_MANIFESTS = {
71
71
  requires_auth=False,
72
72
  callouts=[
73
73
  ((0.25, 0.31), "서비스 소개 카피", "실제 API 인증 흐름과 로그인 이후 앱 셸 진입 방식을 좌측 설명 영역에서 안내한다."),
74
- ((0.78, 0.21), "Sign in 헤더", "플랫폼 로그인 목적과 예시 계정 프리셋 상태를 보여준다."),
74
+ ((0.78, 0.21), "Sign in 헤더", "web 로그인 목적과 예시 계정 프리셋 상태를 보여준다."),
75
75
  ((0.78, 0.38), "자격 증명 입력", "이메일과 비밀번호를 입력하고 오류 상태를 같은 카드 안에서 확인한다."),
76
76
  ((0.78, 0.48), "Continue CTA", "인증 성공 시 저장된 토큰으로 `auth/me`를 다시 호출한 뒤 보호 라우트로 이동한다."),
77
77
  ],
78
78
  ),
79
79
  screen(
80
- code="PLT-S002",
81
- name="Platform Dashboard",
80
+ code="WEB-S002",
81
+ name="Web Dashboard",
82
82
  route="/",
83
83
  access="protected",
84
84
  features=["AUT-F002", "ORD-F001"],
@@ -92,8 +92,8 @@ SCREEN_MANIFESTS = {
92
92
  ],
93
93
  ),
94
94
  screen(
95
- code="PLT-S003",
96
- name="Platform Orders",
95
+ code="WEB-S003",
96
+ name="Web Orders",
97
97
  route="/orders",
98
98
  access="protected",
99
99
  features=["AUT-F002", "ORD-F002"],
@@ -13,7 +13,7 @@
13
13
  복제 직후 초기화:
14
14
 
15
15
  ```bash
16
- bash sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh . platform
16
+ bash sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh . web
17
17
  ```
18
18
 
19
19
  이 명령은 다음을 생성한다.
@@ -21,21 +21,21 @@ bash sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh . platfo
21
21
  - `sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json`
22
22
  - `.codex/agentic-dev.json`
23
23
  - `.claude/agentic-dev.json`
24
- - `sdd/02_plan/10_test/templates/ui_parity_platform_contract.yaml`
24
+ - `sdd/02_plan/10_test/templates/ui_parity_web_contract.yaml`
25
25
  - `sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_route_gap_report.json`
26
26
  - `sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_route_gap_report.md`
27
27
 
28
28
  대상 프론트 선택:
29
29
 
30
30
  - 기본 대상은 `sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json`의 `frontend.default_target`에서 결정한다.
31
- - `platform`, `mobile`, `admin`, `landing` 같은 각 프론트는 `frontend.targets.<id>`에 `dir`, `adapter_path`, `screens_path`, `routes_path`, `preview_url`을 선언한다.
32
- 예시 `dir` 값은 `client/platform`처럼 실제 디렉터리 경로를 가리킨다.
31
+ - `web`, `mobile`, `admin`, `landing` 같은 각 프론트는 `frontend.targets.<id>`에 `dir`, `adapter_path`, `screens_path`, `routes_path`, `preview_url`을 선언한다.
32
+ 예시 `dir` 값은 `client/web`처럼 실제 디렉터리 경로를 가리킨다.
33
33
  - `init_frontend_parity.sh`, `bootstrap_frontend_parity.sh`, `run_frontend_target.sh`는 모두 이 metadata만 읽고 동작한다.
34
34
 
35
35
  첫 proof 부트스트랩:
36
36
 
37
37
  ```bash
38
- bash sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh . platform
38
+ bash sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh . web
39
39
  ```
40
40
 
41
41
  이 명령은 preview 서버를 띄운 뒤 reference materialization, route-gap gate, proof gate까지 수행한다.
@@ -45,13 +45,13 @@ bash sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh . p
45
45
 
46
46
  ```bash
47
47
  node sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs \
48
- --adapter client/platform/scripts/ui-parity-platform-adapter.mjs \
49
- --out sdd/02_plan/10_test/templates/ui_parity_platform_contract.yaml
48
+ --adapter client/web/scripts/ui-parity-web-adapter.mjs \
49
+ --out sdd/02_plan/10_test/templates/ui_parity_web_contract.yaml
50
50
 
51
51
  node sdd/99_toolchain/01_automation/ui-parity/cli/run-proof.mjs \
52
- --adapter client/platform/scripts/ui-parity-platform-adapter.mjs \
53
- --contract sdd/02_plan/10_test/templates/ui_parity_platform_contract.yaml \
54
- --out sdd/04_verify/10_test/ui_parity/templates_platform_agentic_dev_latest.json
52
+ --adapter client/web/scripts/ui-parity-web-adapter.mjs \
53
+ --contract sdd/02_plan/10_test/templates/ui_parity_web_contract.yaml \
54
+ --out sdd/03_verify/10_test/ui_parity/templates_web_agentic_dev_latest.json
55
55
  ```
56
56
 
57
57
  관련 계약:
@@ -40,7 +40,7 @@ let generated = 0;
40
40
  for (const screen of contract.screens) {
41
41
  const targetPath = path.resolve(
42
42
  repoRoot,
43
- screen.referenceImage ?? `sdd/04_verify/10_test/ui_parity/reference/${sanitizeFileName(screen.id)}.png`,
43
+ screen.referenceImage ?? `sdd/03_verify/10_test/ui_parity/reference/${sanitizeFileName(screen.id)}.png`,
44
44
  );
45
45
  await captureScreen({
46
46
  browser: runtime.browser,
@@ -38,13 +38,13 @@ function renderYaml(adapterPath, adapter) {
38
38
  if (screens.length === 0) {
39
39
  lines.push(" - id: TMP_001");
40
40
  lines.push(" route: /");
41
- lines.push(" reference_image: sdd/04_verify/10_test/ui_parity/reference/TMP_001.png");
41
+ lines.push(" reference_image: sdd/03_verify/10_test/ui_parity/reference/TMP_001.png");
42
42
  } else {
43
43
  for (const screen of screens) {
44
44
  lines.push(` - id: ${screen.id}`);
45
45
  lines.push(` route: ${screen.route}`);
46
46
  lines.push(
47
- ` reference_image: ${screen.referenceImage ?? `sdd/04_verify/10_test/ui_parity/reference/${screen.id}.png`}`,
47
+ ` reference_image: ${screen.referenceImage ?? `sdd/03_verify/10_test/ui_parity/reference/${screen.id}.png`}`,
48
48
  );
49
49
  }
50
50
  }
@@ -147,7 +147,7 @@ export async function runProof({
147
147
  referenceImage:
148
148
  configuredScreen.referenceImage ??
149
149
  configuredScreen.reference_image ??
150
- `sdd/04_verify/10_test/ui_parity/reference/${configuredScreen.id}.png`,
150
+ `sdd/03_verify/10_test/ui_parity/reference/${configuredScreen.id}.png`,
151
151
  };
152
152
  const stem = sanitizeFileName(screen.id || screen.route);
153
153
  const actualPath = path.join(actualRoot, `${stem}.png`);
@@ -2,12 +2,12 @@
2
2
 
3
3
  권장 루트:
4
4
 
5
- - `sdd/04_verify/10_test/ui_parity/`
5
+ - `sdd/03_verify/10_test/ui_parity/`
6
6
 
7
7
  필수 파일:
8
8
 
9
9
  - latest proof json
10
- - 예: `templates_platform_agentic_dev_latest.json`
10
+ - 예: `templates_web_agentic_dev_latest.json`
11
11
 
12
12
  권장 하위 구조:
13
13
 
@@ -76,7 +76,7 @@ planning evidence 필드:
76
76
 
77
77
  주요 생성 경로 예시:
78
78
 
79
- - `sdd/02_plan/99_generated/from_planning/ui_parity/platform.route_gap_report.json`
80
- - `sdd/02_plan/99_generated/from_planning/ui_parity/platform.route_gap_report.md`
79
+ - `sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_web_route_gap_report.json`
80
+ - `sdd/02_plan/99_generated/from_planning/ui_parity/ui_parity_web_route_gap_report.md`
81
81
  - `sdd/02_plan/99_generated/from_planning/ui_parity/mobile.route_gap_report.json`
82
82
  - `sdd/02_plan/99_generated/from_planning/ui_parity/mobile.route_gap_report.md`
@@ -10,7 +10,7 @@
10
10
  - 기본 설명 순서는 `entry -> provider/router -> auth/session gate -> shell -> route leaf -> backend contract leaf`다.
11
11
  - shared shell, auth/session, data contract, transport split은 route leaf 이후 cross-cutting link로 연결한다.
12
12
  - `sdd/03_build`에는 dated memo, Ralph iteration narrative, run id, turn-specific 회고를 남기지 않는다.
13
- - 구조 current-state 적합성은 `scripts/dev/audit_sdd_build_ast.py`로 검증하고 결과는 `sdd/04_verify/03_architecture`에 유지한다.
13
+ - 구조 current-state 적합성은 `scripts/dev/audit_sdd_build_ast.py`로 검증하고 결과는 `sdd/03_verify/03_architecture`에 유지한다.
14
14
  - downstream 저장소는 이 정책과 audit script를 함께 복제해야 한다.
15
15
 
16
16
  ## Canonical References
@@ -19,4 +19,4 @@
19
19
  - `scripts/dev/audit_sdd_build_ast.py`
20
20
  - `sdd/02_plan/03_architecture/build_ast_runtime_tree_governance.md`
21
21
  - `sdd/03_build/03_architecture/build_ast_runtime_tree_governance.md`
22
- - `sdd/04_verify/03_architecture/build_ast_runtime_tree_governance.md`
22
+ - `sdd/03_verify/03_architecture/build_ast_runtime_tree_governance.md`
@@ -12,7 +12,7 @@
12
12
  - compose 문서는 root compose baseline과 dedicated overlay를 혼동하지 않고 current-state 역할로만 설명한다.
13
13
  - browser-facing 환경 변수(`VITE_API_BASE_URL` 등)는 컨테이너 내부 DNS가 아니라 실제 브라우저가 도달 가능한 URL을 사용한다.
14
14
  - remote delivery topology는 `AWS edge/domain -> OpenStack backend compute -> AWS data plane` current split을 기준으로 설명한다.
15
- - compose baseline이나 topology가 바뀌면 `README.md`, `infra/compose/README.md`, `sdd/02_plan/06_iac`, `sdd/03_build/06_iac`, `sdd/04_verify/06_iac`를 같은 변경 단위로 동기화한다.
15
+ - compose baseline이나 topology가 바뀌면 `README.md`, `infra/compose/README.md`, `sdd/02_plan/06_iac`, `sdd/03_build/06_iac`, `sdd/03_verify/06_iac`를 같은 변경 단위로 동기화한다.
16
16
 
17
17
  ## Canonical References
18
18
 
@@ -21,4 +21,4 @@
21
21
  - `infra/terraform/README.md`
22
22
  - `sdd/02_plan/06_iac/template_runtime_delivery.md`
23
23
  - `sdd/03_build/06_iac/template_runtime_delivery.md`
24
- - `sdd/04_verify/06_iac/template_runtime_delivery.md`
24
+ - `sdd/03_verify/06_iac/template_runtime_delivery.md`
@@ -12,7 +12,7 @@
12
12
  - Playwright exactness suite가 있는 screen/local UI surface는 `sdd/99_toolchain/01_automation/run_playwright_exactness.py`를 canonical local gate로 사용한다.
13
13
  - direct `npx playwright test ...` 호출은 디버깅 예외로만 쓰고, retained verification command는 toolchain wrapper 기준으로 남긴다.
14
14
  - 자동화가 없는 회귀 surface는 가능한 command/manual verification으로 대체하고, automation gap은 residual risk로 남긴다.
15
- - 선택한 회귀 검수 범위, 실행한 check, 생략 사유, residual risk는 `sdd/02_plan`, `sdd/03_build`, `sdd/04_verify`에 current-state로 유지한다.
15
+ - 선택한 회귀 검수 범위, 실행한 check, 생략 사유, residual risk는 `sdd/02_plan`, `sdd/03_build`, `sdd/03_verify`에 current-state로 유지한다.
16
16
 
17
17
  ## Canonical References
18
18
 
@@ -14,7 +14,7 @@ PLAYWRIGHT_SUITES = [
14
14
  "id": "shared-shell-regression",
15
15
  "spec": "shared-shell-regression.spec.js",
16
16
  "kind": "shared-ui-regression",
17
- "service": "platform",
17
+ "service": "web",
18
18
  "targets": ["shared-shell"],
19
19
  "description": "example shared shell regression batch",
20
20
  },
@@ -20,4 +20,4 @@
20
20
  - compose/runtime 기준선은 `02_policies/compose-runtime-baseline-policy.md`를 정본으로 사용한다.
21
21
  - 현재 canonical screen toolchain은 `build_screen_spec_pdf.py`, `capture_screen_assets.mjs`, `screen_spec_manifest.py`다.
22
22
  - Claude/Codex/Ralph 하네스는 저장소 루트 `.claude`, `.codex`, `.agent`에 두고, 그 계약 설명은 `01_automation`과 `02_policies`에 둔다.
23
- - `sdd/03_build`는 AST-style runtime tree current-state를 유지하고, 관련 gate는 `scripts/dev/audit_sdd_build_ast.py`와 `04_verify` summary로 관리한다.
23
+ - `sdd/03_build`는 AST-style runtime tree current-state를 유지하고, 관련 gate는 `scripts/dev/audit_sdd_build_ast.py`와 `03_verify` summary로 관리한다.
package/sdd/README.md CHANGED
@@ -16,6 +16,6 @@
16
16
  - `01_planning/`: 현재 canonical spec과 source reference
17
17
  - `02_plan/`: 에이전트의 current executable plan
18
18
  - `03_build/`: 현재 구현 요약
19
- - `04_verify/`: 현재 retained verification summary
19
+ - `03_verify/`: 현재 retained verification summary
20
20
  - `05_operate/`: 현재 delivery status와 runbook
21
21
  - `99_toolchain/`: SDD를 유지하는 생성기, 자동화, 정책 문서
@@ -12,7 +12,7 @@
12
12
  - `bootstrap/users.json`: user profile bootstrap 원본
13
13
  - `bootstrap/catalog_products.json`: catalog product 원본
14
14
  - `bootstrap/inventory_levels.json`: inventory level 원본
15
- - `bootstrap/orders.json`: platform/admin order surface 원본
15
+ - `bootstrap/orders.json`: web/admin order surface 원본
16
16
  - `bootstrap/fulfillment_tasks.json`: mobile fulfillment board task 원본
17
17
  - `bootstrap/fulfillment_events.json`: mobile fulfillment timeline 원본
18
18
  - `bootstrap/fulfillment_notes.json`: mobile fulfillment note 원본
@@ -1,18 +0,0 @@
1
- FROM node:20-slim
2
-
3
- WORKDIR /app
4
-
5
- RUN npm install -g pnpm@10.32.0
6
-
7
- COPY pnpm-lock.yaml pnpm-workspace.yaml ./
8
- COPY client/platform/package.json ./client/platform/package.json
9
-
10
- RUN pnpm install --frozen-lockfile --filter @do4ai/client-platform-template...
11
-
12
- COPY client/platform ./client/platform
13
-
14
- WORKDIR /app/client/platform
15
-
16
- EXPOSE 3001
17
-
18
- CMD ["sh", "-lc", "pnpm exec vite --host 0.0.0.0 --port ${PORT:-3001}"]