takt 0.41.0 → 0.43.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 (541) hide show
  1. package/README.md +59 -28
  2. package/builtins/en/config.yaml +9 -1
  3. package/builtins/en/facets/instructions/dual-team-leader-implement.md +7 -2
  4. package/builtins/en/facets/instructions/fix-maintenance.md +43 -0
  5. package/builtins/en/facets/instructions/implement-maintenance.md +72 -0
  6. package/builtins/en/facets/instructions/plan-maintenance.md +51 -0
  7. package/builtins/en/facets/instructions/review-coding.md +8 -0
  8. package/builtins/en/facets/instructions/supervise-maintenance.md +110 -0
  9. package/builtins/en/facets/instructions/team-leader-implement.md +6 -1
  10. package/builtins/en/facets/instructions/write-tests-first.md +5 -0
  11. package/builtins/en/facets/instructions/write-tests-maintenance.md +45 -0
  12. package/builtins/en/facets/knowledge/architecture.md +18 -13
  13. package/builtins/en/facets/knowledge/cqrs-es.md +48 -0
  14. package/builtins/en/facets/knowledge/existing-system.md +70 -0
  15. package/builtins/en/facets/knowledge/frontend.md +25 -0
  16. package/builtins/en/facets/knowledge/react.md +35 -0
  17. package/builtins/en/facets/output-contracts/coding-review.md +41 -0
  18. package/builtins/en/facets/output-contracts/frontend-review.md +1 -0
  19. package/builtins/en/facets/output-contracts/maintenance-scope.md +29 -0
  20. package/builtins/en/facets/personas/coding-reviewer.md +27 -0
  21. package/builtins/en/facets/personas/dual-supervisor.md +1 -1
  22. package/builtins/en/facets/policies/ai-antipattern.md +59 -0
  23. package/builtins/en/facets/policies/coding.md +85 -3
  24. package/builtins/en/facets/policies/existing-system-respect.md +73 -0
  25. package/builtins/en/facets/policies/qa.md +3 -1
  26. package/builtins/en/facets/policies/review.md +25 -12
  27. package/builtins/en/facets/policies/testing.md +33 -0
  28. package/builtins/en/workflow-categories.yaml +1 -0
  29. package/builtins/en/workflows/auto-improvement-loop.yaml +20 -4
  30. package/builtins/en/workflows/default-peer-review.yaml +25 -3
  31. package/builtins/en/workflows/frontend-maintenance.yaml +499 -0
  32. package/builtins/en/workflows/peer-review.yaml +23 -1
  33. package/builtins/en/workflows/review-fix-takt-default.yaml +30 -2
  34. package/builtins/ja/config.yaml +9 -1
  35. package/builtins/ja/facets/instructions/dual-team-leader-implement.md +7 -2
  36. package/builtins/ja/facets/instructions/fix-maintenance.md +43 -0
  37. package/builtins/ja/facets/instructions/implement-maintenance.md +72 -0
  38. package/builtins/ja/facets/instructions/plan-maintenance.md +51 -0
  39. package/builtins/ja/facets/instructions/review-coding.md +8 -0
  40. package/builtins/ja/facets/instructions/supervise-maintenance.md +110 -0
  41. package/builtins/ja/facets/instructions/team-leader-implement.md +6 -1
  42. package/builtins/ja/facets/instructions/write-tests-first.md +5 -0
  43. package/builtins/ja/facets/instructions/write-tests-maintenance.md +45 -0
  44. package/builtins/ja/facets/knowledge/architecture.md +18 -13
  45. package/builtins/ja/facets/knowledge/cqrs-es.md +48 -0
  46. package/builtins/ja/facets/knowledge/existing-system.md +70 -0
  47. package/builtins/ja/facets/knowledge/frontend.md +25 -0
  48. package/builtins/ja/facets/knowledge/react.md +35 -0
  49. package/builtins/ja/facets/output-contracts/coding-review.md +41 -0
  50. package/builtins/ja/facets/output-contracts/frontend-review.md +1 -0
  51. package/builtins/ja/facets/output-contracts/maintenance-scope.md +29 -0
  52. package/builtins/ja/facets/personas/coding-reviewer.md +27 -0
  53. package/builtins/ja/facets/personas/dual-supervisor.md +2 -2
  54. package/builtins/ja/facets/policies/ai-antipattern.md +59 -0
  55. package/builtins/ja/facets/policies/coding.md +85 -3
  56. package/builtins/ja/facets/policies/existing-system-respect.md +73 -0
  57. package/builtins/ja/facets/policies/qa.md +3 -1
  58. package/builtins/ja/facets/policies/review.md +25 -12
  59. package/builtins/ja/facets/policies/testing.md +33 -0
  60. package/builtins/ja/workflow-categories.yaml +1 -0
  61. package/builtins/ja/workflows/auto-improvement-loop.yaml +20 -4
  62. package/builtins/ja/workflows/default-peer-review.yaml +25 -3
  63. package/builtins/ja/workflows/frontend-maintenance.yaml +499 -0
  64. package/builtins/ja/workflows/peer-review.yaml +23 -1
  65. package/builtins/ja/workflows/review-fix-takt-default.yaml +30 -2
  66. package/builtins/skill/references/yaml-schema.md +8 -3
  67. package/builtins/skill-codex/references/yaml-schema.md +8 -3
  68. package/dist/agents/decompose-task-usecase.d.ts.map +1 -1
  69. package/dist/agents/decompose-task-usecase.js +3 -2
  70. package/dist/agents/decompose-task-usecase.js.map +1 -1
  71. package/dist/agents/judge-status-usecase.d.ts.map +1 -1
  72. package/dist/agents/judge-status-usecase.js +4 -3
  73. package/dist/agents/judge-status-usecase.js.map +1 -1
  74. package/dist/agents/provider-call-options.d.ts +4 -0
  75. package/dist/agents/provider-call-options.d.ts.map +1 -0
  76. package/dist/agents/provider-call-options.js +9 -0
  77. package/dist/agents/provider-call-options.js.map +1 -0
  78. package/dist/agents/runner.js +1 -1
  79. package/dist/agents/runner.js.map +1 -1
  80. package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts.map +1 -1
  81. package/dist/agents/structured-caller/prompt-based-structured-caller.js +5 -4
  82. package/dist/agents/structured-caller/prompt-based-structured-caller.js.map +1 -1
  83. package/dist/agents/team-leader-structured-output.d.ts.map +1 -1
  84. package/dist/agents/team-leader-structured-output.js +21 -0
  85. package/dist/agents/team-leader-structured-output.js.map +1 -1
  86. package/dist/app/cli/commands.js +7 -1
  87. package/dist/app/cli/commands.js.map +1 -1
  88. package/dist/app/cli/program.js +1 -1
  89. package/dist/app/cli/program.js.map +1 -1
  90. package/dist/app/cli/routing.d.ts.map +1 -1
  91. package/dist/app/cli/routing.js +8 -1
  92. package/dist/app/cli/routing.js.map +1 -1
  93. package/dist/core/models/assistant-config.d.ts +4 -0
  94. package/dist/core/models/assistant-config.d.ts.map +1 -0
  95. package/dist/core/models/assistant-config.js +4 -0
  96. package/dist/core/models/assistant-config.js.map +1 -0
  97. package/dist/core/models/config-schemas.d.ts +160 -9
  98. package/dist/core/models/config-schemas.d.ts.map +1 -1
  99. package/dist/core/models/config-schemas.js +12 -2
  100. package/dist/core/models/config-schemas.js.map +1 -1
  101. package/dist/core/models/config-types.d.ts +30 -4
  102. package/dist/core/models/config-types.d.ts.map +1 -1
  103. package/dist/core/models/index.d.ts +1 -1
  104. package/dist/core/models/index.d.ts.map +1 -1
  105. package/dist/core/models/index.js.map +1 -1
  106. package/dist/core/models/provider-profiles.d.ts +1 -1
  107. package/dist/core/models/provider-profiles.d.ts.map +1 -1
  108. package/dist/core/models/quality-gate-defaults.d.ts +2 -0
  109. package/dist/core/models/quality-gate-defaults.d.ts.map +1 -0
  110. package/dist/core/models/quality-gate-defaults.js +2 -0
  111. package/dist/core/models/quality-gate-defaults.js.map +1 -0
  112. package/dist/core/models/response.d.ts +1 -1
  113. package/dist/core/models/response.d.ts.map +1 -1
  114. package/dist/core/models/response.js +1 -1
  115. package/dist/core/models/response.js.map +1 -1
  116. package/dist/core/models/schema-base.d.ts +80 -3
  117. package/dist/core/models/schema-base.d.ts.map +1 -1
  118. package/dist/core/models/schema-base.js +76 -2
  119. package/dist/core/models/schema-base.js.map +1 -1
  120. package/dist/core/models/types.d.ts +2 -2
  121. package/dist/core/models/types.d.ts.map +1 -1
  122. package/dist/core/models/workflow-provider-options.d.ts +7 -0
  123. package/dist/core/models/workflow-provider-options.d.ts.map +1 -1
  124. package/dist/core/models/workflow-schemas.d.ts +368 -51
  125. package/dist/core/models/workflow-schemas.d.ts.map +1 -1
  126. package/dist/core/models/workflow-system-input-types.d.ts +8 -1
  127. package/dist/core/models/workflow-system-input-types.d.ts.map +1 -1
  128. package/dist/core/models/workflow-system-schemas.d.ts +7 -1
  129. package/dist/core/models/workflow-system-schemas.d.ts.map +1 -1
  130. package/dist/core/models/workflow-system-schemas.js +12 -1
  131. package/dist/core/models/workflow-system-schemas.js.map +1 -1
  132. package/dist/core/models/workflow-types.d.ts +13 -5
  133. package/dist/core/models/workflow-types.d.ts.map +1 -1
  134. package/dist/core/models/workflow-types.js.map +1 -1
  135. package/dist/core/workflow/engine/OptionsBuilder.d.ts +1 -0
  136. package/dist/core/workflow/engine/OptionsBuilder.d.ts.map +1 -1
  137. package/dist/core/workflow/engine/OptionsBuilder.js +9 -4
  138. package/dist/core/workflow/engine/OptionsBuilder.js.map +1 -1
  139. package/dist/core/workflow/engine/ParallelRunner.d.ts +11 -0
  140. package/dist/core/workflow/engine/ParallelRunner.d.ts.map +1 -1
  141. package/dist/core/workflow/engine/ParallelRunner.js +139 -19
  142. package/dist/core/workflow/engine/ParallelRunner.js.map +1 -1
  143. package/dist/core/workflow/engine/TeamLeaderRunner.d.ts.map +1 -1
  144. package/dist/core/workflow/engine/TeamLeaderRunner.js +55 -23
  145. package/dist/core/workflow/engine/TeamLeaderRunner.js.map +1 -1
  146. package/dist/core/workflow/engine/WorkflowEngine.d.ts +1 -0
  147. package/dist/core/workflow/engine/WorkflowEngine.d.ts.map +1 -1
  148. package/dist/core/workflow/engine/WorkflowEngine.js +29 -4
  149. package/dist/core/workflow/engine/WorkflowEngine.js.map +1 -1
  150. package/dist/core/workflow/engine/WorkflowEngineSetup.d.ts.map +1 -1
  151. package/dist/core/workflow/engine/WorkflowEngineSetup.js +2 -0
  152. package/dist/core/workflow/engine/WorkflowEngineSetup.js.map +1 -1
  153. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts +8 -0
  154. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts.map +1 -1
  155. package/dist/core/workflow/engine/WorkflowRunLoop.js +78 -7
  156. package/dist/core/workflow/engine/WorkflowRunLoop.js.map +1 -1
  157. package/dist/core/workflow/engine/team-leader-execution.d.ts +1 -0
  158. package/dist/core/workflow/engine/team-leader-execution.d.ts.map +1 -1
  159. package/dist/core/workflow/engine/team-leader-execution.js +22 -0
  160. package/dist/core/workflow/engine/team-leader-execution.js.map +1 -1
  161. package/dist/core/workflow/engine/team-leader-timeout-fallback.d.ts +13 -0
  162. package/dist/core/workflow/engine/team-leader-timeout-fallback.d.ts.map +1 -0
  163. package/dist/core/workflow/engine/team-leader-timeout-fallback.js +125 -0
  164. package/dist/core/workflow/engine/team-leader-timeout-fallback.js.map +1 -0
  165. package/dist/core/workflow/instruction/InstructionBuilder.d.ts.map +1 -1
  166. package/dist/core/workflow/instruction/InstructionBuilder.js +4 -3
  167. package/dist/core/workflow/instruction/InstructionBuilder.js.map +1 -1
  168. package/dist/core/workflow/observability/workflowSpans.d.ts +28 -0
  169. package/dist/core/workflow/observability/workflowSpans.d.ts.map +1 -0
  170. package/dist/core/workflow/observability/workflowSpans.js +107 -0
  171. package/dist/core/workflow/observability/workflowSpans.js.map +1 -0
  172. package/dist/core/workflow/part-definition-validator.d.ts.map +1 -1
  173. package/dist/core/workflow/part-definition-validator.js +4 -0
  174. package/dist/core/workflow/part-definition-validator.js.map +1 -1
  175. package/dist/core/workflow/permission-profile-resolution.d.ts.map +1 -1
  176. package/dist/core/workflow/permission-profile-resolution.js +1 -0
  177. package/dist/core/workflow/permission-profile-resolution.js.map +1 -1
  178. package/dist/core/workflow/phase-runner.d.ts +1 -3
  179. package/dist/core/workflow/phase-runner.d.ts.map +1 -1
  180. package/dist/core/workflow/phase-runner.js.map +1 -1
  181. package/dist/core/workflow/quality-gates/commandGateMessage.d.ts +4 -0
  182. package/dist/core/workflow/quality-gates/commandGateMessage.d.ts.map +1 -0
  183. package/dist/core/workflow/quality-gates/commandGateMessage.js +84 -0
  184. package/dist/core/workflow/quality-gates/commandGateMessage.js.map +1 -0
  185. package/dist/core/workflow/quality-gates/commandGateRunner.d.ts +3 -0
  186. package/dist/core/workflow/quality-gates/commandGateRunner.d.ts.map +1 -0
  187. package/dist/core/workflow/quality-gates/commandGateRunner.js +242 -0
  188. package/dist/core/workflow/quality-gates/commandGateRunner.js.map +1 -0
  189. package/dist/core/workflow/quality-gates/qualityGateRunner.d.ts +3 -0
  190. package/dist/core/workflow/quality-gates/qualityGateRunner.d.ts.map +1 -0
  191. package/dist/core/workflow/quality-gates/qualityGateRunner.js +29 -0
  192. package/dist/core/workflow/quality-gates/qualityGateRunner.js.map +1 -0
  193. package/dist/core/workflow/quality-gates/types.d.ts +41 -0
  194. package/dist/core/workflow/quality-gates/types.d.ts.map +1 -0
  195. package/dist/core/workflow/quality-gates/types.js +2 -0
  196. package/dist/core/workflow/quality-gates/types.js.map +1 -0
  197. package/dist/core/workflow/report-phase-runner.d.ts.map +1 -1
  198. package/dist/core/workflow/report-phase-runner.js +3 -2
  199. package/dist/core/workflow/report-phase-runner.js.map +1 -1
  200. package/dist/core/workflow/run/run-meta.d.ts +3 -1
  201. package/dist/core/workflow/run/run-meta.d.ts.map +1 -1
  202. package/dist/core/workflow/run/run-meta.js +2 -0
  203. package/dist/core/workflow/run/run-meta.js.map +1 -1
  204. package/dist/core/workflow/run/run-slug.d.ts +2 -0
  205. package/dist/core/workflow/run/run-slug.d.ts.map +1 -0
  206. package/dist/core/workflow/run/run-slug.js +19 -0
  207. package/dist/core/workflow/run/run-slug.js.map +1 -0
  208. package/dist/core/workflow/status-judgment-phase.d.ts.map +1 -1
  209. package/dist/core/workflow/status-judgment-phase.js +7 -3
  210. package/dist/core/workflow/status-judgment-phase.js.map +1 -1
  211. package/dist/core/workflow/system/system-step-effect-runner.d.ts.map +1 -1
  212. package/dist/core/workflow/system/system-step-effect-runner.js +16 -1
  213. package/dist/core/workflow/system/system-step-effect-runner.js.map +1 -1
  214. package/dist/core/workflow/team-leader-continuation-ids.d.ts +3 -0
  215. package/dist/core/workflow/team-leader-continuation-ids.d.ts.map +1 -0
  216. package/dist/core/workflow/team-leader-continuation-ids.js +6 -0
  217. package/dist/core/workflow/team-leader-continuation-ids.js.map +1 -0
  218. package/dist/core/workflow/types.d.ts +7 -1
  219. package/dist/core/workflow/types.d.ts.map +1 -1
  220. package/dist/features/interactive/assistantInitFiles.d.ts +2 -0
  221. package/dist/features/interactive/assistantInitFiles.d.ts.map +1 -0
  222. package/dist/features/interactive/assistantInitFiles.js +110 -0
  223. package/dist/features/interactive/assistantInitFiles.js.map +1 -0
  224. package/dist/features/interactive/conversationLoop.d.ts +5 -1
  225. package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
  226. package/dist/features/interactive/conversationLoop.js +33 -11
  227. package/dist/features/interactive/conversationLoop.js.map +1 -1
  228. package/dist/features/interactive/imageAttachments.d.ts +20 -0
  229. package/dist/features/interactive/imageAttachments.d.ts.map +1 -0
  230. package/dist/features/interactive/imageAttachments.js +75 -0
  231. package/dist/features/interactive/imageAttachments.js.map +1 -0
  232. package/dist/features/interactive/index.d.ts +2 -1
  233. package/dist/features/interactive/index.d.ts.map +1 -1
  234. package/dist/features/interactive/index.js +1 -1
  235. package/dist/features/interactive/index.js.map +1 -1
  236. package/dist/features/interactive/inlineImagePaste.d.ts +21 -0
  237. package/dist/features/interactive/inlineImagePaste.d.ts.map +1 -0
  238. package/dist/features/interactive/inlineImagePaste.js +136 -0
  239. package/dist/features/interactive/inlineImagePaste.js.map +1 -0
  240. package/dist/features/interactive/instructModeTypes.d.ts +23 -0
  241. package/dist/features/interactive/instructModeTypes.d.ts.map +1 -0
  242. package/dist/features/interactive/instructModeTypes.js +2 -0
  243. package/dist/features/interactive/instructModeTypes.js.map +1 -0
  244. package/dist/features/interactive/interactive-summary.d.ts +1 -1
  245. package/dist/features/interactive/interactive-summary.d.ts.map +1 -1
  246. package/dist/features/interactive/interactive-summary.js +4 -3
  247. package/dist/features/interactive/interactive-summary.js.map +1 -1
  248. package/dist/features/interactive/interactive.d.ts +8 -3
  249. package/dist/features/interactive/interactive.d.ts.map +1 -1
  250. package/dist/features/interactive/interactive.js +4 -0
  251. package/dist/features/interactive/interactive.js.map +1 -1
  252. package/dist/features/interactive/interactiveInput.d.ts +2 -1
  253. package/dist/features/interactive/interactiveInput.d.ts.map +1 -1
  254. package/dist/features/interactive/interactiveInput.js +5 -1
  255. package/dist/features/interactive/interactiveInput.js.map +1 -1
  256. package/dist/features/interactive/lineEditor.d.ts +2 -0
  257. package/dist/features/interactive/lineEditor.d.ts.map +1 -1
  258. package/dist/features/interactive/lineEditor.js +130 -9
  259. package/dist/features/interactive/lineEditor.js.map +1 -1
  260. package/dist/features/interactive/passthroughMode.d.ts.map +1 -1
  261. package/dist/features/interactive/passthroughMode.js +8 -4
  262. package/dist/features/interactive/passthroughMode.js.map +1 -1
  263. package/dist/features/interactive/promptSections.d.ts +2 -0
  264. package/dist/features/interactive/promptSections.d.ts.map +1 -1
  265. package/dist/features/interactive/promptSections.js +7 -1
  266. package/dist/features/interactive/promptSections.js.map +1 -1
  267. package/dist/features/interactive/quietMode.d.ts.map +1 -1
  268. package/dist/features/interactive/quietMode.js +12 -8
  269. package/dist/features/interactive/quietMode.js.map +1 -1
  270. package/dist/features/interactive/retryMode.d.ts +10 -13
  271. package/dist/features/interactive/retryMode.d.ts.map +1 -1
  272. package/dist/features/interactive/retryMode.js +42 -22
  273. package/dist/features/interactive/retryMode.js.map +1 -1
  274. package/dist/features/interactive/slashCommandRegistry.d.ts.map +1 -1
  275. package/dist/features/interactive/slashCommandRegistry.js +1 -0
  276. package/dist/features/interactive/slashCommandRegistry.js.map +1 -1
  277. package/dist/features/tasks/add/index.d.ts +4 -0
  278. package/dist/features/tasks/add/index.d.ts.map +1 -1
  279. package/dist/features/tasks/add/index.js +12 -29
  280. package/dist/features/tasks/add/index.js.map +1 -1
  281. package/dist/features/tasks/attachments.d.ts +19 -0
  282. package/dist/features/tasks/attachments.d.ts.map +1 -0
  283. package/dist/features/tasks/attachments.js +129 -0
  284. package/dist/features/tasks/attachments.js.map +1 -0
  285. package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
  286. package/dist/features/tasks/execute/resolveTask.js +4 -3
  287. package/dist/features/tasks/execute/resolveTask.js.map +1 -1
  288. package/dist/features/tasks/execute/runMeta.d.ts +5 -1
  289. package/dist/features/tasks/execute/runMeta.d.ts.map +1 -1
  290. package/dist/features/tasks/execute/runMeta.js +10 -4
  291. package/dist/features/tasks/execute/runMeta.js.map +1 -1
  292. package/dist/features/tasks/execute/selectAndExecute.d.ts.map +1 -1
  293. package/dist/features/tasks/execute/selectAndExecute.js +48 -4
  294. package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
  295. package/dist/features/tasks/execute/taskSpecContext.d.ts +7 -2
  296. package/dist/features/tasks/execute/taskSpecContext.d.ts.map +1 -1
  297. package/dist/features/tasks/execute/taskSpecContext.js +23 -36
  298. package/dist/features/tasks/execute/taskSpecContext.js.map +1 -1
  299. package/dist/features/tasks/execute/taskWorkflowExecution.d.ts.map +1 -1
  300. package/dist/features/tasks/execute/taskWorkflowExecution.js +2 -1
  301. package/dist/features/tasks/execute/taskWorkflowExecution.js.map +1 -1
  302. package/dist/features/tasks/execute/traceReportRedaction.d.ts +0 -1
  303. package/dist/features/tasks/execute/traceReportRedaction.d.ts.map +1 -1
  304. package/dist/features/tasks/execute/traceReportRedaction.js +1 -9
  305. package/dist/features/tasks/execute/traceReportRedaction.js.map +1 -1
  306. package/dist/features/tasks/execute/types.d.ts +8 -0
  307. package/dist/features/tasks/execute/types.d.ts.map +1 -1
  308. package/dist/features/tasks/execute/workflowExecution.d.ts.map +1 -1
  309. package/dist/features/tasks/execute/workflowExecution.js +12 -1
  310. package/dist/features/tasks/execute/workflowExecution.js.map +1 -1
  311. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts +5 -1
  312. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts.map +1 -1
  313. package/dist/features/tasks/execute/workflowExecutionBootstrap.js +7 -2
  314. package/dist/features/tasks/execute/workflowExecutionBootstrap.js.map +1 -1
  315. package/dist/features/tasks/index.d.ts +1 -0
  316. package/dist/features/tasks/index.d.ts.map +1 -1
  317. package/dist/features/tasks/index.js +1 -0
  318. package/dist/features/tasks/index.js.map +1 -1
  319. package/dist/features/tasks/list/instructMode.d.ts +2 -20
  320. package/dist/features/tasks/list/instructMode.d.ts.map +1 -1
  321. package/dist/features/tasks/list/instructMode.js +15 -4
  322. package/dist/features/tasks/list/instructMode.js.map +1 -1
  323. package/dist/features/tasks/list/retryTaskSpecAttachments.d.ts +8 -0
  324. package/dist/features/tasks/list/retryTaskSpecAttachments.d.ts.map +1 -0
  325. package/dist/features/tasks/list/retryTaskSpecAttachments.js +87 -0
  326. package/dist/features/tasks/list/retryTaskSpecAttachments.js.map +1 -0
  327. package/dist/features/tasks/list/taskInstructionActions.d.ts.map +1 -1
  328. package/dist/features/tasks/list/taskInstructionActions.js +20 -2
  329. package/dist/features/tasks/list/taskInstructionActions.js.map +1 -1
  330. package/dist/features/tasks/list/taskRetryActions.d.ts.map +1 -1
  331. package/dist/features/tasks/list/taskRetryActions.js +24 -6
  332. package/dist/features/tasks/list/taskRetryActions.js.map +1 -1
  333. package/dist/features/tasks/resume/directInstructMode.d.ts +13 -0
  334. package/dist/features/tasks/resume/directInstructMode.d.ts.map +1 -0
  335. package/dist/features/tasks/resume/directInstructMode.js +67 -0
  336. package/dist/features/tasks/resume/directInstructMode.js.map +1 -0
  337. package/dist/features/tasks/resume/directRunFinder.d.ts +7 -0
  338. package/dist/features/tasks/resume/directRunFinder.d.ts.map +1 -0
  339. package/dist/features/tasks/resume/directRunFinder.js +43 -0
  340. package/dist/features/tasks/resume/directRunFinder.js.map +1 -0
  341. package/dist/features/tasks/resume/index.d.ts +3 -0
  342. package/dist/features/tasks/resume/index.d.ts.map +1 -0
  343. package/dist/features/tasks/resume/index.js +229 -0
  344. package/dist/features/tasks/resume/index.js.map +1 -0
  345. package/dist/features/tasks/taskSpecFile.d.ts +2 -0
  346. package/dist/features/tasks/taskSpecFile.d.ts.map +1 -0
  347. package/dist/features/tasks/taskSpecFile.js +38 -0
  348. package/dist/features/tasks/taskSpecFile.js.map +1 -0
  349. package/dist/infra/claude/executor.d.ts.map +1 -1
  350. package/dist/infra/claude/executor.js +27 -6
  351. package/dist/infra/claude/executor.js.map +1 -1
  352. package/dist/infra/claude/mcp-config.d.ts +7 -0
  353. package/dist/infra/claude/mcp-config.d.ts.map +1 -0
  354. package/dist/infra/claude/mcp-config.js +30 -0
  355. package/dist/infra/claude/mcp-config.js.map +1 -0
  356. package/dist/infra/claude-headless/client.d.ts.map +1 -1
  357. package/dist/infra/claude-headless/client.js +5 -40
  358. package/dist/infra/claude-headless/client.js.map +1 -1
  359. package/dist/infra/claude-headless/result-response.js +1 -1
  360. package/dist/infra/claude-headless/result-response.js.map +1 -1
  361. package/dist/infra/claude-terminal/client.d.ts +4 -0
  362. package/dist/infra/claude-terminal/client.d.ts.map +1 -0
  363. package/dist/infra/claude-terminal/client.js +314 -0
  364. package/dist/infra/claude-terminal/client.js.map +1 -0
  365. package/dist/infra/claude-terminal/command.d.ts +4 -0
  366. package/dist/infra/claude-terminal/command.d.ts.map +1 -0
  367. package/dist/infra/claude-terminal/command.js +50 -0
  368. package/dist/infra/claude-terminal/command.js.map +1 -0
  369. package/dist/infra/claude-terminal/response-normalizer.d.ts +14 -0
  370. package/dist/infra/claude-terminal/response-normalizer.d.ts.map +1 -0
  371. package/dist/infra/claude-terminal/response-normalizer.js +118 -0
  372. package/dist/infra/claude-terminal/response-normalizer.js.map +1 -0
  373. package/dist/infra/claude-terminal/tmux-backend.d.ts +7 -0
  374. package/dist/infra/claude-terminal/tmux-backend.d.ts.map +1 -0
  375. package/dist/infra/claude-terminal/tmux-backend.js +177 -0
  376. package/dist/infra/claude-terminal/tmux-backend.js.map +1 -0
  377. package/dist/infra/claude-terminal/transcript-reader.d.ts +13 -0
  378. package/dist/infra/claude-terminal/transcript-reader.d.ts.map +1 -0
  379. package/dist/infra/claude-terminal/transcript-reader.js +329 -0
  380. package/dist/infra/claude-terminal/transcript-reader.js.map +1 -0
  381. package/dist/infra/claude-terminal/types.d.ts +106 -0
  382. package/dist/infra/claude-terminal/types.d.ts.map +1 -0
  383. package/dist/infra/claude-terminal/types.js +2 -0
  384. package/dist/infra/claude-terminal/types.js.map +1 -0
  385. package/dist/infra/codex/CodexStreamHandler.d.ts +4 -2
  386. package/dist/infra/codex/CodexStreamHandler.d.ts.map +1 -1
  387. package/dist/infra/codex/CodexStreamHandler.js +55 -21
  388. package/dist/infra/codex/CodexStreamHandler.js.map +1 -1
  389. package/dist/infra/codex/client.d.ts +2 -0
  390. package/dist/infra/codex/client.d.ts.map +1 -1
  391. package/dist/infra/codex/client.js +42 -6
  392. package/dist/infra/codex/client.js.map +1 -1
  393. package/dist/infra/config/configNormalizers.d.ts +23 -16
  394. package/dist/infra/config/configNormalizers.d.ts.map +1 -1
  395. package/dist/infra/config/configNormalizers.js +69 -7
  396. package/dist/infra/config/configNormalizers.js.map +1 -1
  397. package/dist/infra/config/env/global-current-env-specs.d.ts.map +1 -1
  398. package/dist/infra/config/env/global-current-env-specs.js +7 -0
  399. package/dist/infra/config/env/global-current-env-specs.js.map +1 -1
  400. package/dist/infra/config/env/project-current-env-specs.d.ts.map +1 -1
  401. package/dist/infra/config/env/project-current-env-specs.js +7 -0
  402. package/dist/infra/config/env/project-current-env-specs.js.map +1 -1
  403. package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
  404. package/dist/infra/config/global/globalConfigCore.js +5 -0
  405. package/dist/infra/config/global/globalConfigCore.js.map +1 -1
  406. package/dist/infra/config/global/globalConfigSerializer.d.ts.map +1 -1
  407. package/dist/infra/config/global/globalConfigSerializer.js +10 -0
  408. package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
  409. package/dist/infra/config/global/initialization.d.ts +1 -1
  410. package/dist/infra/config/global/initialization.d.ts.map +1 -1
  411. package/dist/infra/config/global/initialization.js +1 -0
  412. package/dist/infra/config/global/initialization.js.map +1 -1
  413. package/dist/infra/config/loaders/qualityGateOverrides.d.ts +3 -2
  414. package/dist/infra/config/loaders/qualityGateOverrides.d.ts.map +1 -1
  415. package/dist/infra/config/loaders/qualityGateOverrides.js +42 -3
  416. package/dist/infra/config/loaders/qualityGateOverrides.js.map +1 -1
  417. package/dist/infra/config/loaders/workflowFileLoader.d.ts.map +1 -1
  418. package/dist/infra/config/loaders/workflowFileLoader.js +2 -2
  419. package/dist/infra/config/loaders/workflowFileLoader.js.map +1 -1
  420. package/dist/infra/config/loaders/workflowNormalizationPolicies.d.ts +3 -1
  421. package/dist/infra/config/loaders/workflowNormalizationPolicies.d.ts.map +1 -1
  422. package/dist/infra/config/loaders/workflowNormalizationPolicies.js +28 -0
  423. package/dist/infra/config/loaders/workflowNormalizationPolicies.js.map +1 -1
  424. package/dist/infra/config/loaders/workflowParser.d.ts +2 -2
  425. package/dist/infra/config/loaders/workflowParser.d.ts.map +1 -1
  426. package/dist/infra/config/loaders/workflowParser.js +3 -2
  427. package/dist/infra/config/loaders/workflowParser.js.map +1 -1
  428. package/dist/infra/config/loaders/workflowStepNormalizer.d.ts.map +1 -1
  429. package/dist/infra/config/loaders/workflowStepNormalizer.js +2 -1
  430. package/dist/infra/config/loaders/workflowStepNormalizer.js.map +1 -1
  431. package/dist/infra/config/observabilityConfig.d.ts +13 -0
  432. package/dist/infra/config/observabilityConfig.d.ts.map +1 -0
  433. package/dist/infra/config/observabilityConfig.js +52 -0
  434. package/dist/infra/config/observabilityConfig.js.map +1 -0
  435. package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
  436. package/dist/infra/config/project/projectConfig.js +23 -5
  437. package/dist/infra/config/project/projectConfig.js.map +1 -1
  438. package/dist/infra/config/project/projectConfigTransforms.d.ts +5 -1
  439. package/dist/infra/config/project/projectConfigTransforms.d.ts.map +1 -1
  440. package/dist/infra/config/project/projectConfigTransforms.js +8 -0
  441. package/dist/infra/config/project/projectConfigTransforms.js.map +1 -1
  442. package/dist/infra/config/providerOptions.d.ts +8 -2
  443. package/dist/infra/config/providerOptions.d.ts.map +1 -1
  444. package/dist/infra/config/providerOptions.js +49 -1
  445. package/dist/infra/config/providerOptions.js.map +1 -1
  446. package/dist/infra/config/providerOptionsContract.d.ts +3 -3
  447. package/dist/infra/config/providerOptionsContract.d.ts.map +1 -1
  448. package/dist/infra/config/providerOptionsContract.js +14 -0
  449. package/dist/infra/config/providerOptionsContract.js.map +1 -1
  450. package/dist/infra/config/resolveConfigValue.d.ts.map +1 -1
  451. package/dist/infra/config/resolveConfigValue.js +18 -0
  452. package/dist/infra/config/resolveConfigValue.js.map +1 -1
  453. package/dist/infra/config/resolvedConfig.d.ts +2 -1
  454. package/dist/infra/config/resolvedConfig.d.ts.map +1 -1
  455. package/dist/infra/config/traced/tracedConfigSchema.d.ts.map +1 -1
  456. package/dist/infra/config/traced/tracedConfigSchema.js +16 -0
  457. package/dist/infra/config/traced/tracedConfigSchema.js.map +1 -1
  458. package/dist/infra/git/format.d.ts.map +1 -1
  459. package/dist/infra/git/format.js +75 -8
  460. package/dist/infra/git/format.js.map +1 -1
  461. package/dist/infra/git/index.d.ts +1 -1
  462. package/dist/infra/git/index.d.ts.map +1 -1
  463. package/dist/infra/git/types.d.ts +5 -0
  464. package/dist/infra/git/types.d.ts.map +1 -1
  465. package/dist/infra/github/pr.d.ts.map +1 -1
  466. package/dist/infra/github/pr.js +174 -28
  467. package/dist/infra/github/pr.js.map +1 -1
  468. package/dist/infra/observability/otelFoundation.d.ts +6 -0
  469. package/dist/infra/observability/otelFoundation.d.ts.map +1 -0
  470. package/dist/infra/observability/otelFoundation.js +89 -0
  471. package/dist/infra/observability/otelFoundation.js.map +1 -0
  472. package/dist/infra/opencode/client.d.ts.map +1 -1
  473. package/dist/infra/opencode/client.js +19 -15
  474. package/dist/infra/opencode/client.js.map +1 -1
  475. package/dist/infra/providers/claude-terminal.d.ts +6 -0
  476. package/dist/infra/providers/claude-terminal.d.ts.map +1 -0
  477. package/dist/infra/providers/claude-terminal.js +70 -0
  478. package/dist/infra/providers/claude-terminal.js.map +1 -0
  479. package/dist/infra/providers/index.d.ts.map +1 -1
  480. package/dist/infra/providers/index.js +2 -0
  481. package/dist/infra/providers/index.js.map +1 -1
  482. package/dist/infra/providers/provider-capabilities.d.ts +1 -0
  483. package/dist/infra/providers/provider-capabilities.d.ts.map +1 -1
  484. package/dist/infra/providers/provider-capabilities.js +16 -0
  485. package/dist/infra/providers/provider-capabilities.js.map +1 -1
  486. package/dist/infra/rate-limit/detection.d.ts +2 -0
  487. package/dist/infra/rate-limit/detection.d.ts.map +1 -1
  488. package/dist/infra/rate-limit/detection.js +14 -1
  489. package/dist/infra/rate-limit/detection.js.map +1 -1
  490. package/dist/infra/task/clone-base-branch.d.ts +11 -0
  491. package/dist/infra/task/clone-base-branch.d.ts.map +1 -1
  492. package/dist/infra/task/clone-base-branch.js +34 -4
  493. package/dist/infra/task/clone-base-branch.js.map +1 -1
  494. package/dist/infra/task/clone.d.ts +2 -1
  495. package/dist/infra/task/clone.d.ts.map +1 -1
  496. package/dist/infra/task/clone.js +20 -3
  497. package/dist/infra/task/clone.js.map +1 -1
  498. package/dist/infra/task/index.d.ts +1 -1
  499. package/dist/infra/task/index.d.ts.map +1 -1
  500. package/dist/infra/task/index.js +1 -1
  501. package/dist/infra/task/index.js.map +1 -1
  502. package/dist/infra/task/projectLocalTaktSync.d.ts.map +1 -1
  503. package/dist/infra/task/projectLocalTaktSync.js +6 -2
  504. package/dist/infra/task/projectLocalTaktSync.js.map +1 -1
  505. package/dist/infra/task/runner.d.ts +2 -2
  506. package/dist/infra/task/runner.d.ts.map +1 -1
  507. package/dist/infra/task/runner.js +4 -4
  508. package/dist/infra/task/runner.js.map +1 -1
  509. package/dist/infra/task/taskRecordMutations.d.ts +1 -1
  510. package/dist/infra/task/taskRecordMutations.d.ts.map +1 -1
  511. package/dist/infra/task/taskRecordMutations.js +5 -1
  512. package/dist/infra/task/taskRecordMutations.js.map +1 -1
  513. package/dist/infra/task/taskRetryService.d.ts +2 -2
  514. package/dist/infra/task/taskRetryService.d.ts.map +1 -1
  515. package/dist/infra/task/taskRetryService.js +4 -4
  516. package/dist/infra/task/taskRetryService.js.map +1 -1
  517. package/dist/infra/workflow/system/system-enqueue-effect.d.ts +2 -2
  518. package/dist/infra/workflow/system/system-enqueue-effect.d.ts.map +1 -1
  519. package/dist/infra/workflow/system/system-enqueue-effect.js +5 -2
  520. package/dist/infra/workflow/system/system-enqueue-effect.js.map +1 -1
  521. package/dist/shared/constants.d.ts +1 -0
  522. package/dist/shared/constants.d.ts.map +1 -1
  523. package/dist/shared/constants.js +1 -0
  524. package/dist/shared/constants.js.map +1 -1
  525. package/dist/shared/i18n/labels_en.yaml +3 -1
  526. package/dist/shared/i18n/labels_ja.yaml +3 -1
  527. package/dist/shared/prompts/en/score_direct_instruct_system_prompt.md +63 -0
  528. package/dist/shared/prompts/en/score_retry_system_prompt.md +2 -2
  529. package/dist/shared/prompts/ja/score_direct_instruct_system_prompt.md +63 -0
  530. package/dist/shared/prompts/ja/score_retry_system_prompt.md +2 -2
  531. package/dist/shared/types/provider.d.ts +1 -1
  532. package/dist/shared/types/provider.d.ts.map +1 -1
  533. package/dist/shared/utils/debug.d.ts +2 -0
  534. package/dist/shared/utils/debug.d.ts.map +1 -1
  535. package/dist/shared/utils/debug.js +1 -0
  536. package/dist/shared/utils/debug.js.map +1 -1
  537. package/dist/shared/utils/sensitiveText.d.ts +2 -0
  538. package/dist/shared/utils/sensitiveText.d.ts.map +1 -0
  539. package/dist/shared/utils/sensitiveText.js +40 -0
  540. package/dist/shared/utils/sensitiveText.js.map +1 -0
  541. package/package.json +4 -2
@@ -0,0 +1,41 @@
1
+ ```markdown
2
+ # コーディングレビュー
3
+
4
+ ## 結果: APPROVE / REJECT
5
+
6
+ ## サマリー
7
+ {1-2文でレビュー結果を要約}
8
+
9
+ ## 今回の指摘(new)
10
+ | # | finding_id | family_tag | 重大度 | 場所 | 問題 | 影響 | 修正案 |
11
+ |---|------------|------------|--------|------|------|------|--------|
12
+ | 1 | CODE-NEW-src-file-L42 | bug | High / Medium / Low | `src/file.ts:42` | {問題} | {影響} | {修正案} |
13
+
14
+ ## 継続指摘(persists)
15
+ | # | finding_id | family_tag | 前回根拠 | 今回根拠 | 問題 | 修正案 |
16
+ |---|------------|------------|----------|----------|------|--------|
17
+ | 1 | CODE-PERSIST-src-file-L77 | regression | `src/file.ts:77` | `src/file.ts:77` | {未解消の問題} | {修正案} |
18
+
19
+ ## 解消済み(resolved)
20
+ | finding_id | 解消根拠 |
21
+ |------------|----------|
22
+ | CODE-RESOLVED-src-file-L10 | `src/file.ts:10` で解消 |
23
+
24
+ ## 再開指摘(reopened)
25
+ | # | finding_id | family_tag | 解消根拠(前回) | 再発根拠 | 問題 | 修正案 |
26
+ |---|------------|------------|----------------|---------|------|--------|
27
+ | 1 | CODE-REOPENED-src-file-L55 | bug | `前回: src/file.ts:10` | `src/file.ts:55` | {再発した問題} | {修正案} |
28
+
29
+ ## 検証証跡
30
+ - 差分確認: {確認内容}
31
+ - ビルド: {結果。未確認ならその旨}
32
+ - テスト: {結果。未確認ならその旨}
33
+
34
+ ## REJECT判定条件
35
+ - `new`、`persists`、または `reopened` が1件以上ある場合のみ REJECT
36
+ - `finding_id` なしの指摘は無効
37
+ ```
38
+
39
+ **認知負荷軽減ルール:**
40
+ - APPROVE → サマリーのみ(5行以内)
41
+ - REJECT → 該当指摘のみ表で記載(30行以内)
@@ -11,6 +11,7 @@
11
11
  |------|------|------|
12
12
  | コンポーネント設計 | ✅ | - |
13
13
  | 状態管理 | ✅ | - |
14
+ | 正規状態と派生状態 | ✅ | - |
14
15
  | パフォーマンス | ✅ | - |
15
16
  | アクセシビリティ | ✅ | - |
16
17
  | 型安全性 | ✅ | - |
@@ -0,0 +1,29 @@
1
+ ```markdown
2
+ # 保守変更スコープ
3
+
4
+ ## タスク
5
+ {タスクの1行要約}
6
+
7
+ ## 必須変更
8
+ | ファイル | 理由 | 要求との対応 |
9
+ |----------|------|--------------|
10
+ | {ファイル} | {理由} | {対応する要求} |
11
+
12
+ ## 関連変更
13
+ | ファイル | 理由 | 必須変更との関係 |
14
+ |----------|------|------------------|
15
+ | {ファイル} | {理由} | {関係} |
16
+
17
+ ## 変更しない既存契約
18
+ | 契約 | 対象 | 守る内容 |
19
+ |------|------|----------|
20
+ | {契約種別} | {対象} | {守る内容} |
21
+
22
+ ## 不要変更の確認
23
+ | 確認対象 | 結果 | 備考 |
24
+ |----------|------|------|
25
+ | 改名・移動 | {有無} | {備考} |
26
+ | UI文言・アクセシビリティ | {有無} | {備考} |
27
+ | コメント削除 | {有無} | {備考} |
28
+ | テスト期待値変更 | {有無} | {備考} |
29
+ ```
@@ -0,0 +1,27 @@
1
+ # Coding Reviewer
2
+
3
+ あなたはAIコーディングエージェントのコードレビュアーです。タスクの意図と変更差分を読み、実装上のバグ、リグレッション、セキュリティリスク、テスト不足を具体的に指摘します。
4
+
5
+ ## 役割の境界
6
+
7
+ **やること:**
8
+ - 変更差分と周辺コードを確認する
9
+ - タスクの意図に対して実装が成立しているか確認する
10
+ - 既存動作を壊す変更を検出する
11
+ - エラー処理、境界条件、永続化、並行実行、外部連携の破綻を検出する
12
+ - セキュリティやデータ保護に関わる明白な問題を指摘する
13
+ - 必要なテストや実行確認が欠けている場合に指摘する
14
+
15
+ **やらないこと:**
16
+ - 自分でコードを書く
17
+ - 根拠のない推測を指摘にする
18
+ - 好みだけのリファクタリングを要求する
19
+ - 既存の無関係な問題を今回の指摘に混ぜる
20
+
21
+ ## 行動姿勢
22
+
23
+ - 指摘は実コード、差分、実行証跡に結びつける
24
+ - 修正すべき理由が弱いものは findings にしない
25
+ - 重大な問題から順に出す
26
+ - 場所、影響、修正方針を短く具体的に書く
27
+ - 問題がなければ APPROVE する
@@ -23,7 +23,7 @@
23
23
  - 堂々巡りを検出したら、3回以上のループで設計見直しを提案する
24
24
  - ビジネス価値を忘れない。技術的完璧さより価値の提供を重視する
25
25
  - 優先度を明確に示す。何から手をつけるべきかを伝える
26
- - レビュアーが「非ブロッキング」「既存問題」「参考情報」に分類した問題を必ず検証する。変更対象ファイル内の問題が非ブロッキングにされていた場合、ブロッキングに格上げしてREJECTとする
26
+ - レビュアーが「非ブロッキング」「既存問題」「参考情報」に分類した問題を必ず検証する。変更箇所、または変更の正しさ・契約・配線に直接関係する箇所の問題が非ブロッキングにされていた場合、ブロッキングに格上げしてREJECTとする
27
27
  - 未実行のコマンド結果を「成功」や「実行不可」と推測で書かない。証跡がないものは未確認として扱う
28
28
 
29
29
  ## ドメイン知識
@@ -35,7 +35,7 @@
35
35
  | 矛盾 | 専門家間で矛盾する指摘がないか |
36
36
  | 漏れ | どの専門家もカバーしていない領域がないか |
37
37
  | 重複 | 同じ問題が異なる観点から指摘されていないか |
38
- | 非ブロッキング判定の妥当性 | 各レビュアーが「非ブロッキング」「既存問題」に分類した項目が、本当に変更対象外ファイルの問題か |
38
+ | 非ブロッキング判定の妥当性 | 各レビュアーが「非ブロッキング」「既存問題」に分類した項目が、本当に変更箇所・関係箇所から外れている問題か |
39
39
  | 実行証跡との整合 | レポート上のテスト/ビルド結果が実行ログ・レポートと一致しているか |
40
40
 
41
41
  ### 元の要求との整合
@@ -160,15 +160,74 @@ AIは過剰に提供する傾向がある。不要な追加をチェック。
160
160
  | 早すぎる抽象化 | 単一実装のためのインターフェース/抽象化 |
161
161
  | 過剰設定 | 設定可能にする必要のないものを設定可能に |
162
162
  | ゴールドプレーティング | 求められていない「あると良い」追加 |
163
+ | 関連変更に見える余計な変更 | 変更箇所の周辺という理由で、要求達成に不要な整理・改名・移動を行う |
164
+ | 観測可能な契約のついで変更 | 既存利用者やテストが観測する値を要求外で変更 |
163
165
  | 不要なLegacy対応 | 明示的な指示がないのに旧値のマッピング・正規化ロジックを追加 |
164
166
 
165
167
  最良のコードは、問題を解決する最小限のコード。
166
168
 
169
+ ### 関連変更に見える余計な変更
170
+
171
+ AIは「触ったファイル内」「近い責務」「作法として自然」という理由で、要求達成に不要な整理を関連変更として正当化しがちである。関連変更かどうかは距離ではなく、要求達成に必要な因果関係で判定する。
172
+
173
+ | パターン | 判定 |
174
+ |---------|------|
175
+ | 変更ファイル内という理由だけの改名・移動・責務変更 | REJECT |
176
+ | 実装に直接必要ない Props 型名、戻り値構造、公開関数名の変更 | REJECT |
177
+ | 既存コメントを「説明コメント」と決めつけて削除する | REJECT |
178
+ | テストを通すために、検証済みの既存挙動を削除・緩和する | REJECT |
179
+ | フレームワーク作法への改善を、明示要求なしに混ぜる | REJECT |
180
+ | 新機能の配線に必要な引数追加・呼び出し元更新 | OK |
181
+ | 不要になった旧実装の削除 | OK |
182
+
183
+ 検証アプローチ:
184
+ 1. タスク開始時点(ベース)からの累積差分全体を取得し、改名、移動、削除、責務変更、テスト期待値変更を列挙する(直近の修正分だけを見ない。過去イテレーションで紛れた無関係変更は最新の修正レポートに現れない)
185
+ 2. 各変更について「この変更がないと要求を満たせないか」を確認する
186
+ 3. 「読みやすい」「作法として良い」「ついでに整理」は必要性の根拠にしない
187
+ 4. 必要性を説明できない変更は、完了前に戻す
188
+
189
+ ### 観測可能な契約のついで変更
190
+
191
+ AIは「改善」「標準化」「説明性向上」の名目で、要求と無関係な既存契約を変更しがちである。UI文言、アクセシビリティ名、イベント名、戻り値、エラー文言、ログ形式、公開API、型名、ファイル配置、コメント、テストが検証している挙動は観測可能な契約として扱う。
192
+
193
+ | パターン | 判定 |
194
+ |---------|------|
195
+ | 要求外の契約変更 | REJECT |
196
+ | 既存テストを新しい契約へ追随させるだけの変更 | REJECT |
197
+ | 新機能に必要な新しい契約の追加 | OK |
198
+ | 既存契約を保ったまま不足情報を追加 | OK |
199
+ | 契約変更の理由、影響範囲、移行方針が明示されている | OK |
200
+
201
+ 検証アプローチ:
202
+ 1. 差分内の文字列、属性、イベント名、戻り値、エラー文言、ログ形式を確認する
203
+ 2. それぞれが今回の要求に直接必要か確認する
204
+ 3. テスト期待値が実装変更へ追随しているだけなら、元の契約を維持できないか確認する
205
+ 4. 契約変更が必要な場合は、理由と影響範囲が説明されているか確認する
206
+
167
207
  Legacy対応の判定基準:
168
208
  - 明示的に「Legacy値をサポートする」「後方互換性を保つ」という指示がない限り、Legacy対応は不要
169
209
  - `.transform()` による正規化、`LEGACY_*_MAP` のようなマッピング、`@deprecated` な型定義は追加しない
170
210
  - 新しい値のみをサポートし、シンプルに保つ
171
211
 
212
+ ### 関数オブジェクトによる過剰抽象化
213
+
214
+ AIは少数の具体分岐を、設定配列・関数オブジェクト・汎用ループに置き換えて「拡張しやすく」見せがちである。問題は Strategy ではなく、概念名を与えずに差分をデータへ隠すこと。業務概念として名前が付き、差し替え点が明確になる Strategy は有効である。
215
+
216
+ | パターン | 例 | 判定 |
217
+ |---------|-----|------|
218
+ | 1箇所でしか使わない処理設定配列 | `[{ kind, fields, removedFields }]` を loop で処理 | REJECT |
219
+ | 削除・副作用・例外条件が設定オブジェクトに隠れる | 設定値を読まないと破壊的変更が分からない | REJECT |
220
+ | 分岐ごとの処理が1-3行で完結するのに関数オブジェクト化 | `handlers[type]()` だけが増える | REJECT |
221
+ | Strategy が業務概念を表し、実装差し替えの境界を明確にする | `TaxPolicy`, `PaymentMethod`, `RetryStrategy` | OK |
222
+ | 分岐数が多く、処理形が同じで、今後も追加される | handler map を検討 | OK |
223
+
224
+ 検証アプローチ:
225
+ 1. 追加された配列・Map・Strategy・関数オブジェクトの使用箇所を grep する
226
+ 2. 使用箇所が1つなら、明示分岐の方が読みやすいか確認する
227
+ 3. 設定オブジェクトに副作用・削除対象・互換処理が隠れていないか確認する
228
+ 4. ドメイン上の意味が分岐名で十分に表せるなら `when` / `switch` を優先する
229
+ 5. 概念として名前を付けることで理解が進むなら Strategy を許容する
230
+
172
231
  ## 早すぎるキャッシュ戦略の導入
173
232
 
174
233
  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
+ - **コピペパターン** - 新しいコードを書く前に同種の既存実装を検索し、既存パターンに合わせる。独自の書き方を持ち込まない
@@ -0,0 +1,73 @@
1
+ # 既存システム尊重ポリシー
2
+
3
+ リリース済みまたは運用中の既存システムでは、要求達成に必要な最小差分だけを行い、既存契約を不用意に変えない。
4
+
5
+ ## 原則
6
+
7
+ | 原則 | 基準 |
8
+ |------|------|
9
+ | 既存契約優先 | 既存利用者、テスト、運用が依存する契約を保持する |
10
+ | 最小差分 | 要求達成に必要な変更だけを残す |
11
+ | 近接性より必要性 | 変更箇所に近いことを変更理由にしない |
12
+ | 既存構造尊重 | ファイル配置、型名、公開API、責務境界を明示要求なしに変えない |
13
+ | コメント保全 | 意図、制約、算出根拠を示すコメントを削除しない |
14
+ | テストの契約性 | 既存テストが検証する挙動を軽微扱いしない |
15
+ | 改善の分離 | 作法改善や整理は要求と直接関係する場合に限定する |
16
+ | 保守制約優先 | 一般的な品質改善より、既存挙動と既存構造の保持を優先する |
17
+
18
+ ## 変更境界
19
+
20
+ | 基準 | 判定 |
21
+ |------|------|
22
+ | 要求を満たすために不可欠な変更 | OK |
23
+ | 不可欠な変更を接続するための呼び出し元更新 | OK |
24
+ | 不可欠な変更の副作用を止めるための局所修正 | OK |
25
+ | 変更ファイル内という理由だけの整理 | REJECT |
26
+ | 明示要求のないファイル移動、型名変更、公開API変更 | REJECT |
27
+ | フレームワーク作法の改善を混ぜる | REJECT |
28
+ | 別PRで扱える改善を同時に入れる | REJECT |
29
+
30
+ ## 他ポリシーとの優先順位
31
+
32
+ 既存システムの保守では、coding、frontend、design-fidelity、testing などの一般的な品質基準を、要求達成に必要な範囲へ制限して適用する。
33
+
34
+ | 衝突 | 判定 |
35
+ |------|------|
36
+ | 一般品質基準は改善を推奨するが、要求には不要 | 変更しない |
37
+ | 既存構造は理想的でないが、今回の要求を満たせる | 既存構造を維持する |
38
+ | 品質基準を満たすには既存契約変更が必要 | ユーザーの明示要求または計画上の根拠が必要 |
39
+ | 不具合修正に必要な最小の構造変更 | 理由と影響範囲を明記して実施する |
40
+
41
+ ## 観測可能契約
42
+
43
+ UI、アクセシビリティ、テスト、ログ、API、型、ファイル配置、コメントは、外部利用者または開発者が観測する契約になりうる。
44
+
45
+ | 契約 | 変更条件 |
46
+ |------|----------|
47
+ | UI文言、アクセシビリティ名、role/state | 要求に直接含まれる場合のみ変更する |
48
+ | hook の戻り値、Props 型名、公開関数名 | 呼び出し元更新が要求達成に不可欠な場合のみ変更する |
49
+ | テスト期待値 | 仕様変更が要求されている場合のみ変更する |
50
+ | コメント | 誤りを直す場合、またはコードで完全に不要になった場合のみ変更する |
51
+ | ファイル配置 | 既存構造では要求を満たせない場合のみ変更する |
52
+
53
+ ## テスト変更
54
+
55
+ テストは実装へ追随させるものではなく、既存契約と新要求を区別するために使う。
56
+
57
+ | パターン | 判定 |
58
+ |---------|------|
59
+ | 新要求を検証するテスト追加 | OK |
60
+ | 既存契約を守るための回帰テスト追加 | OK |
61
+ | 実装変更に合わせて既存期待値を緩和するだけ | REJECT |
62
+ | テスト対象の既存挙動を削除してテストを通す | REJECT |
63
+ | テストが邪魔という理由で削除する | REJECT |
64
+
65
+ ## 完了前確認
66
+
67
+ 完了前に、全差分を「必須変更」「関連変更」「不要変更」に分類する。不要変更が残っている場合は完了してはならない。
68
+
69
+ | 分類 | 基準 |
70
+ |------|------|
71
+ | 必須変更 | これがないと要求を満たせない |
72
+ | 関連変更 | 必須変更を接続、検証、整合させるために必要 |
73
+ | 不要変更 | 読みやすさ、作法、ついで整理、将来拡張だけが理由 |
@@ -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の使用 | 警告 |
@@ -10,7 +10,7 @@
10
10
  | 曖昧さ排除 | 「もう少し整理して」等の曖昧な指摘は禁止。ファイル・行・修正案を具体的に示す |
11
11
  | ファクトチェック | 推測ではなく実コードを確認してから指摘する |
12
12
  | 実践的修正案 | 理想論ではなく実装可能な対策を提示する |
13
- | ボーイスカウト | 変更したファイルに問題があれば、タスクスコープ内で改善させる |
13
+ | ボーイスカウト | 変更箇所と、その正しさ・契約・配線に直接関係する箇所の問題をタスクスコープ内で改善させる |
14
14
 
15
15
  ## スコープ判定
16
16
 
@@ -18,9 +18,10 @@
18
18
  |------|------|------|
19
19
  | 今回の変更で導入された問題 | ブロッキング | REJECT |
20
20
  | 今回の変更により未使用になったコード(引数、import、変数、関数) | ブロッキング | REJECT(変更起因の問題) |
21
- | 変更ファイル内の既存問題 | ブロッキング | REJECT(ボーイスカウトルール) |
22
- | 変更モジュール内の構造的問題 | ブロッキング | スコープ内なら REJECT |
21
+ | 変更箇所・関係箇所の既存問題 | ブロッキング | REJECT(ボーイスカウトルール) |
22
+ | 変更の正しさに直接影響する構造的問題 | ブロッキング | スコープ内なら REJECT |
23
23
  | 変更外ファイルの問題 | 非ブロッキング | 記録のみ(参考情報) |
24
+ | 同じ変更ファイル内にあるだけで変更の正しさに直接関係しない既存問題 | 非ブロッキング | 記録のみ(参考情報) |
24
25
  | タスクスコープを大きく逸脱するリファクタリング | 非ブロッキング | 提案として記載 |
25
26
 
26
27
  ## 判定基準
@@ -37,13 +38,15 @@
37
38
  - 未使用コード(「念のため」のコード)
38
39
  - オブジェクト/配列の直接変更
39
40
  - エラーの握りつぶし(空の catch)
40
- - TODO コメント(Issue化されていないもの)
41
+ - Issue番号・外部制約・除去条件のない TODO/FIXME
41
42
  - 本質的に同じロジックの重複(DRY違反)
42
43
  - 同じことをするメソッドの増殖(構成の違いで吸収すべき)
43
44
  - 特定実装の汎用層への漏洩(汎用層に特定実装のインポート・分岐がある)
44
45
  - 内部実装のパブリック API エクスポート(インフラ層の関数・内部クラスが公開されている)
45
46
  - リファクタリングで置き換えられた旧コード・旧エクスポートの残存
46
47
  - 関連フィールドのクロスバリデーション欠如(意味的に結合した設定値の不変条件が未検証)
48
+ - 契約変更後の呼び出し元・生成元・テストデータの更新漏れ
49
+ - ログ、エラーレスポンス、テスト出力への機密情報露出
47
50
 
48
51
  DRY違反の修正案は、単に共通化を求めるだけでは不十分とする。以下を満たさない共通化案は不適切であり、別案を検討する。
49
52
 
@@ -59,7 +62,7 @@ DRY違反の修正案は、単に共通化を求めるだけでは不十分と
59
62
  - テストが実装の詳細に依存
60
63
  - 関数/ファイルが複雑すぎる
61
64
  - 命名が不明確
62
- - TODO/FIXME の放置(Issue番号付きは許容)
65
+ - Issue番号・外部制約・除去条件がある TODO/FIXME
63
66
  - 理由なしの `@ts-ignore`、`eslint-disable`
64
67
 
65
68
  ### APPROVE(承認)
@@ -73,7 +76,7 @@ DRY違反の修正案は、単に共通化を求めるだけでは不十分と
73
76
  | やるべきこと | やってはいけないこと |
74
77
  |-------------|-------------------|
75
78
  | ファイルを開いて実コードを確認 | 「修正済みのはず」と思い込む |
76
- | grep で呼び出し元・使用箇所を検索 | 記憶に基づいて指摘する |
79
+ | 呼び出し元・使用箇所を検索 | 記憶に基づいて指摘する |
77
80
  | 型定義・スキーマを突合 | 推測でデッドコードと判断する |
78
81
  | 生成ファイル(レポート等)とソースを区別 | 生成ファイルをソースコードとしてレビュー |
79
82
  | ツール出力が正常に読めることを確認 | 文字化け・異常文字を含む出力に基づいて指摘する |
@@ -175,19 +178,20 @@ DRY違反の修正案は、単に共通化を求めるだけでは不十分と
175
178
 
176
179
  ### 対象
177
180
 
178
- - 変更したファイル内の既存の問題(未使用コード、不適切な命名、壊れた抽象化)
179
- - 変更したモジュール内の構造的な問題(責務の混在、不要な依存)
181
+ - 変更箇所、および変更の正しさ・契約・配線に直接影響する関係箇所の既存問題(未使用コード、不適切な命名、壊れた抽象化)
182
+ - 変更の正しさに直接影響する構造的な問題(責務の混在、不要な依存)
180
183
 
181
184
  ### 対象外
182
185
 
183
186
  - 変更していないファイル(既存問題として記録のみ)
187
+ - 同じ変更ファイル内にあるだけで、変更の正しさ・契約・配線に直接影響しない既存問題
184
188
  - タスクスコープを大きく逸脱するリファクタリング(提案として記載、非ブロッキング)
185
189
 
186
190
  ### 判定
187
191
 
188
192
  | 状況 | 判定 |
189
193
  |------|------|
190
- | 変更ファイル内に明らかな問題がある | REJECT — 一緒に修正させる |
194
+ | 変更箇所・関係箇所に明らかな問題がある | REJECT — 一緒に修正させる |
191
195
  | 冗長な式(同値の短い書き方がある) | REJECT |
192
196
  | 不要な分岐・条件(到達しない、または常に同じ結果) | REJECT |
193
197
  | 数秒〜数分で修正可能な問題 | REJECT(「非ブロッキング」にしない) |
@@ -198,15 +202,24 @@ DRY違反の修正案は、単に共通化を求めるだけでは不十分と
198
202
 
199
203
  ## 判定ルール
200
204
 
201
- - 変更対象ファイル内で検出した問題は、既存コードであっても全てブロッキング(REJECT対象)として扱う
202
- - 「既存問題」「非ブロッキング」に分類してよいのは、変更対象外のファイルの問題のみ
203
- - 「コード自体は以前から存在していた」は非ブロッキングの理由にならない。変更ファイル内にある以上、ボーイスカウトルールが適用される
205
+ - 変更箇所、および変更の正しさ・契約・配線に直接影響する関係箇所で検出した問題は、既存コードであってもブロッキング(REJECT対象)として扱う
206
+ - 「既存問題」「非ブロッキング」に分類してよいのは、変更と直接関係しない箇所の問題のみ
207
+ - 「コード自体は以前から存在していた」は、変更箇所・関係箇所の問題を非ブロッキングにする理由にならない
204
208
  - 問題が1件でもあればREJECT。「APPROVE + 警告」「APPROVE + 提案」は禁止
205
209
 
206
210
  ## レビューの基本手順
207
211
 
208
212
  全レビュアーが共通して踏むべき手順を定義する。各 instruction で個別に書かない。
209
213
 
214
+ ### 差分の基準点(ベースを固定する)
215
+
216
+ レビュー対象は、タスク開始時点(ベース)からの累積差分全体とする。直前イテレーションの修正分だけを対象にしない。
217
+
218
+ - fix ↔ review のループでは、毎回ベースから差分を取り直して全体を評価する。基準点を直近の修正へ動かさない
219
+ - ベースは統合先ブランチとのマージベース、または `plan` / `order` に記録された起点とする。`Previous Response` の「変更内容」だけを差分とみなさない
220
+ - 過去イテレーションで紛れ込んだ要求外の変更(無関係なコメント削除、改名、整形、契約変更、テスト緩和)は、最新の修正レポートに現れなくても累積差分には残る。毎回これを照合する
221
+ - finding の状態追跡(new / persists / resolved)は基準点を固定した前提で行う。差分基準を狭めて「もう差分に無い」と判断しない
222
+
210
223
  ### 一次情報の参照
211
224
 
212
225
  - `order.md`、`plan.md`、実コードを一次情報として参照する
@@ -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。状態ベースの待機を使う |
@@ -19,6 +19,7 @@ workflow_categories:
19
19
  workflows:
20
20
  - frontend
21
21
  - frontend-mini
22
+ - frontend-maintenance
22
23
  ⚙️ バックエンド:
23
24
  workflows:
24
25
  - backend
@@ -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}