takt 0.44.0 → 0.46.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 (595) hide show
  1. package/README.md +1 -0
  2. package/builtins/en/config.yaml +9 -0
  3. package/builtins/en/facets/instructions/implement-maintenance.md +2 -0
  4. package/builtins/en/facets/instructions/implement.md +3 -2
  5. package/builtins/en/facets/instructions/review-arch.md +1 -1
  6. package/builtins/en/facets/instructions/review-coding.md +4 -3
  7. package/builtins/en/facets/instructions/review-cqrs-es.md +1 -1
  8. package/builtins/en/facets/instructions/review-pure.md +1 -0
  9. package/builtins/en/facets/instructions/review-qa.md +1 -0
  10. package/builtins/en/facets/instructions/review-terraform.md +1 -1
  11. package/builtins/en/facets/instructions/review-test.md +2 -0
  12. package/builtins/en/facets/instructions/supervise-maintenance.md +7 -5
  13. package/builtins/en/facets/instructions/supervise.md +11 -4
  14. package/builtins/en/facets/instructions/write-tests-maintenance.md +1 -0
  15. package/builtins/en/facets/knowledge/e2e-testing.md +11 -1
  16. package/builtins/en/facets/knowledge/unit-testing.md +11 -0
  17. package/builtins/en/facets/output-contracts/maintenance-scope.md +5 -0
  18. package/builtins/en/facets/output-contracts/pure-review.md +61 -0
  19. package/builtins/en/facets/output-contracts/qa-review.md +5 -0
  20. package/builtins/en/facets/output-contracts/supervisor-validation.md +1 -1
  21. package/builtins/en/facets/output-contracts/testing-review.md +6 -1
  22. package/builtins/en/facets/personas/ai-antipattern-reviewer.md +2 -2
  23. package/builtins/en/facets/personas/architecture-reviewer.md +1 -1
  24. package/builtins/en/facets/personas/pr-commenter.md +2 -2
  25. package/builtins/en/facets/personas/pure-reviewer.md +22 -0
  26. package/builtins/en/facets/personas/supervisor.md +1 -1
  27. package/builtins/en/facets/personas/terraform-reviewer.md +3 -3
  28. package/builtins/en/facets/policies/ai-antipattern.md +2 -0
  29. package/builtins/en/facets/policies/coding.md +36 -0
  30. package/builtins/en/facets/policies/review.md +26 -1
  31. package/builtins/en/facets/policies/testing.md +25 -0
  32. package/builtins/en/workflows/backend-cqrs.yaml +21 -0
  33. package/builtins/en/workflows/backend.yaml +21 -0
  34. package/builtins/en/workflows/default-high.yaml +1 -1
  35. package/builtins/en/workflows/default-peer-review.yaml +24 -3
  36. package/builtins/en/workflows/draft.yaml +4 -32
  37. package/builtins/en/workflows/dual-cqrs.yaml +21 -0
  38. package/builtins/en/workflows/dual.yaml +5 -5
  39. package/builtins/en/workflows/frontend-maintenance.yaml +21 -0
  40. package/builtins/en/workflows/frontend.yaml +21 -0
  41. package/builtins/en/workflows/peer-review.yaml +13 -70
  42. package/builtins/en/workflows/provider-options/edit.yaml +21 -0
  43. package/builtins/en/workflows/provider-options/review-files.yaml +10 -0
  44. package/builtins/en/workflows/provider-options/review-readonly.yaml +16 -0
  45. package/builtins/en/workflows/provider-options/review-web.yaml +14 -0
  46. package/builtins/en/workflows/review-backend-cqrs.yaml +21 -0
  47. package/builtins/en/workflows/review-backend.yaml +21 -0
  48. package/builtins/en/workflows/review-default.yaml +6 -6
  49. package/builtins/en/workflows/review-dual-cqrs.yaml +21 -0
  50. package/builtins/en/workflows/review-dual.yaml +21 -0
  51. package/builtins/en/workflows/review-fix-backend-cqrs.yaml +21 -0
  52. package/builtins/en/workflows/review-fix-backend.yaml +21 -0
  53. package/builtins/en/workflows/review-fix-default.yaml +6 -6
  54. package/builtins/en/workflows/review-fix-dual-cqrs.yaml +21 -0
  55. package/builtins/en/workflows/review-fix-dual.yaml +21 -0
  56. package/builtins/en/workflows/review-fix-frontend.yaml +21 -0
  57. package/builtins/en/workflows/review-fix-takt-default.yaml +5 -5
  58. package/builtins/en/workflows/review-frontend.yaml +21 -0
  59. package/builtins/en/workflows/review-takt-default.yaml +6 -6
  60. package/builtins/en/workflows/takt-default-refresh-all.yaml +6 -6
  61. package/builtins/en/workflows/takt-default-refresh-fast.yaml +5 -5
  62. package/builtins/en/workflows/takt-default.yaml +4 -27
  63. package/builtins/en/workflows/terraform.yaml +23 -2
  64. package/builtins/ja/config.yaml +9 -0
  65. package/builtins/ja/facets/instructions/implement-maintenance.md +2 -0
  66. package/builtins/ja/facets/instructions/implement.md +3 -2
  67. package/builtins/ja/facets/instructions/review-arch.md +1 -1
  68. package/builtins/ja/facets/instructions/review-coding.md +4 -3
  69. package/builtins/ja/facets/instructions/review-cqrs-es.md +1 -1
  70. package/builtins/ja/facets/instructions/review-pure.md +1 -0
  71. package/builtins/ja/facets/instructions/review-qa.md +1 -0
  72. package/builtins/ja/facets/instructions/review-terraform.md +1 -1
  73. package/builtins/ja/facets/instructions/review-test.md +2 -0
  74. package/builtins/ja/facets/instructions/supervise-maintenance.md +6 -4
  75. package/builtins/ja/facets/instructions/supervise.md +11 -4
  76. package/builtins/ja/facets/instructions/write-tests-maintenance.md +1 -0
  77. package/builtins/ja/facets/knowledge/e2e-testing.md +11 -1
  78. package/builtins/ja/facets/knowledge/unit-testing.md +11 -0
  79. package/builtins/ja/facets/output-contracts/maintenance-scope.md +5 -0
  80. package/builtins/ja/facets/output-contracts/pure-review.md +61 -0
  81. package/builtins/ja/facets/output-contracts/qa-review.md +5 -0
  82. package/builtins/ja/facets/output-contracts/supervisor-validation.md +1 -1
  83. package/builtins/ja/facets/output-contracts/testing-review.md +6 -1
  84. package/builtins/ja/facets/personas/ai-antipattern-reviewer.md +2 -2
  85. package/builtins/ja/facets/personas/architecture-reviewer.md +2 -2
  86. package/builtins/ja/facets/personas/pr-commenter.md +3 -3
  87. package/builtins/ja/facets/personas/pure-reviewer.md +22 -0
  88. package/builtins/ja/facets/personas/supervisor.md +1 -1
  89. package/builtins/ja/facets/personas/terraform-reviewer.md +3 -3
  90. package/builtins/ja/facets/policies/ai-antipattern.md +2 -0
  91. package/builtins/ja/facets/policies/coding.md +36 -0
  92. package/builtins/ja/facets/policies/review.md +26 -1
  93. package/builtins/ja/facets/policies/testing.md +25 -0
  94. package/builtins/ja/workflows/backend-cqrs.yaml +21 -0
  95. package/builtins/ja/workflows/backend.yaml +21 -0
  96. package/builtins/ja/workflows/default-high.yaml +1 -1
  97. package/builtins/ja/workflows/default-peer-review.yaml +24 -3
  98. package/builtins/ja/workflows/draft.yaml +4 -32
  99. package/builtins/ja/workflows/dual-cqrs.yaml +21 -0
  100. package/builtins/ja/workflows/dual.yaml +5 -5
  101. package/builtins/ja/workflows/frontend-maintenance.yaml +21 -0
  102. package/builtins/ja/workflows/frontend.yaml +21 -0
  103. package/builtins/ja/workflows/peer-review.yaml +13 -70
  104. package/builtins/ja/workflows/provider-options/edit.yaml +21 -0
  105. package/builtins/ja/workflows/provider-options/review-files.yaml +10 -0
  106. package/builtins/ja/workflows/provider-options/review-readonly.yaml +16 -0
  107. package/builtins/ja/workflows/provider-options/review-web.yaml +14 -0
  108. package/builtins/ja/workflows/review-backend-cqrs.yaml +21 -0
  109. package/builtins/ja/workflows/review-backend.yaml +21 -0
  110. package/builtins/ja/workflows/review-default.yaml +7 -7
  111. package/builtins/ja/workflows/review-dual-cqrs.yaml +21 -0
  112. package/builtins/ja/workflows/review-dual.yaml +21 -0
  113. package/builtins/ja/workflows/review-fix-backend-cqrs.yaml +21 -0
  114. package/builtins/ja/workflows/review-fix-backend.yaml +21 -0
  115. package/builtins/ja/workflows/review-fix-default.yaml +6 -6
  116. package/builtins/ja/workflows/review-fix-dual-cqrs.yaml +21 -0
  117. package/builtins/ja/workflows/review-fix-dual.yaml +21 -0
  118. package/builtins/ja/workflows/review-fix-frontend.yaml +21 -0
  119. package/builtins/ja/workflows/review-fix-takt-default.yaml +6 -6
  120. package/builtins/ja/workflows/review-frontend.yaml +21 -0
  121. package/builtins/ja/workflows/review-takt-default.yaml +7 -7
  122. package/builtins/ja/workflows/takt-default-refresh-all.yaml +6 -6
  123. package/builtins/ja/workflows/takt-default-refresh-fast.yaml +5 -5
  124. package/builtins/ja/workflows/takt-default.yaml +4 -27
  125. package/builtins/ja/workflows/terraform.yaml +22 -1
  126. package/dist/agents/decompose-task-usecase.d.ts +2 -1
  127. package/dist/agents/decompose-task-usecase.d.ts.map +1 -1
  128. package/dist/agents/decompose-task-usecase.js +7 -5
  129. package/dist/agents/decompose-task-usecase.js.map +1 -1
  130. package/dist/agents/judge-status-usecase.d.ts +21 -8
  131. package/dist/agents/judge-status-usecase.d.ts.map +1 -1
  132. package/dist/agents/judge-status-usecase.js +30 -13
  133. package/dist/agents/judge-status-usecase.js.map +1 -1
  134. package/dist/agents/runner-prompt.d.ts +3 -1
  135. package/dist/agents/runner-prompt.d.ts.map +1 -1
  136. package/dist/agents/runner-prompt.js +11 -4
  137. package/dist/agents/runner-prompt.js.map +1 -1
  138. package/dist/agents/runner.d.ts.map +1 -1
  139. package/dist/agents/runner.js +23 -5
  140. package/dist/agents/runner.js.map +1 -1
  141. package/dist/agents/structured-caller/capability-aware-structured-caller.d.ts +1 -1
  142. package/dist/agents/structured-caller/capability-aware-structured-caller.d.ts.map +1 -1
  143. package/dist/agents/structured-caller/capability-aware-structured-caller.js +3 -3
  144. package/dist/agents/structured-caller/capability-aware-structured-caller.js.map +1 -1
  145. package/dist/agents/structured-caller/contracts.d.ts +1 -1
  146. package/dist/agents/structured-caller/contracts.d.ts.map +1 -1
  147. package/dist/agents/structured-caller/default-structured-caller.d.ts +1 -1
  148. package/dist/agents/structured-caller/default-structured-caller.d.ts.map +1 -1
  149. package/dist/agents/structured-caller/default-structured-caller.js +2 -2
  150. package/dist/agents/structured-caller/default-structured-caller.js.map +1 -1
  151. package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts +1 -1
  152. package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts.map +1 -1
  153. package/dist/agents/structured-caller/prompt-based-structured-caller.js +16 -17
  154. package/dist/agents/structured-caller/prompt-based-structured-caller.js.map +1 -1
  155. package/dist/agents/team-leader-structured-output.d.ts +3 -3
  156. package/dist/agents/team-leader-structured-output.d.ts.map +1 -1
  157. package/dist/agents/team-leader-structured-output.js +14 -10
  158. package/dist/agents/team-leader-structured-output.js.map +1 -1
  159. package/dist/agents/types.d.ts +1 -0
  160. package/dist/agents/types.d.ts.map +1 -1
  161. package/dist/commands/analyze-usage.d.ts +26 -0
  162. package/dist/commands/analyze-usage.d.ts.map +1 -0
  163. package/dist/commands/analyze-usage.js +305 -0
  164. package/dist/commands/analyze-usage.js.map +1 -0
  165. package/dist/core/logging/contracts.d.ts +1 -0
  166. package/dist/core/logging/contracts.d.ts.map +1 -1
  167. package/dist/core/logging/contracts.js +1 -0
  168. package/dist/core/logging/contracts.js.map +1 -1
  169. package/dist/core/logging/phaseUsageEvent.d.ts +40 -0
  170. package/dist/core/logging/phaseUsageEvent.d.ts.map +1 -0
  171. package/dist/core/logging/phaseUsageEvent.js +195 -0
  172. package/dist/core/logging/phaseUsageEvent.js.map +1 -0
  173. package/dist/core/logging/providerEvent.d.ts +4 -0
  174. package/dist/core/logging/providerEvent.d.ts.map +1 -1
  175. package/dist/core/logging/providerEvent.js +31 -27
  176. package/dist/core/logging/providerEvent.js.map +1 -1
  177. package/dist/core/models/config-schemas.d.ts +16 -0
  178. package/dist/core/models/config-schemas.d.ts.map +1 -1
  179. package/dist/core/models/part.d.ts +2 -1
  180. package/dist/core/models/part.d.ts.map +1 -1
  181. package/dist/core/models/schema-base.d.ts +66 -0
  182. package/dist/core/models/schema-base.d.ts.map +1 -1
  183. package/dist/core/models/schema-base.js +7 -2
  184. package/dist/core/models/schema-base.js.map +1 -1
  185. package/dist/core/models/workflow-provider-options.d.ts +5 -0
  186. package/dist/core/models/workflow-provider-options.d.ts.map +1 -1
  187. package/dist/core/models/workflow-provider-options.js.map +1 -1
  188. package/dist/core/models/workflow-schemas.d.ts +165 -21
  189. package/dist/core/models/workflow-schemas.d.ts.map +1 -1
  190. package/dist/core/models/workflow-schemas.js +62 -18
  191. package/dist/core/models/workflow-schemas.js.map +1 -1
  192. package/dist/core/models/workflow-types.d.ts +1 -1
  193. package/dist/core/models/workflow-types.d.ts.map +1 -1
  194. package/dist/core/models/workflow-types.js.map +1 -1
  195. package/dist/core/workflow/arpeggio/types.d.ts +3 -0
  196. package/dist/core/workflow/arpeggio/types.d.ts.map +1 -1
  197. package/dist/core/workflow/engine/ArpeggioRunner.d.ts +2 -0
  198. package/dist/core/workflow/engine/ArpeggioRunner.d.ts.map +1 -1
  199. package/dist/core/workflow/engine/ArpeggioRunner.js +10 -0
  200. package/dist/core/workflow/engine/ArpeggioRunner.js.map +1 -1
  201. package/dist/core/workflow/engine/OptionsBuilder.d.ts.map +1 -1
  202. package/dist/core/workflow/engine/OptionsBuilder.js +2 -0
  203. package/dist/core/workflow/engine/OptionsBuilder.js.map +1 -1
  204. package/dist/core/workflow/engine/ParallelRunner.d.ts +1 -0
  205. package/dist/core/workflow/engine/ParallelRunner.d.ts.map +1 -1
  206. package/dist/core/workflow/engine/ParallelRunner.js +4 -0
  207. package/dist/core/workflow/engine/ParallelRunner.js.map +1 -1
  208. package/dist/core/workflow/engine/StepExecutor.d.ts.map +1 -1
  209. package/dist/core/workflow/engine/StepExecutor.js +2 -0
  210. package/dist/core/workflow/engine/StepExecutor.js.map +1 -1
  211. package/dist/core/workflow/engine/TeamLeaderRunner.d.ts.map +1 -1
  212. package/dist/core/workflow/engine/TeamLeaderRunner.js +9 -4
  213. package/dist/core/workflow/engine/TeamLeaderRunner.js.map +1 -1
  214. package/dist/core/workflow/engine/WorkflowEngineSetup.d.ts.map +1 -1
  215. package/dist/core/workflow/engine/WorkflowEngineSetup.js +2 -0
  216. package/dist/core/workflow/engine/WorkflowEngineSetup.js.map +1 -1
  217. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts +1 -0
  218. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts.map +1 -1
  219. package/dist/core/workflow/engine/WorkflowRunLoop.js +3 -0
  220. package/dist/core/workflow/engine/WorkflowRunLoop.js.map +1 -1
  221. package/dist/core/workflow/engine/engine-provider-options.d.ts.map +1 -1
  222. package/dist/core/workflow/engine/engine-provider-options.js +3 -3
  223. package/dist/core/workflow/engine/engine-provider-options.js.map +1 -1
  224. package/dist/core/workflow/engine/parallel-logger.d.ts +1 -1
  225. package/dist/core/workflow/engine/parallel-logger.d.ts.map +1 -1
  226. package/dist/core/workflow/engine/parallel-logger.js +3 -1
  227. package/dist/core/workflow/engine/parallel-logger.js.map +1 -1
  228. package/dist/core/workflow/engine/task-decomposer.d.ts +1 -1
  229. package/dist/core/workflow/engine/task-decomposer.d.ts.map +1 -1
  230. package/dist/core/workflow/engine/task-decomposer.js +3 -3
  231. package/dist/core/workflow/engine/task-decomposer.js.map +1 -1
  232. package/dist/core/workflow/engine/team-leader-budget-errors.d.ts +2 -0
  233. package/dist/core/workflow/engine/team-leader-budget-errors.d.ts.map +1 -0
  234. package/dist/core/workflow/engine/team-leader-budget-errors.js +12 -0
  235. package/dist/core/workflow/engine/team-leader-budget-errors.js.map +1 -0
  236. package/dist/core/workflow/engine/team-leader-execution.d.ts.map +1 -1
  237. package/dist/core/workflow/engine/team-leader-execution.js +16 -2
  238. package/dist/core/workflow/engine/team-leader-execution.js.map +1 -1
  239. package/dist/core/workflow/engine/team-leader-part-runner.d.ts.map +1 -1
  240. package/dist/core/workflow/engine/team-leader-part-runner.js +1 -0
  241. package/dist/core/workflow/engine/team-leader-part-runner.js.map +1 -1
  242. package/dist/core/workflow/evaluation/RuleEvaluator.d.ts +2 -0
  243. package/dist/core/workflow/evaluation/RuleEvaluator.d.ts.map +1 -1
  244. package/dist/core/workflow/evaluation/RuleEvaluator.js +1 -0
  245. package/dist/core/workflow/evaluation/RuleEvaluator.js.map +1 -1
  246. package/dist/core/workflow/observability/workflowSpans.d.ts +3 -0
  247. package/dist/core/workflow/observability/workflowSpans.d.ts.map +1 -1
  248. package/dist/core/workflow/observability/workflowSpans.js +61 -10
  249. package/dist/core/workflow/observability/workflowSpans.js.map +1 -1
  250. package/dist/core/workflow/phase-runner.d.ts +2 -0
  251. package/dist/core/workflow/phase-runner.d.ts.map +1 -1
  252. package/dist/core/workflow/phase-runner.js.map +1 -1
  253. package/dist/core/workflow/promotion/PromotionEvaluator.d.ts +2 -0
  254. package/dist/core/workflow/promotion/PromotionEvaluator.d.ts.map +1 -1
  255. package/dist/core/workflow/promotion/PromotionEvaluator.js +1 -0
  256. package/dist/core/workflow/promotion/PromotionEvaluator.js.map +1 -1
  257. package/dist/core/workflow/promotion/promotion-runtime.d.ts +2 -0
  258. package/dist/core/workflow/promotion/promotion-runtime.d.ts.map +1 -1
  259. package/dist/core/workflow/promotion/promotion-runtime.js +1 -0
  260. package/dist/core/workflow/promotion/promotion-runtime.js.map +1 -1
  261. package/dist/core/workflow/quality-gates/commandGateRunner.d.ts +1 -1
  262. package/dist/core/workflow/quality-gates/commandGateRunner.d.ts.map +1 -1
  263. package/dist/core/workflow/quality-gates/commandGateRunner.js +11 -6
  264. package/dist/core/workflow/quality-gates/commandGateRunner.js.map +1 -1
  265. package/dist/core/workflow/quality-gates/qualityGateRunner.d.ts +1 -1
  266. package/dist/core/workflow/quality-gates/qualityGateRunner.d.ts.map +1 -1
  267. package/dist/core/workflow/quality-gates/qualityGateRunner.js +2 -2
  268. package/dist/core/workflow/quality-gates/qualityGateRunner.js.map +1 -1
  269. package/dist/core/workflow/quality-gates/types.d.ts +2 -0
  270. package/dist/core/workflow/quality-gates/types.d.ts.map +1 -1
  271. package/dist/core/workflow/report-phase-runner.js +1 -0
  272. package/dist/core/workflow/report-phase-runner.js.map +1 -1
  273. package/dist/core/workflow/status-judgment-phase.d.ts.map +1 -1
  274. package/dist/core/workflow/status-judgment-phase.js +2 -0
  275. package/dist/core/workflow/status-judgment-phase.js.map +1 -1
  276. package/dist/core/workflow/types.d.ts +4 -0
  277. package/dist/core/workflow/types.d.ts.map +1 -1
  278. package/dist/features/interactive/aiCaller.d.ts +6 -1
  279. package/dist/features/interactive/aiCaller.d.ts.map +1 -1
  280. package/dist/features/interactive/aiCaller.js +14 -5
  281. package/dist/features/interactive/aiCaller.js.map +1 -1
  282. package/dist/features/interactive/clipboardImage.d.ts +3 -0
  283. package/dist/features/interactive/clipboardImage.d.ts.map +1 -0
  284. package/dist/features/interactive/clipboardImage.js +91 -0
  285. package/dist/features/interactive/clipboardImage.js.map +1 -0
  286. package/dist/features/interactive/clipboardImageFeedback.d.ts +2 -0
  287. package/dist/features/interactive/clipboardImageFeedback.d.ts.map +1 -0
  288. package/dist/features/interactive/clipboardImageFeedback.js +6 -0
  289. package/dist/features/interactive/clipboardImageFeedback.js.map +1 -0
  290. package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
  291. package/dist/features/interactive/conversationLoop.js +8 -3
  292. package/dist/features/interactive/conversationLoop.js.map +1 -1
  293. package/dist/features/interactive/imageAttachments.d.ts +3 -0
  294. package/dist/features/interactive/imageAttachments.d.ts.map +1 -1
  295. package/dist/features/interactive/imageAttachments.js +18 -0
  296. package/dist/features/interactive/imageAttachments.js.map +1 -1
  297. package/dist/features/interactive/interactive.d.ts +1 -0
  298. package/dist/features/interactive/interactive.d.ts.map +1 -1
  299. package/dist/features/interactive/interactive.js.map +1 -1
  300. package/dist/features/interactive/interactiveInput.d.ts.map +1 -1
  301. package/dist/features/interactive/interactiveInput.js +4 -1
  302. package/dist/features/interactive/interactiveInput.js.map +1 -1
  303. package/dist/features/interactive/lineEditor.d.ts +18 -14
  304. package/dist/features/interactive/lineEditor.d.ts.map +1 -1
  305. package/dist/features/interactive/lineEditor.js +174 -80
  306. package/dist/features/interactive/lineEditor.js.map +1 -1
  307. package/dist/features/interactive/passthroughMode.d.ts.map +1 -1
  308. package/dist/features/interactive/passthroughMode.js +4 -1
  309. package/dist/features/interactive/passthroughMode.js.map +1 -1
  310. package/dist/features/interactive/quietMode.d.ts.map +1 -1
  311. package/dist/features/interactive/quietMode.js +5 -2
  312. package/dist/features/interactive/quietMode.js.map +1 -1
  313. package/dist/features/interactive/slashCommandRegistry.d.ts.map +1 -1
  314. package/dist/features/interactive/slashCommandRegistry.js +1 -0
  315. package/dist/features/interactive/slashCommandRegistry.js.map +1 -1
  316. package/dist/features/tasks/attachments.d.ts.map +1 -1
  317. package/dist/features/tasks/attachments.js +18 -1
  318. package/dist/features/tasks/attachments.js.map +1 -1
  319. package/dist/features/tasks/execute/runAllTasks.js +3 -3
  320. package/dist/features/tasks/execute/runAllTasks.js.map +1 -1
  321. package/dist/features/tasks/execute/selectAndExecute.d.ts.map +1 -1
  322. package/dist/features/tasks/execute/selectAndExecute.js +1 -2
  323. package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
  324. package/dist/features/tasks/execute/taskSpecContext.d.ts +1 -0
  325. package/dist/features/tasks/execute/taskSpecContext.d.ts.map +1 -1
  326. package/dist/features/tasks/execute/taskSpecContext.js +25 -1
  327. package/dist/features/tasks/execute/taskSpecContext.js.map +1 -1
  328. package/dist/features/tasks/execute/workflowExecution.d.ts.map +1 -1
  329. package/dist/features/tasks/execute/workflowExecution.js +30 -0
  330. package/dist/features/tasks/execute/workflowExecution.js.map +1 -1
  331. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts.map +1 -1
  332. package/dist/features/tasks/execute/workflowExecutionBootstrap.js +13 -1
  333. package/dist/features/tasks/execute/workflowExecutionBootstrap.js.map +1 -1
  334. package/dist/features/tasks/execute/workflowExecutionEvents.d.ts.map +1 -1
  335. package/dist/features/tasks/execute/workflowExecutionEvents.js +6 -0
  336. package/dist/features/tasks/execute/workflowExecutionEvents.js.map +1 -1
  337. package/dist/features/tasks/watch/index.js +3 -3
  338. package/dist/features/tasks/watch/index.js.map +1 -1
  339. package/dist/infra/claude/client.d.ts.map +1 -1
  340. package/dist/infra/claude/client.js +2 -0
  341. package/dist/infra/claude/client.js.map +1 -1
  342. package/dist/infra/claude/executor.d.ts.map +1 -1
  343. package/dist/infra/claude/executor.js +5 -35
  344. package/dist/infra/claude/executor.js.map +1 -1
  345. package/dist/infra/claude/image-input.d.ts +4 -0
  346. package/dist/infra/claude/image-input.d.ts.map +1 -0
  347. package/dist/infra/claude/image-input.js +63 -0
  348. package/dist/infra/claude/image-input.js.map +1 -0
  349. package/dist/infra/claude/options-builder.d.ts.map +1 -1
  350. package/dist/infra/claude/options-builder.js +2 -3
  351. package/dist/infra/claude/options-builder.js.map +1 -1
  352. package/dist/infra/claude/types.d.ts +5 -0
  353. package/dist/infra/claude/types.d.ts.map +1 -1
  354. package/dist/infra/claude/usage.d.ts +3 -0
  355. package/dist/infra/claude/usage.d.ts.map +1 -0
  356. package/dist/infra/claude/usage.js +45 -0
  357. package/dist/infra/claude/usage.js.map +1 -0
  358. package/dist/infra/claude-headless/headless-spawn.d.ts.map +1 -1
  359. package/dist/infra/claude-headless/headless-spawn.js +2 -1
  360. package/dist/infra/claude-headless/headless-spawn.js.map +1 -1
  361. package/dist/infra/claude-headless/result-response.d.ts.map +1 -1
  362. package/dist/infra/claude-headless/result-response.js +1 -0
  363. package/dist/infra/claude-headless/result-response.js.map +1 -1
  364. package/dist/infra/claude-headless/stream-json-lines.d.ts +2 -0
  365. package/dist/infra/claude-headless/stream-json-lines.d.ts.map +1 -1
  366. package/dist/infra/claude-headless/stream-json-lines.js +4 -0
  367. package/dist/infra/claude-headless/stream-json-lines.js.map +1 -1
  368. package/dist/infra/claude-headless/types.d.ts +1 -0
  369. package/dist/infra/claude-headless/types.d.ts.map +1 -1
  370. package/dist/infra/claude-terminal/client.d.ts.map +1 -1
  371. package/dist/infra/claude-terminal/client.js +1 -0
  372. package/dist/infra/claude-terminal/client.js.map +1 -1
  373. package/dist/infra/claude-terminal/response-normalizer.js.map +1 -1
  374. package/dist/infra/claude-terminal/tmux-backend.d.ts.map +1 -1
  375. package/dist/infra/claude-terminal/tmux-backend.js +15 -1
  376. package/dist/infra/claude-terminal/tmux-backend.js.map +1 -1
  377. package/dist/infra/claude-terminal/types.d.ts +2 -0
  378. package/dist/infra/claude-terminal/types.d.ts.map +1 -1
  379. package/dist/infra/codex/client.d.ts.map +1 -1
  380. package/dist/infra/codex/client.js +14 -2
  381. package/dist/infra/codex/client.js.map +1 -1
  382. package/dist/infra/codex/types.d.ts +3 -0
  383. package/dist/infra/codex/types.d.ts.map +1 -1
  384. package/dist/infra/codex/types.js.map +1 -1
  385. package/dist/infra/config/configNormalizers.d.ts.map +1 -1
  386. package/dist/infra/config/configNormalizers.js +9 -1
  387. package/dist/infra/config/configNormalizers.js.map +1 -1
  388. package/dist/infra/config/loaders/workflowDiscovery.js +1 -1
  389. package/dist/infra/config/loaders/workflowDiscovery.js.map +1 -1
  390. package/dist/infra/config/loaders/workflowLoopMonitorNormalizer.d.ts.map +1 -1
  391. package/dist/infra/config/loaders/workflowLoopMonitorNormalizer.js +1 -1
  392. package/dist/infra/config/loaders/workflowLoopMonitorNormalizer.js.map +1 -1
  393. package/dist/infra/config/loaders/workflowParser.d.ts.map +1 -1
  394. package/dist/infra/config/loaders/workflowParser.js +1 -1
  395. package/dist/infra/config/loaders/workflowParser.js.map +1 -1
  396. package/dist/infra/config/loaders/workflowProviderOptionsResolver.d.ts +7 -0
  397. package/dist/infra/config/loaders/workflowProviderOptionsResolver.d.ts.map +1 -0
  398. package/dist/infra/config/loaders/workflowProviderOptionsResolver.js +68 -0
  399. package/dist/infra/config/loaders/workflowProviderOptionsResolver.js.map +1 -0
  400. package/dist/infra/config/loaders/workflowStepFeaturesNormalizer.d.ts.map +1 -1
  401. package/dist/infra/config/loaders/workflowStepFeaturesNormalizer.js +5 -3
  402. package/dist/infra/config/loaders/workflowStepFeaturesNormalizer.js.map +1 -1
  403. package/dist/infra/config/loaders/workflowStepNormalizer.d.ts +1 -1
  404. package/dist/infra/config/loaders/workflowStepNormalizer.d.ts.map +1 -1
  405. package/dist/infra/config/loaders/workflowStepNormalizer.js +41 -10
  406. package/dist/infra/config/loaders/workflowStepNormalizer.js.map +1 -1
  407. package/dist/infra/config/providerOptions.d.ts +6 -1
  408. package/dist/infra/config/providerOptions.d.ts.map +1 -1
  409. package/dist/infra/config/providerOptions.js +31 -3
  410. package/dist/infra/config/providerOptions.js.map +1 -1
  411. package/dist/infra/config/providerOptionsContract.d.ts +3 -3
  412. package/dist/infra/config/providerOptionsContract.d.ts.map +1 -1
  413. package/dist/infra/config/providerOptionsContract.js +8 -0
  414. package/dist/infra/config/providerOptionsContract.js.map +1 -1
  415. package/dist/infra/copilot/client.d.ts.map +1 -1
  416. package/dist/infra/copilot/client.js +7 -8
  417. package/dist/infra/copilot/client.js.map +1 -1
  418. package/dist/infra/copilot/types.d.ts +1 -0
  419. package/dist/infra/copilot/types.d.ts.map +1 -1
  420. package/dist/infra/cursor/client.d.ts.map +1 -1
  421. package/dist/infra/cursor/client.js +7 -8
  422. package/dist/infra/cursor/client.js.map +1 -1
  423. package/dist/infra/cursor/types.d.ts +1 -0
  424. package/dist/infra/cursor/types.d.ts.map +1 -1
  425. package/dist/infra/fs/index.d.ts +1 -0
  426. package/dist/infra/fs/index.d.ts.map +1 -1
  427. package/dist/infra/fs/index.js +1 -0
  428. package/dist/infra/fs/index.js.map +1 -1
  429. package/dist/infra/fs/jsonl.d.ts +2 -0
  430. package/dist/infra/fs/jsonl.d.ts.map +1 -0
  431. package/dist/infra/fs/jsonl.js +5 -0
  432. package/dist/infra/fs/jsonl.js.map +1 -0
  433. package/dist/infra/kiro/client.d.ts.map +1 -1
  434. package/dist/infra/kiro/client.js +10 -0
  435. package/dist/infra/kiro/client.js.map +1 -1
  436. package/dist/infra/kiro/process.d.ts.map +1 -1
  437. package/dist/infra/kiro/process.js +4 -2
  438. package/dist/infra/kiro/process.js.map +1 -1
  439. package/dist/infra/kiro/types.d.ts +2 -0
  440. package/dist/infra/kiro/types.d.ts.map +1 -1
  441. package/dist/infra/observability/otelFoundation.d.ts +2 -0
  442. package/dist/infra/observability/otelFoundation.d.ts.map +1 -1
  443. package/dist/infra/observability/otelFoundation.js +138 -25
  444. package/dist/infra/observability/otelFoundation.js.map +1 -1
  445. package/dist/infra/observability/usageEventsSpanProcessor.d.ts +19 -0
  446. package/dist/infra/observability/usageEventsSpanProcessor.d.ts.map +1 -0
  447. package/dist/infra/observability/usageEventsSpanProcessor.js +77 -0
  448. package/dist/infra/observability/usageEventsSpanProcessor.js.map +1 -0
  449. package/dist/infra/opencode/OpenCodeStreamHandler.d.ts +19 -0
  450. package/dist/infra/opencode/OpenCodeStreamHandler.d.ts.map +1 -1
  451. package/dist/infra/opencode/OpenCodeStreamHandler.js +10 -0
  452. package/dist/infra/opencode/OpenCodeStreamHandler.js.map +1 -1
  453. package/dist/infra/opencode/allowedTools.d.ts +2 -0
  454. package/dist/infra/opencode/allowedTools.d.ts.map +1 -0
  455. package/dist/infra/opencode/allowedTools.js +10 -0
  456. package/dist/infra/opencode/allowedTools.js.map +1 -0
  457. package/dist/infra/opencode/client.d.ts +4 -2
  458. package/dist/infra/opencode/client.d.ts.map +1 -1
  459. package/dist/infra/opencode/client.js +283 -124
  460. package/dist/infra/opencode/client.js.map +1 -1
  461. package/dist/infra/opencode/index.d.ts +1 -1
  462. package/dist/infra/opencode/index.d.ts.map +1 -1
  463. package/dist/infra/opencode/index.js +1 -1
  464. package/dist/infra/opencode/index.js.map +1 -1
  465. package/dist/infra/opencode/types.d.ts +12 -10
  466. package/dist/infra/opencode/types.d.ts.map +1 -1
  467. package/dist/infra/opencode/types.js +109 -40
  468. package/dist/infra/opencode/types.js.map +1 -1
  469. package/dist/infra/providers/allowed-tool-edit-policy.d.ts +3 -0
  470. package/dist/infra/providers/allowed-tool-edit-policy.d.ts.map +1 -0
  471. package/dist/infra/providers/allowed-tool-edit-policy.js +10 -0
  472. package/dist/infra/providers/allowed-tool-edit-policy.js.map +1 -0
  473. package/dist/infra/providers/claude-headless.d.ts +3 -0
  474. package/dist/infra/providers/claude-headless.d.ts.map +1 -1
  475. package/dist/infra/providers/claude-headless.js +9 -0
  476. package/dist/infra/providers/claude-headless.js.map +1 -1
  477. package/dist/infra/providers/claude-terminal.d.ts +3 -0
  478. package/dist/infra/providers/claude-terminal.d.ts.map +1 -1
  479. package/dist/infra/providers/claude-terminal.js +9 -0
  480. package/dist/infra/providers/claude-terminal.js.map +1 -1
  481. package/dist/infra/providers/claude.d.ts +3 -0
  482. package/dist/infra/providers/claude.d.ts.map +1 -1
  483. package/dist/infra/providers/claude.js +10 -0
  484. package/dist/infra/providers/claude.js.map +1 -1
  485. package/dist/infra/providers/codex.d.ts +3 -0
  486. package/dist/infra/providers/codex.d.ts.map +1 -1
  487. package/dist/infra/providers/codex.js +9 -0
  488. package/dist/infra/providers/codex.js.map +1 -1
  489. package/dist/infra/providers/copilot.d.ts +3 -0
  490. package/dist/infra/providers/copilot.d.ts.map +1 -1
  491. package/dist/infra/providers/copilot.js +8 -0
  492. package/dist/infra/providers/copilot.js.map +1 -1
  493. package/dist/infra/providers/cursor.d.ts +3 -0
  494. package/dist/infra/providers/cursor.d.ts.map +1 -1
  495. package/dist/infra/providers/cursor.js +8 -0
  496. package/dist/infra/providers/cursor.js.map +1 -1
  497. package/dist/infra/providers/imageAttachmentPrompt.d.ts +4 -0
  498. package/dist/infra/providers/imageAttachmentPrompt.d.ts.map +1 -0
  499. package/dist/infra/providers/imageAttachmentPrompt.js +10 -0
  500. package/dist/infra/providers/imageAttachmentPrompt.js.map +1 -0
  501. package/dist/infra/providers/kiro.d.ts +3 -0
  502. package/dist/infra/providers/kiro.d.ts.map +1 -1
  503. package/dist/infra/providers/kiro.js +12 -0
  504. package/dist/infra/providers/kiro.js.map +1 -1
  505. package/dist/infra/providers/mock.d.ts +3 -0
  506. package/dist/infra/providers/mock.d.ts.map +1 -1
  507. package/dist/infra/providers/mock.js +8 -0
  508. package/dist/infra/providers/mock.js.map +1 -1
  509. package/dist/infra/providers/opencode.d.ts +4 -1
  510. package/dist/infra/providers/opencode.d.ts.map +1 -1
  511. package/dist/infra/providers/opencode.js +17 -3
  512. package/dist/infra/providers/opencode.js.map +1 -1
  513. package/dist/infra/providers/provider-capabilities.d.ts +3 -0
  514. package/dist/infra/providers/provider-capabilities.d.ts.map +1 -1
  515. package/dist/infra/providers/provider-capabilities.js +19 -1
  516. package/dist/infra/providers/provider-capabilities.js.map +1 -1
  517. package/dist/infra/providers/runtimeSystemPrompt.d.ts +2 -0
  518. package/dist/infra/providers/runtimeSystemPrompt.d.ts.map +1 -0
  519. package/dist/infra/providers/runtimeSystemPrompt.js +11 -0
  520. package/dist/infra/providers/runtimeSystemPrompt.js.map +1 -0
  521. package/dist/infra/providers/types.d.ts +9 -0
  522. package/dist/infra/providers/types.d.ts.map +1 -1
  523. package/dist/infra/rate-limit/detection.d.ts +1 -1
  524. package/dist/infra/rate-limit/detection.d.ts.map +1 -1
  525. package/dist/infra/rate-limit/detection.js +6 -7
  526. package/dist/infra/rate-limit/detection.js.map +1 -1
  527. package/dist/infra/resources/schema-loader.d.ts +1 -1
  528. package/dist/infra/resources/schema-loader.d.ts.map +1 -1
  529. package/dist/infra/resources/schema-loader.js +8 -4
  530. package/dist/infra/resources/schema-loader.js.map +1 -1
  531. package/dist/infra/service/runSyncConflictResolver.d.ts.map +1 -1
  532. package/dist/infra/service/runSyncConflictResolver.js +3 -1
  533. package/dist/infra/service/runSyncConflictResolver.js.map +1 -1
  534. package/dist/infra/task/clone-exec.d.ts +2 -0
  535. package/dist/infra/task/clone-exec.d.ts.map +1 -1
  536. package/dist/infra/task/clone-exec.js +29 -0
  537. package/dist/infra/task/clone-exec.js.map +1 -1
  538. package/dist/infra/task/clone.d.ts.map +1 -1
  539. package/dist/infra/task/clone.js +3 -1
  540. package/dist/infra/task/clone.js.map +1 -1
  541. package/dist/infra/task/runner.d.ts +1 -1
  542. package/dist/infra/task/runner.d.ts.map +1 -1
  543. package/dist/infra/task/runner.js +2 -2
  544. package/dist/infra/task/runner.js.map +1 -1
  545. package/dist/infra/task/summarize.d.ts.map +1 -1
  546. package/dist/infra/task/summarize.js +3 -1
  547. package/dist/infra/task/summarize.js.map +1 -1
  548. package/dist/infra/task/taskLifecycleService.d.ts +1 -2
  549. package/dist/infra/task/taskLifecycleService.d.ts.map +1 -1
  550. package/dist/infra/task/taskLifecycleService.js +13 -19
  551. package/dist/infra/task/taskLifecycleService.js.map +1 -1
  552. package/dist/infra/task/taskRecordMutations.d.ts +0 -1
  553. package/dist/infra/task/taskRecordMutations.d.ts.map +1 -1
  554. package/dist/infra/task/taskRecordMutations.js +0 -12
  555. package/dist/infra/task/taskRecordMutations.js.map +1 -1
  556. package/dist/shared/constants.d.ts +3 -0
  557. package/dist/shared/constants.d.ts.map +1 -1
  558. package/dist/shared/constants.js +3 -0
  559. package/dist/shared/constants.js.map +1 -1
  560. package/dist/shared/i18n/labels_en.yaml +3 -1
  561. package/dist/shared/i18n/labels_ja.yaml +3 -1
  562. package/dist/shared/prompts/en/perform_agent_system_prompt.md +9 -1
  563. package/dist/shared/prompts/en/provider_runtime_system_prompt.md +18 -0
  564. package/dist/shared/prompts/index.d.ts +1 -1
  565. package/dist/shared/prompts/index.d.ts.map +1 -1
  566. package/dist/shared/prompts/index.js +7 -1
  567. package/dist/shared/prompts/index.js.map +1 -1
  568. package/dist/shared/prompts/ja/perform_agent_system_prompt.md +9 -1
  569. package/dist/shared/prompts/ja/provider_runtime_system_prompt.md +18 -0
  570. package/dist/shared/telemetry/childProcessEnv.d.ts +7 -0
  571. package/dist/shared/telemetry/childProcessEnv.d.ts.map +1 -0
  572. package/dist/shared/telemetry/childProcessEnv.js +176 -0
  573. package/dist/shared/telemetry/childProcessEnv.js.map +1 -0
  574. package/dist/shared/telemetry/index.d.ts +3 -0
  575. package/dist/shared/telemetry/index.d.ts.map +1 -0
  576. package/dist/shared/telemetry/index.js +3 -0
  577. package/dist/shared/telemetry/index.js.map +1 -0
  578. package/dist/shared/telemetry/otlp.d.ts +40 -0
  579. package/dist/shared/telemetry/otlp.d.ts.map +1 -0
  580. package/dist/shared/telemetry/otlp.js +72 -0
  581. package/dist/shared/telemetry/otlp.js.map +1 -0
  582. package/dist/shared/types/provider.d.ts +28 -1
  583. package/dist/shared/types/provider.d.ts.map +1 -1
  584. package/dist/shared/types/provider.js +15 -1
  585. package/dist/shared/types/provider.js.map +1 -1
  586. package/dist/shared/ui/StreamDisplay.d.ts.map +1 -1
  587. package/dist/shared/ui/StreamDisplay.js +1 -0
  588. package/dist/shared/ui/StreamDisplay.js.map +1 -1
  589. package/package.json +8 -4
  590. package/builtins/en/facets/instructions/review-requirements.md +0 -17
  591. package/builtins/en/facets/output-contracts/requirements-review.md +0 -56
  592. package/builtins/en/facets/personas/requirements-reviewer.md +0 -33
  593. package/builtins/ja/facets/instructions/review-requirements.md +0 -17
  594. package/builtins/ja/facets/output-contracts/requirements-review.md +0 -56
  595. package/builtins/ja/facets/personas/requirements-reviewer.md +0 -33
package/README.md CHANGED
@@ -284,6 +284,7 @@ See [External Integrations](./docs/external-integrations.md) for other community
284
284
  | [Tutorial](./docs/tutorial.md) | Improve one example over three phases while queuing, running, and inspecting tasks |
285
285
  | [CLI Reference](./docs/cli-reference.md) | All commands and options |
286
286
  | [Configuration](./docs/configuration.md) | Global and project settings |
287
+ | [Observability](./docs/observability.md) | Phase-level usage events and analysis workflow |
287
288
  | [Design Philosophy](./docs/design-philosophy.md) | Why TAKT is built around workflows, facets, feedback loops, and traceability |
288
289
  | [Workflow Guide](./docs/workflows.md) | Creating and customizing workflows |
289
290
  | [Builtin Catalog](./docs/builtin-catalog.md) | All builtin workflows and personas |
@@ -46,6 +46,15 @@ language: en # UI language: en | ja
46
46
  # provider_events: false # Persist provider stream events
47
47
  # usage_events: false # Persist usage event logs
48
48
 
49
+ # OpenTelemetry observability
50
+ # observability:
51
+ # enabled: true # Initialize the OpenTelemetry SDK
52
+ # monitor: true # Write .takt/runs/<run>/monitor.json
53
+ # session_log_exporter: true # Write a shadow session log from spans
54
+ # usage_events_phase: true # Write phase-level usage event logs
55
+ # Set OTEL_EXPORTER_OTLP_ENDPOINT to also export spans and metrics through OTLP HTTP.
56
+ # Optional OTLP overrides: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, OTEL_EXPORTER_OTLP_METRICS_ENDPOINT.
57
+
49
58
  # Analytics
50
59
  # analytics:
51
60
  # enabled: true # Enable local analytics collection
@@ -15,6 +15,7 @@ Use reports in the Report Directory as the primary source of truth. If additiona
15
15
  - Implement only required and related changes
16
16
  - Do not use a touched file as a reason to make style improvements, renames, file moves, hook return shape changes, comment deletions, or test expectation changes
17
17
  - If the existing structure can satisfy the request, do not restructure only to match common style
18
+ - When a specification change removes an old design, do not leave code or tests that only verify the absence of the old specification
18
19
  - After implementation, inspect the full diff and revert unnecessary changes
19
20
 
20
21
  **Maintenance Scope output contract (create at the start of implementation):**
@@ -58,6 +59,7 @@ Before running build and tests, audit your work against Policy with the followin
58
59
  2. List every `##` section (do not cherry-pick)
59
60
  3. Match the REJECT criteria in each listed section against your implementation
60
61
  4. Inspect the full diff and check that no out-of-scope rename, move, comment deletion, UI copy change, accessible-name change, or test expectation change remains
62
+ 5. If a specification change replaced an old design, check that no code or test remains that only verifies absence of the old design
61
63
 
62
64
  **Required output (include headings)**
63
65
  ## Work Results
@@ -9,6 +9,7 @@ Use reports in the Report Directory as the primary source of truth. If additiona
9
9
  - Build verification is mandatory. After completing implementation, run the build (type check) and verify there are no type errors
10
10
  - Running tests is mandatory. After build succeeds, always run tests and verify results
11
11
  - When introducing new contract strings (file names, config key names, etc.), define them as constants in one place
12
+ - When the change touches a boundary (permissions, rejection paths, external execution, shared state, state transitions), briefly table the changed boundary, main state axes, expected behavior, and corresponding verification
12
13
 
13
14
  **Scope output contract (create at the start of implementation):**
14
15
  ```markdown
@@ -41,9 +42,7 @@ Small / Medium / Large
41
42
  ```
42
43
 
43
44
  **Pre-completion self-check (required):**
44
-
45
45
  Before running build and tests, audit your work against Policy with the following procedure.
46
-
47
46
  1. Open the Policy Source path with the Read tool and obtain the full content
48
47
  2. List every `##` section (do not cherry-pick)
49
48
  3. Match the REJECT criteria in each listed section against your implementation
@@ -57,3 +56,5 @@ Before running build and tests, audit your work against Policy with the followin
57
56
  - {Build execution results}
58
57
  ## Test results
59
58
  - {Test command executed and results}
59
+ ## Boundary change check
60
+ - {If boundary changes exist: changed boundary, state axes, expected behavior, and corresponding verification. If none, write "Not applicable"}
@@ -1,5 +1,5 @@
1
1
  Focus on reviewing **architecture and design**.
2
- Do not review AI-specific issues (already covered by the ai-antipattern-review-1st step).
2
+ Do not assume another reviewer or step has already covered an issue. Detect any problem that belongs to this review perspective.
3
3
 
4
4
  Procedure:
5
5
  1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
@@ -3,6 +3,7 @@ Review the code diff.
3
3
  Procedure:
4
4
  1. Review the task intent, plan, diff, and execution evidence
5
5
  2. Look for implementation bugs, regressions in existing behavior, security risks, and missing tests
6
- 3. Include only issues caused by the current diff that the user should fix
7
- 4. For each finding, include location, impact, and fix direction
8
- 5. Do not report unsupported speculation, preference-only changes, or unrelated pre-existing issues
6
+ 3. For diffs involving side effects or state changes, trace entry, normal completion, early exit, exception, and cleanup paths
7
+ 4. Include only issues caused by the current diff that the user should fix
8
+ 5. For each finding, include location, impact, and fix direction
9
+ 6. Do not report unsupported speculation, preference-only changes, or unrelated pre-existing issues
@@ -1,5 +1,5 @@
1
1
  Focus on reviewing **CQRS (Command Query Responsibility Segregation) and Event Sourcing**.
2
- Do not review AI-specific issues (already covered by the ai-antipattern-review-1st step).
2
+ Do not assume another reviewer or step has already covered an issue. Detect any problem that belongs to this review perspective.
3
3
 
4
4
  Procedure:
5
5
  1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
@@ -0,0 +1 @@
1
+ Review whether the current change is mergeable quality.
@@ -4,3 +4,4 @@ Procedure:
4
4
  1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
5
5
  2. List every `##` section in each of them (do not cherry-pick)
6
6
  3. Match the criteria in each listed section against the diff and detect any issues
7
+ 4. Separate verified scope from unverified scope, and do not treat unverified primary paths as functionally checked
@@ -1,5 +1,5 @@
1
1
  Focus on reviewing **Terraform convention compliance**.
2
- Do not review AI-specific issues (already covered by the ai-antipattern-review-1st step).
2
+ Do not assume another reviewer or step has already covered an issue. Detect any problem that belongs to this review perspective.
3
3
 
4
4
  Procedure:
5
5
  1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
@@ -9,3 +9,5 @@ Procedure:
9
9
 
10
10
  1. Cross-reference the test plan / test scope reports in the Report Directory with the implemented tests
11
11
  2. If an external contract exists and input locations (root body / query / path) are not verified, treat it as a coverage gap by default
12
+ 3. For changes involving side effects or state transitions, check whether representative failure paths are tested, not just the happy path
13
+ 4. Do not treat mock-substituted verification as proof that the real integration was verified
@@ -13,11 +13,13 @@ Procedure:
13
13
  2. For each requirement, identify the implemented code (file:line)
14
14
  3. Actually verify that the code satisfies the requirement by reading files and checking build/test evidence
15
15
  - Do not mark a compound requirement ✅ after checking only one side
16
- - Do not trust plan or requirements-review judgments without independent verification per requirement
16
+ - Do not trust plan or pure-review judgments without independent mergeability verification
17
17
  - REJECT if any single requirement is unsatisfied
18
18
  4. Validate the maintenance scope
19
19
  - Check whether required, related, and unnecessary change classifications are valid
20
20
  - Check that comments, type names, file placement, UI copy, accessible names, and test expectations did not change out of scope
21
+ - If a specification change replaced an old design, check that no code or test remains only to negate the old specification
22
+ - If a target has no final production-code diff, check that tests were not changed only as old-specification absence checks
21
23
  - REJECT if any diff remains that is justified only by general quality improvement or style cleanup
22
24
  5. Re-evaluate prior review findings
23
25
  - If a finding does not hold in the code, record it as false_positive
@@ -28,7 +30,7 @@ Procedure:
28
30
 
29
31
  - Summary reports are not primary evidence. Primary evidence is execution-result reports, review reports with concrete checks, and actual code
30
32
  - `Build Results` / `Test Results` inside execution-result reports may be treated as primary evidence
31
- - In `architecture-review` / `qa-review` / `testing-review` / `security-review` / `requirements-review`, prioritize each report's verification-evidence section
33
+ - In `architecture-review` / `qa-review` / `testing-review` / `security-review` / `pure-review`, prioritize each report's verification-evidence section
32
34
  - Treat a verification-evidence item as supporting evidence only when target, check content, and result are all present. Otherwise treat it as unverified
33
35
  - When evidence conflicts, prefer `execution-result report > review report with concrete checks > summary report`
34
36
 
@@ -38,7 +40,7 @@ Procedure:
38
40
 
39
41
  ## Result: APPROVE / REJECT
40
42
 
41
- ## Requirement Satisfaction Check
43
+ ## Requirements Fulfillment Check
42
44
 
43
45
  Extract requirements from the task instructions and verify each requirement against actual code.
44
46
 
@@ -50,7 +52,7 @@ Extract requirements from the task instructions and verify each requirement agai
50
52
  - Any ❌ requires REJECT
51
53
  - ✅ without evidence is invalid
52
54
  - Do not mark ✅ when only part of a compound case was checked
53
- - Do not trust the plan report without independent verification per requirement
55
+ - Do not trust the plan report without independent mergeability verification
54
56
 
55
57
  ## Maintenance Scope Check
56
58
 
@@ -71,7 +73,7 @@ Extract requirements from the task instructions and verify each requirement agai
71
73
 
72
74
  - If final judgment differs from prior review conclusions, write the reason with evidence
73
75
  - When marking false_positive / overreach, state whether it is inappropriate relative to the task or the plan
74
- - If overturning requirements-review, provide evidence-backed reasoning
76
+ - If overturning pure-review, provide evidence-backed reasoning
75
77
 
76
78
  ## Verification Summary
77
79
  | Item | Status | Verification Method |
@@ -15,7 +15,8 @@ Procedure:
15
15
  2. For each requirement, identify the implementing code (file:line)
16
16
  3. Verify the code actually fulfills the requirement (read the file, check existing test/build evidence)
17
17
  - Do not mark a composite requirement as ✅ based on only one side of the cases
18
- - Do not rely on the plan report or requirements-review judgment; independently verify each requirement
18
+ - Do not rely on the plan report or pure-review judgment; independently verify mergeability
19
+ - For requirements involving side effects or state changes, separate verification of happy paths, failure paths, and cleanup
19
20
  - If any requirement is unfulfilled, REJECT
20
21
  4. Re-evaluate prior review findings
21
22
  - If a finding does not hold in code, classify it as `false_positive`
@@ -26,8 +27,9 @@ Procedure:
26
27
 
27
28
  - Do not treat summary reports as primary evidence. Use execution-result reports, reviewer reports with concrete verification details, and actual code in that order
28
29
  - You may treat `Build Results` / `Test Results` sections in execution-result reports as primary evidence
29
- - For `architecture-review`, `qa-review`, `testing-review`, `security-review`, and `requirements-review`, prioritize each report's `Verification Evidence` section
30
+ - For `architecture-review`, `qa-review`, `testing-review`, `security-review`, and `pure-review`, prioritize each report's `Verification Evidence` section
30
31
  - Treat each `Verification Evidence` item as supporting evidence only when it states the verified target, what was checked, and observed result. If any part is missing, mark that item as `unverified`
32
+ - Evidence based on mocks, static inspection, or limited unit tests must not be treated as verification beyond that scope
31
33
  - If items of evidence conflict, prioritize them in this order: `execution-result report > reviewer report with concrete verification details > summary report`
32
34
 
33
35
  **Validation output contract:**
@@ -48,7 +50,7 @@ Extract requirements from the task spec and verify each one individually against
48
50
  - If any ❌ exists, REJECT is mandatory
49
51
  - ✅ without evidence is invalid (must verify against actual code)
50
52
  - Do not mark a row as ✅ when only part of the cases is verified
51
- - Do not rely on plan report's judgment; independently verify each requirement
53
+ - Do not rely on plan report's judgment; independently verify mergeability
52
54
 
53
55
  ## Re-evaluation of Prior Findings
54
56
  | finding_id | Prior status | Re-evaluation | Evidence |
@@ -57,7 +59,7 @@ Extract requirements from the task spec and verify each one individually against
57
59
 
58
60
  - If final judgment differs from prior review conclusions, explain why with evidence
59
61
  - If marking `false_positive` or `overreach`, state whether it conflicts with the task objective, the plan, or both
60
- - If overturning a requirements-review conclusion, explain why with concrete evidence
62
+ - If overturning a pure-review conclusion, explain why with concrete evidence
61
63
 
62
64
  ## Verification Summary
63
65
  | Item | Status | Verification method |
@@ -66,6 +68,11 @@ Extract requirements from the task spec and verify each one individually against
66
68
  | Build | ✅ / ⚠️ / ❌ | {Execution log, report, CI result, or why unverified} |
67
69
  | Functional check | ✅ / ⚠️ / ❌ | {Evidence used, or state that it was not verified} |
68
70
 
71
+ ## Unverified Scope
72
+ | Item | Impact | Treatment |
73
+ |------|--------|-----------|
74
+ | {Unverified scope, or "none"} | {Primary or supporting requirement} | APPROVE allowed / REJECT reason |
75
+
69
76
  ## Deliverables
70
77
  - Created: {Created files}
71
78
  - Modified: {Modified files}
@@ -20,6 +20,7 @@ Refer only to files within the Report Directory shown in the Workflow Context. D
20
20
  - One concept per test. Do not mix multiple concerns in a single test
21
21
  - Cover happy path, error cases, boundary values, and edge cases
22
22
  - Do not weaken existing expectations for implementation convenience
23
+ - When a specification change replaces an old design with a new one, do not write tests that only freeze the absence of the old specification; positively verify the new specification in the layer that owns it
23
24
  - When an external contract exists, include tests that use the contract-defined input location
24
25
  - Example: pass request bodies using the defined root shape as-is
25
26
  - Example: keep query / path parameters in their defined location instead of moving them into the body
@@ -17,6 +17,17 @@ E2E tests verify the entire user operation flow. Their scope differs from unit a
17
17
  | Scenarios spanning multiple commands/pages | E2E test is appropriate |
18
18
  | Error message display verification | E2E test is appropriate |
19
19
 
20
+ ## Behavior Observation
21
+
22
+ E2E tests observe behavior visible to the user. Checking configuration values, logs, or snapshots alone does not prove that rejection, permission, isolation, or recovery actually occurred.
23
+
24
+ | Criteria | Judgment |
25
+ |----------|----------|
26
+ | Results from user actions or external inputs are observed | OK |
27
+ | Rejection, error, and recovery paths verify the expected result | OK |
28
+ | Only configuration or internal state is checked, with no user-visible result | REJECT |
29
+ | Only real external-environment verification exists, with no deterministic test for the main boundary | Warning or REJECT |
30
+
20
31
  ## UX Route Identification
21
32
 
22
33
  E2E test completeness depends on thorough UX route identification. Identify entry points from code, not documentation.
@@ -86,4 +97,3 @@ Manage test cases as a list to guarantee E2E test completeness.
86
97
  | Classify by entry point | Group by command/page/endpoint |
87
98
  | Prioritize | Determine priority by user impact × untested risk |
88
99
  | Cross-reference with existing tests | Check existing test coverage before adding new tests |
89
-
@@ -54,6 +54,17 @@ test('validates age at boundaries', () => {
54
54
  })
55
55
  ```
56
56
 
57
+ ## Behavior Guarantees
58
+
59
+ Unit tests should verify that the public contract behaves as expected, not only that configuration values or internal-state snapshots changed. Boundary changes such as rejection, permission, isolation, or release should cover the main success/failure cases deterministically.
60
+
61
+ | Criteria | Judgment |
62
+ |----------|----------|
63
+ | Expected return values, exceptions, or side effects are directly verified | OK |
64
+ | Both sides of a boundary change, such as success/failure or allow/deny, are verified | OK |
65
+ | Only configuration values or the last internal state are checked | REJECT |
66
+ | Main boundary conditions require an external environment to reproduce | Consider a deterministic test with a fake or stub |
67
+
57
68
  ## Test Fixture Design
58
69
 
59
70
  Manage test data with factory functions.
@@ -19,6 +19,11 @@
19
19
  |----------|--------|--------------|
20
20
  | {Contract type} | {Target} | {What is preserved} |
21
21
 
22
+ ## Replaced Old Specifications
23
+ | Old Specification | New Specification | Deletion Targets | Test Strategy |
24
+ |-------------------|-------------------|------------------|---------------|
25
+ | {Old specification} | {New specification} | {Implementation/tests to delete} | {Where to verify the new specification} |
26
+
22
27
  ## Unnecessary Change Check
23
28
  | Check Target | Result | Notes |
24
29
  |--------------|--------|-------|
@@ -0,0 +1,61 @@
1
+ ```markdown
2
+ # Pure Review
3
+
4
+ ## Result: APPROVE / REJECT
5
+
6
+ ## Summary
7
+ {Summarize in 1-2 sentences whether this change is mergeable quality. If REJECT, mention the largest blocker first}
8
+
9
+ ## Pure Review Check
10
+ | # | Area | Status | Evidence (file:line / test / execution evidence) | Comment |
11
+ |---|------|--------|--------------------------------------------------|---------|
12
+ | 1 | Requirement fulfillment | Satisfied / Unmet / Unverified | `src/file.ts:42` | {Notes} |
13
+ | 2 | Existing contract and existing-flow impact | No issue / Issue found / Unverified | `src/file.ts:42` | {Notes} |
14
+ | 3 | Tests and verification | Sufficient / Insufficient / Unverified | `npm test` | {Notes} |
15
+ | 4 | Out-of-scope changes and scope creep | No issue / Issue found / Unverified | `src/file.ts:42` | {Notes} |
16
+ | 5 | Obvious security, data-protection, or operational risk | No issue / Issue found / Unverified | `src/file.ts:42` | {Notes} |
17
+
18
+ ## Requirements Cross-Reference
19
+ | # | Requirement (from task) | Status | Evidence (file:line) | Comment |
20
+ |---|-------------------------|--------|----------------------|---------|
21
+ | 1 | {requirement 1} | Satisfied / Unmet / Unverified | `src/file.ts:42` | {Notes} |
22
+
23
+ ## Out-of-Scope Changes and Existing Impact
24
+ | # | Change | File | Judgment | Comment |
25
+ |---|--------|------|----------|---------|
26
+ | 1 | {out-of-scope change or existing impact} | `src/file.ts` | Justified / Needs review / Unnecessary / Problematic | {Reason} |
27
+
28
+ ## Current Iteration Findings (new)
29
+ | # | finding_id | family_tag | Category | Location | Issue | Fix Suggestion |
30
+ |---|------------|------------|----------|----------|-------|----------------|
31
+ | 1 | PURE-NEW-src-file-L42 | mergeability | Regression / Requirement gap / Missing tests / Contract break / Scope creep | `src/file.ts:42` | Issue description | Fix suggestion |
32
+
33
+ ## Carry-over Findings (persists)
34
+ | # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
35
+ |---|------------|------------|-------------------|------------------|-------|----------------|
36
+ | 1 | PURE-PERSIST-src-file-L77 | mergeability | `file:line` | `file:line` | Unresolved | Fix suggestion |
37
+
38
+ ## Resolved Findings (resolved)
39
+ | finding_id | Resolution Evidence |
40
+ |------------|---------------------|
41
+ | PURE-RESOLVED-src-file-L10 | `file:line` resolves the issue |
42
+
43
+ ## Reopened Findings (reopened)
44
+ | # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
45
+ |---|------------|------------|--------------------------|---------------------|-------|----------------|
46
+ | 1 | PURE-REOPENED-src-file-L55 | mergeability | `Previously fixed at file:line` | `Recurred at file:line` | Issue description | Fix approach |
47
+
48
+ ## Verification Evidence
49
+ - Build: {Verified target, what was checked, and observed result; or state that it was unverified}
50
+ - Tests: {Verified target, what was checked, and observed result; or state that it was unverified}
51
+ - Functional check: {Verified target, what was checked, and observed result; or state that it was unverified}
52
+
53
+ ## Rejection Gate
54
+ - REJECT if at least one merge-blocking issue exists in `new`, `persists`, or `reopened`
55
+ - Findings without `finding_id` are invalid
56
+ - Unverified areas should block merge only when they affect mergeability
57
+ ```
58
+
59
+ **Cognitive load reduction rules:**
60
+ - APPROVE: Summary + Pure Review Check only (10 lines or fewer)
61
+ - REJECT: Prioritize blocker findings (40 lines or fewer)
@@ -40,6 +40,11 @@
40
40
  - Tests: {Verified target, what was checked, and observed result; or state that it was unverified}
41
41
  - Functional check: {Verified target, what was checked, and observed result; or state that it was unverified}
42
42
 
43
+ ## Unverified Scope
44
+ | Item | Reason | Impact on Decision |
45
+ |------|--------|--------------------|
46
+ | {Unverified scope, or "none"} | {Reason it was not verified} | {APPROVE allowed / REJECT reason} |
47
+
43
48
  ## Rejection Gate
44
49
  - REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
45
50
  - Findings without `finding_id` are invalid
@@ -17,7 +17,7 @@ Extract requirements from the task spec and verify each one individually against
17
17
  - If any ❌ exists, REJECT is mandatory
18
18
  - ✅ without evidence is invalid (must verify against actual code)
19
19
  - Do not mark a row as ✅ when the evidence covers only part of the cases
20
- - Do not rely on plan report's judgment; independently verify each requirement
20
+ - Do not rely on plan report's judgment; independently verify mergeability
21
21
 
22
22
  ## Re-evaluation of Prior Findings
23
23
  | finding_id | Prior Status | Re-evaluation | Evidence |
@@ -42,11 +42,16 @@
42
42
  - Tests: {Verified target, what was checked, and observed result; or state that it was unverified}
43
43
  - Functional check: {Verified target, what was checked, and observed result; or state that it was unverified}
44
44
 
45
+ ## Unverified Scope
46
+ | Item | Reason | Impact on Decision |
47
+ |------|--------|--------------------|
48
+ | {Unverified scope, or "none"} | {Reason it was not verified} | {APPROVE allowed / REJECT reason} |
49
+
45
50
  ## Rejection Gate
46
51
  - REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
47
52
  - Findings without `finding_id` are invalid
48
53
  ```
49
54
 
50
55
  **Cognitive load reduction rules:**
51
- - APPROVE: Summary only (5 lines or fewer)
56
+ - APPROVE: Summary and unverified scope only (8 lines or fewer)
52
57
  - REJECT: Only relevant findings in tables (30 lines or fewer)
@@ -14,8 +14,8 @@ You are an AI-generated code expert. You review code produced by AI coding assis
14
14
  - Detect unnecessary backward-compatibility code
15
15
 
16
16
  **Don't:**
17
- - Review architecture
18
- - Review security vulnerabilities
17
+ - Flag issues that are not tied to AI-generated-code failure patterns
18
+ - Make speculative or preference-only findings
19
19
  - Write code yourself
20
20
 
21
21
  ## Behavioral Principles
@@ -39,7 +39,7 @@ Code is read far more often than it is written. Poorly structured code destroys
39
39
  **Don't:**
40
40
  - Write code yourself (only provide feedback and suggestions)
41
41
  - Give vague feedback ("clean this up" is prohibited)
42
- - Review AI-specific issues
42
+ - Flag issues that cannot be justified from this review perspective
43
43
 
44
44
  ## Important
45
45
 
@@ -9,10 +9,10 @@ You are a **PR comment posting specialist**. You post review findings to GitHub
9
9
  - Filter findings by severity to reduce noise
10
10
 
11
11
  **Don't:**
12
- - Review code yourself (reviewers already did that)
12
+ - Review code yourself
13
13
  - Make any file edits
14
14
  - Run tests or builds
15
- - Make judgments about code quality (post what reviewers found)
15
+ - Make judgments about code quality (treat review reports as the posting source)
16
16
 
17
17
  ## Core Knowledge
18
18
 
@@ -0,0 +1,22 @@
1
+ # Pure Reviewer
2
+
3
+ You are a reviewer who plainly judges whether the current change is mergeable quality. Without limiting yourself to one specialty, identify issues that would make merging risky based on the diff, surrounding code, and execution evidence.
4
+
5
+ ## Role Boundaries
6
+
7
+ **Do:**
8
+ - Judge whether the change can be merged now based on actual code and diffs
9
+ - Detect unmet requests, broken existing behavior, missing tests, out-of-scope changes, and obvious risks
10
+ - Report only blocking issues with concrete evidence
11
+
12
+ **Don't:**
13
+ - Write code yourself
14
+ - Turn unsupported speculation into findings
15
+ - Request preference-only improvements
16
+ - Mix unrelated pre-existing issues into the review
17
+
18
+ ## Behavioral Principles
19
+
20
+ - Keep the final question as: "Can this change be merged now?"
21
+ - Look for impact on real users, existing flows, and tests instead of merely completing a checklist
22
+ - APPROVE when there are no blocking issues
@@ -22,7 +22,7 @@ you verify "**was the right thing built (Validation)**".
22
22
  ## Behavioral Principles
23
23
 
24
24
  - Re-check requirements yourself. Do not adopt the decomposition from earlier reviews without verification
25
- - Treat `requirements-review` as supporting material, not as the final answer
25
+ - Treat `pure-review` as supporting material, not as the final answer
26
26
  - Mark missing execution evidence as unverified instead of assuming success
27
27
  - Treat contradictions between report text and execution evidence as first-class findings
28
28
  - Distinguish `false_positive` from `overreach`; a technically invalid finding and a scope-exceeding finding are not the same
@@ -12,9 +12,9 @@ You are an IaC (Infrastructure as Code) convention specialist reviewer. You veri
12
12
 
13
13
  **Don't:**
14
14
  - Write code yourself (only provide findings and fix suggestions)
15
- - Review AI-specific issues (separate review agent's responsibility)
16
- - Review application code (design review agent's responsibility)
17
- - Execute `terraform plan` (validation agent's responsibility)
15
+ - Flag issues unrelated to Terraform conventions, IaC security, or cost impact
16
+ - Review application code
17
+ - Execute `terraform plan`
18
18
 
19
19
  ## Behavioral Principles
20
20
 
@@ -112,11 +112,13 @@ AI sometimes "addresses" review findings by adding tests or documentation that "
112
112
  | Adding tests instead of fixing | "Remove unnecessary comments" → adds tests verifying comment presence | REJECT |
113
113
  | Adding docs instead of fixing | "DRY violation" → adds documentation explaining duplication is intentional | REJECT |
114
114
  | Changing unrelated files | Security finding → performs unrelated refactoring | REJECT |
115
+ | Absence checks for an old specification instead of implementing a changed specification | "Replace old badge display with filtering from the list" → lower-level component only verifies the old badge is not shown | REJECT |
115
116
 
116
117
  Verification approach:
117
118
  1. Check if the fix diff includes changes to the finding's target file and target lines
118
119
  2. If the fix consists only of new file additions, check whether those files "fix" the issue or merely "verify" it
119
120
  3. If tests are added as part of the fix, verify they test "correct behavior after the fix" (not "the finding itself")
121
+ 4. For mid-PR specification changes, verify the tests cover the new behavior in the layer that owns it, not only the absence of the old specification
120
122
 
121
123
  ## Context Fitness Assessment
122
124
 
@@ -319,6 +319,42 @@ const storage = createStorage(config)
319
319
  return storage.upload(file, options)
320
320
  ```
321
321
 
322
+ ## Naming
323
+
324
+ A name expresses the code's actual role and effect, not its implementation mechanism. Code whose name leads the reader to misread behavior, responsibility, or side effects is bad code.
325
+
326
+ | Pattern | Example | Verdict |
327
+ |---------|---------|---------|
328
+ | Name contradicts the actual effect | Reads as if it causes a side effect every time, but actually returns a cached value | REJECT |
329
+ | Side effects or call frequency are unreadable | Cannot tell from the name whether it initializes, retrieves, or updates | REJECT |
330
+ | Cannot distinguish it from nearby APIs | Same name as the wrapped or delegated API, hiding which layer owns the responsibility | REJECT |
331
+ | Named after role/effect | The provided value, state change, or responsibility is clear from the name | OK |
332
+
333
+ ```typescript
334
+ // REJECT - Name reads as if it causes a side effect every time, but it is a memoized accessor
335
+ let resourcePromise: Promise<Resource> | null = null
336
+ function openResource(): Promise<Resource> {
337
+ if (!resourcePromise) {
338
+ resourcePromise = createResource()
339
+ }
340
+ return resourcePromise
341
+ }
342
+
343
+ // OK - Name it after its actual role: getting an available resource
344
+ function getResource(): Promise<Resource> {
345
+ if (!resourcePromise) {
346
+ resourcePromise = createResource()
347
+ }
348
+ return resourcePromise
349
+ }
350
+ ```
351
+
352
+ Criteria:
353
+ 1. Does the name express the actual role/effect?
354
+ 2. Does the implementation match the side effects, call frequency, and responsibility implied by the name?
355
+ 3. Does it avoid confusion with wrapped, delegated, or nearby APIs?
356
+ 4. Is it consistent with the naming conventions already used in the surrounding code?
357
+
322
358
  ## Structure
323
359
 
324
360
  ### Criteria for Splitting
@@ -10,6 +10,8 @@ Define the shared judgment criteria and behavioral principles for all reviewers.
10
10
  | Eliminate ambiguity | Vague feedback like "clean this up a bit" is prohibited. Specify file, line, and proposed fix |
11
11
  | Fact-check | Verify against actual code before raising issues. Do not speculate |
12
12
  | Practical fixes | Propose implementable solutions, not theoretical ideals |
13
+ | State consistency | For side effects and state changes, verify that success, failure, and interruption paths have no missing, duplicated, or inconsistent effects |
14
+ | Behavior evidence | Verify what behavior the tests or logs prove, not merely that they exist |
13
15
  | Boy Scout | Have problems fixed within the task scope when they are in changed code or in areas directly affecting correctness, contracts, or wiring of the change |
14
16
 
15
17
  ## Scope Determination
@@ -31,6 +33,7 @@ Define the shared judgment criteria and behavioral principles for all reviewers.
31
33
  REJECT without exception if any of the following apply.
32
34
 
33
35
  - New behavior without tests
36
+ - Boundary changes (permissions, rejection paths, external execution, shared state, state transitions) without verification of the main allow/deny, success/failure, isolation/release behavior
34
37
  - Bug fix without a regression test
35
38
  - Use of `any` type
36
39
  - Fallback value abuse (`?? 'unknown'`)
@@ -46,6 +49,7 @@ REJECT without exception if any of the following apply.
46
49
  - Replaced code/exports surviving after refactoring
47
50
  - Missing cross-validation of related fields (invariants of semantically coupled config values left unverified)
48
51
  - Missing caller, producer, or test data updates after a contract change
52
+ - Missing, duplicated, or incorrectly ordered effects in side-effect or state-change paths
49
53
  - Sensitive data exposed in logs, error responses, or test output
50
54
 
51
55
  A DRY finding is not complete unless the proposed consolidation target is also sound. A consolidation proposal is invalid unless all of the following hold.
@@ -61,7 +65,7 @@ Not blocking, but improvement is recommended.
61
65
  - Insufficient edge case / boundary value tests
62
66
  - Tests coupled to implementation details
63
67
  - Overly complex functions/files
64
- - Unclear naming
68
+ - Naming diverges from reality
65
69
  - TODO/FIXME with issue number, external blocker, and removal condition
66
70
  - `@ts-ignore` or `eslint-disable` without justification
67
71
 
@@ -69,6 +73,17 @@ Not blocking, but improvement is recommended.
69
73
 
70
74
  Approve when all REJECT criteria are cleared and quality standards are met. Never give conditional approval. If there are problems, reject.
71
75
 
76
+ ## Judging Behavior Evidence
77
+
78
+ Checks that only inspect configuration values, logs, snapshots, or the last observed state are supplementary evidence. They do not prove primary behaviors such as rejection, permission, isolation, or release.
79
+
80
+ | Evidence | Judgment |
81
+ |----------|----------|
82
+ | Expected behavior is observed in execution results | OK |
83
+ | Deterministic tests cover the main boundary conditions | OK |
84
+ | Only external-environment E2E exists, with no reproducible verification of the main boundary | Warning or REJECT |
85
+ | Behavior is approved from configuration values, logs, or snapshots only | REJECT |
86
+
72
87
  ## Fact-Checking
73
88
 
74
89
  Always verify facts before raising an issue.
@@ -232,6 +247,16 @@ The review target is the entire cumulative diff from the task's starting point (
232
247
  - Do not dismiss intentional decisions as false positives just because they were recorded. Evaluate validity against `order.md` / `plan.md` / actual code
233
248
  - If the design decision itself is flawed, raise it
234
249
 
250
+ ### Reviewing Side Effects and State Transitions
251
+
252
+ When a change involves side effects or state changes such as external calls, configuration application, sessions, queues, locks, subscriptions, caches, or temporary resources, do not judge from the happy path alone.
253
+
254
+ - Trace entry, normal completion, early return, exception, retry, interruption, and cleanup paths
255
+ - Verify that anything acquired, started, registered, or applied is handled exactly as required on the corresponding paths
256
+ - Verify that the same side effect is not executed more than once, and that required effects are not skipped on failure paths
257
+ - For changes that affect shared state or downstream execution, verify that partial failure does not leave state that breaks the next run
258
+ - If these checks have not been performed, do not treat the behavior as functionally verified
259
+
235
260
  ### Tracking Findings from Previous Reviews
236
261
 
237
262
  - Look in the Report Directory for review reports this step has previously produced, along with their timestamped history