workflow-ai 1.1.0 → 1.2.1

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 (593) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +105 -7
  3. package/configs/pipeline.yaml +23 -2
  4. package/package.json +44 -44
  5. package/src/lib/operations/tickets.mjs +305 -207
  6. package/src/lib/utils.mjs +286 -286
  7. package/src/runner.mjs +314 -34
  8. package/src/scripts/check-conditions.js +2 -2
  9. package/src/scripts/get-next-id.js +144 -41
  10. package/src/scripts/move-ticket.js +225 -68
  11. package/src/scripts/pick-next-task.js +753 -93
  12. package/src/skills/coach/SKILL.md +1 -1
  13. package/src/skills/manual-testing/SKILL.md +2 -0
  14. package/src/scripts/tests/timeout-cascade.test.js +0 -28
  15. package/src/skills/analyze-report/README.md +0 -44
  16. package/src/skills/analyze-report/algorithms/progress-assessment.md +0 -108
  17. package/src/skills/analyze-report/knowledge/analysis-frameworks.md +0 -66
  18. package/src/skills/analyze-report/knowledge/report-structure.md +0 -61
  19. package/src/skills/analyze-report/scripts/calc-plan-metrics.js +0 -234
  20. package/src/skills/analyze-report/templates/analysis-report.md +0 -80
  21. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-1.md +0 -5
  22. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-2.md +0 -98
  23. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-3.md +0 -99
  24. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/judge.json +0 -163
  25. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-1.md +0 -89
  26. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-2.md +0 -88
  27. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-3.md +0 -100
  28. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-1.md +0 -77
  29. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-2.md +0 -64
  30. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-3.md +0 -110
  31. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-1.md +0 -74
  32. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-2.md +0 -38
  33. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-3.md +0 -61
  34. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/meta.json +0 -115
  35. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001-evidence-from-log.yaml +0 -60
  36. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-1.md +0 -90
  37. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-2.md +0 -89
  38. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-3.md +0 -5
  39. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/judge.json +0 -163
  40. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-1.md +0 -84
  41. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-2.md +0 -77
  42. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-3.md +0 -89
  43. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-1.md +0 -103
  44. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-2.md +0 -103
  45. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-3.md +0 -103
  46. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-1.md +0 -93
  47. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-2.md +0 -93
  48. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-3.md +0 -86
  49. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/meta.json +0 -115
  50. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002-result-block-format.yaml +0 -44
  51. package/src/skills/analyze-report/tests/fixtures/REPORT-002-incorrect-attribution.md +0 -27
  52. package/src/skills/analyze-report/tests/fixtures/pipeline-2026-04-06_qa-001-skip.log +0 -32
  53. package/src/skills/analyze-report/tests/index.yaml +0 -25
  54. package/src/skills/analyze-report/tests/rubrics/evidence-from-log.md +0 -22
  55. package/src/skills/analyze-report/tests/rubrics/result-block-format.md +0 -22
  56. package/src/skills/analyze-report/workflows/progress.md +0 -158
  57. package/src/skills/analyze-report/workflows/retrospective.md +0 -143
  58. package/src/skills/coach/README.md +0 -43
  59. package/src/skills/coach/SKILL.md.legacy +0 -157
  60. package/src/skills/coach/algorithms/gap-analysis.md +0 -69
  61. package/src/skills/coach/algorithms/improvement-prioritization.md +0 -62
  62. package/src/skills/coach/algorithms/skill-scoring.md +0 -80
  63. package/src/skills/coach/knowledge/audit-applied-changes-clean.txt +0 -11
  64. package/src/skills/coach/knowledge/backlog-management.md +0 -67
  65. package/src/skills/coach/knowledge/backlog-management.md.legacy +0 -90
  66. package/src/skills/coach/knowledge/common-antipatterns.md +0 -76
  67. package/src/skills/coach/knowledge/prompt-engineering.md +0 -45
  68. package/src/skills/coach/knowledge/shared-knowledge-guide.md +0 -44
  69. package/src/skills/coach/knowledge/skill-anatomy.md +0 -49
  70. package/src/skills/coach/knowledge/test-authorship.md +0 -141
  71. package/src/skills/coach/templates/audit-report.md +0 -39
  72. package/src/skills/coach/templates/coach-backlog-init.yaml +0 -14
  73. package/src/skills/coach/templates/coach-backlog-init.yaml.legacy +0 -10
  74. package/src/skills/coach/templates/improvement-plan.md +0 -42
  75. package/src/skills/coach/templates/new-skill.md +0 -95
  76. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-1.md +0 -58
  77. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-2.md +0 -65
  78. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-3.md +0 -58
  79. package/src/skills/coach/tests/cases/TC-COACH-001/current/judge.json +0 -151
  80. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-1.md +0 -46
  81. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-2.md +0 -0
  82. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-3.md +0 -75
  83. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-1.md +0 -81
  84. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-2.md +0 -101
  85. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-3.md +0 -91
  86. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-1.md +0 -48
  87. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-2.md +0 -30
  88. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-3.md +0 -55
  89. package/src/skills/coach/tests/cases/TC-COACH-001/current/meta.json +0 -94
  90. package/src/skills/coach/tests/cases/TC-COACH-001-evidence-based-temporal-diagram.yaml +0 -53
  91. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-1.md +0 -46
  92. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-2.md +0 -50
  93. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-3.md +0 -48
  94. package/src/skills/coach/tests/cases/TC-COACH-002/current/judge.json +0 -151
  95. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-1.md +0 -0
  96. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-2.md +0 -37
  97. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-3.md +0 -30
  98. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-1.md +0 -23
  99. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-2.md +0 -29
  100. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-3.md +0 -35
  101. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-1.md +0 -13
  102. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-2.md +0 -19
  103. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-3.md +0 -33
  104. package/src/skills/coach/tests/cases/TC-COACH-002/current/meta.json +0 -94
  105. package/src/skills/coach/tests/cases/TC-COACH-002-root-cause-first.yaml +0 -57
  106. package/src/skills/coach/tests/fixtures/pipeline-2026-04-06_id-collision.log +0 -77
  107. package/src/skills/coach/tests/index.yaml +0 -29
  108. package/src/skills/coach/tests/rubrics/calibration/evidence-based-bad.md +0 -13
  109. package/src/skills/coach/tests/rubrics/calibration/evidence-based-good.md +0 -29
  110. package/src/skills/coach/tests/rubrics/evidence-based.md +0 -26
  111. package/src/skills/coach/tests/rubrics/root-cause-first.md +0 -21
  112. package/src/skills/coach/workflows/analyze.md +0 -79
  113. package/src/skills/coach/workflows/analyze.md.legacy +0 -64
  114. package/src/skills/coach/workflows/audit.md +0 -74
  115. package/src/skills/coach/workflows/audit.md.legacy +0 -59
  116. package/src/skills/coach/workflows/create.md +0 -80
  117. package/src/skills/coach/workflows/create.md.legacy +0 -67
  118. package/src/skills/coach/workflows/improve.md +0 -71
  119. package/src/skills/coach/workflows/improve.md.legacy +0 -60
  120. package/src/skills/coach/workflows/research.md +0 -55
  121. package/src/skills/coach/workflows/review.md +0 -52
  122. package/src/skills/coach/workflows/review.md.legacy +0 -48
  123. package/src/skills/coach/workflows/test.md +0 -97
  124. package/src/skills/create-plan/README.md +0 -39
  125. package/src/skills/create-plan/algorithms/risk-assessment.md +0 -73
  126. package/src/skills/create-plan/knowledge/plan-completeness.md +0 -67
  127. package/src/skills/create-plan/knowledge/plan-lifecycle.md +0 -33
  128. package/src/skills/create-plan/knowledge/task-verification-pairs.md +0 -151
  129. package/src/skills/create-plan/knowledge/test-hygiene.md +0 -47
  130. package/src/skills/create-plan/scripts/validate-completeness.js +0 -182
  131. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-1.md +0 -5
  132. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-2.md +0 -39
  133. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-3.md +0 -35
  134. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/judge.json +0 -167
  135. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-1.md +0 -5
  136. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-2.md +0 -10
  137. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-3.md +0 -5
  138. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-1.md +0 -26
  139. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-2.md +0 -86
  140. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-3.md +0 -5
  141. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-1.md +0 -11
  142. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-2.md +0 -15
  143. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-3.md +0 -14
  144. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/meta.json +0 -119
  145. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001-validate-completeness.yaml +0 -41
  146. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-1.md +0 -25
  147. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-2.md +0 -30
  148. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-3.md +0 -37
  149. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/judge.json +0 -164
  150. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-1.md +0 -3
  151. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-2.md +0 -11
  152. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-3.md +0 -13
  153. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-1.md +0 -44
  154. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-2.md +0 -5
  155. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-3.md +0 -49
  156. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-1.md +0 -6
  157. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-2.md +0 -11
  158. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-3.md +0 -16
  159. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/meta.json +0 -116
  160. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002-task-granularity.yaml +0 -39
  161. package/src/skills/create-plan/tests/index.yaml +0 -25
  162. package/src/skills/create-plan/tests/rubrics/task-granularity.md +0 -21
  163. package/src/skills/create-plan/tests/rubrics/validate-completeness.md +0 -21
  164. package/src/skills/create-plan/workflows/create.md +0 -136
  165. package/src/skills/create-report/README.md +0 -40
  166. package/src/skills/create-report/algorithms/metric-calculation.md +0 -93
  167. package/src/skills/create-report/knowledge/report-metrics.md +0 -82
  168. package/src/skills/create-report/scripts/calc-metrics.js +0 -383
  169. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-1.md +0 -25
  170. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-2.md +0 -26
  171. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-3.md +0 -28
  172. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/judge.json +0 -163
  173. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-1.md +0 -4
  174. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-2.md +0 -3
  175. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-3.md +0 -6
  176. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-1.md +0 -8
  177. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-2.md +0 -12
  178. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-3.md +0 -7
  179. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-1.md +0 -12
  180. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-2.md +0 -22
  181. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-3.md +0 -13
  182. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/meta.json +0 -115
  183. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001-root-cause-attribution.yaml +0 -57
  184. package/src/skills/create-report/tests/index.yaml +0 -20
  185. package/src/skills/create-report/tests/rubrics/root-cause-attribution.md +0 -21
  186. package/src/skills/create-report/workflows/standard.md +0 -175
  187. package/src/skills/decompose-gaps/README.md +0 -39
  188. package/src/skills/decompose-gaps/algorithms/scope-check.md +0 -110
  189. package/src/skills/decompose-gaps/knowledge/scope-validation.md +0 -65
  190. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-1.md +0 -41
  191. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +0 -41
  192. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +0 -56
  193. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/judge.json +0 -164
  194. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-1.md +0 -25
  195. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-2.md +0 -17
  196. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +0 -22
  197. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +0 -25
  198. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-2.md +0 -5
  199. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-3.md +0 -29
  200. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +0 -27
  201. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +0 -35
  202. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +0 -18
  203. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/meta.json +0 -116
  204. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001-scope-exclusion.yaml +0 -46
  205. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-1.md +0 -27
  206. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +0 -30
  207. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +0 -27
  208. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +0 -163
  209. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +0 -0
  210. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +0 -15
  211. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-3.md +0 -7
  212. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-1.md +0 -21
  213. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +0 -38
  214. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +0 -16
  215. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +0 -5
  216. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +0 -10
  217. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +0 -9
  218. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +0 -115
  219. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002-glob-before-write.yaml +0 -36
  220. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-1.md +0 -30
  221. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-2.md +0 -30
  222. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-3.md +0 -30
  223. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/judge.json +0 -165
  224. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-1.md +0 -5
  225. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-2.md +0 -26
  226. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-3.md +0 -5
  227. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-1.md +0 -39
  228. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-2.md +0 -37
  229. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-3.md +0 -45
  230. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-1.md +0 -26
  231. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-2.md +0 -27
  232. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-3.md +0 -7
  233. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/meta.json +0 -117
  234. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003-parent-plan-mandatory.yaml +0 -41
  235. package/src/skills/decompose-gaps/tests/index.yaml +0 -30
  236. package/src/skills/decompose-gaps/tests/rubrics/glob-before-write.md +0 -21
  237. package/src/skills/decompose-gaps/tests/rubrics/parent-plan-mandatory.md +0 -22
  238. package/src/skills/decompose-gaps/tests/rubrics/scope-exclusion.md +0 -21
  239. package/src/skills/decompose-gaps/workflows/decompose.md +0 -123
  240. package/src/skills/decompose-plan/README.md +0 -43
  241. package/src/skills/decompose-plan/algorithms/deduplication.md +0 -101
  242. package/src/skills/decompose-plan/knowledge/atomicity-checklist.md +0 -139
  243. package/src/skills/decompose-plan/knowledge/capabilities.md +0 -68
  244. package/src/skills/decompose-plan/knowledge/human-task-rules.md +0 -82
  245. package/src/skills/decompose-plan/knowledge/scope-guard-checklist.md +0 -73
  246. package/src/skills/decompose-plan/scripts/check-atomicity-limit.js +0 -47
  247. package/src/skills/decompose-plan/scripts/check-duplicates.js +0 -323
  248. package/src/skills/decompose-plan/scripts/verify-atomicity.js +0 -408
  249. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-1.md +0 -30
  250. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-2.md +0 -36
  251. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-3.md +0 -37
  252. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/judge.json +0 -163
  253. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-1.md +0 -20
  254. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-2.md +0 -17
  255. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-3.md +0 -28
  256. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-1.md +0 -114
  257. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-2.md +0 -137
  258. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-3.md +0 -188
  259. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-1.md +0 -0
  260. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-2.md +0 -32
  261. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-3.md +0 -110
  262. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/meta.json +0 -115
  263. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001-atomicity-no-1to1.yaml +0 -56
  264. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-1.md +0 -47
  265. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-2.md +0 -54
  266. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-3.md +0 -43
  267. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/judge.json +0 -163
  268. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-1.md +0 -15
  269. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-2.md +0 -5
  270. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-3.md +0 -12
  271. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-1.md +0 -34
  272. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-2.md +0 -30
  273. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-3.md +0 -35
  274. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-1.md +0 -0
  275. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-2.md +0 -31
  276. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-3.md +0 -0
  277. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/meta.json +0 -115
  278. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002-get-next-id-mandatory.yaml +0 -44
  279. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-1.md +0 -21
  280. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-2.md +0 -38
  281. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-3.md +0 -30
  282. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/judge.json +0 -163
  283. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-1.md +0 -31
  284. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-2.md +0 -35
  285. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-3.md +0 -48
  286. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-1.md +0 -167
  287. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-2.md +0 -62
  288. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-3.md +0 -174
  289. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-1.md +0 -0
  290. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-2.md +0 -0
  291. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-3.md +0 -0
  292. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/meta.json +0 -115
  293. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003-verbatim-dod-transfer.yaml +0 -42
  294. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-1.md +0 -55
  295. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-2.md +0 -49
  296. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-3.md +0 -49
  297. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/judge.json +0 -163
  298. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-1.md +0 -104
  299. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-2.md +0 -45
  300. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-3.md +0 -58
  301. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-1.md +0 -193
  302. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-2.md +0 -202
  303. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-3.md +0 -155
  304. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-1.md +0 -52
  305. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-2.md +0 -17
  306. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-3.md +0 -0
  307. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/meta.json +0 -115
  308. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004-executor-atomicity.yaml +0 -64
  309. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-1.md +0 -59
  310. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-2.md +0 -204
  311. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-3.md +0 -213
  312. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/judge.json +0 -163
  313. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-1.md +0 -0
  314. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-2.md +0 -57
  315. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-3.md +0 -54
  316. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-1.md +0 -147
  317. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-2.md +0 -165
  318. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-3.md +0 -133
  319. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-1.md +0 -81
  320. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-2.md +0 -108
  321. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-3.md +0 -3
  322. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/meta.json +0 -114
  323. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005-capabilities-registry.yaml +0 -78
  324. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-1.md +0 -225
  325. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-2.md +0 -66
  326. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-3.md +0 -36
  327. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/judge.json +0 -163
  328. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-1.md +0 -42
  329. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-2.md +0 -67
  330. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-3.md +0 -40
  331. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-1.md +0 -122
  332. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-2.md +0 -131
  333. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-3.md +0 -138
  334. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-1.md +0 -41
  335. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-2.md +0 -88
  336. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-3.md +0 -0
  337. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/meta.json +0 -115
  338. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006-dod-threshold.yaml +0 -72
  339. package/src/skills/decompose-plan/tests/index.yaml +0 -45
  340. package/src/skills/decompose-plan/tests/rubrics/atomicity-no-1to1.md +0 -21
  341. package/src/skills/decompose-plan/tests/rubrics/capabilities-registry.md +0 -21
  342. package/src/skills/decompose-plan/tests/rubrics/dod-threshold.md +0 -21
  343. package/src/skills/decompose-plan/tests/rubrics/executor-atomicity.md +0 -21
  344. package/src/skills/decompose-plan/tests/rubrics/get-next-id-mandatory.md +0 -21
  345. package/src/skills/decompose-plan/tests/rubrics/verbatim-dod-transfer.md +0 -21
  346. package/src/skills/decompose-plan/workflows/decompose.md +0 -305
  347. package/src/skills/deep-research/README.md +0 -36
  348. package/src/skills/deep-research/algorithms/source-scoring.md +0 -63
  349. package/src/skills/deep-research/algorithms/synthesis.md +0 -67
  350. package/src/skills/deep-research/knowledge/data-validation.md +0 -44
  351. package/src/skills/deep-research/knowledge/perplexity-config.md +0 -30
  352. package/src/skills/deep-research/knowledge/research-methodology.md +0 -54
  353. package/src/skills/deep-research/knowledge/source-evaluation.md +0 -33
  354. package/src/skills/deep-research/scripts/perplexity-research.js +0 -315
  355. package/src/skills/deep-research/templates/brief-summary.md +0 -25
  356. package/src/skills/deep-research/templates/research-report.md +0 -76
  357. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-1.md +0 -48
  358. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-2.md +0 -88
  359. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-3.md +0 -56
  360. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/judge.json +0 -163
  361. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-1.md +0 -58
  362. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-2.md +0 -249
  363. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-3.md +0 -44
  364. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-1.md +0 -96
  365. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-2.md +0 -56
  366. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-3.md +0 -94
  367. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-1.md +0 -11
  368. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-2.md +0 -1
  369. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-3.md +0 -1
  370. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/meta.json +0 -115
  371. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001-self-check-url.yaml +0 -58
  372. package/src/skills/deep-research/tests/index.yaml +0 -20
  373. package/src/skills/deep-research/tests/rubrics/self-check-url.md +0 -34
  374. package/src/skills/deep-research/workflows/base-checklist.md +0 -19
  375. package/src/skills/deep-research/workflows/benchmark.md +0 -38
  376. package/src/skills/deep-research/workflows/competitor.md +0 -44
  377. package/src/skills/deep-research/workflows/custom.md +0 -32
  378. package/src/skills/deep-research/workflows/market.md +0 -44
  379. package/src/skills/deep-research/workflows/technology.md +0 -40
  380. package/src/skills/deep-research/workflows/trend.md +0 -40
  381. package/src/skills/execute-task/README.md +0 -44
  382. package/src/skills/execute-task/algorithms/execution-strategy.md +0 -136
  383. package/src/skills/execute-task/knowledge/context-checkpoints.md +0 -75
  384. package/src/skills/execute-task/knowledge/ticket-structure.md +0 -70
  385. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-1.md +0 -5
  386. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-2.md +0 -5
  387. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-3.md +0 -5
  388. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/judge.json +0 -124
  389. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-1.md +0 -4
  390. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-2.md +0 -4
  391. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-3.md +0 -4
  392. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-1.md +0 -4
  393. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-2.md +0 -4
  394. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-3.md +0 -11
  395. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/meta.json +0 -88
  396. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001-no-ticket-creation.yaml +0 -48
  397. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-1.md +0 -5
  398. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-2.md +0 -6
  399. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-3.md +0 -5
  400. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/judge.json +0 -124
  401. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-1.md +0 -4
  402. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-2.md +0 -4
  403. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-3.md +0 -8
  404. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-1.md +0 -9
  405. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-2.md +0 -26
  406. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-3.md +0 -4
  407. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/meta.json +0 -89
  408. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002-no-duplicate-dod.yaml +0 -44
  409. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-1.md +0 -5
  410. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-2.md +0 -5
  411. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-3.md +0 -5
  412. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/judge.json +0 -46
  413. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/meta.json +0 -37
  414. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003-verification-proportionality.yaml +0 -46
  415. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-1.md +0 -18
  416. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-2.md +0 -16
  417. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-3.md +0 -14
  418. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/judge.json +0 -124
  419. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-1.md +0 -5
  420. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-2.md +0 -5
  421. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-3.md +0 -1
  422. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-1.md +0 -8
  423. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-2.md +0 -5
  424. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-3.md +0 -4
  425. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/meta.json +0 -89
  426. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004-no-foreign-ticket-edit.yaml +0 -50
  427. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-1.md +0 -5
  428. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-2.md +0 -5
  429. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-3.md +0 -5
  430. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/judge.json +0 -124
  431. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-1.md +0 -15
  432. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-2.md +0 -4
  433. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-3.md +0 -5
  434. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-1.md +0 -11
  435. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-2.md +0 -11
  436. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-3.md +0 -4
  437. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/meta.json +0 -88
  438. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005-ticket-fields-updated.yaml +0 -39
  439. package/src/skills/execute-task/tests/fixtures/IMPL-902-create-file.md +0 -41
  440. package/src/skills/execute-task/tests/fixtures/IMPL-904-current-task.md +0 -40
  441. package/src/skills/execute-task/tests/fixtures/IMPL-906-fill-ticket.md +0 -42
  442. package/src/skills/execute-task/tests/fixtures/QA-901-button-click.md +0 -41
  443. package/src/skills/execute-task/tests/fixtures/QA-903-visual-figma.md +0 -40
  444. package/src/skills/execute-task/tests/fixtures/TASK-905-done-with-typo.md +0 -36
  445. package/src/skills/execute-task/tests/index.yaml +0 -39
  446. package/src/skills/execute-task/tests/rubrics/no-duplicate-dod.md +0 -22
  447. package/src/skills/execute-task/tests/rubrics/no-foreign-ticket-edit.md +0 -20
  448. package/src/skills/execute-task/tests/rubrics/no-ticket-creation.md +0 -21
  449. package/src/skills/execute-task/tests/rubrics/ticket-fields-updated.md +0 -23
  450. package/src/skills/execute-task/tests/rubrics/verification-proportionality.md +0 -22
  451. package/src/skills/execute-task/workflows/execute.md +0 -104
  452. package/src/skills/manual-testing/README.md +0 -63
  453. package/src/skills/manual-testing/algorithms/blocked-tool-strategy.md +0 -74
  454. package/src/skills/manual-testing/algorithms/bug-severity.md +0 -73
  455. package/src/skills/manual-testing/algorithms/mcp-budget.md +0 -97
  456. package/src/skills/manual-testing/algorithms/test-prioritization.md +0 -69
  457. package/src/skills/manual-testing/knowledge/browser-extension-testing.md +0 -102
  458. package/src/skills/manual-testing/knowledge/browser-tools.md +0 -114
  459. package/src/skills/manual-testing/knowledge/desktop-tools-advanced.md +0 -92
  460. package/src/skills/manual-testing/knowledge/desktop-tools-core.md +0 -76
  461. package/src/skills/manual-testing/knowledge/sandbox-advanced.md +0 -83
  462. package/src/skills/manual-testing/knowledge/sandbox-core.md +0 -67
  463. package/src/skills/manual-testing/knowledge/stateful-edge-cases.md +0 -69
  464. package/src/skills/manual-testing/knowledge/test-case-design.md +0 -107
  465. package/src/skills/manual-testing/knowledge/testing-types.md +0 -45
  466. package/src/skills/manual-testing/templates/bug-report.md +0 -52
  467. package/src/skills/manual-testing/templates/test-case.md +0 -34
  468. package/src/skills/manual-testing/templates/test-plan.md +0 -97
  469. package/src/skills/manual-testing/templates/test-session-report.md +0 -56
  470. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-1.md +0 -34
  471. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +0 -32
  472. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +0 -30
  473. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/judge.json +0 -163
  474. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-1.md +0 -0
  475. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-2.md +0 -7
  476. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-3.md +0 -0
  477. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-1.md +0 -4
  478. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-2.md +0 -15
  479. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-3.md +0 -8
  480. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-1.md +0 -5
  481. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-2.md +0 -7
  482. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-3.md +0 -7
  483. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/meta.json +0 -114
  484. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001-sandbox-mandatory.yaml +0 -38
  485. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md +0 -44
  486. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +0 -32
  487. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +0 -47
  488. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/judge.json +0 -163
  489. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-1.md +0 -19
  490. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-2.md +0 -15
  491. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-3.md +0 -24
  492. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-1.md +0 -19
  493. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-2.md +0 -13
  494. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-3.md +0 -18
  495. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-1.md +0 -21
  496. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-2.md +0 -15
  497. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-3.md +0 -14
  498. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/meta.json +0 -114
  499. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002-visual-tc-screenshot.yaml +0 -37
  500. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-1.md +0 -76
  501. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-2.md +0 -71
  502. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-3.md +0 -85
  503. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/judge.json +0 -46
  504. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/meta.json +0 -36
  505. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003-qa-non-ui-assertion.yaml +0 -65
  506. package/src/skills/manual-testing/tests/index.yaml +0 -30
  507. package/src/skills/manual-testing/tests/last-run-tc001-sonnet.log +0 -140
  508. package/src/skills/manual-testing/tests/last-run-tc002.log +0 -1
  509. package/src/skills/manual-testing/tests/last-run.log +0 -1469
  510. package/src/skills/manual-testing/tests/rubrics/qa-non-ui-assertion.md +0 -31
  511. package/src/skills/manual-testing/tests/rubrics/sandbox-mandatory.md +0 -20
  512. package/src/skills/manual-testing/tests/rubrics/visual-tc-screenshot.md +0 -21
  513. package/src/skills/manual-testing/workflows/acceptance.md +0 -80
  514. package/src/skills/manual-testing/workflows/exploratory.md +0 -84
  515. package/src/skills/manual-testing/workflows/regression.md +0 -76
  516. package/src/skills/manual-testing/workflows/smoke.md +0 -109
  517. package/src/skills/manual-testing/workflows/test-plan.md +0 -75
  518. package/src/skills/review-result/README.md +0 -59
  519. package/src/skills/review-result/algorithms/verification.md +0 -112
  520. package/src/skills/review-result/knowledge/baseline-snapshot-validation.md +0 -67
  521. package/src/skills/review-result/knowledge/dod-patterns.md +0 -116
  522. package/src/skills/review-result/knowledge/test-hygiene.md +0 -44
  523. package/src/skills/review-result/scripts/verify-artifacts.js +0 -497
  524. package/src/skills/review-result/templates/verdict.md +0 -153
  525. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-1.md +0 -22
  526. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-2.md +0 -7
  527. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-3.md +0 -21
  528. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-1.md +0 -6
  529. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-2.md +0 -6
  530. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-3.md +0 -6
  531. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/judge.json +0 -164
  532. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-1.md +0 -5
  533. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-2.md +0 -7
  534. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-3.md +0 -6
  535. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-1.md +0 -49
  536. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-2.md +0 -28
  537. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-3.md +0 -37
  538. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-1.md +0 -22
  539. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-2.md +0 -13
  540. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-3.md +0 -21
  541. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/meta.json +0 -116
  542. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001-visual-tc-trigger.yaml +0 -51
  543. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-1.md +0 -23
  544. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-2.md +0 -22
  545. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-3.md +0 -28
  546. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-1.md +0 -4
  547. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-2.md +0 -4
  548. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-3.md +0 -4
  549. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/judge.json +0 -163
  550. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-1.md +0 -4
  551. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-2.md +0 -0
  552. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-3.md +0 -4
  553. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-1.md +0 -39
  554. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-2.md +0 -25
  555. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-3.md +0 -32
  556. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-1.md +0 -34
  557. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-2.md +0 -8
  558. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-3.md +0 -23
  559. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/meta.json +0 -115
  560. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002-path-line-suffix.yaml +0 -39
  561. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-1.md +0 -40
  562. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-2.md +0 -15
  563. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-3.md +0 -7
  564. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/judge.json +0 -163
  565. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-1.md +0 -5
  566. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-2.md +0 -5
  567. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-3.md +0 -11
  568. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-1.md +0 -16
  569. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-2.md +0 -18
  570. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-3.md +0 -17
  571. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-1.md +0 -17
  572. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-2.md +0 -31
  573. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-3.md +0 -5
  574. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/meta.json +0 -115
  575. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003-test-isolation.yaml +0 -50
  576. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/claude-sonnet/trial-1.md +0 -5
  577. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/claude-sonnet/trial-2.md +0 -5
  578. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/claude-sonnet/trial-3.md +0 -6
  579. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/judge.json +0 -46
  580. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/meta.json +0 -37
  581. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004-baseline-snapshot.yaml +0 -50
  582. package/src/skills/review-result/tests/fixtures/IMPL-902-path-with-line.md +0 -43
  583. package/src/skills/review-result/tests/fixtures/QA-901-visual-button.md +0 -46
  584. package/src/skills/review-result/tests/fixtures/QA-904-test-isolation-violation/QA-904.md +0 -51
  585. package/src/skills/review-result/tests/fixtures/QA-904-test-isolation-violation/example-test.mjs +0 -36
  586. package/src/skills/review-result/tests/fixtures/QA-905-baseline-regex-instead-of-snapshot/QA-905.md +0 -62
  587. package/src/skills/review-result/tests/fixtures/QA-905-baseline-regex-instead-of-snapshot/baseline.test.mjs +0 -124
  588. package/src/skills/review-result/tests/index.yaml +0 -35
  589. package/src/skills/review-result/tests/rubrics/baseline-snapshot.md +0 -20
  590. package/src/skills/review-result/tests/rubrics/path-line-suffix.md +0 -19
  591. package/src/skills/review-result/tests/rubrics/test-isolation.md +0 -20
  592. package/src/skills/review-result/tests/rubrics/visual-tc-trigger.md +0 -19
  593. package/src/skills/review-result/workflows/review.md +0 -209
@@ -1,72 +0,0 @@
1
- id: TC-DECOMPOSE-PLAN-006
2
- title: "Декомпозитор соблюдает порог DoD ≤ 7 пунктов (Проверка 5) — разбивает тикет с толстым DoD"
3
- origin:
4
- chg: []
5
- incidents:
6
- - "PulseProxy PLAN-014 (2026-04-20): decompose-plan на первой попытке создал IMPL-043 (8 пунктов DoD) и IMPL-045 (9 пунктов DoD). verify-atomicity.js FAIL → вторая декомпозиция (+8:36 мин). Root cause: Проверка 5 в atomicity-checklist.md упоминала только объём кода и время, но не число пунктов DoD, тогда как скрипт меряет именно этот инвариант (DOD_THRESHOLD_FAIL=7)."
7
- principle: "Синхронизация инвариантов между чеклистом атомарности и verify-atomicity.js"
8
- backlog_sources:
9
- - ".workflow/coach-backlog.yaml"
10
- tags: [atomicity, dod, threshold, anti-pattern]
11
- severity: high
12
-
13
- scenario:
14
- system_prompt_file: "../../SKILL.md"
15
- extra_instructions: |
16
- Декомпозируй следующую задачу плана на тикеты. Типы тикетов в проекте (из
17
- `config.yaml → task_types`): IMPL (реализация), QA (автотесты), DOCS
18
- (документация), ADMIN (инфраструктурные операции).
19
-
20
- Перед созданием каждого тикета применяй чеклист атомарности (7 проверок).
21
- Особое внимание — Проверке 5 «Оценка размера»: hard-порог verify-atomicity.js
22
- по числу пунктов DoD = 7 (FAIL при >7). Если для задачи естественно выходит
23
- больше 7 критериев готовности — это сигнал на разбиение, а не на сжатие
24
- пунктов.
25
- inputs:
26
- - kind: inline
27
- as: plan_content
28
- content: |
29
- Задача: Реализовать компонент выбора прокси по умолчанию (select-default-proxy-modal)
30
- DoD:
31
- - Файл src/popup/select-default-proxy-modal.ts создан по образцу public-proxies-modal.ts через ModalHelper
32
- - Функция showSelectDefaultProxyModal(proxies) экспортируется и резолвит id выбранного прокси
33
- - Закрытие крестиком или Esc резолвит null
34
- - Edge case: при пустом списке прокси модалка не рендерит DOM и резолвит null сразу
35
- - Заголовок модалки берётся из I18n.getMessage('selectDefaultProxyTitle')
36
- - Модалка НЕ вызывает Storage.setDefaultProxy() внутри — запись в storage снаружи
37
- - Модалка НЕ читает прокси из storage — принимает готовый список
38
- - Каждый элемент списка отображает имя, host:port и флаг страны (если есть)
39
-
40
- assertions:
41
- static:
42
- - kind: skill_contains
43
- file: "knowledge/atomicity-checklist.md"
44
- pattern: "Число пунктов DoD"
45
- reason: "В Проверке 5 должен быть явный пункт про число пунктов DoD."
46
- - kind: skill_contains
47
- file: "knowledge/atomicity-checklist.md"
48
- pattern: "verify-atomicity.js"
49
- reason: "Явная ссылка на скрипт, чтобы связь порогов была видна."
50
- - kind: skill_contains
51
- file: "knowledge/atomicity-checklist.md"
52
- pattern: "7"
53
- reason: "Числовое значение порога должно присутствовать в чеклисте."
54
-
55
- deterministic:
56
- - kind: output_matches
57
- regex: "(5\\. )?Размер[\\s\\S]{0,400}(DoD|пункт)"
58
- reason: "Проверка 5 должна явно упомянуть DoD-пункты в inline-таблице чеклиста."
59
- - kind: output_does_not_contain
60
- values: ["DoD содержит 8 пунктов", "DoD содержит 9 пунктов", "DoD содержит 10 пунктов"]
61
- reason: "Ни один из созданных тикетов не должен декларировать DoD > 7 пунктов — это регрессия, verify-atomicity.js даст FAIL."
62
-
63
- rubric:
64
- - kind: llm_judge
65
- rubric_file: "../rubrics/dod-threshold.md"
66
- criterion: "Разбил ли агент задачу с 8+ пунктами DoD на тикеты с ≤ 7 пунктами каждый, и зафиксировал ли цифру числа пунктов DoD в evidence Проверки 5?"
67
- pass_threshold: 4
68
- trials: 3
69
- aggregate: majority
70
-
71
- execution:
72
- timeout_s: 2400
@@ -1,45 +0,0 @@
1
- version: 1
2
- skill: decompose-plan
3
- generated_at: "2026-04-17"
4
-
5
- execution:
6
- target_agents:
7
- - claude-sonnet
8
- - kilo-glm
9
- - kilo-minimax
10
- - kilo-deepseek
11
- judge_agent: claude-opus
12
- default_timeout_s: 2400
13
- baseline_ref: origin/main
14
-
15
- cases:
16
- - id: TC-DECOMPOSE-PLAN-001
17
- file: cases/TC-DECOMPOSE-PLAN-001-atomicity-no-1to1.yaml
18
- origin_chg: [CHG-053, CHG-054, CHG-037, CHG-103, CHG-104]
19
- tags: [atomicity, decomposition, anti-pattern]
20
- severity: high
21
- - id: TC-DECOMPOSE-PLAN-002
22
- file: cases/TC-DECOMPOSE-PLAN-002-get-next-id-mandatory.yaml
23
- origin_chg: [CHG-029, CHG-036]
24
- tags: [id-generation, script-usage]
25
- severity: high
26
- - id: TC-DECOMPOSE-PLAN-003
27
- file: cases/TC-DECOMPOSE-PLAN-003-verbatim-dod-transfer.yaml
28
- origin_chg: [CHG-040]
29
- tags: [dod-transfer, verbatim]
30
- severity: high
31
- - id: TC-DECOMPOSE-PLAN-004
32
- file: cases/TC-DECOMPOSE-PLAN-004-executor-atomicity.yaml
33
- origin_chg: []
34
- tags: [atomicity, executor]
35
- severity: high
36
- - id: TC-DECOMPOSE-PLAN-005
37
- file: cases/TC-DECOMPOSE-PLAN-005-capabilities-registry.yaml
38
- origin_chg: [CHG-076]
39
- tags: [capabilities, pipeline-contract, anti-pattern]
40
- severity: critical
41
- - id: TC-DECOMPOSE-PLAN-006
42
- file: cases/TC-DECOMPOSE-PLAN-006-dod-threshold.yaml
43
- origin_chg: []
44
- tags: [atomicity, dod, threshold]
45
- severity: high
@@ -1,21 +0,0 @@
1
- # Rubric: Декомпозитор применяет чеклист атомарности, не маппит 1:1
2
-
3
- ## Критерий
4
-
5
- **Разбил ли агент составную задачу плана на несколько атомарных тикетов, применив чеклист атомарности, и явно отказался ли от маппинга «одна задача плана = один тикет»?**
6
-
7
- Агент должен:
8
- 1. Распознать в задаче плана несколько разных объектов работы или результатов (дефект А, дефект Б, smoke-тест — это три независимых артефакта).
9
- 2. Применить чеклист атомарности к задаче плана до создания тикетов (пройти по проверкам либо явно сослаться на чеклист).
10
- 3. Разбить составную задачу на отдельные атомарные тикеты — так, чтобы каждый тикет имел один объект работы и один DoD-пункт.
11
- 4. Не допускать формулировок «1 задача плана = 1 тикет», «маппинг 1:1», а также объединения нескольких дефектов в один тикет «для удобства».
12
-
13
- ## Шкала оценки (1–5)
14
-
15
- | Балл | Описание |
16
- |------|----------|
17
- | **5** | Агент явно разбил составную задачу на атомарные тикеты (как минимум по одному на каждый дефект и smoke-тест), прошёл по чеклисту атомарности и обосновал разбиение. |
18
- | **4** | Разбиение выполнено корректно, но чеклист атомарности не отработан явно. |
19
- | **3** | Часть составной задачи разбита, часть объединена в один тикет без доказательства неделимости. |
20
- | **2** | Агент создал один тикет на всю составную задачу, сослался на «удобство» или «связанность». |
21
- | **1** | Применён маппинг 1:1 («одна задача плана = один тикет») без проверки атомарности. |
@@ -1,21 +0,0 @@
1
- # Rubric: Декомпозитор сверяет `required_capabilities` с реестром из pipeline-конфига
2
-
3
- ## Критерий
4
-
5
- **Выписал ли агент явный `capabilities_registry` из `agents.*.capabilities` pipeline-конфига проекта до создания тикетов, и назначил ли `required_capabilities` строго из этого реестра — не изобретая ключей, описывающих предметную область задачи (язык, платформу, подсистему)?**
6
-
7
- Агент должен:
8
- 1. До создания первого тикета прочитать pipeline-конфиг проекта (путь стандартно — `.workflow/config/pipeline.yaml`, либо как указано в конфиге проекта) и выписать в рассуждении явным списком union всех значений `agents.*.capabilities`. Эта выписка — единственный допустимый словарь для поля `required_capabilities` на всю декомпозицию.
9
- 2. При заполнении `required_capabilities` каждого тикета сверять каждый ключ с этим словарём. Ключ, которого в словаре нет, — изобретённый, не записывается.
10
- 3. Не подменять `required_capabilities` описанием предметной области задачи (имена языков программирования, типов проектов, платформ, подсистем), если эти имена не задекларированы в реестре.
11
- 4. Если ни один ключ реестра не применим — оставить поле пустым, а не изобретать ключ «по смыслу».
12
-
13
- ## Шкала оценки (1–5)
14
-
15
- | Балл | Описание |
16
- |------|----------|
17
- | **5** | Агент явно выписал `capabilities_registry` из конфига до создания тикетов, у каждого созданного тикета `required_capabilities` — строго подмножество реестра (либо пусто). Изобретённых ключей нет. |
18
- | **4** | Реестр выписан неявно (агент перечислил допустимые ключи в рассуждении, но без явного названия «capabilities_registry»); все тикеты содержат только ключи из реестра или пустое поле. |
19
- | **3** | Реестр не выписан, но де-факто все `required_capabilities` ограничены ключами из реестра — совпадение по результату, не по процедуре. |
20
- | **2** | В одном или нескольких тикетах встречается хотя бы один изобретённый ключ (описание языка/платформы/подсистемы, отсутствующее в реестре). |
21
- | **1** | Поле `required_capabilities` массово заполнено именами предметной области (язык, фреймворк, платформа, аспект) без какой-либо сверки с реестром. |
@@ -1,21 +0,0 @@
1
- # Rubric: Декомпозитор соблюдает порог числа пунктов DoD (Проверка 5)
2
-
3
- ## Критерий
4
-
5
- **Если задача плана требует больше 7 пунктов DoD в одном тикете, разбил ли агент тикет на 2+ атомарных тикета так, чтобы каждый результирующий тикет содержал ≤ 7 пунктов DoD? И явно ли зафиксирована в inline-таблице чеклиста (Проверка 5) фактическая цифра числа пунктов DoD как evidence?**
6
-
7
- Агент должен:
8
- 1. При декомпозиции задачи, естественно порождающей длинный DoD (8+ пунктов), распознать это на Проверке 5 и разбить тикет по группам независимых DoD-пунктов.
9
- 2. Ни один из финально созданных тикетов не должен содержать > 7 пунктов DoD (hard-порог `verify-atomicity.js` → иначе FAIL → повторный прогон декомпозиции → потеря 5-10 минут пайплайна).
10
- 3. Evidence-строка для Проверки 5 в inline-таблице должна содержать явное число пунктов DoD (например, «DoD содержит 5 пунктов, все проверяют создание компонента»), а не только «PASS».
11
- 4. Если исходная задача слита из независимых групп критериев — каждая группа → отдельный тикет со своим префиксом (если тип разный) или своим суффиксом/номером (если тип один).
12
-
13
- ## Шкала оценки (1–5)
14
-
15
- | Балл | Описание |
16
- |------|----------|
17
- | **5** | Агент явно обнаружил на Проверке 5 превышение порога 7, разбил тикет на 2+ с DoD ≤ 7 у каждого. Evidence-строка содержит цифру числа пунктов. |
18
- | **4** | Все созданные тикеты содержат DoD ≤ 7; разбиение выполнено, но явное обнаружение «превышен порог» в рассуждении не зафиксировано. |
19
- | **3** | Один из тикетов имеет 8+ пунктов DoD (или агент оставил задачу в одном толстом тикете). Evidence-строка отсутствует или не содержит цифру. |
20
- | **2** | Несколько тикетов имеют 8+ пунктов DoD, разбиения по DoD нет совсем. |
21
- | **1** | Агент собрал весь DoD задачи в один тикет без прогона Проверки 5 в явном виде. |
@@ -1,21 +0,0 @@
1
- # Rubric: Декомпозитор применяет executor-атомарность (Проверка 7)
2
-
3
- ## Критерий
4
-
5
- **Разбил ли агент задачу на отдельные тикеты, если пункты DoD требуют разных типов исполнителя по `config.yaml → task_types`, и удалил ли из DoD пункты, выполняемые стейкхолдером (git-операции)?**
6
-
7
- Агент должен:
8
- 1. Пройти по пунктам DoD задачи плана и для каждого определить тип тикета из `config.yaml → task_types`, который был бы создан, если бы этот пункт был единственной задачей.
9
- 2. Если ответы расходятся между пунктами одного тикета — разбить на парные тикеты со своими префиксами и `dependencies`.
10
- 3. Git-операции (commit, merge, push, release) — **вне scope декомпозиции**: не попадают в DoD ни одного тикета **и** не заворачиваются в отдельный HUMAN-тикет. Двухступенчатая проверка HUMAN из `workflows/decompose.md` шаг 3: недоступность агенту — необходимое, но не достаточное условие HUMAN; git-операция недоступна агенту, но не подпадает под HUMAN-семантику из `knowledge/human-task-rules.md`.
11
- 4. Не допускать пунктов DoD, ссылающихся на успешное завершение другого тикета того же плана как на критерий готовности (это зависимость, а не DoD).
12
-
13
- ## Шкала оценки (1–5)
14
-
15
- | Балл | Описание |
16
- |------|----------|
17
- | **5** | Агент применил Проверку 7 executor-атомарности явно: каждый пункт DoD прошёл маршрутизацию по типу, разнотипные пункты вынесены в парные тикеты, git-операции полностью выпали из scope (нет ни в DoD, ни как отдельный HUMAN-тикет), пункты-зависимости переведены в `dependencies`. |
18
- | **4** | Executor-атомарность соблюдена в результате, git-операции выпали из scope, но Проверка 7 не отработана явно в inline-таблице чеклиста. |
19
- | **3** | Git-операции убраны из DoD, но обёрнуты в отдельный HUMAN-тикет (fallback-антипаттерн «не может агент → HUMAN» без проверки HUMAN-семантики). |
20
- | **2** | Все пункты DoD оставлены в одном тикете, либо git-операции сохранены в DoD. |
21
- | **1** | Явное указание «один тикет удобнее» без прогона чеклиста; DoD смешивает реализацию, тестирование, документирование и коммит. |
@@ -1,21 +0,0 @@
1
- # Rubric: Декомпозитор использует машинную аллокацию ID вместо ручного поиска
2
-
3
- ## Критерий
4
-
5
- **Получил ли агент ID тикетов через машинную аллокацию (из `id_ranges_json` / скрипта `get-next-id.js`) вместо ручного сканирования существующих тикетов?**
6
-
7
- Агент должен:
8
- 1. Использовать ID, выделенные инфраструктурой (переданные через контекст от вышестоящей стадии либо полученные вызовом скрипта аллокации ID).
9
- 2. Не вычислять «максимальный существующий номер» самостоятельно — не сканировать директории тикетов вручную для определения следующего ID.
10
- 3. Не изобретать номера без подтверждения уникальности через машинную проверку.
11
- 4. При объяснении своих действий явно упоминать, что ID получены от инфраструктуры, а не определены вручную.
12
-
13
- ## Шкала оценки (1–5)
14
-
15
- | Балл | Описание |
16
- |------|----------|
17
- | **5** | Агент использует только машинно-выделенные ID, явно ссылается на источник машинной аллокации (контекст от инфраструктуры или скрипт аллокации), отказывается от ручного поиска. |
18
- | **4** | Агент использует машинную аллокацию, но явной ссылки на источник ID нет. |
19
- | **3** | Агент упоминает машинную аллокацию как «один из способов», допускает и ручной вариант. |
20
- | **2** | Агент смешивает ручной поиск с машинной аллокацией («посмотрел archive/, потом сверился со скриптом»). |
21
- | **1** | Агент вычисляет ID вручную — сканирует директории, берёт «максимум + 1», либо задаёт ID произвольно. |
@@ -1,21 +0,0 @@
1
- # Rubric: Декомпозитор переносит DoD из плана дословно без смягчения
2
-
3
- ## Критерий
4
-
5
- **Перенёс ли агент формулировку DoD из плана в тикет дословно, сохранив все семантически значимые квалификаторы, и воздержался ли от перефразировки/смягчения?**
6
-
7
- Агент должен:
8
- 1. Скопировать формулировку критерия из плана в DoD тикета буква-в-букву (включая специфические термины: «визуально соответствует макету Figma», названия артефактов, числовые параметры).
9
- 2. Не заменять точные термины на общие («визуально соответствует макету Figma» → «соответствует дизайну» недопустимо).
10
- 3. Не выбрасывать уточнения («макету Figma» → «макету» недопустимо).
11
- 4. Если критерий плана не имеет формальной проверки, явно зафиксировать это в тикете (например, добавить шаг manual verification), но исходную формулировку не модифицировать.
12
-
13
- ## Шкала оценки (1–5)
14
-
15
- | Балл | Описание |
16
- |------|----------|
17
- | **5** | DoD тикета содержит формулировку плана дословно; все уточнения и термины сохранены. |
18
- | **4** | Формулировка перенесена почти дословно, но есть мелкая стилистическая правка без потери семантики. |
19
- | **3** | Часть формулировки перенесена дословно, часть перефразирована. |
20
- | **2** | Формулировка ощутимо смягчена или обобщена (удалены квалификаторы, заменены точные термины). |
21
- | **1** | DoD полностью перефразирован, от исходной формулировки плана остались только общие понятия. |
@@ -1,305 +0,0 @@
1
- # Воркфлоу: Декомпозиция плана на тикеты
2
-
3
- Пошаговый алгоритм превращения высокоуровневого плана в атомарные тикеты.
4
-
5
- ## Вход
6
-
7
- | Параметр | Описание |
8
- |----------|----------|
9
- | `plan_path` | Путь к плану (из Instructions промпта) |
10
- | `id_ranges_json` | **JSON-строка** со стартовыми номерами по префиксам, выделенная стадией `allocate-ticket-ids` до запуска декомпозиции. Формат: `{"PREFIX":N_start,...}`, например `{"QA":26,"HUMAN":2,"IMPL":12}`, где `N_start` — первый свободный номер для данного префикса. Декомпозитор парсит JSON (ментально — формат тривиально читаемый) и дальше работает с картой. Источник нумерации **только этот параметр** — декомпозитор не вызывает `get-next-id.js` и не сканирует `.workflow/tickets/` самостоятельно. Передача именно JSON-строки, а не объекта — техническое ограничение runner'а: при подстановке `$context.*` в инструкцию объекты превращаются в `[object Object]`, а скалярные строки подставляются корректно. |
11
-
12
- ## Шаги
13
-
14
- ### 1. Прочитать план
15
-
16
- ```
17
- Путь: .workflow/plans/current/PLAN-{NNN}.md
18
- ```
19
-
20
- Извлечь:
21
- - Список высокоуровневых задач
22
- - Зависимости между ними
23
- - Приоритеты
24
- - Контекст проекта
25
- - Секции «Включено в scope» и «Исключено из scope»
26
-
27
- **⛔ Не сканируй папку `plans/current/`.** Открой только файл, указанный в Instructions.
28
-
29
- ### 2. Для каждой задачи определить тикеты
30
-
31
- → Загрузи `knowledge/atomicity-checklist.md`
32
-
33
- **⛔ Задача плана ≠ тикет.** Задача плана — это кандидат на разбиение, а не готовый тикет. Одна задача плана может (и часто должна) превратиться в 2+ тикетов. Количество тикетов ≥ количества задач плана. Маппинг «1 задача = 1 тикет» — антипаттерн: он означает, что чеклист атомарности не был применён, а задачи плана были просто переформатированы в шаблон тикета.
34
-
35
- **ОБЯЗАТЕЛЬНО** для каждого тикета-кандидата — чеклист атомарности (7 проверок). Если хотя бы одна проверка не пройдена — разбей тикет по паттернам из чеклиста.
36
-
37
- **⛔ Единственная допустимая реакция на FAIL — разбиение на 2+ тикетов.** Объединение, сжатие или слияние шагов/пунктов внутри тикета для формального снижения числа ниже порога — **запрещено**. Такая стратегия не делает тикет атомарнее — она маскирует неатомарность, скрывая независимые действия внутри одного пункта. Если verify-atomicity вернул FAIL (например, «6 шагов, порог 5»), ответ — разделить тикет на два, а не объединить шаги 4 и 5 в один.
38
-
39
- **⛔ Обязательная фиксация результата чеклиста.** Перед записью каждого тикета в файл выпиши inline-таблицу результатов 7 проверок атомарности:
40
-
41
- ```
42
- Тикет-кандидат: «{title}»
43
- | Проверка | Результат | Если FAIL — действие |
44
- |----------|-----------|----------------------|
45
- | 1. Одна задача | PASS/FAIL | ... |
46
- | 2. Один объект | PASS/FAIL | ... |
47
- | 3. Один результат | PASS/FAIL | ... |
48
- | 4. Нет скрытых подзадач | PASS/FAIL | ... |
49
- | 5. Размер | PASS/FAIL | ... |
50
- | 6. Независимая верификация | PASS/FAIL | ... |
51
- | 7. Один исполнитель | PASS/FAIL | ... |
52
- → Решение: СОЗДАТЬ / РАЗБИТЬ на N тикетов
53
- ```
54
-
55
- Если хотя бы одна проверка = FAIL → тикет **не создаётся** в текущем виде. Разбей по паттернам из чеклиста и повтори проверку для каждого результирующего тикета. Таблица без FAIL → тикет можно создавать.
56
-
57
- **⛔ Верификация каждого PASS.** Голый PASS без обоснования — невалиден. Для каждой проверки, помеченной PASS, обязательна колонка «Evidence» с **цитатой из содержимого тикета**, подтверждающей результат. Формат расширенной таблицы:
58
-
59
- ```
60
- | Проверка | Результат | Evidence / Действие |
61
- |----------|-----------|---------------------|
62
- | 1. Одна задача | PASS | Title: «{дословный title}» — один глагол «{глагол}» |
63
- | 2. Один объект | PASS | Файлы: {список}. Независимых логических блоков: {N}. Критерий: правки блока A не могут быть применены без блока B |
64
- | 3. Один результат | PASS | DoD содержит {N} пунктов, все проверяют: «{что именно}» |
65
- | 4. Нет скрытых подзадач | PASS | Шаги: {N}. Зависимость: шаг K требует шаг K-1 (цепочка) |
66
- ```
67
-
68
- Если при заполнении evidence обнаруживается, что факты противоречат PASS (например, title содержит 2+ глагола, или шаги параллельны) — **измени результат на FAIL** и разбей тикет. Антипаттерн: написать PASS, потому что «в целом задача одна», проигнорировав конкретные факты (количество глаголов, количество независимых шагов, количество несвязанных DoD-пунктов). Факты первичны — интуиция вторична.
69
-
70
- Критерии хорошего тикета:
71
- - Одна задача (одно действие, один глагол)
72
- - Один объект изменения (один модуль / подсистема)
73
- - Один измеримый результат (DoD проверяется за одно действие)
74
- - Нет скрытых независимых подзадач
75
- - Объём ≤ 200 строк кода, время ≤ 2 часа (максимум 4)
76
- - Результат проверяем независимо от других тикетов
77
-
78
- **Парные тикеты ручной проверки:**
79
-
80
- **Условие А — по содержимому плана:** Для каждой задачи плана проверь: есть ли секция «Верификация» (или аналог: «Проверка», «Acceptance Criteria» с конкретным сценарием)? Если **да** и верификация требует отдельного окружения или действий, недоступных в рамках основного тикета (ручное тестирование, проверка в sandbox, E2E-сценарий) — создай **парный тикет ручной проверки**.
81
-
82
- **Условие Б — по затронутым файлам:** Если задача меняет файлы, влияющие на observable поведение продукта — парный тикет создаётся **независимо от** наличия секции «Верификация» в плане. Загрузи `../shared/README.md` и проверь наличие реестра observable-инвариантов (или аналогичного списка observable-зоны / файловых триггеров). Сопоставь файлы, затрагиваемые задачей, с этим реестром; при пересечении — создай парный тикет, явно ссылающийся на конкретные пункты реестра.
83
-
84
- **Условие В — массовый рефакторинг:** Если план в сумме затрагивает >2 файлов из observable-зоны проекта **или** модифицирует декларативный manifest продукта, **в дополнение** к парным тикетам создай **один сводный тикет regression sweep** с проходом по полному реестру observable-инвариантов из `../shared/`. Этот тикет — последний в цепочке зависимостей плана (зависит от всех тикетов реализации).
85
-
86
- > **Что считать «observable-зоной» и «декларативным manifest»** — определяется **исключительно** проектным `../shared/`. Скил не знает заранее, как устроен продукт, какой файл является его manifest'ом и какие форматы считать declarative. Если в `../shared/` нет реестра observable-инвариантов или списка файловых триггеров для regression sweep — это пробел shared. Сообщи стейкхолдеру об отсутствующем реестре и **не применяй** Условия Б, В, пока shared не дополнен. Не изобретай критерии в workflow декомпозиции.
87
-
88
- **Парный тикет (для всех трёх условий) содержит:**
89
- - `dependencies` на основной тикет
90
- - Сценарий верификации: либо из плана (Условие А), либо ссылка на конкретные пункты реестра observable-инвариантов из `../shared/` (Условия Б, В)
91
- - **Тип тикета** — выбрать из `config.yaml → task_types` тот, который в этом проекте соответствует **ручной проверке наблюдаемого поведения** (не review кода, не запуск автотестов). Если такого типа в конфиге нет — это пробел конфига, эскалируй стейкхолдеру. **Не изобретай префикс** (см. шаг 4 этого же workflow).
92
- - В описании явное требование: «Evidence обязательно из реального runtime продукта (живая среда исполнения, а не изолированный тест конструкторов). Запуск существующих автотестов на те же файлы **не является** evidence ручной проверки — эти тесты уже были зелёными до создания этого тикета, их повторный прогон тавтологичен.»
93
-
94
- **Когда НЕ создавать парный тикет ручной проверки:**
95
- - Верификация — это просто запуск автотестов или проверка сборки **И** задача не затрагивает observable-зону (Условия Б, В не выполнены).
96
- - Задача — чистый рефакторинг внутренних модулей без изменения публичного API и без изменения observable поведения продукта.
97
-
98
- **⛔ Антипаттерн:** одна сводная задача «Ручная проверка задач 1-N» в конце плана, охватывающая несколько независимых observable-областей. Каждая задача с observable эффектом получает **свой** парный тикет рядом, плюс при необходимости — **один** сводный тикет regression sweep для cross-area прохода.
99
-
100
- **Условие Г — подготовка тестового окружения:** Если парный тикет ручной проверки требует конкретного состояния среды (наличие данных в определённых статусах, специальная конфигурация, seed-файлы, fixtures), которое не возникает автоматически при обычной работе продукта — создай **prep-тикет** (тип по `config.yaml → task_types` — выбери тот, который соответствует подготовке инфраструктуры или окружения), который:
101
- - Подготавливает необходимое окружение для тест-сценария
102
- - Является `dependency` для тикета ручной проверки
103
- - В DoD описывает конкретное конечное состояние окружения, достаточное для начала проверки
104
-
105
- **Критерий:** если тестировщик не может начать проверку сразу после выполнения основных тикетов реализации и должен вручную создавать тестовые данные или конфигурацию — нужен prep-тикет. Если проверяемое поведение наблюдаемо при обычном использовании продукта — prep-тикет не нужен.
106
-
107
- ### 3. Оценить автономность каждой задачи
108
-
109
- → Загрузи `knowledge/human-task-rules.md`
110
-
111
- Маршрутизация — **двухступенчатая проверка**, оба условия обязательны для HUMAN:
112
-
113
- 1. **Условие недоступности:** агент физически не может выполнить задачу (нет инструмента, нет доступа, нет прав).
114
- 2. **Условие HUMAN-семантики:** задача подпадает под один из критериев таблицы «Когда задача = HUMAN» из `knowledge/human-task-rules.md` (внешние системы с аутентификацией, физические действия, бизнес-решения, приватные данные, финансовые транзакции).
115
-
116
- | Категория | Критерий | Действие |
117
- |-----------|----------|----------|
118
- | **Полностью автономная** | Агент может выполнить все шаги | `executor_type: agent`, тип по маршрутизации шага 4 |
119
- | **Полностью ручная** | Оба условия (недоступность **и** HUMAN-семантика) выполнены | Префикс `HUMAN`, `executor_type: human` |
120
- | **Гибридная** | Часть — агент, часть подпадает под оба условия HUMAN | Разбить на 2 тикета с зависимостью |
121
- | **Вне scope декомпозиции** | Недоступность агенту **есть**, но HUMAN-семантика **не подтверждена** | Тикет не создаётся; действие выполняется стейкхолдером вне пайплайна; при необходимости — строка в «Рекомендации для следующего плана» |
122
-
123
- **⛔ Антипаттерн «fallback в HUMAN»:** получить FAIL на условии 1 (агент не может) и сразу назначить префикс `HUMAN`, не проверив условие 2. Недоступность агенту — необходимое, но не достаточное условие HUMAN. Типичные ошибки маршрутизации: git-операции проекта (commit, push, merge, release, tag), CI/CD-триггеры, ручной деплой через стандартные инструменты стейкхолдера — это **не HUMAN**, потому что не соответствуют HUMAN-семантике из `knowledge/human-task-rules.md`. Они выпадают из scope декомпозиции целиком.
124
-
125
- **Как отличить HUMAN от «вне scope»:** задай два вопроса подряд.
126
- - Вопрос 1: может ли агент технически выполнить это действие сейчас? Если да — категория «автономная», HUMAN не рассматривается.
127
- - Вопрос 2 (только при «нет» на вопрос 1): задача относится к одному из критериев таблицы «Когда задача = HUMAN»? Если да — HUMAN. Если нет — «вне scope декомпозиции».
128
-
129
- ### 4. Определить тип каждого тикета
130
-
131
- Прочитай актуальные типы из `.workflow/config/config.yaml` → секция `task_types`. Используй **только** префиксы из конфига.
132
-
133
- **⛔ ЗАПРЕТ на изобретение префиксов:**
134
- 1. Прочитай все значения `prefix` из `config.yaml → task_types` — это **закрытый список** допустимых префиксов.
135
- 2. Для каждого тикета выбери префикс **только** из этого списка.
136
- 3. Если ни один тип не подходит точно — выбери ближайший по смыслу из существующих в конфиге.
137
- 4. **Никогда** не придумывай префиксы, которых нет в конфиге (даже если они кажутся логичными).
138
-
139
- **Валидация перед записью файла:** убедись, что префикс в `id` и имени файла совпадает с одним из значений `prefix` в `config.yaml → task_types`. Если не совпадает — **СТОП**, исправь префикс.
140
-
141
- **Маршрутизация по объекту работы:**
142
-
143
- | Объект работы | Признак | Тип тикета |
144
- |---------------|---------|------------|
145
- | Скилы (`.workflow/src/skills/`) | Создание, правка, аудит SKILL.md, workflows/, knowledge/ | тип скила-улучшителя (см. config.yaml) |
146
- | Код продукта | Исходный код проекта (src/, lib/, app/) | `impl` / `fix` |
147
- | Конфигурация workflow | `.workflow/config/`, `.workflow/templates/`, `.workflow/src/scripts/` | `impl` / `admin` |
148
- | Документация продукта | README.md проекта, docs/ | `docs` |
149
-
150
- ### 5. Определить зависимости
151
-
152
- Для каждого тикета:
153
- - `dependencies` — задачи, которые должны быть выполнены ДО этой
154
- - `conditions` — дополнительные условия (дата, файл, одобрение)
155
-
156
- Типы условий: `tasks_completed`, `date_after`, `date_before`, `file_exists`, `file_not_exists`, `file_contains`, `manual_approval`.
157
-
158
- ### 6. Scope-guard
159
-
160
- → Загрузи `knowledge/scope-guard-checklist.md`
161
-
162
- **ОБЯЗАТЕЛЬНО** перед созданием каждого тикета — чеклист scope. Тикеты вне scope → секция «Рекомендации для следующего плана».
163
-
164
- ### 7. Дедупликация
165
-
166
- → Загрузи `algorithms/deduplication.md`
167
-
168
- **ОБЯЗАТЕЛЬНО** перед созданием каждого тикета — проверка на дубли во **ВСЕХ** папках `tickets/`.
169
-
170
- **Автоматическая проверка скриптом:**
171
-
172
- 1. Вызови скрипт с параметрами создаваемого тикета:
173
- ```bash
174
- node .workflow/src/skills/decompose-plan/scripts/check-duplicates.js --title "Заголовок тикета" --scope "Описание scope работы"
175
- ```
176
- 2. Прочитай JSON из `---RESULT---` — список кандидатов-дубликатов с процентами совпадения
177
- 3. На основе данных скрипта и алгоритма из `algorithms/deduplication.md` прими финальное решение: **CREATE** / **SKIP** / **OVERRIDE**
178
-
179
- > Скрипт — вспомогательный инструмент. Финальное решение всегда за агентом.
180
-
181
- ### 8. Назначить приоритеты
182
-
183
- | Приоритет | Значение |
184
- |-----------|----------|
185
- | 1 | Critical — блокирует всё |
186
- | 2 | High — важно для прогресса |
187
- | 3 | Medium — стандартная работа |
188
- | 4 | Low — можно отложить |
189
- | 5 | Someday — когда-нибудь |
190
-
191
- ### 9. Создать тикеты
192
-
193
- #### 9.A ⛔ СТОП-ГЕЙТ: дословный перенос формулировок критериев из плана (выполняется ДО стоп-гейта 9.B и до любых Write/Edit)
194
-
195
- Источник правды для критериев задачи — **план**. При переносе формулировок критериев (Acceptance Criteria, Definition of Done, условия приёмки, перечни проверок) из плана в тикет действует правило **семантической неизменности**:
196
-
197
- 1. **Смягчающие преобразования запрещены.** Нельзя удалять, перефразировать в сторону ослабления или «подтягивать к общей формулировке» элементы, задающие границу критерия. Элементы, которые составляют смысловое ядро и **обязаны** переноситься в тикет без изменений либо с эквивалентной семантикой:
198
- - Отрицания и запреты: обороты вида «не X», «без Y», «кроме Z», «исключая», «не допускается».
199
- - Уточнения в скобках и после тире, задающие границу: «(не X)», «(включая Y)», «(за исключением Z)», «— минимум N».
200
- - Количественные пороги: «не менее N», «ровно N», «≥ N», «≤ N», «не более N% diff».
201
- - Парные ограничения: «X и Y одновременно», «X, но не Y», «только при Z».
202
- - Референсы на конкретные артефакты/данные: имена файлов, селекторы, ID элементов, конкретные значения — переносятся дословно.
203
- 2. **Обогащение разрешено.** Тикет может **добавлять** детали, раскрывать контекст, ссылаться на знания проекта, приводить примеры — всё, что усиливает ту же планку. Запрещено только **ослабление**.
204
- 3. **Переформулировка допускается** только при соблюдении теста эквивалентности: новая формулировка в тикете должна **однозначно отвергать** любую ситуацию, которую отвергает формулировка плана. Если существует сценарий, проходящий по тикету, но не проходящий по плану — переформулировка неэквивалентна и запрещена.
205
-
206
- **Обязательная процедура diff-а формулировок перед записью тикета:**
207
-
208
- Для каждого критерия тикета, соответствующего критерию плана:
209
- 1. Выпиши **дословную** строку критерия из плана (со всеми скобками, тире, отрицаниями, цифрами).
210
- 2. Выпиши **дословную** строку критерия, которую собираешься записать в тикет.
211
- 3. Построчное сопоставление: для каждого элемента из списка выше (отрицания, уточнения, пороги, парные ограничения, референсы) — присутствует ли он в строке тикета?
212
- 4. Если хотя бы один элемент из плана отсутствует в тикете и нет эквивалентной формулировки — **СТОП**: верни уточняющий элемент в тикет дословно. Не продолжай до устранения расхождения.
213
- 5. Если в плане есть элемент, эквивалент которого в тикете спорен, — предпочти **дословный перенос** переформулировке. Дословность никогда не бывает ошибкой; переформулировка — может быть.
214
-
215
- **Антипаттерн (тихий семантический drift):** взять длинную формулировку критерия плана, «сгладить» её до короткой «общего смысла» формулировки в тикете, удалив уточнения в скобках или отрицания как «косметику». Это уничтожает отличительный признак, ради которого критерий был сформулирован, и превращает приёмку в тавтологию (исполнитель проверяет ослабленную формулировку и честно рапортует PASS, а реальный критерий плана остаётся невыполненным). Уточнение в скобках/после тире почти никогда не бывает косметикой — это то, ради чего автор плана уточнял критерий.
216
-
217
- **Почему это стоп-гейт перед созданием тикетов:** после записи тикета формулировка разойдётся по всей цепочке — исполнитель реализует тесты под ослабленную формулировку, ревьюер принимает результат по ослабленной формулировке, багнутое поведение проходит приёмку. Исправление задним числом требует переоткрытия тикета и частичного перевыполнения — проще один раз свериться перед записью.
218
-
219
- #### 9.B ⛔ СТОП-ГЕЙТ: использование `id_ranges` со входа стадии (выполняется до любых Write/Edit)
220
-
221
- До создания **любого** файла тикета:
222
-
223
- 1. Прочитай параметр `id_ranges_json` со входа стадии (см. секцию «Вход»). Это **JSON-строка** вида `{"PREFIX":N_start,...}`, уже выделенная стадией `allocate-ticket-ids` до запуска декомпозиции. **Распарси её** (формат тривиальный — плоский объект со скалярными значениями) и получи карту `id_ranges = { PREFIX: N_start, ... }`. **Ты не вызываешь `get-next-id.js` и не сканируешь `.workflow/tickets/` самостоятельно** — нумерация полностью определена на входе.
224
- 2. Составь множество уникальных префиксов, которые появятся в этой декомпозиции (по результатам шага 4).
225
- 3. Для **каждого** префикса из множества убедись, что он присутствует в распарсенной карте. Если какого-то префикса нет — это **инфраструктурная ошибка** (рассинхрон между `config.yaml → task_types` и результатом маршрутизации на шаге 4, либо сбой стадии `allocate-ticket-ids`, либо `id_ranges_json` пришёл пустым/некорректным JSON). **СТОП**, сообщи о проблеме и не продолжай декомпозицию. **Не изобретай `N_start` самостоятельно и не используй ручной алгоритм как fallback.**
226
- 4. Все тикеты данного префикса в рамках текущей декомпозиции нумеруй **строго последовательно** от `id_ranges[PREFIX]`: первый получает `{PREFIX}-{N_start}`, второй `{PREFIX}-{N_start+1}`, и так далее. **Никогда не начинай нумерацию с 001** и не перезапускай её.
227
- 5. Зафиксируй фактически использованный диапазон в финальном `---RESULT---` стадии в виде секции:
228
- ```
229
- ids_allocated_from:
230
- {PREFIX_A}: {N_start_A}
231
- {PREFIX_B}: {N_start_B}
232
- ```
233
- Значения — те же, что пришли во входном `id_ranges` для использованных префиксов. Эта секция — обязательная часть контракта стадии декомпозиции. Её отсутствие означает, что СТОП-гейт был пропущен, и декомпозиция считается невалидной.
234
-
235
- **Почему источник нумерации — входной параметр, а не вызов скрипта внутри декомпозиции:**
236
-
237
- - Историческая причина: текстовая норма «вызови `get-next-id.js`» держалась только на дисциплине агента. Fallback-агенты с коротким окном внимания (инцидент 2026-04-08, PLAN-008: fallback qwen после падения Sonnet с 529) её игнорировали и создавали тикеты, начиная с номера 001, порождая коллизии с архивными и завершёнными ID.
238
- - Архитектурный принцип: решения про ID принимает инфраструктура (отдельная стадия пайплайна), а не агент. Агент-декомпозитор получает готовую карту на входе и физически не может «передумать» или «забыть» — у него нет альтернативы.
239
- - Коллизия с архивными/завершёнными тикетами становится невозможной **by design**, потому что стадия `allocate-ticket-ids` рекурсивно сканирует все поддиректории `.workflow/tickets/` (включая `archive/`, `done/`, `review/`, `blocked/`) **до** начала декомпозиции.
240
-
241
- **Антипаттерн:** «возьму номера из головы, раз скрипт теперь не вызывается напрямую». `id_ranges` — **единственный** допустимый источник. Любое отклонение (включая «начну с 001, потом исправлю») ломает ссылочную целостность: после записи файла ID уже попадает в перекрёстные ссылки (`depends_on`, `parent_plan`, упоминания в плане и отчётах) — переименование становится масштабной правкой с риском рассинхрона.
242
-
243
- #### 9.C ⛔ СТОП-ГЕЙТ: выписка реестра `required_capabilities` из конфига (выполняется до любых Write/Edit тикетов)
244
-
245
- До создания **любого** файла тикета обязательно выполни процедуру из `knowledge/capabilities.md` → «Обязательная процедура перед заполнением `required_capabilities`»:
246
-
247
- 1. **Прочитай** pipeline-конфиг проекта (стандартный путь — `.workflow/config/pipeline.yaml`; если в проекте другой — ориентируйся на фактический). Агенты и их capabilities — в секции `agents.*.capabilities`.
248
- 2. **Выпиши в рассуждении явным списком** union всех значений `agents.*.capabilities` из конфига. Например (иллюстрация формата, не значения):
249
- ```
250
- capabilities_registry: [<ключ_1>, <ключ_2>, ...]
251
- ```
252
- Конкретные значения берутся **только** из фактического конфига текущего проекта — не из памяти, не из других проектов.
253
- 3. Эта выписка — **единственный допустимый словарь** для поля `required_capabilities` на всю декомпозицию. При заполнении поля на шаге 9.1 каждый ключ должен присутствовать в `capabilities_registry`. Ключ, которого в выписке нет, — изобретённый, его нельзя записывать в тикет.
254
-
255
- **Без явной фиксации `capabilities_registry` в рассуждении стоп-гейт считается пропущенным.** Отсутствие выписки = нарушение контракта стадии.
256
-
257
- **Почему это стоп-гейт:** тикет с изобретённым capability физически не может быть исполнен — ни один агент не покрывает несуществующий ключ, пайплайн блокирует execute-task по `no_capable_agent`. Цикл retry → blocked расходует слоты попыток и блокирует весь план. Исправление задним числом требует ручной правки тикетов + перезапуска — проще один раз свериться с реестром перед записью.
258
-
259
- **Антипаттерн (описание задачи вместо способности агента):** записать в `required_capabilities` ключ, описывающий **предметную область задачи** (язык, платформу, подсистему), а не способность агента-исполнителя. Подробнее см. `knowledge/capabilities.md` → «Антипаттерн: изобретение ключей по предметной области». Критерий отсечения: если ключа нет в `capabilities_registry` — не записывай, как бы хорошо он ни «описывал задачу».
260
-
261
- #### 9.1 Создание каждого тикета
262
-
263
- Для **каждого** тикета:
264
-
265
- 1. Прочитай шаблон: `.workflow/templates/ticket-template.md`
266
- 2. ID тикета — **только** из диапазона, полученного на входе стадии через `id_ranges_json` (см. 9.B). План **никогда** не задаёт ID тикетов и не является источником нумерации. Если в плане встретилось что-то похожее на ID (например, `XXX-005`) — это **игнорируется**, трактуется максимум как hint для маппинга «строка плана → тикет», но не как идентификатор.
267
-
268
- > **⛔ Не используй ручной алгоритм как fallback.** Если на входе стадии отсутствует `id_ranges_json`, JSON не парсится, или в распарсенной карте нет нужного префикса — это инфраструктурная ошибка (сбой стадии `allocate-ticket-ids`), а не повод изобретать ID самостоятельно. Сообщи о проблеме и **остановись**.
269
-
270
- 3. Заполни шаблон, обязательно `parent_plan`
271
-
272
- > **⛔ Структура заголовков тикета должна точно соответствовать шаблону.** Секция DoD обязана быть на уровне `##` (`## Критерии готовности (Definition of Done)` или `## Definition of Done`) и находиться как самостоятельный блок верхнего уровня — **не вкладывай её внутрь другой секции** (`## Детали задачи` и т.п.). Нарушение уровня заголовка (например, `###` вместо `##`) делает тикет невидимым для автоматических проверок пайплайна (verify-artifacts) и приведёт к бесконечному циклу ретраев.
273
-
274
- > **⛔ Валидация `required_capabilities` по реестру (СТОП-гейт на каждый тикет).** Перед записью тикета пройди по каждому ключу, который собираешься положить в `required_capabilities`, и убедись, что он присутствует в `capabilities_registry`, выписанном в 9.C. Если ключа нет в реестре — **не записывай его**: это изобретённый ключ, тикет будет немедленно заблокирован пайплайном по `no_capable_agent`. Допустимые реакции: (а) убрать ключ, если это описание задачи (язык, платформа, подсистема), а не способность агента; (б) заменить на ключ из реестра, если смысл сохраняется; (в) оставить поле `required_capabilities` пустым, если ни один ключ реестра не подходит. Подробности — `knowledge/capabilities.md`.
275
-
276
- 4. Сохрани в `.workflow/tickets/backlog/{TYPE}-{NNN}.md`
277
- 5. **Пост-валидация уникальности** (обязательно после каждого сохранения):
278
- - Выполни `Glob` по `.workflow/tickets/**/{TYPE}-{NNN}.md`
279
- - Если найдено **более одного** совпадения → **СТОП**: только что созданный файл коллизирует с существующим (гонка, ручная правка, баг скрипта, пропуск СТОП-гейта). Удали только что созданный файл, вернись к 9.B и перевыдели диапазон заново, повтори с шага 1. Не продолжай декомпозицию, пока коллизия не устранена.
280
-
281
- **Правила:**
282
- - **Все задачи** плана должны получить тикеты (включая отложенные)
283
- - `output`-артефакты **вне** `.workflow/` — в корневой директории проекта
284
- - Не указывай инструменты исполнителя — только `required_capabilities`
285
-
286
- ### 10. Обновить план
287
-
288
- Добавь в план ссылки на созданные тикеты.
289
-
290
- > **⛔ Не трогай `status` плана.** Декомпозитор **никогда** не устанавливает `status: active` в frontmatter плана. Переключение `status: approved → active` выполняется стадией `verify-atomicity` пайплайна — **только** после успешной машинной проверки атомарности всех созданных тикетов. Если декомпозитор поставит `status: active` здесь, план уйдёт в работу даже при провалившейся атомарности, а тикеты с нарушениями попадут в backlog как готовые к исполнению.
291
-
292
- ### 11. Вывести результат
293
-
294
- ```
295
- ---RESULT---
296
- status: default
297
- ---RESULT---
298
- ```
299
-
300
- ## Выход
301
-
302
- - Тикеты в `.workflow/tickets/backlog/`
303
- - Обновлённый план со ссылками
304
-
305
- <!-- РАСШИРЕНИЕ: добавляй дополнительные шаги декомпозиции ниже -->