takt 0.41.0 → 0.42.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 (281) hide show
  1. package/README.md +58 -28
  2. package/builtins/en/facets/instructions/write-tests-first.md +5 -0
  3. package/builtins/en/facets/knowledge/architecture.md +13 -13
  4. package/builtins/en/facets/knowledge/cqrs-es.md +48 -0
  5. package/builtins/en/facets/knowledge/frontend.md +13 -0
  6. package/builtins/en/facets/output-contracts/frontend-review.md +1 -0
  7. package/builtins/en/facets/policies/ai-antipattern.md +19 -0
  8. package/builtins/en/facets/policies/coding.md +85 -3
  9. package/builtins/en/facets/policies/qa.md +3 -1
  10. package/builtins/en/facets/policies/review.md +5 -3
  11. package/builtins/en/facets/policies/testing.md +33 -0
  12. package/builtins/en/workflows/auto-improvement-loop.yaml +20 -4
  13. package/builtins/ja/facets/instructions/write-tests-first.md +5 -0
  14. package/builtins/ja/facets/knowledge/architecture.md +13 -13
  15. package/builtins/ja/facets/knowledge/cqrs-es.md +48 -0
  16. package/builtins/ja/facets/knowledge/frontend.md +13 -0
  17. package/builtins/ja/facets/output-contracts/frontend-review.md +1 -0
  18. package/builtins/ja/facets/policies/ai-antipattern.md +19 -0
  19. package/builtins/ja/facets/policies/coding.md +85 -3
  20. package/builtins/ja/facets/policies/qa.md +3 -1
  21. package/builtins/ja/facets/policies/review.md +5 -3
  22. package/builtins/ja/facets/policies/testing.md +33 -0
  23. package/builtins/ja/workflows/auto-improvement-loop.yaml +20 -4
  24. package/dist/agents/decompose-task-usecase.d.ts.map +1 -1
  25. package/dist/agents/decompose-task-usecase.js +3 -2
  26. package/dist/agents/decompose-task-usecase.js.map +1 -1
  27. package/dist/agents/judge-status-usecase.d.ts.map +1 -1
  28. package/dist/agents/judge-status-usecase.js +4 -3
  29. package/dist/agents/judge-status-usecase.js.map +1 -1
  30. package/dist/agents/provider-call-options.d.ts +4 -0
  31. package/dist/agents/provider-call-options.d.ts.map +1 -0
  32. package/dist/agents/provider-call-options.js +9 -0
  33. package/dist/agents/provider-call-options.js.map +1 -0
  34. package/dist/agents/runner.js +1 -1
  35. package/dist/agents/runner.js.map +1 -1
  36. package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts.map +1 -1
  37. package/dist/agents/structured-caller/prompt-based-structured-caller.js +5 -4
  38. package/dist/agents/structured-caller/prompt-based-structured-caller.js.map +1 -1
  39. package/dist/app/cli/program.js +1 -1
  40. package/dist/app/cli/program.js.map +1 -1
  41. package/dist/core/models/assistant-config.d.ts +4 -0
  42. package/dist/core/models/assistant-config.d.ts.map +1 -0
  43. package/dist/core/models/assistant-config.js +4 -0
  44. package/dist/core/models/assistant-config.js.map +1 -0
  45. package/dist/core/models/config-schemas.d.ts +88 -0
  46. package/dist/core/models/config-schemas.d.ts.map +1 -1
  47. package/dist/core/models/config-schemas.js +8 -2
  48. package/dist/core/models/config-schemas.js.map +1 -1
  49. package/dist/core/models/config-types.d.ts +20 -1
  50. package/dist/core/models/config-types.d.ts.map +1 -1
  51. package/dist/core/models/index.d.ts +1 -1
  52. package/dist/core/models/index.d.ts.map +1 -1
  53. package/dist/core/models/index.js.map +1 -1
  54. package/dist/core/models/provider-profiles.d.ts +1 -1
  55. package/dist/core/models/provider-profiles.d.ts.map +1 -1
  56. package/dist/core/models/response.d.ts +1 -1
  57. package/dist/core/models/response.d.ts.map +1 -1
  58. package/dist/core/models/response.js +1 -1
  59. package/dist/core/models/response.js.map +1 -1
  60. package/dist/core/models/schema-base.d.ts +65 -0
  61. package/dist/core/models/schema-base.d.ts.map +1 -1
  62. package/dist/core/models/schema-base.js +31 -0
  63. package/dist/core/models/schema-base.js.map +1 -1
  64. package/dist/core/models/types.d.ts +2 -2
  65. package/dist/core/models/types.d.ts.map +1 -1
  66. package/dist/core/models/workflow-provider-options.d.ts +7 -0
  67. package/dist/core/models/workflow-provider-options.d.ts.map +1 -1
  68. package/dist/core/models/workflow-schemas.d.ts +277 -38
  69. package/dist/core/models/workflow-schemas.d.ts.map +1 -1
  70. package/dist/core/models/workflow-system-input-types.d.ts +8 -1
  71. package/dist/core/models/workflow-system-input-types.d.ts.map +1 -1
  72. package/dist/core/models/workflow-system-schemas.d.ts +7 -1
  73. package/dist/core/models/workflow-system-schemas.d.ts.map +1 -1
  74. package/dist/core/models/workflow-system-schemas.js +12 -1
  75. package/dist/core/models/workflow-system-schemas.js.map +1 -1
  76. package/dist/core/models/workflow-types.d.ts +2 -2
  77. package/dist/core/models/workflow-types.d.ts.map +1 -1
  78. package/dist/core/models/workflow-types.js.map +1 -1
  79. package/dist/core/workflow/engine/OptionsBuilder.d.ts +1 -0
  80. package/dist/core/workflow/engine/OptionsBuilder.d.ts.map +1 -1
  81. package/dist/core/workflow/engine/OptionsBuilder.js +9 -4
  82. package/dist/core/workflow/engine/OptionsBuilder.js.map +1 -1
  83. package/dist/core/workflow/engine/WorkflowEngine.d.ts +1 -0
  84. package/dist/core/workflow/engine/WorkflowEngine.d.ts.map +1 -1
  85. package/dist/core/workflow/engine/WorkflowEngine.js +24 -4
  86. package/dist/core/workflow/engine/WorkflowEngine.js.map +1 -1
  87. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts +1 -0
  88. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts.map +1 -1
  89. package/dist/core/workflow/engine/WorkflowRunLoop.js +26 -7
  90. package/dist/core/workflow/engine/WorkflowRunLoop.js.map +1 -1
  91. package/dist/core/workflow/observability/workflowSpans.d.ts +28 -0
  92. package/dist/core/workflow/observability/workflowSpans.d.ts.map +1 -0
  93. package/dist/core/workflow/observability/workflowSpans.js +107 -0
  94. package/dist/core/workflow/observability/workflowSpans.js.map +1 -0
  95. package/dist/core/workflow/permission-profile-resolution.d.ts.map +1 -1
  96. package/dist/core/workflow/permission-profile-resolution.js +1 -0
  97. package/dist/core/workflow/permission-profile-resolution.js.map +1 -1
  98. package/dist/core/workflow/phase-runner.d.ts +1 -3
  99. package/dist/core/workflow/phase-runner.d.ts.map +1 -1
  100. package/dist/core/workflow/phase-runner.js.map +1 -1
  101. package/dist/core/workflow/report-phase-runner.d.ts.map +1 -1
  102. package/dist/core/workflow/report-phase-runner.js +3 -2
  103. package/dist/core/workflow/report-phase-runner.js.map +1 -1
  104. package/dist/core/workflow/status-judgment-phase.d.ts.map +1 -1
  105. package/dist/core/workflow/status-judgment-phase.js +7 -3
  106. package/dist/core/workflow/status-judgment-phase.js.map +1 -1
  107. package/dist/core/workflow/system/system-step-effect-runner.d.ts.map +1 -1
  108. package/dist/core/workflow/system/system-step-effect-runner.js +16 -1
  109. package/dist/core/workflow/system/system-step-effect-runner.js.map +1 -1
  110. package/dist/core/workflow/types.d.ts +3 -1
  111. package/dist/core/workflow/types.d.ts.map +1 -1
  112. package/dist/features/interactive/assistantInitFiles.d.ts +2 -0
  113. package/dist/features/interactive/assistantInitFiles.d.ts.map +1 -0
  114. package/dist/features/interactive/assistantInitFiles.js +110 -0
  115. package/dist/features/interactive/assistantInitFiles.js.map +1 -0
  116. package/dist/features/interactive/conversationLoop.d.ts +5 -1
  117. package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
  118. package/dist/features/interactive/conversationLoop.js +23 -3
  119. package/dist/features/interactive/conversationLoop.js.map +1 -1
  120. package/dist/features/interactive/interactive-summary.d.ts +1 -1
  121. package/dist/features/interactive/interactive-summary.d.ts.map +1 -1
  122. package/dist/features/interactive/interactive-summary.js +4 -3
  123. package/dist/features/interactive/interactive-summary.js.map +1 -1
  124. package/dist/features/interactive/interactive.d.ts +5 -3
  125. package/dist/features/interactive/interactive.d.ts.map +1 -1
  126. package/dist/features/interactive/interactive.js +4 -0
  127. package/dist/features/interactive/interactive.js.map +1 -1
  128. package/dist/features/interactive/promptSections.d.ts +2 -0
  129. package/dist/features/interactive/promptSections.d.ts.map +1 -1
  130. package/dist/features/interactive/promptSections.js +7 -1
  131. package/dist/features/interactive/promptSections.js.map +1 -1
  132. package/dist/features/interactive/slashCommandRegistry.d.ts.map +1 -1
  133. package/dist/features/interactive/slashCommandRegistry.js +1 -0
  134. package/dist/features/interactive/slashCommandRegistry.js.map +1 -1
  135. package/dist/features/tasks/execute/workflowExecution.d.ts.map +1 -1
  136. package/dist/features/tasks/execute/workflowExecution.js +12 -1
  137. package/dist/features/tasks/execute/workflowExecution.js.map +1 -1
  138. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts +5 -1
  139. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts.map +1 -1
  140. package/dist/features/tasks/execute/workflowExecutionBootstrap.js +6 -1
  141. package/dist/features/tasks/execute/workflowExecutionBootstrap.js.map +1 -1
  142. package/dist/infra/claude/executor.d.ts.map +1 -1
  143. package/dist/infra/claude/executor.js +27 -6
  144. package/dist/infra/claude/executor.js.map +1 -1
  145. package/dist/infra/claude/mcp-config.d.ts +7 -0
  146. package/dist/infra/claude/mcp-config.d.ts.map +1 -0
  147. package/dist/infra/claude/mcp-config.js +30 -0
  148. package/dist/infra/claude/mcp-config.js.map +1 -0
  149. package/dist/infra/claude-headless/client.d.ts.map +1 -1
  150. package/dist/infra/claude-headless/client.js +5 -40
  151. package/dist/infra/claude-headless/client.js.map +1 -1
  152. package/dist/infra/claude-headless/result-response.js +1 -1
  153. package/dist/infra/claude-headless/result-response.js.map +1 -1
  154. package/dist/infra/claude-terminal/client.d.ts +4 -0
  155. package/dist/infra/claude-terminal/client.d.ts.map +1 -0
  156. package/dist/infra/claude-terminal/client.js +314 -0
  157. package/dist/infra/claude-terminal/client.js.map +1 -0
  158. package/dist/infra/claude-terminal/command.d.ts +4 -0
  159. package/dist/infra/claude-terminal/command.d.ts.map +1 -0
  160. package/dist/infra/claude-terminal/command.js +50 -0
  161. package/dist/infra/claude-terminal/command.js.map +1 -0
  162. package/dist/infra/claude-terminal/response-normalizer.d.ts +14 -0
  163. package/dist/infra/claude-terminal/response-normalizer.d.ts.map +1 -0
  164. package/dist/infra/claude-terminal/response-normalizer.js +118 -0
  165. package/dist/infra/claude-terminal/response-normalizer.js.map +1 -0
  166. package/dist/infra/claude-terminal/tmux-backend.d.ts +7 -0
  167. package/dist/infra/claude-terminal/tmux-backend.d.ts.map +1 -0
  168. package/dist/infra/claude-terminal/tmux-backend.js +177 -0
  169. package/dist/infra/claude-terminal/tmux-backend.js.map +1 -0
  170. package/dist/infra/claude-terminal/transcript-reader.d.ts +13 -0
  171. package/dist/infra/claude-terminal/transcript-reader.d.ts.map +1 -0
  172. package/dist/infra/claude-terminal/transcript-reader.js +329 -0
  173. package/dist/infra/claude-terminal/transcript-reader.js.map +1 -0
  174. package/dist/infra/claude-terminal/types.d.ts +106 -0
  175. package/dist/infra/claude-terminal/types.d.ts.map +1 -0
  176. package/dist/infra/claude-terminal/types.js +2 -0
  177. package/dist/infra/claude-terminal/types.js.map +1 -0
  178. package/dist/infra/config/configNormalizers.d.ts +7 -1
  179. package/dist/infra/config/configNormalizers.d.ts.map +1 -1
  180. package/dist/infra/config/configNormalizers.js +31 -1
  181. package/dist/infra/config/configNormalizers.js.map +1 -1
  182. package/dist/infra/config/env/global-current-env-specs.d.ts.map +1 -1
  183. package/dist/infra/config/env/global-current-env-specs.js +5 -0
  184. package/dist/infra/config/env/global-current-env-specs.js.map +1 -1
  185. package/dist/infra/config/env/project-current-env-specs.d.ts.map +1 -1
  186. package/dist/infra/config/env/project-current-env-specs.js +5 -0
  187. package/dist/infra/config/env/project-current-env-specs.js.map +1 -1
  188. package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
  189. package/dist/infra/config/global/globalConfigCore.js +2 -0
  190. package/dist/infra/config/global/globalConfigCore.js.map +1 -1
  191. package/dist/infra/config/global/globalConfigSerializer.d.ts.map +1 -1
  192. package/dist/infra/config/global/globalConfigSerializer.js +5 -0
  193. package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
  194. package/dist/infra/config/global/initialization.d.ts +1 -1
  195. package/dist/infra/config/global/initialization.d.ts.map +1 -1
  196. package/dist/infra/config/global/initialization.js +1 -0
  197. package/dist/infra/config/global/initialization.js.map +1 -1
  198. package/dist/infra/config/observabilityConfig.d.ts +13 -0
  199. package/dist/infra/config/observabilityConfig.d.ts.map +1 -0
  200. package/dist/infra/config/observabilityConfig.js +52 -0
  201. package/dist/infra/config/observabilityConfig.js.map +1 -0
  202. package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
  203. package/dist/infra/config/project/projectConfig.js +19 -2
  204. package/dist/infra/config/project/projectConfig.js.map +1 -1
  205. package/dist/infra/config/providerOptions.d.ts +8 -2
  206. package/dist/infra/config/providerOptions.d.ts.map +1 -1
  207. package/dist/infra/config/providerOptions.js +49 -1
  208. package/dist/infra/config/providerOptions.js.map +1 -1
  209. package/dist/infra/config/providerOptionsContract.d.ts +3 -3
  210. package/dist/infra/config/providerOptionsContract.d.ts.map +1 -1
  211. package/dist/infra/config/providerOptionsContract.js +14 -0
  212. package/dist/infra/config/providerOptionsContract.js.map +1 -1
  213. package/dist/infra/config/resolveConfigValue.d.ts.map +1 -1
  214. package/dist/infra/config/resolveConfigValue.js +18 -0
  215. package/dist/infra/config/resolveConfigValue.js.map +1 -1
  216. package/dist/infra/config/resolvedConfig.d.ts +2 -1
  217. package/dist/infra/config/resolvedConfig.d.ts.map +1 -1
  218. package/dist/infra/config/traced/tracedConfigSchema.d.ts.map +1 -1
  219. package/dist/infra/config/traced/tracedConfigSchema.js +12 -0
  220. package/dist/infra/config/traced/tracedConfigSchema.js.map +1 -1
  221. package/dist/infra/git/format.d.ts.map +1 -1
  222. package/dist/infra/git/format.js +75 -8
  223. package/dist/infra/git/format.js.map +1 -1
  224. package/dist/infra/git/index.d.ts +1 -1
  225. package/dist/infra/git/index.d.ts.map +1 -1
  226. package/dist/infra/git/types.d.ts +5 -0
  227. package/dist/infra/git/types.d.ts.map +1 -1
  228. package/dist/infra/github/pr.d.ts.map +1 -1
  229. package/dist/infra/github/pr.js +174 -28
  230. package/dist/infra/github/pr.js.map +1 -1
  231. package/dist/infra/observability/otelFoundation.d.ts +6 -0
  232. package/dist/infra/observability/otelFoundation.d.ts.map +1 -0
  233. package/dist/infra/observability/otelFoundation.js +89 -0
  234. package/dist/infra/observability/otelFoundation.js.map +1 -0
  235. package/dist/infra/opencode/client.d.ts.map +1 -1
  236. package/dist/infra/opencode/client.js +19 -15
  237. package/dist/infra/opencode/client.js.map +1 -1
  238. package/dist/infra/providers/claude-terminal.d.ts +6 -0
  239. package/dist/infra/providers/claude-terminal.d.ts.map +1 -0
  240. package/dist/infra/providers/claude-terminal.js +70 -0
  241. package/dist/infra/providers/claude-terminal.js.map +1 -0
  242. package/dist/infra/providers/index.d.ts.map +1 -1
  243. package/dist/infra/providers/index.js +2 -0
  244. package/dist/infra/providers/index.js.map +1 -1
  245. package/dist/infra/providers/provider-capabilities.d.ts +1 -0
  246. package/dist/infra/providers/provider-capabilities.d.ts.map +1 -1
  247. package/dist/infra/providers/provider-capabilities.js +16 -0
  248. package/dist/infra/providers/provider-capabilities.js.map +1 -1
  249. package/dist/infra/rate-limit/detection.d.ts +2 -0
  250. package/dist/infra/rate-limit/detection.d.ts.map +1 -1
  251. package/dist/infra/rate-limit/detection.js +14 -1
  252. package/dist/infra/rate-limit/detection.js.map +1 -1
  253. package/dist/infra/task/clone-base-branch.d.ts +11 -0
  254. package/dist/infra/task/clone-base-branch.d.ts.map +1 -1
  255. package/dist/infra/task/clone-base-branch.js +34 -4
  256. package/dist/infra/task/clone-base-branch.js.map +1 -1
  257. package/dist/infra/task/clone.d.ts +1 -1
  258. package/dist/infra/task/clone.d.ts.map +1 -1
  259. package/dist/infra/task/clone.js +1 -1
  260. package/dist/infra/task/clone.js.map +1 -1
  261. package/dist/infra/task/index.d.ts +1 -1
  262. package/dist/infra/task/index.d.ts.map +1 -1
  263. package/dist/infra/task/index.js +1 -1
  264. package/dist/infra/task/index.js.map +1 -1
  265. package/dist/infra/workflow/system/system-enqueue-effect.d.ts +2 -2
  266. package/dist/infra/workflow/system/system-enqueue-effect.d.ts.map +1 -1
  267. package/dist/infra/workflow/system/system-enqueue-effect.js +5 -2
  268. package/dist/infra/workflow/system/system-enqueue-effect.js.map +1 -1
  269. package/dist/shared/constants.d.ts +1 -0
  270. package/dist/shared/constants.d.ts.map +1 -1
  271. package/dist/shared/constants.js +1 -0
  272. package/dist/shared/constants.js.map +1 -1
  273. package/dist/shared/i18n/labels_en.yaml +3 -1
  274. package/dist/shared/i18n/labels_ja.yaml +3 -1
  275. package/dist/shared/types/provider.d.ts +1 -1
  276. package/dist/shared/types/provider.d.ts.map +1 -1
  277. package/dist/shared/utils/debug.d.ts +2 -0
  278. package/dist/shared/utils/debug.d.ts.map +1 -1
  279. package/dist/shared/utils/debug.js +1 -0
  280. package/dist/shared/utils/debug.js.map +1 -1
  281. package/package.json +4 -2
@@ -117,7 +117,11 @@ steps:
117
117
  - type: enqueue_task
118
118
  mode: new
119
119
  workflow: takt-default
120
- base_branch: improve
120
+ base_branch:
121
+ name: improve
122
+ create_if_missing:
123
+ from: main
124
+ push: true
121
125
  task: "{structured:plan_from_issue.task_markdown}"
122
126
  issue: "{structured:plan_from_issue.issue}"
123
127
  worktree:
@@ -187,7 +191,11 @@ steps:
187
191
  - type: enqueue_task
188
192
  mode: new
189
193
  workflow: takt-default
190
- base_branch: improve
194
+ base_branch:
195
+ name: improve
196
+ create_if_missing:
197
+ from: main
198
+ push: true
191
199
  task: "{structured:plan_fresh_improvement.task_markdown}"
192
200
  issue: "{structured:plan_fresh_improvement.issue}"
193
201
  worktree:
@@ -255,7 +263,11 @@ steps:
255
263
  mode: from_pr
256
264
  pr: "{context:route_context.selected_pr.number}"
257
265
  workflow: takt-default
258
- base_branch: improve
266
+ base_branch:
267
+ name: improve
268
+ create_if_missing:
269
+ from: main
270
+ push: true
259
271
  task: "{structured:plan_from_existing_pr.task_markdown}"
260
272
  rules:
261
273
  - when: effect.enqueue_from_pr.enqueue_task.success == true
@@ -296,7 +308,11 @@ steps:
296
308
  mode: from_pr
297
309
  pr: "{context:route_context.selected_pr.number}"
298
310
  workflow: takt-default
299
- base_branch: improve
311
+ base_branch:
312
+ name: improve
313
+ create_if_missing:
314
+ from: main
315
+ push: true
300
316
  task: |
301
317
  Resolve the conflicts raised while syncing the PR with its base branch.
302
318
  Target PR: {context:route_context.selected_pr.number}
@@ -24,6 +24,11 @@ Workflow Contextに示されたReport Directory内のファイルのみ参照し
24
24
  - レスポンス標準の envelope をリクエスト解釈へ流用した実装を見逃さないテストを含める
25
25
  - テストは実装完了後にパスすることを前提に書く(この段階ではビルドエラーやテスト失敗は想定内)
26
26
 
27
+ **非実行資産に関する制約:**
28
+ - 説明文、ガイド、README、Markdown ドキュメントなどの本文・章タイトル・構成を固定するテストは作成しない
29
+ - docs-only 変更では、明示的な実行契約がない限りテストを追加しない
30
+ - テストが必要なのは、CLI例・設定例・生成物など、コードの挙動や機械処理と結びつく契約がある場合に限る
31
+
27
32
  **テスト実行について:**
28
33
  - テスト作成後、テストを実行して結果を確認する
29
34
  - 実装前のためテスト失敗・import エラーは想定内(未実装モジュールの import を含む)
@@ -374,14 +374,14 @@ function createUser(data: UserData) {
374
374
  | エラー握りつぶし | 空の `catch {}`、`rescue nil` |
375
375
  | マジックナンバー | 説明なしの `if (status == 3)` |
376
376
 
377
- ## TODOコメントの厳格な禁止
377
+ ## 未完成コードの検出
378
378
 
379
- 「将来やる」は決してやらない。今やらないことは永遠にやらない。
379
+ 未完成コードの判定基準はコーディングポリシーに従う。アーキテクチャレビューでは、TODO/FIXME、空実装、スタブが設計上必要な境界・認可・バリデーション・契約更新の代替になっていないかを見る。
380
380
 
381
- TODOコメントは即REJECT。
381
+ Issue番号・外部制約・除去条件のない TODO/FIXME は REJECT。
382
382
 
383
383
  ```kotlin
384
- // REJECT - 将来を見越したTODO
384
+ // REJECT - 認可チェックをTODOで先送り
385
385
  // TODO: 施設IDによる認可チェックを追加
386
386
  fun deleteCustomHoliday(@PathVariable id: String) {
387
387
  deleteCustomHolidayInputPort.execute(input)
@@ -398,12 +398,12 @@ fun deleteCustomHoliday(@PathVariable id: String) {
398
398
  }
399
399
  ```
400
400
 
401
- TODOが許容される唯一のケース:
401
+ TODO/FIXMEが許容されるケース:
402
402
 
403
403
  | 条件 | 例 | 判定 |
404
404
  |------|-----|------|
405
- | 外部依存で今は実装不可 + Issue化済み | `// TODO(#123): APIキー取得後に実装` | 許容 |
406
- | 技術的制約で回避不可 + Issue化済み | `// TODO(#456): ライブラリバグ修正待ち` | 許容 |
405
+ | 外部依存で今は実装不可 + Issue化済み + 除去条件あり | `// TODO(#123): APIキー取得後に実装` | 許容 |
406
+ | 技術的制約で回避不可 + Issue化済み + 除去条件あり | `// TODO(#456): ライブラリバグ修正待ち` | 許容 |
407
407
  | 「将来実装」「後で追加」 | `// TODO: バリデーション追加` | REJECT |
408
408
  | 「時間がないので」 | `// TODO: リファクタリング` | REJECT |
409
409
 
@@ -429,7 +429,7 @@ DRY にしないケース:
429
429
 
430
430
  ## 仕様準拠の検証
431
431
 
432
- 変更が、プロジェクトの文書化された仕様に準拠しているか検証する。
432
+ 契約変更の整合性はコーディングポリシーに従う。アーキテクチャレビューでは、変更が文書化された仕様、型、スキーマ、設定形式と矛盾していないかを見る。
433
433
 
434
434
  検証対象:
435
435
 
@@ -460,10 +460,10 @@ DRY にしないケース:
460
460
 
461
461
  ## 呼び出しチェーン検証
462
462
 
463
- 新しいパラメータ・フィールドが追加された場合、変更ファイル内だけでなく呼び出し元も検証する。
463
+ 契約変更の配線漏れはコーディングポリシーに従う。アーキテクチャレビューでは、新しいパラメータ・フィールドが変更ファイル内だけで完結しておらず、実際の呼び出し元・生成元・読み取り側まで届いているかを見る。
464
464
 
465
465
  検証手順:
466
- 1. 新しいオプショナルパラメータや interface フィールドを見つけたら、`Grep` で全呼び出し元を検索
466
+ 1. 新しいオプショナルパラメータや interface フィールドを見つけたら、全呼び出し元を検索
467
467
  2. 全呼び出し元が新しいパラメータを渡しているか確認
468
468
  3. フォールバック値(`?? default`)がある場合、フォールバックが使われるケースが意図通りか確認
469
469
 
@@ -471,7 +471,7 @@ DRY にしないケース:
471
471
 
472
472
  | パターン | 問題 | 検出方法 |
473
473
  |---------|------|---------|
474
- | `options.xxx ?? fallback` で全呼び出し元が `xxx` を省略 | 機能が実装されているのに常にフォールバック | grep で呼び出し元を確認 |
474
+ | `options.xxx ?? fallback` で全呼び出し元が `xxx` を省略 | 機能が実装されているのに常にフォールバック | 呼び出し元を確認 |
475
475
  | テストがモックで直接値をセット | 実際の呼び出しチェーンを経由しない | テストの構築方法を確認 |
476
476
  | `executeXxx()` が内部で使う `options` を引数で受け取らない | 上位から値を渡す口がない | 関数シグネチャを確認 |
477
477
 
@@ -493,12 +493,12 @@ export async function executeWorkflow(config, cwd, task, options?) {
493
493
 
494
494
  | パターン | 問題 | 検出方法 |
495
495
  |---------|------|---------|
496
- | 呼び出し元がTTY必須なのに関数内でTTYチェック | 到達しない分岐が残る | grep で全呼び出し元の前提条件を確認 |
496
+ | 呼び出し元がTTY必須なのに関数内でTTYチェック | 到達しない分岐が残る | 全呼び出し元の前提条件を確認 |
497
497
  | 呼び出し元がnullチェック済みなのに再度nullガード | 冗長な防御 | 呼び出し元の制約を追跡 |
498
498
  | 呼び出し元が型で制約しているのにランタイムチェック | 型安全を信頼していない | TypeScriptの型制約を確認 |
499
499
 
500
500
  検証手順:
501
- 1. 防御的な条件分岐(TTYチェック、nullガード等)を見つけたら、grep で全呼び出し元を確認
501
+ 1. 防御的な条件分岐(TTYチェック、nullガード等)を見つけたら、全呼び出し元を確認
502
502
  2. 全呼び出し元がその条件を既に保証しているなら、防御は不要 → REJECT
503
503
  3. 一部の呼び出し元が保証していない場合は、防御を残す
504
504
 
@@ -205,6 +205,54 @@ data class OrderCancelledEvent(
205
205
  - 適切: `ShippingAddressChanged` → 意図が明確
206
206
  - 粗すぎ: `OrderModified` → 何が変わったか不明
207
207
 
208
+ ## Event Evolution
209
+
210
+ イベントは永続化済みの契約であり、現在のイベント型を変えた場合でも過去イベントを再生できなければならない。旧イベントの読み替えはイベント本体やドメインロジックではなく、イベントストアから復元する境界の upcaster / migration 層で行う。
211
+
212
+ | 基準 | 判定 |
213
+ |------|------|
214
+ | 永続化済みイベントの型・フィールドを変更したのに変換経路がない | REJECT |
215
+ | 現行イベント型に旧フィールド名の alias や互換用プロパティを残す | REJECT。履歴互換は upcaster に分離 |
216
+ | Aggregate や apply が旧イベント形式を直接解釈する | REJECT。再生前に現行イベントへ変換する |
217
+ | イベントに「変更前の値」を互換目的で追加する | REJECT。イベントは発生後の事実を表す |
218
+ | upcaster が旧 payload を現行イベントの意味へ変換する | OK |
219
+ | 旧 payload から現行イベントへ変換できることをテストしている | OK |
220
+
221
+ イベント進化で分ける責務:
222
+
223
+ | 責務 | 置き場所 |
224
+ |------|----------|
225
+ | 現行イベントの意味とフィールド | イベント型 |
226
+ | 旧 payload の読み替え | upcaster / migration 層 |
227
+ | イベント再生による状態復元 | Aggregate の `apply` |
228
+ | 旧イベントから現行イベントへ変換できることの保証 | upcaster テスト |
229
+
230
+ ```kotlin
231
+ // NG - 現行イベント型に旧フィールド互換を混ぜる
232
+ data class OrderAssignedEvent(
233
+ val orderId: String,
234
+ @JsonAlias("assigneeId")
235
+ val assigneeIds: List<String>
236
+ )
237
+
238
+ // OK - 現行イベント型は現行契約だけを表す
239
+ data class OrderAssignedEvent(
240
+ val orderId: String,
241
+ val assigneeIds: List<String>
242
+ )
243
+ ```
244
+
245
+ ```kotlin
246
+ // OK - 旧 payload を upcaster で現行 payload へ変換する
247
+ when (eventType) {
248
+ OrderAssignedEvent::class.java.typeName -> {
249
+ event.moveTextFieldToArray("assigneeId", "assigneeIds")
250
+ }
251
+ }
252
+ ```
253
+
254
+ 旧イベント型そのものをアプリケーションコードに残すかどうかは、利用フレームワークと運用方針で決める。一般には「旧型を通常のドメインイベントとして扱う」のではなく、「旧 serialized type と payload を upcaster の入力契約としてテストする」方が、現行モデルを汚さずに済む。
255
+
208
256
  ## コマンドハンドラ
209
257
 
210
258
  | 基準 | 判定 |
@@ -185,6 +185,19 @@ const Parent = () => {
185
185
  | useEffectの依存配列が不適切 | REJECT |
186
186
  | 初期取得が不安定な Context/Provider 関数参照に結び付いている | REJECT |
187
187
 
188
+ ### 正規状態と派生状態
189
+
190
+ state にはユーザー入力、サーバーデータ、UIの一時状態などの正規状態を保持する。正規状態から計算できる表示値、集計値、選択状態、並び替え結果、グルーピング結果は派生値として扱い、独立した state として保持しない。
191
+
192
+ | 基準 | 判定 |
193
+ |------|------|
194
+ | ある state から常に計算できる値を別 state として保持している | REJECT |
195
+ | 複数の state フィールド間に常時同期が必要な不変条件がある | REJECT |
196
+ | 表示ラベル、件数、合計、全選択状態、並び替え結果、グルーピング結果を正規 state として保持している | REJECT |
197
+ | API送信、保存、差分判定が正規 state ではなく派生 state に依存している | REJECT |
198
+ | 正規 state だけを保持し、表示・集計・判定は selector、render、useMemo で導出している | OK |
199
+ | 外部契約で必要な派生値を、送信・保存の境界で正規 state から生成している | OK |
200
+
188
201
  状態配置の判断基準:
189
202
 
190
203
  | 状態の性質 | 推奨配置 |
@@ -11,6 +11,7 @@
11
11
  |------|------|------|
12
12
  | コンポーネント設計 | ✅ | - |
13
13
  | 状態管理 | ✅ | - |
14
+ | 正規状態と派生状態 | ✅ | - |
14
15
  | パフォーマンス | ✅ | - |
15
16
  | アクセシビリティ | ✅ | - |
16
17
  | 型安全性 | ✅ | - |
@@ -169,6 +169,25 @@ Legacy対応の判定基準:
169
169
  - `.transform()` による正規化、`LEGACY_*_MAP` のようなマッピング、`@deprecated` な型定義は追加しない
170
170
  - 新しい値のみをサポートし、シンプルに保つ
171
171
 
172
+ ### 関数オブジェクトによる過剰抽象化
173
+
174
+ AIは少数の具体分岐を、設定配列・関数オブジェクト・汎用ループに置き換えて「拡張しやすく」見せがちである。問題は Strategy ではなく、概念名を与えずに差分をデータへ隠すこと。業務概念として名前が付き、差し替え点が明確になる Strategy は有効である。
175
+
176
+ | パターン | 例 | 判定 |
177
+ |---------|-----|------|
178
+ | 1箇所でしか使わない処理設定配列 | `[{ kind, fields, removedFields }]` を loop で処理 | REJECT |
179
+ | 削除・副作用・例外条件が設定オブジェクトに隠れる | 設定値を読まないと破壊的変更が分からない | REJECT |
180
+ | 分岐ごとの処理が1-3行で完結するのに関数オブジェクト化 | `handlers[type]()` だけが増える | REJECT |
181
+ | Strategy が業務概念を表し、実装差し替えの境界を明確にする | `TaxPolicy`, `PaymentMethod`, `RetryStrategy` | OK |
182
+ | 分岐数が多く、処理形が同じで、今後も追加される | handler map を検討 | OK |
183
+
184
+ 検証アプローチ:
185
+ 1. 追加された配列・Map・Strategy・関数オブジェクトの使用箇所を grep する
186
+ 2. 使用箇所が1つなら、明示分岐の方が読みやすいか確認する
187
+ 3. 設定オブジェクトに副作用・削除対象・互換処理が隠れていないか確認する
188
+ 4. ドメイン上の意味が分岐名で十分に表せるなら `when` / `switch` を優先する
189
+ 5. 概念として名前を付けることで理解が進むなら Strategy を許容する
190
+
172
191
  ## 早すぎるキャッシュ戦略の導入
173
192
 
174
193
  AIはパフォーマンスを「改善」するためにキャッシュ機構を先回りで導入しがちである。明示的に要求されるまでキャッシュ戦略は追加しない。
@@ -14,6 +14,7 @@
14
14
  | ボーイスカウト | 触った箇所は少し改善して去る |
15
15
  | Fail Fast | エラーは早期に検出。握りつぶさない |
16
16
  | プロジェクトスクリプト優先 | ツール実行はプロジェクト定義のスクリプトを使う。直接実行は最後の手段 |
17
+ | 状態の正規化 | 同じ事実を複数の状態として保持しない |
17
18
 
18
19
  ## フォールバック・デフォルト引数の禁止
19
20
 
@@ -183,6 +184,41 @@ const handlers = { A: handleA, B: handleB, C: handleC };
183
184
  handlers[type]?.();
184
185
  ```
185
186
 
187
+ ### 抽象化しすぎない
188
+
189
+ 抽象化は重複や変更軸を減らすだけでなく、概念に名前を与えて理解しやすくするためにも使う。ただし、数件の具体処理を「設定オブジェクト + 関数オブジェクト + ループ」に変換して、業務上の違いが読みづらくなるだけなら抽象化ではない。
190
+
191
+ | 基準 | 判定 |
192
+ |------|------|
193
+ | 少数の分岐がイベント種別・状態・業務概念ごとに異なる | `when` / `switch` で明示する |
194
+ | 同じ処理を同じ引数構造で3箇所以上繰り返す | 抽象化を検討 |
195
+ | 1箇所でしか使わない設定配列・関数オブジェクト | REJECT。まず明示分岐 |
196
+ | 設定オブジェクトを読まないと副作用や削除対象が分からない | REJECT |
197
+ | Strategy が業務概念に名前を与え、複数実装の差し替え点を明確にしている | OK |
198
+ | 分岐名がドメイン概念として読める | OK |
199
+
200
+ ```typescript
201
+ // ❌ 過剰抽象化 - 何が起きるかを設定配列とループの両方から読む必要がある
202
+ const operations = [
203
+ { kind: 'create', normalize: ['owner'], remove: [] },
204
+ { kind: 'revise', normalize: ['owner'], remove: ['legacyOwner'] },
205
+ ]
206
+ for (const operation of operations) {
207
+ applyOperation(record, operation)
208
+ }
209
+
210
+ // ✅ 分岐ごとの意味が重要なら明示する
211
+ switch (record.kind) {
212
+ case 'create':
213
+ normalizeOwner(record)
214
+ break
215
+ case 'revise':
216
+ removeLegacyOwner(record)
217
+ normalizeOwner(record)
218
+ break
219
+ }
220
+ ```
221
+
186
222
  ### 抽象度を揃える
187
223
 
188
224
  1つの関数内では同じ粒度の処理を並べる。詳細な処理は別関数に切り出す。「何をするか」と「どうやるか」を混ぜない。
@@ -319,11 +355,56 @@ return storage.upload(file, options)
319
355
  | 再実行条件が URL・フィルタ・明示的更新操作などの仕様に対応している | OK |
320
356
  | 初期化と再取得のトリガーを分けて設計している | OK |
321
357
 
358
+ ## 契約変更の整合性
359
+
360
+ 型、インターフェース、API、設定スキーマ、永続化形式、イベント、ファイル形式など、他のコードや利用者が依存する契約を変更する場合は、定義側・生成側・利用側・検証側を同じ変更で整合させる。
361
+
362
+ | 基準 | 判定 |
363
+ |------|------|
364
+ | 契約定義だけを変更し、呼び出し元・生成元・読み取り側を更新していない | REJECT |
365
+ | 新しい引数・フィールド・設定値を追加したが、利用側へ値を渡す経路がない | REJECT |
366
+ | 文書化されたスキーマや設定形式に存在しないフィールド・値を使っている | REJECT |
367
+ | モック、fixture、テストデータが実際の契約と異なる形を返している | REJECT |
368
+ | 契約変更と呼び出し元・生成元・テスト更新が同じ変更で行われている | OK |
369
+
322
370
  ## 状態管理
323
371
 
324
372
  - 状態は使う場所に閉じ込める
325
373
  - 子は状態を直接変更しない(イベントを親に通知)
326
374
  - 状態の流れは単方向
375
+ - 正規状態から計算できる派生値を、独立した状態として保持しない
376
+ - 複数フィールド間に常時同期が必要なら、状態モデルを見直す
377
+
378
+ | 基準 | 判定 |
379
+ |------|------|
380
+ | ある状態から常に計算できる値を別の状態として保持している | REJECT |
381
+ | 複数の状態間に「常に一致すべき」不変条件がある | REJECT |
382
+ | 保存・送信・差分判定が派生値に依存している | REJECT |
383
+ | 正規状態だけを保持し、派生値は利用箇所や境界で生成している | OK |
384
+
385
+ ## 未完成コード
386
+
387
+ TODO/FIXME、空実装、スタブ、コメントアウトされた旧実装を、完成した実装の代わりに残さない。今必要な処理は今実装し、不要な処理は削除する。
388
+
389
+ | 基準 | 判定 |
390
+ |------|------|
391
+ | Issue番号・外部制約・除去条件のない TODO/FIXME | REJECT |
392
+ | 認可、バリデーション、永続化、エラー処理を TODO で先送りしている | REJECT |
393
+ | 空実装、`return null`、`pass`、コメントアウトされた旧実装が残っている | REJECT |
394
+ | 外部依存や既知バグにより今は実装不能で、Issue番号と除去条件が明記されている | 許容 |
395
+ | 将来拡張のためだけの TODO | REJECT |
396
+
397
+ ## 機密情報の扱い
398
+
399
+ パスワード、トークン、APIキー、セッションID、認証ヘッダ、個人情報などの機密情報をコード、ログ、エラーレスポンス、テスト出力に露出させない。
400
+
401
+ | 基準 | 判定 |
402
+ |------|------|
403
+ | 機密情報をソースコードや設定ファイルにハードコードしている | REJECT |
404
+ | ログ、例外、エラーレスポンス、テストスナップショットに機密情報が含まれる | REJECT |
405
+ | リクエストやDTO全体をログ出力し、機密フィールドが混入しうる | REJECT |
406
+ | 機密フィールドを明示的に除外またはマスクしている | OK |
407
+ | デバッグログに個人情報が含まれるが本番では無効化される想定 | 警告。設定ミスで露出しないか確認 |
327
408
 
328
409
  ## エラーハンドリング
329
410
 
@@ -486,10 +567,11 @@ function replaceFacetRefs(text: string): string {
486
567
  - **フォールバックは原則禁止** - `?? 'unknown'`、`|| 'default'`、`try-catch` で握りつぶすフォールバックを書かない。エラーは上位に伝播させる。どうしても必要な場合はコメントで理由を明記する
487
568
  - **説明コメント** - コードで意図を表現する。What/How のコメントは書かない
488
569
  - **未使用コード** - 「念のため」のコードは書かない
570
+ - **未完成コード** - Issue番号・外部制約・除去条件のない TODO/FIXME、空実装、コメントアウト旧実装を残さない
489
571
  - **any型** - 型安全を破壊しない
490
572
  - **オブジェクト/配列の直接変更** - スプレッド演算子で新規作成
491
573
  - **console.log** - 本番コードに残さない
492
- - **機密情報のハードコーディング**
574
+ - **機密情報の露出** - ハードコード、ログ、エラーレスポンス、テスト出力に機密情報を含めない
493
575
  - **契約文字列のハードコード散在** - ファイル名・設定キー名は定数で1箇所管理。リテラルの散在は禁止
494
576
  - **各所でのtry-catch** - エラーは上位層で一元処理
495
577
  - **後方互換・Legacy対応の自発的追加** - 明示的な指示がない限り不要
@@ -497,6 +579,6 @@ function replaceFacetRefs(text: string): string {
497
579
  - **リファクタリング後の旧コード残存** - 置き換えたコード・エクスポートは削除する。明示的に残すよう指示されない限り残さない
498
580
  - **安全機構を迂回するワークアラウンド** - 根本修正が正しいなら追加の迂回は不要
499
581
  - **プロジェクトスクリプトを迂回するツール直接実行** - `npx tool` 等の直接実行は lockfile を迂回しバージョン不一致を起こす。プロジェクトが定義したスクリプト(npm scripts, Makefile 等)を探して使う。見つからない場合のみ直接実行を検討する
500
- - **配線忘れ** - 新しいパラメータやフィールドを追加したら、grep で呼び出しチェーン全体を確認する。呼び出し元が値を渡していないと `options.xxx ?? fallback` で常にフォールバックが使われる
582
+ - **配線忘れ** - 新しいパラメータやフィールドを追加したら、呼び出しチェーン全体を検索して確認する。呼び出し元が値を渡していないと `options.xxx ?? fallback` で常にフォールバックが使われる
501
583
  - **冗長な条件分岐** - if/else で同一関数を呼び出し引数の差異のみの場合、三項演算子やスプレッド構文で統一する
502
- - **コピペパターン** - 新しいコードを書く前に同種の既存実装を grep で確認し、既存パターンに合わせる。独自の書き方を持ち込まない
584
+ - **コピペパターン** - 新しいコードを書く前に同種の既存実装を検索し、既存パターンに合わせる。独自の書き方を持ち込まない
@@ -22,7 +22,9 @@
22
22
 
23
23
  | パターン | 判定 |
24
24
  |---------|------|
25
- | TODO/FIXMEの放置 | 警告 |
25
+ | Issue番号・外部制約・除去条件のない TODO/FIXME | REJECT |
26
+ | Issue番号・外部制約・除去条件がある TODO/FIXME | 警告 |
27
+ | 空実装、スタブ、コメントアウトされた旧実装の放置 | REJECT |
26
28
  | 理由なしの @ts-ignore, @ts-expect-error | 警告 |
27
29
  | 理由なしの eslint-disable | 警告 |
28
30
  | 非推奨APIの使用 | 警告 |
@@ -37,13 +37,15 @@
37
37
  - 未使用コード(「念のため」のコード)
38
38
  - オブジェクト/配列の直接変更
39
39
  - エラーの握りつぶし(空の catch)
40
- - TODO コメント(Issue化されていないもの)
40
+ - Issue番号・外部制約・除去条件のない TODO/FIXME
41
41
  - 本質的に同じロジックの重複(DRY違反)
42
42
  - 同じことをするメソッドの増殖(構成の違いで吸収すべき)
43
43
  - 特定実装の汎用層への漏洩(汎用層に特定実装のインポート・分岐がある)
44
44
  - 内部実装のパブリック API エクスポート(インフラ層の関数・内部クラスが公開されている)
45
45
  - リファクタリングで置き換えられた旧コード・旧エクスポートの残存
46
46
  - 関連フィールドのクロスバリデーション欠如(意味的に結合した設定値の不変条件が未検証)
47
+ - 契約変更後の呼び出し元・生成元・テストデータの更新漏れ
48
+ - ログ、エラーレスポンス、テスト出力への機密情報露出
47
49
 
48
50
  DRY違反の修正案は、単に共通化を求めるだけでは不十分とする。以下を満たさない共通化案は不適切であり、別案を検討する。
49
51
 
@@ -59,7 +61,7 @@ DRY違反の修正案は、単に共通化を求めるだけでは不十分と
59
61
  - テストが実装の詳細に依存
60
62
  - 関数/ファイルが複雑すぎる
61
63
  - 命名が不明確
62
- - TODO/FIXME の放置(Issue番号付きは許容)
64
+ - Issue番号・外部制約・除去条件がある TODO/FIXME
63
65
  - 理由なしの `@ts-ignore`、`eslint-disable`
64
66
 
65
67
  ### APPROVE(承認)
@@ -73,7 +75,7 @@ DRY違反の修正案は、単に共通化を求めるだけでは不十分と
73
75
  | やるべきこと | やってはいけないこと |
74
76
  |-------------|-------------------|
75
77
  | ファイルを開いて実コードを確認 | 「修正済みのはず」と思い込む |
76
- | grep で呼び出し元・使用箇所を検索 | 記憶に基づいて指摘する |
78
+ | 呼び出し元・使用箇所を検索 | 記憶に基づいて指摘する |
77
79
  | 型定義・スキーマを突合 | 推測でデッドコードと判断する |
78
80
  | 生成ファイル(レポート等)とソースを区別 | 生成ファイルをソースコードとしてレビュー |
79
81
  | ツール出力が正常に読めることを確認 | 文字化け・異常文字を含む出力に基づいて指摘する |
@@ -11,6 +11,7 @@
11
11
  | 振る舞いを検証 | 実装の詳細ではなく振る舞いをテストする |
12
12
  | 独立性 | 他のテストや実行順序に依存しない |
13
13
  | 再現性 | 時間やランダム性に依存せず、毎回同じ結果 |
14
+ | 非実行資産を固定しない | 実行時の振る舞いを定義しない本文や章構成を CI の失敗条件にしない |
14
15
 
15
16
  ## カバレッジ基準
16
17
 
@@ -32,6 +33,23 @@
32
33
 
33
34
  **注意:** デザイン参照が指定されている場合、UIの見た目の検証は中優先度に格上げする。デザイン忠実再現ポリシーを参照。
34
35
 
36
+ ## 非実行資産のテスト
37
+
38
+ 説明文、ガイド、README、Markdown ドキュメントなど、実行時の振る舞いを定義しない非実行資産の本文・見出し・構成を固定するテストは原則禁止。
39
+ これらは表現改善や整理で頻繁に変わるため、本文差分を CI 失敗条件にすると保守コストが高くなる。
40
+
41
+ | 基準 | 判定 |
42
+ |------|------|
43
+ | 非実行資産の本文・見出し・章構成の一致検証 | REJECT |
44
+ | 表記ゆれ検出だけを目的に非実行資産全体を走査するテスト | REJECT |
45
+ | 削除・統合され得る説明ファイルの存在前提テスト | REJECT |
46
+ | 実行契約を持たない docs-only 変更にテストを追加する | REJECT |
47
+ | CLI例・設定例・生成物など、実行可能または機械処理される契約の検証 | OK |
48
+ | schema、設定、コード、生成器など実行時挙動に関わる契約検証 | OK |
49
+ | 実行契約を持たない docs-only 変更でテストを追加しない判断 | OK |
50
+
51
+ 非実行資産の変更確認は、必要に応じてレビュー、Markdown lint、リンクチェック、サンプルコマンドの実行で行う。
52
+
35
53
  ## テスト構造: Given-When-Then
36
54
 
37
55
  ```typescript
@@ -57,6 +75,18 @@ test('ユーザーが存在しない場合、NotFoundエラーを返す', async
57
75
  | 明確性 | 失敗時に原因が分かる | 失敗しても原因不明 |
58
76
  | 焦点 | 1テスト1概念 | 複数の関心事が混在 |
59
77
 
78
+ ## テストデータとフィクスチャ
79
+
80
+ テストデータは、テストごとに必要最小限の事実を明示して生成する。共有フィクスチャの破壊的変更や、実契約と異なるモックはテストの信頼性を下げる。
81
+
82
+ | 基準 | 判定 |
83
+ |------|------|
84
+ | テスト間で共有する fixture を変更して使い回している | REJECT |
85
+ | モック、fixture、factory が実際の型・API契約と異なる形を返している | REJECT |
86
+ | テストごとに巨大な全項目 fixture を直書きしている | 警告。factory 化を検討 |
87
+ | factory でデフォルトを用意し、テストに関係するフィールドだけ上書きしている | OK |
88
+ | 契約変更時に fixture、mock、snapshot を同じ変更で更新している | OK |
89
+
60
90
  ### 命名
61
91
 
62
92
  テスト名は期待される振る舞いを記述する。`should {期待する振る舞い} when {条件}` パターンを使う。
@@ -125,8 +155,11 @@ DataGrid、日付ピッカー、仮想リスト、チャートなど、外部 UI
125
155
 
126
156
  ## E2Eテスト基準
127
157
 
158
+ E2E は、利用者が実際に入る起点から設計する。ドキュメント上の想定だけでなく、route、command、endpoint、navigation、button、external callback などコード上の入口を基準にする。
159
+
128
160
  | 基準 | 判定 |
129
161
  |------|------|
162
+ | 起点を確認せず、想像上の操作フローだけで E2E を書いている | REJECT |
130
163
  | 外部API呼び出しをモックせず本番APIを叩く | REJECT。テストの再現性が失われる |
131
164
  | テスト対象のコア処理をモックする | REJECT。E2Eの意味がなくなる |
132
165
  | 固定 sleep でタイミングを合わせる | REJECT。状態ベースの待機を使う |
@@ -117,7 +117,11 @@ steps:
117
117
  - type: enqueue_task
118
118
  mode: new
119
119
  workflow: takt-default
120
- base_branch: improve
120
+ base_branch:
121
+ name: improve
122
+ create_if_missing:
123
+ from: main
124
+ push: true
121
125
  task: "{structured:plan_from_issue.task_markdown}"
122
126
  issue: "{structured:plan_from_issue.issue}"
123
127
  worktree:
@@ -187,7 +191,11 @@ steps:
187
191
  - type: enqueue_task
188
192
  mode: new
189
193
  workflow: takt-default
190
- base_branch: improve
194
+ base_branch:
195
+ name: improve
196
+ create_if_missing:
197
+ from: main
198
+ push: true
191
199
  task: "{structured:plan_fresh_improvement.task_markdown}"
192
200
  issue: "{structured:plan_fresh_improvement.issue}"
193
201
  worktree:
@@ -255,7 +263,11 @@ steps:
255
263
  mode: from_pr
256
264
  pr: "{context:route_context.selected_pr.number}"
257
265
  workflow: takt-default
258
- base_branch: improve
266
+ base_branch:
267
+ name: improve
268
+ create_if_missing:
269
+ from: main
270
+ push: true
259
271
  task: "{structured:plan_from_existing_pr.task_markdown}"
260
272
  rules:
261
273
  - when: effect.enqueue_from_pr.enqueue_task.success == true
@@ -296,7 +308,11 @@ steps:
296
308
  mode: from_pr
297
309
  pr: "{context:route_context.selected_pr.number}"
298
310
  workflow: takt-default
299
- base_branch: improve
311
+ base_branch:
312
+ name: improve
313
+ create_if_missing:
314
+ from: main
315
+ push: true
300
316
  task: |
301
317
  PR の base branch 取り込み時に発生したコンフリクトを解消すること。
302
318
  対象 PR: {context:route_context.selected_pr.number}
@@ -1 +1 @@
1
- {"version":3,"file":"decompose-task-usecase.d.ts","sourceRoot":"","sources":["../../src/agents/decompose-task-usecase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAY,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAUlF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC/C,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE;QAC/B,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,cAAc,EAAE,CAAC,CA6B3B;AAED,wBAAsB,gBAAgB,CACpC,mBAAmB,EAAE,MAAM,EAC3B,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACjF,WAAW,EAAE,MAAM,EAAE,EACrB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA+B5B"}
1
+ {"version":3,"file":"decompose-task-usecase.d.ts","sourceRoot":"","sources":["../../src/agents/decompose-task-usecase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAY,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAWlF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC/C,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE;QAC/B,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,cAAc,EAAE,CAAC,CA6B3B;AAED,wBAAsB,gBAAgB,CACpC,mBAAmB,EAAE,MAAM,EAC3B,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACjF,WAAW,EAAE,MAAM,EAAE,EACrB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA+B5B"}
@@ -1,6 +1,7 @@
1
1
  import { runAgent } from './runner.js';
2
2
  import { parseParts } from '../core/workflow/engine/task-decomposer.js';
3
3
  import { loadDecompositionSchema, loadMorePartsSchema } from '../infra/resources/schema-loader.js';
4
+ import { buildMaxTurnsOption } from './provider-call-options.js';
4
5
  import { buildDecomposePrompt, buildMorePartsPrompt, toMorePartsResponse, toPartDefinitions, } from './team-leader-structured-output.js';
5
6
  export const TEAM_LEADER_MAX_TURNS = 5;
6
7
  export async function decomposeTask(instruction, maxParts, options) {
@@ -14,7 +15,7 @@ export async function decomposeTask(instruction, maxParts, options) {
14
15
  resolvedProvider: options.resolvedProvider,
15
16
  allowedTools: [],
16
17
  permissionMode: 'readonly',
17
- maxTurns: TEAM_LEADER_MAX_TURNS,
18
+ ...buildMaxTurnsOption(options.provider, options.resolvedProvider, TEAM_LEADER_MAX_TURNS),
18
19
  outputSchema: loadDecompositionSchema(maxParts),
19
20
  onStream: options.onStream,
20
21
  workflowMeta: options.workflowMeta,
@@ -42,7 +43,7 @@ export async function requestMoreParts(originalInstruction, allResults, existing
42
43
  resolvedProvider: options.resolvedProvider,
43
44
  allowedTools: [],
44
45
  permissionMode: 'readonly',
45
- maxTurns: TEAM_LEADER_MAX_TURNS,
46
+ ...buildMaxTurnsOption(options.provider, options.resolvedProvider, TEAM_LEADER_MAX_TURNS),
46
47
  outputSchema: loadMorePartsSchema(maxAdditionalParts),
47
48
  onStream: options.onStream,
48
49
  workflowMeta: options.workflowMeta,
@@ -1 +1 @@
1
- {"version":3,"file":"decompose-task-usecase.js","sourceRoot":"","sources":["../../src/agents/decompose-task-usecase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decompose-task-usecase.js","sourceRoot":"","sources":["../../src/agents/decompose-task-usecase.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"judge-status-usecase.d.ts","sourceRoot":"","sources":["../../src/agents/judge-status-usecase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAK5D,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QACrB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,EAAE,mBAAmB,GAAG,YAAY,GAAG,UAAU,CAAC;QACxD,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,IAAI,CAAC;IACX,0BAA0B,CAAC,EAAE,CAAC,WAAW,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,kBAAkB,EAAE,OAAO,EAC3B,UAAU,EAAE,kBAAkB,EAC9B,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAChD,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CA4BxC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,IAAI,CAAC;CACZ;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAsB,WAAW,CAC/B,qBAAqB,EAAE,MAAM,EAC7B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAqG5B"}
1
+ {"version":3,"file":"judge-status-usecase.d.ts","sourceRoot":"","sources":["../../src/agents/judge-status-usecase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAM5D,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QACrB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,EAAE,mBAAmB,GAAG,YAAY,GAAG,UAAU,CAAC;QACxD,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,IAAI,CAAC;IACX,0BAA0B,CAAC,EAAE,CAAC,WAAW,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,kBAAkB,EAAE,OAAO,EAC3B,UAAU,EAAE,kBAAkB,EAC9B,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAChD,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CA4BxC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,IAAI,CAAC;CACZ;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAsB,WAAW,CAC/B,qBAAqB,EAAE,MAAM,EAC7B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAqG5B"}