@hunter-harness/workflow-harness 0.4.8 → 0.4.10

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 (453) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/CONTEXT.md +1 -1
  3. package/harness/bundles/general/claude-code/README.md +36 -38
  4. package/harness/bundles/general/claude-code/contracts/workflow-policy.json +0 -50
  5. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
  6. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  7. package/harness/bundles/general/claude-code/harness-codebase-map/templates/TESTING.md +1 -1
  8. package/harness/bundles/general/claude-code/harness-execute/SKILL.md +17 -17
  9. package/harness/bundles/general/{codex/harness-run/checklist.md → claude-code/harness-execute/coding-checklist.md} +9 -9
  10. package/harness/bundles/general/{codex/harness-run/reference.md → claude-code/harness-execute/coding-reference.md} +36 -36
  11. package/harness/bundles/general/{codex/harness-run → claude-code/harness-execute}/protocols.md +4 -4
  12. package/harness/bundles/general/{codebuddy/harness-test/checklist.md → claude-code/harness-execute/testing-checklist.md} +9 -10
  13. package/harness/bundles/general/claude-code/harness-execute/testing-pitfalls-java.md +21 -0
  14. package/harness/bundles/general/{codex/harness-test/pitfalls.md → claude-code/harness-execute/testing-pitfalls.md} +7 -7
  15. package/harness/bundles/general/claude-code/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
  16. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +7 -1
  17. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  18. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +3 -3
  19. package/harness/bundles/general/claude-code/harness-plan/checklist.md +2 -1
  20. package/harness/bundles/general/claude-code/harness-plan/reference.md +8 -0
  21. package/harness/bundles/general/claude-code/harness-pull/SKILL.md +1 -1
  22. package/harness/bundles/general/claude-code/harness-push/SKILL.md +1 -1
  23. package/harness/bundles/general/claude-code/harness-review/SKILL.md +3 -3
  24. package/harness/bundles/general/claude-code/harness-review/checklist.md +1 -1
  25. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  26. package/harness/bundles/general/claude-code/harness-submit/checklist.md +1 -1
  27. package/harness/bundles/general/claude-code/harness-submit/reference.md +1 -1
  28. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  29. package/harness/bundles/general/claude-code/protocols/evidence-based-reporting-protocol.md +1 -1
  30. package/harness/bundles/general/claude-code/protocols/ledger-protocol.md +8 -8
  31. package/harness/bundles/general/claude-code/protocols/sensitive-info-protocol.md +2 -2
  32. package/harness/bundles/general/claude-code/scripts/harness_context.py +71 -8
  33. package/harness/bundles/general/claude-code/scripts/harness_deploy.py +2 -2
  34. package/harness/bundles/general/claude-code/scripts/harness_events.py +17 -11
  35. package/harness/bundles/general/claude-code/scripts/harness_gate.py +95 -10
  36. package/harness/bundles/general/claude-code/scripts/harness_ledger.py +84 -4
  37. package/harness/bundles/general/claude-code/scripts/harness_profile.py +3 -3
  38. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  39. package/harness/bundles/general/codebuddy/CONTEXT.md +1 -1
  40. package/harness/bundles/general/codebuddy/README.md +36 -38
  41. package/harness/bundles/general/codebuddy/contracts/workflow-policy.json +0 -50
  42. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  43. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  44. package/harness/bundles/general/codebuddy/harness-codebase-map/templates/TESTING.md +1 -1
  45. package/harness/bundles/general/codebuddy/harness-execute/SKILL.md +17 -17
  46. package/harness/bundles/general/{claude-code/harness-run/checklist.md → codebuddy/harness-execute/coding-checklist.md} +9 -9
  47. package/harness/bundles/general/codebuddy/{harness-run/reference.md → harness-execute/coding-reference.md} +36 -36
  48. package/harness/bundles/general/codebuddy/{harness-run → harness-execute}/protocols.md +4 -4
  49. package/harness/bundles/general/{codex/harness-test/checklist.md → codebuddy/harness-execute/testing-checklist.md} +9 -10
  50. package/harness/bundles/general/codebuddy/harness-execute/testing-pitfalls-java.md +21 -0
  51. package/harness/bundles/general/{claude-code/harness-test/pitfalls.md → codebuddy/harness-execute/testing-pitfalls.md} +7 -7
  52. package/harness/bundles/general/codebuddy/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
  53. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +7 -1
  54. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  55. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +3 -3
  56. package/harness/bundles/general/codebuddy/harness-plan/checklist.md +2 -1
  57. package/harness/bundles/general/codebuddy/harness-plan/reference.md +8 -0
  58. package/harness/bundles/general/codebuddy/harness-pull/SKILL.md +1 -1
  59. package/harness/bundles/general/codebuddy/harness-push/SKILL.md +1 -1
  60. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +3 -3
  61. package/harness/bundles/general/codebuddy/harness-review/checklist.md +1 -1
  62. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  63. package/harness/bundles/general/codebuddy/harness-submit/checklist.md +1 -1
  64. package/harness/bundles/general/codebuddy/harness-submit/reference.md +1 -1
  65. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  66. package/harness/bundles/general/codebuddy/protocols/evidence-based-reporting-protocol.md +1 -1
  67. package/harness/bundles/general/codebuddy/protocols/ledger-protocol.md +8 -8
  68. package/harness/bundles/general/codebuddy/protocols/sensitive-info-protocol.md +2 -2
  69. package/harness/bundles/general/codebuddy/scripts/harness_context.py +71 -8
  70. package/harness/bundles/general/codebuddy/scripts/harness_deploy.py +2 -2
  71. package/harness/bundles/general/codebuddy/scripts/harness_events.py +17 -11
  72. package/harness/bundles/general/codebuddy/scripts/harness_gate.py +95 -10
  73. package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +84 -4
  74. package/harness/bundles/general/codebuddy/scripts/harness_profile.py +3 -3
  75. package/harness/bundles/general/codex/.harness-build.json +1 -1
  76. package/harness/bundles/general/codex/CONTEXT.md +1 -1
  77. package/harness/bundles/general/codex/README.md +36 -38
  78. package/harness/bundles/general/codex/contracts/workflow-policy.json +0 -50
  79. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  80. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  81. package/harness/bundles/general/codex/harness-codebase-map/templates/TESTING.md +1 -1
  82. package/harness/bundles/general/codex/harness-execute/SKILL.md +17 -17
  83. package/harness/bundles/general/{cursor/harness-run/checklist.md → codex/harness-execute/coding-checklist.md} +9 -9
  84. package/harness/bundles/general/{cursor/harness-run/reference.md → codex/harness-execute/coding-reference.md} +36 -36
  85. package/harness/bundles/general/{claude-code/harness-run → codex/harness-execute}/protocols.md +4 -4
  86. package/harness/bundles/general/{cursor/harness-test/checklist.md → codex/harness-execute/testing-checklist.md} +9 -10
  87. package/harness/bundles/general/codex/harness-execute/testing-pitfalls-java.md +21 -0
  88. package/harness/bundles/general/{codebuddy/harness-test/pitfalls.md → codex/harness-execute/testing-pitfalls.md} +7 -7
  89. package/harness/bundles/general/codex/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
  90. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +7 -1
  91. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  92. package/harness/bundles/general/codex/harness-plan/SKILL.md +3 -3
  93. package/harness/bundles/general/codex/harness-plan/checklist.md +2 -1
  94. package/harness/bundles/general/codex/harness-plan/reference.md +8 -0
  95. package/harness/bundles/general/codex/harness-pull/SKILL.md +1 -1
  96. package/harness/bundles/general/codex/harness-push/SKILL.md +1 -1
  97. package/harness/bundles/general/codex/harness-review/SKILL.md +3 -3
  98. package/harness/bundles/general/codex/harness-review/checklist.md +1 -1
  99. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  100. package/harness/bundles/general/codex/harness-submit/checklist.md +1 -1
  101. package/harness/bundles/general/codex/harness-submit/reference.md +1 -1
  102. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  103. package/harness/bundles/general/codex/protocols/evidence-based-reporting-protocol.md +1 -1
  104. package/harness/bundles/general/codex/protocols/ledger-protocol.md +8 -8
  105. package/harness/bundles/general/codex/protocols/sensitive-info-protocol.md +2 -2
  106. package/harness/bundles/general/codex/scripts/harness_context.py +71 -8
  107. package/harness/bundles/general/codex/scripts/harness_deploy.py +2 -2
  108. package/harness/bundles/general/codex/scripts/harness_events.py +17 -11
  109. package/harness/bundles/general/codex/scripts/harness_gate.py +95 -10
  110. package/harness/bundles/general/codex/scripts/harness_ledger.py +84 -4
  111. package/harness/bundles/general/codex/scripts/harness_profile.py +3 -3
  112. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  113. package/harness/bundles/general/cursor/CONTEXT.md +1 -1
  114. package/harness/bundles/general/cursor/README.md +36 -38
  115. package/harness/bundles/general/cursor/contracts/workflow-policy.json +0 -50
  116. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  117. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  118. package/harness/bundles/general/cursor/harness-codebase-map/templates/TESTING.md +1 -1
  119. package/harness/bundles/general/cursor/harness-execute/SKILL.md +17 -17
  120. package/harness/bundles/general/{codebuddy/harness-run/checklist.md → cursor/harness-execute/coding-checklist.md} +9 -9
  121. package/harness/bundles/general/{claude-code/harness-run/reference.md → cursor/harness-execute/coding-reference.md} +36 -36
  122. package/harness/bundles/general/cursor/{harness-run → harness-execute}/protocols.md +4 -4
  123. package/harness/bundles/general/{claude-code/harness-test/checklist.md → cursor/harness-execute/testing-checklist.md} +9 -10
  124. package/harness/bundles/general/cursor/harness-execute/testing-pitfalls-java.md +21 -0
  125. package/harness/bundles/general/cursor/{harness-test/pitfalls.md → harness-execute/testing-pitfalls.md} +7 -7
  126. package/harness/bundles/general/cursor/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
  127. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +7 -1
  128. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  129. package/harness/bundles/general/cursor/harness-plan/SKILL.md +3 -3
  130. package/harness/bundles/general/cursor/harness-plan/checklist.md +2 -1
  131. package/harness/bundles/general/cursor/harness-plan/reference.md +8 -0
  132. package/harness/bundles/general/cursor/harness-pull/SKILL.md +1 -1
  133. package/harness/bundles/general/cursor/harness-push/SKILL.md +1 -1
  134. package/harness/bundles/general/cursor/harness-review/SKILL.md +3 -3
  135. package/harness/bundles/general/cursor/harness-review/checklist.md +1 -1
  136. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  137. package/harness/bundles/general/cursor/harness-submit/checklist.md +1 -1
  138. package/harness/bundles/general/cursor/harness-submit/reference.md +1 -1
  139. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  140. package/harness/bundles/general/cursor/protocols/evidence-based-reporting-protocol.md +1 -1
  141. package/harness/bundles/general/cursor/protocols/ledger-protocol.md +8 -8
  142. package/harness/bundles/general/cursor/protocols/sensitive-info-protocol.md +2 -2
  143. package/harness/bundles/general/cursor/scripts/harness_context.py +71 -8
  144. package/harness/bundles/general/cursor/scripts/harness_deploy.py +2 -2
  145. package/harness/bundles/general/cursor/scripts/harness_events.py +17 -11
  146. package/harness/bundles/general/cursor/scripts/harness_gate.py +95 -10
  147. package/harness/bundles/general/cursor/scripts/harness_ledger.py +84 -4
  148. package/harness/bundles/general/cursor/scripts/harness_profile.py +3 -3
  149. package/harness/bundles/general/pi/.harness-build.json +1 -1
  150. package/harness/bundles/general/pi/CONTEXT.md +1 -1
  151. package/harness/bundles/general/pi/README.md +36 -38
  152. package/harness/bundles/general/pi/contracts/workflow-policy.json +0 -50
  153. package/harness/bundles/general/pi/harness-archive/SKILL.md +1 -1
  154. package/harness/bundles/general/pi/harness-codebase-map/SKILL.md +1 -1
  155. package/harness/bundles/general/pi/harness-codebase-map/templates/TESTING.md +1 -1
  156. package/harness/bundles/general/pi/harness-execute/SKILL.md +17 -17
  157. package/harness/bundles/general/pi/harness-execute/coding-checklist.md +279 -0
  158. package/harness/bundles/general/pi/harness-execute/coding-reference.md +886 -0
  159. package/harness/bundles/general/pi/harness-execute/protocols.md +141 -0
  160. package/harness/bundles/general/pi/harness-execute/testing-checklist.md +358 -0
  161. package/harness/bundles/general/pi/harness-execute/testing-pitfalls-java.md +21 -0
  162. package/harness/bundles/general/pi/harness-execute/testing-pitfalls.md +307 -0
  163. package/harness/bundles/general/pi/harness-execute/testing-reference.md +880 -0
  164. package/harness/bundles/general/pi/harness-knowledge-ingest/SKILL.md +7 -1
  165. package/harness/bundles/general/pi/harness-knowledge-query/SKILL.md +1 -1
  166. package/harness/bundles/general/pi/harness-plan/SKILL.md +3 -3
  167. package/harness/bundles/general/pi/harness-plan/checklist.md +2 -1
  168. package/harness/bundles/general/pi/harness-plan/reference.md +8 -0
  169. package/harness/bundles/general/pi/harness-pull/SKILL.md +1 -1
  170. package/harness/bundles/general/pi/harness-push/SKILL.md +1 -1
  171. package/harness/bundles/general/pi/harness-review/SKILL.md +3 -3
  172. package/harness/bundles/general/pi/harness-review/checklist.md +1 -1
  173. package/harness/bundles/general/pi/harness-submit/SKILL.md +1 -1
  174. package/harness/bundles/general/pi/harness-submit/checklist.md +1 -1
  175. package/harness/bundles/general/pi/harness-submit/reference.md +1 -1
  176. package/harness/bundles/general/pi/harness-sync/SKILL.md +1 -1
  177. package/harness/bundles/general/pi/protocols/evidence-based-reporting-protocol.md +1 -1
  178. package/harness/bundles/general/pi/protocols/ledger-protocol.md +8 -8
  179. package/harness/bundles/general/pi/protocols/sensitive-info-protocol.md +2 -2
  180. package/harness/bundles/general/pi/scripts/harness_context.py +71 -8
  181. package/harness/bundles/general/pi/scripts/harness_deploy.py +2 -2
  182. package/harness/bundles/general/pi/scripts/harness_events.py +17 -11
  183. package/harness/bundles/general/pi/scripts/harness_gate.py +95 -10
  184. package/harness/bundles/general/pi/scripts/harness_ledger.py +84 -4
  185. package/harness/bundles/general/pi/scripts/harness_profile.py +3 -3
  186. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  187. package/harness/bundles/java/claude-code/CONTEXT.md +1 -1
  188. package/harness/bundles/java/claude-code/README.md +36 -38
  189. package/harness/bundles/java/claude-code/contracts/workflow-policy.json +0 -50
  190. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  191. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  192. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  193. package/harness/bundles/java/claude-code/harness-codebase-map/templates/TESTING.md +1 -1
  194. package/harness/bundles/java/claude-code/harness-execute/SKILL.md +49 -17
  195. package/harness/bundles/java/claude-code/{harness-run/checklist.md → harness-execute/coding-checklist.md} +6 -6
  196. package/harness/bundles/java/claude-code/{harness-run/reference.md → harness-execute/coding-reference.md} +37 -37
  197. package/harness/bundles/java/claude-code/harness-execute/protocols.md +141 -0
  198. package/harness/bundles/java/claude-code/{harness-test/checklist.md → harness-execute/testing-checklist.md} +9 -9
  199. package/harness/bundles/java/claude-code/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +2 -1
  200. package/harness/bundles/java/claude-code/harness-execute/testing-pitfalls.md +307 -0
  201. package/harness/bundles/java/claude-code/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
  202. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +7 -1
  203. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  204. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  205. package/harness/bundles/java/claude-code/harness-package/checklist.md +7 -7
  206. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +3 -3
  207. package/harness/bundles/java/claude-code/harness-plan/checklist.md +2 -1
  208. package/harness/bundles/java/claude-code/harness-plan/reference.md +8 -0
  209. package/harness/bundles/java/claude-code/harness-pull/SKILL.md +1 -1
  210. package/harness/bundles/java/claude-code/harness-push/SKILL.md +1 -1
  211. package/harness/bundles/java/claude-code/harness-review/SKILL.md +3 -3
  212. package/harness/bundles/java/claude-code/harness-review/checklist.md +1 -1
  213. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  214. package/harness/bundles/java/claude-code/harness-submit/checklist.md +1 -1
  215. package/harness/bundles/java/claude-code/harness-submit/reference.md +1 -1
  216. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  217. package/harness/bundles/java/claude-code/protocols/evidence-based-reporting-protocol.md +1 -1
  218. package/harness/bundles/java/claude-code/protocols/ledger-protocol.md +8 -8
  219. package/harness/bundles/java/claude-code/protocols/sensitive-info-protocol.md +2 -2
  220. package/harness/bundles/java/claude-code/scripts/harness_context.py +71 -8
  221. package/harness/bundles/java/claude-code/scripts/harness_deploy.py +2 -2
  222. package/harness/bundles/java/claude-code/scripts/harness_events.py +17 -11
  223. package/harness/bundles/java/claude-code/scripts/harness_gate.py +95 -10
  224. package/harness/bundles/java/claude-code/scripts/harness_ledger.py +84 -4
  225. package/harness/bundles/java/claude-code/scripts/harness_profile.py +3 -3
  226. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  227. package/harness/bundles/java/codebuddy/CONTEXT.md +1 -1
  228. package/harness/bundles/java/codebuddy/README.md +36 -38
  229. package/harness/bundles/java/codebuddy/contracts/workflow-policy.json +0 -50
  230. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  231. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  232. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  233. package/harness/bundles/java/codebuddy/harness-codebase-map/templates/TESTING.md +1 -1
  234. package/harness/bundles/java/codebuddy/harness-execute/SKILL.md +49 -17
  235. package/harness/bundles/java/codebuddy/{harness-run/checklist.md → harness-execute/coding-checklist.md} +6 -6
  236. package/harness/bundles/java/codebuddy/{harness-run/reference.md → harness-execute/coding-reference.md} +37 -37
  237. package/harness/bundles/java/codebuddy/harness-execute/protocols.md +141 -0
  238. package/harness/bundles/java/codebuddy/{harness-test/checklist.md → harness-execute/testing-checklist.md} +9 -9
  239. package/harness/bundles/java/codebuddy/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +2 -1
  240. package/harness/bundles/java/codebuddy/harness-execute/testing-pitfalls.md +307 -0
  241. package/harness/bundles/java/codebuddy/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
  242. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +7 -1
  243. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  244. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  245. package/harness/bundles/java/codebuddy/harness-package/checklist.md +7 -7
  246. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +3 -3
  247. package/harness/bundles/java/codebuddy/harness-plan/checklist.md +2 -1
  248. package/harness/bundles/java/codebuddy/harness-plan/reference.md +8 -0
  249. package/harness/bundles/java/codebuddy/harness-pull/SKILL.md +1 -1
  250. package/harness/bundles/java/codebuddy/harness-push/SKILL.md +1 -1
  251. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +3 -3
  252. package/harness/bundles/java/codebuddy/harness-review/checklist.md +1 -1
  253. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  254. package/harness/bundles/java/codebuddy/harness-submit/checklist.md +1 -1
  255. package/harness/bundles/java/codebuddy/harness-submit/reference.md +1 -1
  256. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  257. package/harness/bundles/java/codebuddy/protocols/evidence-based-reporting-protocol.md +1 -1
  258. package/harness/bundles/java/codebuddy/protocols/ledger-protocol.md +8 -8
  259. package/harness/bundles/java/codebuddy/protocols/sensitive-info-protocol.md +2 -2
  260. package/harness/bundles/java/codebuddy/scripts/harness_context.py +71 -8
  261. package/harness/bundles/java/codebuddy/scripts/harness_deploy.py +2 -2
  262. package/harness/bundles/java/codebuddy/scripts/harness_events.py +17 -11
  263. package/harness/bundles/java/codebuddy/scripts/harness_gate.py +95 -10
  264. package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +84 -4
  265. package/harness/bundles/java/codebuddy/scripts/harness_profile.py +3 -3
  266. package/harness/bundles/java/codex/.harness-build.json +1 -1
  267. package/harness/bundles/java/codex/CONTEXT.md +1 -1
  268. package/harness/bundles/java/codex/README.md +36 -38
  269. package/harness/bundles/java/codex/contracts/workflow-policy.json +0 -50
  270. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  271. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  272. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  273. package/harness/bundles/java/codex/harness-codebase-map/templates/TESTING.md +1 -1
  274. package/harness/bundles/java/codex/harness-execute/SKILL.md +49 -17
  275. package/harness/bundles/java/codex/{harness-run/checklist.md → harness-execute/coding-checklist.md} +6 -6
  276. package/harness/bundles/java/codex/{harness-run/reference.md → harness-execute/coding-reference.md} +37 -37
  277. package/harness/bundles/java/codex/harness-execute/protocols.md +141 -0
  278. package/harness/bundles/java/codex/{harness-test/checklist.md → harness-execute/testing-checklist.md} +9 -9
  279. package/harness/bundles/java/codex/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +2 -1
  280. package/harness/bundles/java/codex/harness-execute/testing-pitfalls.md +307 -0
  281. package/harness/bundles/java/codex/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
  282. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +7 -1
  283. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  284. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  285. package/harness/bundles/java/codex/harness-package/checklist.md +7 -7
  286. package/harness/bundles/java/codex/harness-plan/SKILL.md +3 -3
  287. package/harness/bundles/java/codex/harness-plan/checklist.md +2 -1
  288. package/harness/bundles/java/codex/harness-plan/reference.md +8 -0
  289. package/harness/bundles/java/codex/harness-pull/SKILL.md +1 -1
  290. package/harness/bundles/java/codex/harness-push/SKILL.md +1 -1
  291. package/harness/bundles/java/codex/harness-review/SKILL.md +3 -3
  292. package/harness/bundles/java/codex/harness-review/checklist.md +1 -1
  293. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  294. package/harness/bundles/java/codex/harness-submit/checklist.md +1 -1
  295. package/harness/bundles/java/codex/harness-submit/reference.md +1 -1
  296. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  297. package/harness/bundles/java/codex/protocols/evidence-based-reporting-protocol.md +1 -1
  298. package/harness/bundles/java/codex/protocols/ledger-protocol.md +8 -8
  299. package/harness/bundles/java/codex/protocols/sensitive-info-protocol.md +2 -2
  300. package/harness/bundles/java/codex/scripts/harness_context.py +71 -8
  301. package/harness/bundles/java/codex/scripts/harness_deploy.py +2 -2
  302. package/harness/bundles/java/codex/scripts/harness_events.py +17 -11
  303. package/harness/bundles/java/codex/scripts/harness_gate.py +95 -10
  304. package/harness/bundles/java/codex/scripts/harness_ledger.py +84 -4
  305. package/harness/bundles/java/codex/scripts/harness_profile.py +3 -3
  306. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  307. package/harness/bundles/java/cursor/CONTEXT.md +1 -1
  308. package/harness/bundles/java/cursor/README.md +36 -38
  309. package/harness/bundles/java/cursor/contracts/workflow-policy.json +0 -50
  310. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  311. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  312. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  313. package/harness/bundles/java/cursor/harness-codebase-map/templates/TESTING.md +1 -1
  314. package/harness/bundles/java/cursor/harness-execute/SKILL.md +49 -17
  315. package/harness/bundles/java/cursor/{harness-run/checklist.md → harness-execute/coding-checklist.md} +6 -6
  316. package/harness/bundles/java/cursor/{harness-run/reference.md → harness-execute/coding-reference.md} +37 -37
  317. package/harness/bundles/java/cursor/harness-execute/protocols.md +141 -0
  318. package/harness/bundles/java/cursor/{harness-test/checklist.md → harness-execute/testing-checklist.md} +9 -9
  319. package/harness/bundles/java/cursor/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +2 -1
  320. package/harness/bundles/java/cursor/harness-execute/testing-pitfalls.md +307 -0
  321. package/harness/bundles/java/cursor/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
  322. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +7 -1
  323. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  324. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  325. package/harness/bundles/java/cursor/harness-package/checklist.md +7 -7
  326. package/harness/bundles/java/cursor/harness-plan/SKILL.md +3 -3
  327. package/harness/bundles/java/cursor/harness-plan/checklist.md +2 -1
  328. package/harness/bundles/java/cursor/harness-plan/reference.md +8 -0
  329. package/harness/bundles/java/cursor/harness-pull/SKILL.md +1 -1
  330. package/harness/bundles/java/cursor/harness-push/SKILL.md +1 -1
  331. package/harness/bundles/java/cursor/harness-review/SKILL.md +3 -3
  332. package/harness/bundles/java/cursor/harness-review/checklist.md +1 -1
  333. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  334. package/harness/bundles/java/cursor/harness-submit/checklist.md +1 -1
  335. package/harness/bundles/java/cursor/harness-submit/reference.md +1 -1
  336. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  337. package/harness/bundles/java/cursor/protocols/evidence-based-reporting-protocol.md +1 -1
  338. package/harness/bundles/java/cursor/protocols/ledger-protocol.md +8 -8
  339. package/harness/bundles/java/cursor/protocols/sensitive-info-protocol.md +2 -2
  340. package/harness/bundles/java/cursor/scripts/harness_context.py +71 -8
  341. package/harness/bundles/java/cursor/scripts/harness_deploy.py +2 -2
  342. package/harness/bundles/java/cursor/scripts/harness_events.py +17 -11
  343. package/harness/bundles/java/cursor/scripts/harness_gate.py +95 -10
  344. package/harness/bundles/java/cursor/scripts/harness_ledger.py +84 -4
  345. package/harness/bundles/java/cursor/scripts/harness_profile.py +3 -3
  346. package/harness/bundles/java/pi/.harness-build.json +1 -1
  347. package/harness/bundles/java/pi/CONTEXT.md +1 -1
  348. package/harness/bundles/java/pi/README.md +36 -38
  349. package/harness/bundles/java/pi/contracts/workflow-policy.json +0 -50
  350. package/harness/bundles/java/pi/harness-apidoc/SKILL.md +1 -1
  351. package/harness/bundles/java/pi/harness-archive/SKILL.md +1 -1
  352. package/harness/bundles/java/pi/harness-codebase-map/SKILL.md +1 -1
  353. package/harness/bundles/java/pi/harness-codebase-map/templates/TESTING.md +1 -1
  354. package/harness/bundles/java/pi/harness-execute/SKILL.md +49 -17
  355. package/harness/bundles/java/pi/harness-execute/coding-checklist.md +252 -0
  356. package/harness/bundles/java/pi/harness-execute/coding-reference.md +820 -0
  357. package/harness/bundles/java/pi/harness-execute/protocols.md +141 -0
  358. package/harness/bundles/java/pi/harness-execute/testing-checklist.md +320 -0
  359. package/harness/bundles/java/pi/harness-execute/testing-pitfalls-java.md +17 -0
  360. package/harness/bundles/java/pi/harness-execute/testing-pitfalls.md +307 -0
  361. package/harness/bundles/java/pi/harness-execute/testing-reference.md +792 -0
  362. package/harness/bundles/java/pi/harness-knowledge-ingest/SKILL.md +7 -1
  363. package/harness/bundles/java/pi/harness-knowledge-query/SKILL.md +1 -1
  364. package/harness/bundles/java/pi/harness-package/SKILL.md +1 -1
  365. package/harness/bundles/java/pi/harness-package/checklist.md +7 -7
  366. package/harness/bundles/java/pi/harness-plan/SKILL.md +3 -3
  367. package/harness/bundles/java/pi/harness-plan/checklist.md +2 -1
  368. package/harness/bundles/java/pi/harness-plan/reference.md +8 -0
  369. package/harness/bundles/java/pi/harness-pull/SKILL.md +1 -1
  370. package/harness/bundles/java/pi/harness-push/SKILL.md +1 -1
  371. package/harness/bundles/java/pi/harness-review/SKILL.md +3 -3
  372. package/harness/bundles/java/pi/harness-review/checklist.md +1 -1
  373. package/harness/bundles/java/pi/harness-submit/SKILL.md +1 -1
  374. package/harness/bundles/java/pi/harness-submit/checklist.md +1 -1
  375. package/harness/bundles/java/pi/harness-submit/reference.md +1 -1
  376. package/harness/bundles/java/pi/harness-sync/SKILL.md +1 -1
  377. package/harness/bundles/java/pi/protocols/evidence-based-reporting-protocol.md +1 -1
  378. package/harness/bundles/java/pi/protocols/ledger-protocol.md +8 -8
  379. package/harness/bundles/java/pi/protocols/sensitive-info-protocol.md +2 -2
  380. package/harness/bundles/java/pi/scripts/harness_context.py +71 -8
  381. package/harness/bundles/java/pi/scripts/harness_deploy.py +2 -2
  382. package/harness/bundles/java/pi/scripts/harness_events.py +17 -11
  383. package/harness/bundles/java/pi/scripts/harness_gate.py +95 -10
  384. package/harness/bundles/java/pi/scripts/harness_ledger.py +84 -4
  385. package/harness/bundles/java/pi/scripts/harness_profile.py +3 -3
  386. package/harness/manifests/general/claude-code.json +62 -70
  387. package/harness/manifests/general/codebuddy.json +62 -70
  388. package/harness/manifests/general/codex.json +62 -70
  389. package/harness/manifests/general/cursor.json +62 -70
  390. package/harness/manifests/general/pi.json +62 -70
  391. package/harness/manifests/java/claude-code.json +65 -73
  392. package/harness/manifests/java/codebuddy.json +65 -73
  393. package/harness/manifests/java/codex.json +65 -73
  394. package/harness/manifests/java/cursor.json +65 -73
  395. package/harness/manifests/java/pi.json +65 -73
  396. package/hunter-workflow-family.json +2 -2
  397. package/package.json +1 -1
  398. package/harness/bundles/general/claude-code/harness-run/SKILL.md +0 -207
  399. package/harness/bundles/general/claude-code/harness-test/SKILL.md +0 -270
  400. package/harness/bundles/general/claude-code/harness-test/pitfalls-java.md +0 -14
  401. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +0 -188
  402. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +0 -250
  403. package/harness/bundles/general/codebuddy/harness-test/pitfalls-java.md +0 -14
  404. package/harness/bundles/general/codex/harness-run/SKILL.md +0 -188
  405. package/harness/bundles/general/codex/harness-test/SKILL.md +0 -250
  406. package/harness/bundles/general/codex/harness-test/pitfalls-java.md +0 -14
  407. package/harness/bundles/general/cursor/harness-run/SKILL.md +0 -188
  408. package/harness/bundles/general/cursor/harness-test/SKILL.md +0 -250
  409. package/harness/bundles/general/cursor/harness-test/pitfalls-java.md +0 -14
  410. package/harness/bundles/general/pi/harness-run/SKILL.md +0 -188
  411. package/harness/bundles/general/pi/harness-run/checklist.md +0 -279
  412. package/harness/bundles/general/pi/harness-run/protocols.md +0 -141
  413. package/harness/bundles/general/pi/harness-run/reference.md +0 -886
  414. package/harness/bundles/general/pi/harness-test/SKILL.md +0 -250
  415. package/harness/bundles/general/pi/harness-test/checklist.md +0 -359
  416. package/harness/bundles/general/pi/harness-test/pitfalls-java.md +0 -14
  417. package/harness/bundles/general/pi/harness-test/pitfalls.md +0 -307
  418. package/harness/bundles/general/pi/harness-test/reference.md +0 -880
  419. package/harness/bundles/java/claude-code/harness-run/SKILL.md +0 -225
  420. package/harness/bundles/java/claude-code/harness-run/protocols.md +0 -141
  421. package/harness/bundles/java/claude-code/harness-test/SKILL.md +0 -284
  422. package/harness/bundles/java/claude-code/harness-test/pitfalls.md +0 -307
  423. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +0 -206
  424. package/harness/bundles/java/codebuddy/harness-run/protocols.md +0 -141
  425. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +0 -264
  426. package/harness/bundles/java/codebuddy/harness-test/pitfalls.md +0 -307
  427. package/harness/bundles/java/codex/harness-run/SKILL.md +0 -206
  428. package/harness/bundles/java/codex/harness-run/protocols.md +0 -141
  429. package/harness/bundles/java/codex/harness-test/SKILL.md +0 -264
  430. package/harness/bundles/java/codex/harness-test/pitfalls.md +0 -307
  431. package/harness/bundles/java/cursor/harness-run/SKILL.md +0 -206
  432. package/harness/bundles/java/cursor/harness-run/protocols.md +0 -141
  433. package/harness/bundles/java/cursor/harness-test/SKILL.md +0 -264
  434. package/harness/bundles/java/cursor/harness-test/pitfalls.md +0 -307
  435. package/harness/bundles/java/pi/harness-run/SKILL.md +0 -206
  436. package/harness/bundles/java/pi/harness-run/checklist.md +0 -252
  437. package/harness/bundles/java/pi/harness-run/protocols.md +0 -141
  438. package/harness/bundles/java/pi/harness-run/reference.md +0 -820
  439. package/harness/bundles/java/pi/harness-test/SKILL.md +0 -264
  440. package/harness/bundles/java/pi/harness-test/checklist.md +0 -320
  441. package/harness/bundles/java/pi/harness-test/pitfalls-java.md +0 -16
  442. package/harness/bundles/java/pi/harness-test/pitfalls.md +0 -307
  443. package/harness/bundles/java/pi/harness-test/reference.md +0 -792
  444. /package/harness/bundles/general/claude-code/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  445. /package/harness/bundles/general/codebuddy/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  446. /package/harness/bundles/general/codex/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  447. /package/harness/bundles/general/cursor/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  448. /package/harness/bundles/general/pi/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  449. /package/harness/bundles/java/claude-code/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  450. /package/harness/bundles/java/codebuddy/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  451. /package/harness/bundles/java/codex/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  452. /package/harness/bundles/java/cursor/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
  453. /package/harness/bundles/java/pi/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
@@ -1,8 +1,8 @@
1
1
  ---
2
- description: harness-run 的编译失败策略表、TDD循环详细步骤和编码约束。仅在编码执行遇到编译问题或需要参考详细规则时读取。
2
+ description: harness-execute 的编译失败策略表、TDD循环详细步骤和编码约束。仅在编码执行遇到编译问题或需要参考详细规则时读取。
3
3
  ---
4
4
 
5
- # harness-run 参考 — 详细规则
5
+ # harness-execute 参考 — 详细规则
6
6
 
7
7
  ## 为什么走变更簇 TDD 而不是逐任务 TDD
8
8
 
@@ -30,7 +30,7 @@ description: harness-run 的编译失败策略表、TDD循环详细步骤和编
30
30
 
31
31
  ## Worktree 创建与切换详细规则
32
32
 
33
- `harness-run` 必须把 `worktree.json` 当作唯一决策源。
33
+ `harness-execute` 必须把 `worktree.json` 当作唯一决策源。
34
34
 
35
35
  ### 状态机
36
36
 
@@ -119,7 +119,7 @@ requested=true + path missing
119
119
  4. 读取 .harness/changes/<change-name>/plans/<change-name>-test-scenarios.md
120
120
  ```
121
121
 
122
- **禁止 /harness-run 默认读取 `docs/superpowers/plans/*.md`** 作为任务来源。旧 `docs/superpowers/` 草稿最多作为人工线索,不作为执行输入。
122
+ **禁止 /harness-execute 默认读取 `docs/superpowers/plans/*.md`** 作为任务来源。旧 `docs/superpowers/` 草稿最多作为人工线索,不作为执行输入。
123
123
 
124
124
  ### 步骤 0.1:执行模式(无询问)
125
125
 
@@ -182,7 +182,7 @@ powershell.exe -Command "<测试命令> <模块定位参数>"
182
182
  从场景表选取对应当前变更簇的测试用例:
183
183
 
184
184
  - **单元测试**(优先):按技术栈测试框架(如 Java 的 JUnit 5 + Mockito + AssertJ),命名 `{方法名}_{场景}_{预期结果}()`,用断言库(如 Java 的 AssertJ `assertThat`)
185
- - **接口测试**(必要时代码逻辑已覆盖即可,实际 HTTP 调用留给 `harness-test`)
185
+ - **接口测试**(必要时代码逻辑已覆盖即可,实际 HTTP 调用留给 `harness-execute`)
186
186
  - **多个测试类合并到一次构建/测试命令执行**(按技术栈模块/用例定位参数,如 Java 的 `mvn test -pl <module> -Dtest=TestA,TestB,TestC -o`)
187
187
 
188
188
  ### RED 有效性判定(⚠️ 必须逐项确认)
@@ -245,7 +245,7 @@ RED 不是"测试失败"即可通过,必须确认失败原因与目标 bug/需
245
245
  | 注释 | 构建验证 | 不影响运行时行为 |
246
246
  | 代码整理(import 清理)| 构建验证 | 不影响运行时行为 |
247
247
  | 格式化 | 构建验证 | 不影响运行时行为 |
248
- | 数据库迁移脚本 | 静态审查 + harness-test DB 验证 | 不做 TDD,生成审查清单 |
248
+ | 数据库迁移脚本 | 静态审查 + harness-execute DB 验证 | 不做 TDD,生成审查清单 |
249
249
  | 配置模板 | 静态审查 | 部署时生效 |
250
250
  | 文档文件 | 静态审查 | 不涉及代码 |
251
251
 
@@ -283,7 +283,7 @@ RED 不是"测试失败"即可通过,必须确认失败原因与目标 bug/需
283
283
  | 是否可通过静态 mock(如 Java 的 mockStatic)构造? | 是/否 |
284
284
  | 是否可写轻量集成测试? | 是/否 |
285
285
  | 跳过自动化测试的具体阻塞点 | ... |
286
- | 后续必须由哪个阶段验证 | harness-test / 手工接口 / 部署验证 |
286
+ | 后续必须由哪个阶段验证 | harness-execute / 手工接口 / 部署验证 |
287
287
 
288
288
  如果只是"配置麻烦"或"mock 复杂",不得直接跳过。对数据契约字段(DTO)、分页返回、权限过滤、组织过滤等用户可见行为,必须优先写公共行为测试。
289
289
 
@@ -304,9 +304,9 @@ RED 不是"测试失败"即可通过,必须确认失败原因与目标 bug/需
304
304
  5. 输出必须明确写成:
305
305
  - "🟡 静态逻辑验证通过"
306
306
  - "未执行真实单元测试"
307
- - "待测试基础设施补齐后运行 harness-test"
307
+ - "待测试基础设施补齐后运行 harness-execute"
308
308
  6. **禁止写成**:"测试全部通过"、"测试通过 N/N"、"覆盖率 100%"等含暗示真实测试已运行的表述
309
- 7. 提示用户在测试基础设施就绪后补充运行 `harness-test`
309
+ 7. 提示用户在测试基础设施就绪后补充运行 `harness-execute`
310
310
 
311
311
  ## GREEN:最简实现
312
312
 
@@ -327,7 +327,7 @@ RED 不是"测试失败"即可通过,必须确认失败原因与目标 bug/需
327
327
 
328
328
  ## GREEN 后反模式自检(内置清单)
329
329
 
330
- > 此步骤是 `/harness-run` 的内置自检,不依赖 Superpowers `test-driven-development`,也不存在外部 skill 调用成功后的跳过分支。
330
+ > 此步骤是 `/harness-execute` 的内置自检,不依赖 Superpowers `test-driven-development`,也不存在外部 skill 调用成功后的跳过分支。
331
331
 
332
332
  GREEN 阶段完成后,对照以下反模式清单自检:
333
333
 
@@ -358,7 +358,7 @@ GREEN 阶段完成后,对照以下反模式清单自检:
358
358
 
359
359
  ## 批量构建验证策略
360
360
 
361
- harness-run 必须减少构建/测试启动次数。
361
+ harness-execute 必须减少构建/测试启动次数。
362
362
 
363
363
  **默认策略**:
364
364
  1. 每个变更簇最多执行一次 RED 构建/测试、一次 GREEN 构建/测试
@@ -391,7 +391,7 @@ TestA+TestB+TestC RED → 实现相关代码 → TestA+TestB+TestC GREEN → 最
391
391
 
392
392
  ## 预存变更隔离
393
393
 
394
- 如果 harness-run 开始时检测到已有未提交变更,并且用户选择保留,必须创建 baseline。
394
+ 如果 harness-execute 开始时检测到已有未提交变更,并且用户选择保留,必须创建 baseline。
395
395
 
396
396
  ### baseline 文件
397
397
 
@@ -485,7 +485,7 @@ TestA+TestB+TestC RED → 实现相关代码 → TestA+TestB+TestC GREEN → 最
485
485
 
486
486
  ## 步骤 2:构建验证(默认轻量,按需全量 test)
487
487
 
488
- > **轻量验证职责**:`/harness-run` 默认只做开发反馈,不默认跑全量测试命令。是否跑全量 test 按下方条件判断。
488
+ > **轻量验证职责**:`/harness-execute` 默认只做开发反馈,不默认跑全量测试命令。是否跑全量 test 按下方条件判断。
489
489
 
490
490
  ### 2a. 构建验证(始终执行)
491
491
 
@@ -496,14 +496,14 @@ powershell.exe -Command "<构建命令> <模块定位参数>"
496
496
 
497
497
  ### 2b. 全量测试(仅当满足触发条件时执行)
498
498
 
499
- 默认**跳过**全量测试命令,把完整单元测试留给 `/harness-test`。仅当满足以下任一条件时才在本阶段执行测试命令(按技术栈,如 Java 的 `mvn test -pl <module> -o`):
499
+ 默认**跳过**全量测试命令,把完整单元测试留给 `/harness-execute`。仅当满足以下任一条件时才在本阶段执行测试命令(按技术栈,如 Java 的 `mvn test -pl <module> -o`):
500
500
 
501
501
  - 修改了公共模块(被多模块依赖的 common/utils 等)
502
502
  - 修改了数据访问层 / 数据库迁移 / 查询配置
503
503
  - 修改了权限 / 认证 / 组织过滤逻辑
504
504
  - 修改了接口层 / 数据契约(VO/DTO)
505
505
  - 用户要求 `full-run-validation`
506
- - 用户不打算继续运行 `/harness-test`(run 需自证 P0 场景)
506
+ - 用户不打算继续运行 `/harness-execute`(run 需自证 P0 场景)
507
507
 
508
508
  ```powershell
509
509
  powershell.exe -Command "<测试命令> <模块定位参数>"
@@ -523,7 +523,7 @@ powershell.exe -Command "<测试命令> <模块定位参数>"
523
523
  步骤 2 完成后**必须**通过 `harness_ledger.py record` 写入/更新 ledger(**禁止** Write/Edit `verification-ledger.json`):
524
524
 
525
525
  - `compile` 项:始终写入(status / command / scope / evidence / 时间戳 / durationMs)
526
- - `unitTest` 项:仅当 2b 执行了全量测试命令时写入(testsRun / failures / errors / skipped / evidence);未执行时标记 `{"status": "NOT_RUN_BY_RUN", "note": "轻量验证,全量单元测试由 harness-test 执行"}`
526
+ - `unitTest` 项:仅当 2b 执行了全量测试命令时写入(testsRun / failures / errors / skipped / evidence);未执行时标记 `{"status": "NOT_RUN_BY_RUN", "note": "轻量验证,全量单元测试由 harness-execute 执行"}`
527
527
  - 顶层写入 `diffHash` / `currentHead` / `baseCommit` / `module` / `profile`
528
528
  - `baseCommit`:merge-base 或计划起点(worktree 分支从主分支分出点,由 harness-plan 写入、run 读取复用;缺失时用 `git merge-base HEAD <默认分支>` 兜底)
529
529
  - `currentHead`:`git rev-parse HEAD`(步骤 2c 在 Step 5 checkpoint commit 之前执行,此时 HEAD==baseCommit;commit 后 HEAD 前移到 checkpoint commit,由 ledger-protocol reuse 规则 #2「currentHead 可前移」容忍,**不需为它改时序**)
@@ -536,7 +536,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
536
536
 
537
537
  > `content-changeset-2` 同时读取 tracked diff、标准 untracked 文件和 manifest 的精确测试路径。manifest 缺失时保持普通行为;manifest 存在但路径越界、内容 hash 漂移或结构非法时命令失败,ledger 不可复用。checkpoint commit 不改变各路径的工作树内容,因此提交前后 hash 保持一致。
538
538
 
539
- > 这样 harness-test 的 Phase 1 可读取 ledger 判断是否复用 run 的 unitTest(diffHash commit-invariant + reuse 规则 #2 允许 HEAD 前移 → run 的 checkpoint commit 不破坏复用),submit 也可复用 compile 结果。详见 `../protocols/ledger-protocol.md`。
539
+ > 这样 harness-execute 的 Phase 1 可读取 ledger 判断是否复用 run 的 unitTest(diffHash commit-invariant + reuse 规则 #2 允许 HEAD 前移 → run 的 checkpoint commit 不破坏复用),submit 也可复用 compile 结果。详见 `../protocols/ledger-protocol.md`。
540
540
  >
541
541
  > **Ledger v3**:`record` 自动解析并强制顶层身份(`schemaVersion=3/repositoryId/changeName/baseCommit/currentHead/diffHash/ownershipHash`),缺字段非零退出、不写账本;已有 v1/v2 ledger 在写前透明迁移,`migrationHistory` 回执记录原/目标 schema 与迁移前后 evidence identity。无法迁移时返回 `LEDGER_MIGRATION_REQUIRED` 和确定性 `rerecordCommand`,不得半升级。v2 契约下 `--metrics-json` 必须通过 typed schema(unit=`total/passed/failed`,apiContract=`scenariosTotal/passed/failed`,browserE2E=`total/passed/failed`,dbCompatibility=`applicability(+reason)`)。详见 `../protocols/ledger-protocol.md` 第十节。
542
542
 
@@ -554,7 +554,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
554
554
  ### 静态验证不等于测试覆盖(⚠️ 关键规则)
555
555
 
556
556
  1. 🟡 静态检查 **不得计入"已测试通过"**
557
- 2. 如果任一 `ownerPhase=run` 的 P0 场景仅静态验证,则 harness-run 最终结果必须是:
557
+ 2. 如果任一 `ownerPhase=run` 的 P0 场景仅静态验证,则 harness-execute 最终结果必须是:
558
558
  `🟡WARN:编码和编译完成,但存在 P0 场景未真实验证`
559
559
  3. 只有所有 run-owned P0 场景都有自动化测试或真实接口验证时,最终结果才能是:
560
560
  `✅OK成功`
@@ -564,7 +564,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
564
564
  自动化测试通过: 5
565
565
  静态检查未真实验证: 17
566
566
  未验证: 0
567
- harness-run 结果: 🟡WARN,必须进入 harness-test 后才能 submit
567
+ harness-execute 结果: 🟡WARN,必须进入 harness-execute 后才能 submit
568
568
  ```
569
569
  6. **禁止用测试用例数冒充场景数**:计数对象是 `test-scenarios.md` 的场景编号(UT-001/N、API-001/N、COM-001/N、INT-001/N),不是测试框架的测试方法数(如 vitest "178 tests"、junit "Tests run: 178")。场景总数 = test-scenarios.md 的场景数。
570
570
  7. **四类计数须自洽**:run-owned 的 🟡/❌ 计入未验证;`ownerPhase=test` 单列为 ⏳“按计划移交”,不得冒充 ✅,也不得反向污染 run 的结果。
@@ -574,9 +574,9 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
574
574
  > ```
575
575
  > ### 场景覆盖检查
576
576
  > - ✅ UT-001~005: getEnabledIndicators 正常/异常/边界场景已测试通过
577
- > - 🟡 UT-006~010: getIndicatorPage 分页场景静态验证通过,待测试基础设施补齐后运行 harness-test
577
+ > - 🟡 UT-006~010: getIndicatorPage 分页场景静态验证通过,待测试基础设施补齐后运行 harness-execute
578
578
  > - ❌ UT-011~015: getIndicatorByCode 场景未覆盖,需补充测试用例
579
- > - ⏳ API-001~005: `ownerPhase=test`,接口测试按计划移交 harness-test
579
+ > - ⏳ API-001~005: `ownerPhase=test`,接口测试按计划移交 harness-execute
580
580
  > - ✅ COM-001~005: 数据库迁移脚本覆盖
581
581
  > - ⏳ INT-001~004: `ownerPhase=test`,按计划移交测试阶段验证
582
582
  > ```
@@ -587,12 +587,12 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
587
587
  > 静态检查未真实验证: 17
588
588
  > 未验证: 0
589
589
  > 按计划移交测试阶段: 4
590
- > harness-run 结果: 🟡WARN,必须进入 harness-test 后才能 submit
590
+ > harness-execute 结果: 🟡WARN,必须进入 harness-execute 后才能 submit
591
591
  > ```
592
592
 
593
593
  ## 步骤 3.5:权限/组织过滤类变更 — 安全矩阵
594
594
 
595
- > 凡是修改了以下逻辑,必须强制生成安全矩阵。如果任一权限边界的预期不明确,不允许标记 harness-run 为 ✅OK。
595
+ > 凡是修改了以下逻辑,必须强制生成安全矩阵。如果任一权限边界的预期不明确,不允许标记 harness-execute 为 ✅OK。
596
596
 
597
597
  ### 触发条件
598
598
 
@@ -624,7 +624,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
624
624
 
625
625
  ### 判定规则
626
626
 
627
- - 如果任一权限边界的预期不明确(如"非管理员+token空+指定组织"场景未明确是拒绝还是允许),则必须标记为 ❌未验证,且不允许标记 harness-run 为 ✅OK
627
+ - 如果任一权限边界的预期不明确(如"非管理员+token空+指定组织"场景未明确是拒绝还是允许),则必须标记为 ❌未验证,且不允许标记 harness-execute 为 ✅OK
628
628
  - 每个场景的覆盖状态必须真实标注:✅ 自动化测试通过 / 🟡 静态检查未真实测试 / ❌ 未验证
629
629
  - 安全矩阵必须写入执行日志
630
630
 
@@ -714,7 +714,7 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
714
714
 
715
715
  ## 步骤 5:计划状态持久化
716
716
 
717
- 如果 `.harness/changes/<change>/plans/*.md` 是任务来源,则 harness-run 完成任务后必须持久化任务状态。
717
+ 如果 `.harness/changes/<change>/plans/*.md` 是任务来源,则 harness-execute 完成任务后必须持久化任务状态。
718
718
 
719
719
  ### 持久化方式
720
720
 
@@ -729,12 +729,12 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
729
729
  | 任务 | 状态 | 测试场景 | 待验证 |
730
730
  |------|------|----------|--------|
731
731
  | Task 1 | ✅ DONE_AUTOMATED_TESTED | UT-001~005 | - |
732
- | Task 2 | 🟡 DONE_STATIC_ONLY | UT-006~010 | harness-test |
733
- | Task 3 | 🟡 DONE_NEEDS_INTERFACE_TEST | API-001~003 | harness-test |
732
+ | Task 2 | 🟡 DONE_STATIC_ONLY | UT-006~010 | harness-execute |
733
+ | Task 3 | 🟡 DONE_NEEDS_INTERFACE_TEST | API-001~003 | harness-execute |
734
734
 
735
735
  ## 待验证场景汇总
736
- - UT-006~010: 静态验证通过,需 harness-test 接口验证
737
- - API-001~003: 接口逻辑已覆盖,需 harness-test 真实 HTTP 验证
736
+ - UT-006~010: 静态验证通过,需 harness-execute 接口验证
737
+ - API-001~003: 接口逻辑已覆盖,需 harness-execute 真实 HTTP 验证
738
738
  ```
739
739
 
740
740
  ### 状态定义
@@ -748,7 +748,7 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
748
748
 
749
749
  - 不允许只在对话里说"任务完成"但不写入任何持久化文件
750
750
  - 不允许修改 finalized plan Markdown 来记录状态;恢复信息只写 `evidence/run-task-status.md`
751
- - 后续 harness-test 和 harness-review 必须能从持久化状态识别哪些场景仍待验证
751
+ - 后续 harness-execute 和 harness-review 必须能从持久化状态识别哪些场景仍待验证
752
752
 
753
753
  ## 输出示例
754
754
 
@@ -770,7 +770,7 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
770
770
  - 静态检查未真实验证: M
771
771
  - 未验证: P
772
772
  - 按计划移交测试阶段: Q
773
- - harness-run 结果: ✅OK成功 / 🟡WARN(只由 run-owned 工作决定)
773
+ - harness-execute 结果: ✅OK成功 / 🟡WARN(只由 run-owned 工作决定)
774
774
 
775
775
  ### 关门检查结果
776
776
  - git status --porcelain: ✅/❌
@@ -788,10 +788,10 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
788
788
  - 状态已写入: `.harness/changes/<change-name>/evidence/run-task-status.md`
789
789
 
790
790
  ### 下一步
791
- > ⚠️ 如果存在 run-owned P0 场景为 🟡静态验证,下一步必须且只能是 harness-test
791
+ > ⚠️ 如果存在 run-owned P0 场景为 🟡静态验证,下一步必须且只能是 harness-execute
792
792
 
793
- 运行 `/harness-test` 验证剩余 P0 场景。
794
- 在 harness-test 通过前,不建议也不应进入 `/harness-submit`。
793
+ 运行 `/harness-execute` 验证剩余 P0 场景。
794
+ 在 harness-execute 通过前,不建议也不应进入 `/harness-submit`。
795
795
  ```
796
796
 
797
797
  ## CLI 速查(gate / ledger)
@@ -857,7 +857,7 @@ C9 场景覆盖按 `ownerPhase` **分阶段判定**:run 关门只要求 `owner
857
857
 
858
858
  ## 执行日志记录
859
859
 
860
- `/harness-run` 只向 `events.ndjson` 追加事件(schema_version 3,兼容读取 v1/v2);`logs/execution-log.md` 由 `harness_events.py append` 自动渲染。步骤 0 之前 append `phase.start`;各阶段写入 `command` / `verification` / `decision` / `issue`,人类可读摘要放 `note`。事件类型与脚本用法见 [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]] 与 SKILL.md `## 执行日志`。
860
+ `/harness-execute` 只向 `events.ndjson` 追加事件(schema_version 3,兼容读取 v1/v2);`logs/execution-log.md` 由 `harness_events.py append` 自动渲染。步骤 0 之前 append `phase.start`;各阶段写入 `command` / `verification` / `decision` / `issue`,人类可读摘要放 `note`。事件类型与脚本用法见 [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]] 与 SKILL.md `## 执行日志`。
861
861
 
862
862
  关键 `note` / `decision` 须覆盖:测试基础设施探测(CHECKING→结论)、预存变更、run-tdd-protocol RED 类型、变更簇 RED/GREEN、批量构建 exit code、关门检查 10 项、计划状态持久化路径。
863
863
 
@@ -876,7 +876,7 @@ C9 场景覆盖按 `ownerPhase` **分阶段判定**:run 关门只要求 `owner
876
876
 
877
877
  ## 数据访问层复杂查询真实验证要求
878
878
 
879
- 数据访问层复杂查询(Java 的 `@Select`/JOIN/DISTINCT/IPage 分页/SQL/XML)变更在 run 阶段只能标记 🟡DONE_STATIC_ONLY,必须交给 harness-test 真实 DB/API 验证:
879
+ 数据访问层复杂查询(Java 的 `@Select`/JOIN/DISTINCT/IPage 分页/SQL/XML)变更在 run 阶段只能标记 🟡DONE_STATIC_ONLY,必须交给 harness-execute 真实 DB/API 验证:
880
880
 
881
881
  - SQL 可执行;
882
882
  - total 正确;
@@ -1,10 +1,10 @@
1
1
  ---
2
- description: harness-run 的原生执行协议。内化 TDD 与变更簇审查能力,但不运行时依赖 Superpowers。
2
+ description: harness-execute 的原生执行协议。内化 TDD 与变更簇审查能力,但不运行时依赖 Superpowers。
3
3
  ---
4
4
 
5
- # harness-run 原生执行协议
5
+ # harness-execute 原生执行协议
6
6
 
7
- 本文件定义 `/harness-run` 的内置执行协议。它吸收 test-driven-development 与 subagent-driven-development 的有效做法,但正式流程不调用 Superpowers,也不把外部 skill 是否存在作为执行条件。
7
+ 本文件定义 `/harness-execute` 的内置执行协议。它吸收 test-driven-development 与 subagent-driven-development 的有效做法,但正式流程不调用 Superpowers,也不把外部 skill 是否存在作为执行条件。
8
8
 
9
9
  ## 协议一:run-tdd-protocol
10
10
 
@@ -15,7 +15,7 @@ description: harness-run 的原生执行协议。内化 TDD 与变更簇审查
15
15
  | RED 类型 | 何时使用 | 证据要求 |
16
16
  |----------|----------|----------|
17
17
  | 真实 RED | 测试基础设施可用,能写测试并运行失败 | 测试编译通过,失败断言指向目标行为 |
18
- | 静态 RED | 测试基础设施不可用或目标层无法真实验证 | 记录降级原因、静态验证场景、待 harness-test 验证场景 |
18
+ | 静态 RED | 测试基础设施不可用或目标层无法真实验证 | 记录降级原因、静态验证场景、待 harness-execute 验证场景 |
19
19
  | 复用 RED | 计划和测试场景已明确失败场景,且本轮只执行同一场景的实现 | 引用 test-scenarios 编号与前序证据,仍需在 run 日志登记 |
20
20
 
21
21
  RED 失败原因必须与目标 bug 或需求直接相关。无效 RED(测试搭建错误、private 访问限制、mock/stubbing 错误、依赖注入失败、NPE 来自测试夹具)不得进入 GREEN。
@@ -1,8 +1,8 @@
1
1
  ---
2
- description: harness-test 的 Phase 0 环境准备 + Playwright 探测 + 关门检查清单。仅在执行测试前的环境准备阶段读取。
2
+ description: harness-execute 的 Phase 0 环境准备 + Playwright 探测 + 关门检查清单。仅在执行测试前的环境准备阶段读取。
3
3
  ---
4
4
 
5
- # harness-test 检查清单 — Phase 0 环境准备 + 关门检查
5
+ # harness-execute 检查清单 — Phase 0 环境准备 + 关门检查
6
6
 
7
7
  以下检查项确认完了再开始测试。每一项背后都有踩坑经历。
8
8
 
@@ -16,8 +16,7 @@ description: harness-test 的 Phase 0 环境准备 + Playwright 探测 + 关门
16
16
 
17
17
  先检查当前项目的测试配置文件(按优先级查找):
18
18
 
19
- 1. **优先**:`.harness/config/harness-test-config.md`(集中配置目录)
20
- 2. **兼容**:`harness-test/harness-test-config.md(兼容旧路径)`(旧路径,过渡期仍支持)
19
+ 1. `.harness/config/harness-test-config.md`(集中配置目录;旧 skill 目录下的兼容路径已随 harness-test 入口移除而废弃)
21
20
 
22
21
  如果任一文件存在,**必须先读取并应用其中的配置**。配置文件通常包含:
23
22
 
@@ -70,7 +69,7 @@ description: harness-test 的 Phase 0 环境准备 + Playwright 探测 + 关门
70
69
  - [ ] 检查 `claude mcp list` 中是否有 playwright(如果可以执行命令)
71
70
  - [ ] 检查 `@playwright/mcp` 是否可启动
72
71
  - [ ] 检查当前 skill 的 `allowed-tools` 是否允许 Playwright 相关工具
73
- - [ ] 输出 fallback 执行器可用性表格(见 reference.md)
72
+ - [ ] 输出 fallback 执行器可用性表格(见 testing-reference.md)
74
73
  - [ ] 记录决策:接口测试执行器 / PowerShell batch / Playwright MCP browser_evaluate / curl fallback
75
74
  - [ ] 如果 fallback 不可用,必须写明原因,不得静默改用 curl
76
75
 
@@ -194,21 +193,21 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
194
193
 
195
194
  **如果用户选择 AI 启动或 AI 重启**:
196
195
  1. 从已知良好测试配置读取 module/profile/port/healthUrl/sdkUrl(按项目配置)。
197
- 2. 生成 ASCII 运行时配置叠加:`C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml`(按技术栈;Java Spring Boot 的 application.yml 为例)。
196
+ 2. 生成 ASCII 运行时配置叠加:`C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml`(按技术栈;Java Spring Boot 的 application.yml 为例)。
198
197
  3. 禁止默认直接 Edit tracked 应用配置文件(如 `application-local-dev.yml`)。
199
198
  4. 默认启动命令(按技术栈,Java Spring Boot 为例):
200
199
  ```powershell
201
- powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module> -Dspring-boot.run.profiles=<profile> -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml'"
200
+ powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module> -Dspring-boot.run.profiles=<profile> -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml'"
202
201
  ```
203
202
  5. 写入 `service.pid`、`service-start-command.txt`、`service-start.log`、`runtime/service-session.json`(含 `moduleInputsHash`/`moduleInputsFiles`/`startCommandHash`/`profile`/`overlayPath`/`pid`/`startedBy=AI`/`startedAt`)。`moduleInputsHash` 来自 CLI `--files` ∪ `serviceStart.inputFiles`,空输入拒绝。
204
203
  6. 服务启动等待:0–30s 每 2s 探测;30–120s 每 5s 探测;>10s 必须输出状态行;>120s 读取最近 200 行日志。
205
204
  7. 发现启动失败特征(按技术栈识别,如 Java Spring Boot 的 `BindException` / `Could not resolve placeholder` / `Connection refused during bean init` / `BeanCreationException` / `Failed to start bean` / `BUILD FAILURE`)立即失败。
206
205
 
207
- #### 0.10.x 重入沿用(同一变更 harness-test 再次执行时)
206
+ #### 0.10.x 重入沿用(同一变更 harness-execute 再次执行时)
208
207
 
209
208
  满足以下**全部**条件时,可沿用上次服务决策,不重复询问:
210
209
 
211
- 1. 重入:同一 change-name 的 harness-test 再次执行(非首次)
210
+ 1. 重入:同一 change-name 的 harness-execute 再次执行(非首次)
212
211
  2. 环境未变:PG 可用性、目标端口、执行器可用性与上次一致
213
212
  3. 上次已确认执行器方案(如"内存 HTTP 执行器,PG 不可用")
214
213
  4. 当前源码未改服务启动逻辑(如未改 main.ts 启动路径、未改服务端口/profile 配置)
@@ -270,7 +269,7 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
270
269
 
271
270
  - [ ] Phase 1 前通过 state layout resolver 定位并检查 `evidence/verification-ledger.json`
272
271
  - [ ] 判断是否复用 run 的 unitTest:diffHash 一致 + module/profile 一致 + scope 一致或更严格 + run 后无行为性修改 + run 实际跑了全量测试
273
- - [ ] 复用 → 跳过重跑,标记"✅ 复用 harness-run 单元测试结果"
272
+ - [ ] 复用 → 跳过重跑,标记"✅ 复用 harness-execute 单元测试结果"
274
273
  - [ ] 不复用 → 按 profile key resolve 重跑测试命令(`harness_profile.py resolve --key unitTest`,不复制示例 `-pl` 命令),结果写回 ledger 的 `unitTest` 项
275
274
  - [ ] HTTP/API 契约结果写入 `apiTest`;真实浏览器/真实栈 Playwright 结果写入 `browserTest`,两者不得互相覆盖
276
275
  - [ ] **本变更没有该维度场景时**(如全部为单元场景 → 无 API 场景):用 `harness_ledger.py record --verification apiTest --status NOT_RUN --applicability NOT_APPLICABLE --applicability-reason "<为什么不适用>"` 登记,**不传 `--files`**。门禁 close 要求 requiredValidations 每项都有 entry,但**绝不能拿无关文件(比如单元测试文件)凑 `--files`**——那会让 ledger 声称该维度的输入是那些文件,是假证据
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Java/Feign 相关测试踩坑(harness-execute)。API 实测前通读;发现客户端路径缺陷时回写 plan 外修复记录。
3
+ ---
4
+
5
+ # Java 测试踩坑补充(Feign / 远程客户端)
6
+
7
+ > 与 `testing-pitfalls.md`(通用)及 `overlays/java/pitfalls-java.md`(overlay 速查表)互补;本文件收录路径拼接类缺陷的症状与流程要求。
8
+
9
+ ## Feign/客户端路径前缀缺失
10
+
11
+ **症状**:服务正常、接口 200,但客户端拿到 404 / 空数据 / fallback 生效。
12
+ **根因模式**:`@FeignClient` 方法上只写了 `@GetMapping("/type")`,漏掉服务端类级前缀(如 `/system/dict-data`)。
13
+ **定位**:对照服务端 controller 完整映射(类级 `@RequestMapping` + 方法级注解),或看服务端访问日志中的实际 404 路径。
14
+ **流程要求**:此类缺陷若在 test 阶段被 API 实测发现,属于"计划外修复"——必须记 decision 事件(含根因与修复文件),并检查同客户端文件的其余方法是否同源错误。
15
+
16
+ ## Surefire 插件级 excludedGroups 压过命令行覆盖(静默 0 执行)
17
+
18
+ **症状**:`mvn test -Dgroups=mysql -DexcludedGroups=` 想跑集成测试,结果 `Tests run: 0` + **exit 0**——只看退出码就是假阳性。
19
+ **根因**:pom 在 surefire `<configuration>` 里写死 `<excludedGroups>mysql</excludedGroups>` 时,插件级配置压过命令行属性,空值覆盖不生效。
20
+ **修复**:pom 改用属性占位 `<excludedGroups>${excludedGroups}</excludedGroups>`,命令行空值才能生效。
21
+ **防线**:`harness_ledger.py record` 在命令含 `-Dgroups=`/`-Dtest=` 等选择器且证据显示 `Tests run: 0` 时输出 `ZERO_TESTS_WITH_SELECTOR` 警告(0.4.11 起);看到它不要当噪音跳过。
@@ -1,11 +1,11 @@
1
1
  ---
2
- description: harness-test 的踩坑规则(来自真实对话日志)。执行测试前必须通读,遇到测试失败时重新参考。
2
+ description: harness-execute 的踩坑规则(来自真实对话日志)。执行测试前必须通读,遇到测试失败时重新参考。
3
3
  ---
4
4
 
5
5
  # 避坑规则(32 条)
6
6
 
7
7
  > 以下规则来自真实对话日志(2026-06-12 ~ 08-17),每个都有明确的现象和根因。
8
- > 执行 `harness-test` 时必须通读,避免重蹈覆辙。
8
+ > 执行 `harness-execute` 时必须通读,避免重蹈覆辙。
9
9
 
10
10
  | # | 规则 | 现象 | 根因 | 解法 |
11
11
  |:--:|------|------|------|------|
@@ -29,7 +29,7 @@ description: harness-test 的踩坑规则(来自真实对话日志)。执行
29
29
  | 18 | **Bash 不可执行执行器(如 node)** | "Bash 中没有 node" → 错误降级到 Playwright MCP | Windows 中文路径项目下 Bash 被 hook 拒;Node 不在 Bash PATH | 强制 `powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '<executorPath>' '...mjs'"`,禁止裸 `node`、禁止用 Bash 执行执行器 |
30
30
  | 19 | **Auto mode / 安全分类器降级时静默等待** | 接口测试长时间无响应,最终错误降级到逐条 MCP | PowerShell 命令被安全分类器拦截,Claude 静默重试 + fallback | Phase 0.1 preflight 检测出后**硬停**,原文输出"命令执行模式不可用...",提示用户切换权限模式 |
31
31
  | 20 | **Playwright API 执行器与 Playwright MCP 混写** | 报告写"Playwright ✅ 使用",实际是逐条 `browser_evaluate` | 两者被笼统称为"Playwright" | 报告中**强制区分**四种执行器:接口测试执行器 / PowerShell batch / Playwright MCP browser_evaluate / curl |
32
- | 21 | **直接 Edit tracked 应用配置文件** | 测试期间改配置,之后又还原,diff 噪声大 | 把运行时配置覆盖直接写进 tracked 文件 | 生成 ASCII 运行时配置叠加 `C:/temp/harness-test-overlay/<change>/application-harness-test.yml`,启动用该绝对路径叠加(如 `-Dspring.config.additional-location=...`) |
32
+ | 21 | **直接 Edit tracked 应用配置文件** | 测试期间改配置,之后又还原,diff 噪声大 | 把运行时配置覆盖直接写进 tracked 文件 | 生成 ASCII 运行时配置叠加 `C:/temp/harness-execute-overlay/<change>/application-harness-execute.yml`,启动用该绝对路径叠加(如 `-Dspring.config.additional-location=...`) |
33
33
  | 22 | **唯一约束字段与本地预存数据冲突** | 大面积唯一约束冲突,9 个场景 BLOCKED | 执行器用硬编码字段值 | 用随机值(如 `900000 + random`)/ 先查避让 / 用唯一隔离值 |
34
34
  | 23 | **setup 失败后继续用 null ID 发送请求** | 后续 9 个接口全部 400/500,掩盖真正问题 | 执行器不区分 BLOCKED 状态 | 执行器强制 setup/test/cleanup 三阶段,依赖未满足 → 标 🟡 BLOCKED,**不发起请求** |
35
35
  | 24 | **归档数据把 PARTIAL 写成 NOT_RUN** | 平台显示「未执行」,但实际跑了 6 个场景 | 状态枚举不完整,只有 OK/FAIL/NOT_RUN | API 维度状态使用 OK/PARTIAL/BLOCKED/NOT_RUN/FAIL,5 PASS+9 BLOCKED+1 FAIL → `apiTest=PARTIAL` |
@@ -37,7 +37,7 @@ description: harness-test 的踩坑规则(来自真实对话日志)。执行
37
37
  | 26 | **凭证在同一流程内重复获取** | 浏览器 origin 在认证服务就再走一次登录 | 执行器依赖浏览器当前页面 origin | 执行器用 request context 直连本地 baseURL,凭证从 cache 读,`credentialRefreshCount > 1` → 🟡 WARN |
38
38
  | 27 | **服务启动盲等 + 无反馈** | 等待 90s 后才发现启动报错 | 没有启动状态机和异常关键字检测 | 0–30s/2s × 30–120s/5s 状态机;遇启动失败特征(按技术栈,如 BindException/Could not resolve placeholder/BeanCreationException)立即停;> 10s 必须输出一次状态行 |
39
39
  | 28 | **已有服务未先决策就跑业务接口** | 旧服务不含新代码,接口 500 后才发现版本不匹配 | 检测到已有应用服务(端口被占)后,未先展示服务决策门就跑业务接口 | 先展示服务决策门,询问复用/重启/跳过/停止;询问前只允许 health/meta 检查 |
40
- | 29 | **启动命令反复试相对配置叠加 / 中文路径** | 相对路径或中文路径导致应用读不到运行时配置叠加,启动失败 | 默认只用 `C:/temp/harness-test-overlay/<change>/application-harness-test.yml` ASCII 绝对路径,并固化已知良好测试配置 |
40
+ | 29 | **启动命令反复试相对配置叠加 / 中文路径** | 相对路径或中文路径导致应用读不到运行时配置叠加,启动失败 | 默认只用 `C:/temp/harness-execute-overlay/<change>/application-harness-execute.yml` ASCII 绝对路径,并固化已知良好测试配置 |
41
41
  | 30 | **伪 diffHash 导致错误复用** | `3files-84plus-5minus` 不能证明代码未变 | 用 `git diff --binary` 生成 patch 并计算 SHA-256,ledger 只认 `sha256:<hash>` |
42
42
  | 31 | **尝试破解验证码 / 人机验证** | 认证服务返回"验证码不能为空",AI 写图像识别脚本反复试坐标(实测 28 次 / 4 种算法全失败) | 测试配置里的账号密码登录流程被加了滑块/图形验证码,配置未同步 | **硬停**。禁止编写或运行任何验证码求解代码;立即标 `apiTest=BLOCKED`,请用户手工提供凭证写入 `runtime/credential-cache.json`,或临时关闭测试环境验证码 |
43
43
  | 32 | **预存环境缺陷被当成本次变更的阻塞** | `unitTestFull` 144 个测试挂 1 个,根因是别人提交引入的缺省配置缺失 | 全量验证把预存缺陷和本次 diff 混在一起判定 | 先用 `git log -S` + diff 触点证明与本次变更无关,再按「预存缺陷」上报并请用户决策(修根因 / 记 🟡WARN / 停止),**不得**擅自改 tracked 配置或排除测试 |
@@ -193,7 +193,7 @@ $cred = $resp.data.accessToken
193
193
  **严重度**:🟡WARN
194
194
  **场景**:测试期间为了切换外部服务配置直接 Edit tracked 配置文件(如 `application-local-dev.yml`),测试后再还原,留下 diff 噪声
195
195
  **后果**:git diff --stat 出现意外文件、提交风险、误以为有业务变更
196
- **正确做法**:生成运行时配置叠加 `.harness/changes/<change>/runtime/application-harness-test.yml`(不提交),启动用 `-Dspring.config.additional-location=file:...` 叠加(按技术栈);如必须改 tracked 配置,先 blocking user confirmation,最终报告至少 🟡 WARN
196
+ **正确做法**:生成运行时配置叠加 `.harness/changes/<change>/runtime/application-harness-execute.yml`(不提交),启动用 `-Dspring.config.additional-location=file:...` 叠加(按技术栈);如必须改 tracked 配置,先 blocking user confirmation,最终报告至少 🟡 WARN
197
197
 
198
198
  ### 规则 22:唯一约束字段与本地预存数据冲突
199
199
  **严重度**:❌FAIL
@@ -249,9 +249,9 @@ $cred = $resp.data.accessToken
249
249
 
250
250
  ### 规则 29:启动命令反复试相对配置叠加 / 中文路径
251
251
  **严重度**:🟡WARN
252
- **场景**:运行时配置叠加用相对路径 `.harness/changes/<change>/runtime/application-harness-test.yml` 或中文路径作为 JVM `additional-location`,应用(如 Spring Boot)读不到配置叠加,启动失败后反复试不同路径
252
+ **场景**:运行时配置叠加用相对路径 `.harness/changes/<change>/runtime/application-harness-execute.yml` 或中文路径作为 JVM `additional-location`,应用(如 Spring Boot)读不到配置叠加,启动失败后反复试不同路径
253
253
  **后果**:启动反复失败,浪费时间;中文路径进入 JVM 参数也可能失败
254
- **正确做法**:默认只用 ASCII 绝对路径 `C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml`,并固化已知良好测试配置。禁止把相对路径作为默认 JVM `additional-location`。
254
+ **正确做法**:默认只用 ASCII 绝对路径 `C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml`,并固化已知良好测试配置。禁止把相对路径作为默认 JVM `additional-location`。
255
255
 
256
256
  ### 规则 30:伪 diffHash 导致错误复用
257
257
  **严重度**:❌FAIL
@@ -1,12 +1,12 @@
1
1
  ---
2
- description: harness-test 的 API 测试执行细节、批量 runner、token 缓存、测试数据治理、报告模板和关门检查。仅在执行接口测试需要参考详细操作时读取。
2
+ description: harness-execute 的 API 测试执行细节、批量 runner、token 缓存、测试数据治理、报告模板和关门检查。仅在执行接口测试需要参考详细操作时读取。
3
3
  ---
4
4
 
5
- # harness-test 参考 — API 测试详情
5
+ # harness-execute 参考 — API 测试详情
6
6
 
7
7
  ## 命令执行模式 preflight(0.1)
8
8
 
9
- `/harness-test` 高度依赖 PowerShell 与接口测试执行器。在编译/启动服务/生成执行器 **之前**
9
+ `/harness-execute` 高度依赖 PowerShell 与接口测试执行器。在编译/启动服务/生成执行器 **之前**
10
10
  必须执行 4 项执行模式检查:
11
11
 
12
12
  | 检查项 | 命令 | 预期 |
@@ -110,8 +110,8 @@ known-good-test-profile:
110
110
 
111
111
  overlay:
112
112
  pathStrategy: ascii-temp
113
- directory: C:/temp/harness-test-overlay
114
- fileName: application-harness-test.yml
113
+ directory: C:/temp/harness-execute-overlay
114
+ fileName: application-harness-execute.yml
115
115
 
116
116
  service:
117
117
  askBeforeReusingExisting: true
@@ -127,7 +127,7 @@ known-good-test-profile:
127
127
  不要直接 Edit tracked 应用配置文件(如 `application-local-dev.yml`)。默认生成 ASCII 绝对路径运行时配置叠加:
128
128
 
129
129
  ```text
130
- C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml
130
+ C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml
131
131
  ```
132
132
 
133
133
  内容按已知良好测试配置渲染(按项目;Java Spring Boot 为例):
@@ -147,10 +147,10 @@ spring:
147
147
  唯一默认启动命令(按技术栈,Java Spring Boot 为例):
148
148
 
149
149
  ```powershell
150
- powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module> -Dspring-boot.run.profiles=<profile> -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml'"
150
+ powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module> -Dspring-boot.run.profiles=<profile> -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml'"
151
151
  ```
152
152
 
153
- 不得默认使用 `.harness/changes/<change>/runtime/application-harness-test.yml` 相对路径作为 JVM `additional-location`。如必须修改 tracked 配置文件,先 blocking user confirmation,最终报告至少 🟡 WARN。
153
+ 不得默认使用 `.harness/changes/<change>/runtime/application-harness-execute.yml` 相对路径作为 JVM `additional-location`。如必须修改 tracked 配置文件,先 blocking user confirmation,最终报告至少 🟡 WARN。
154
154
 
155
155
  ## 服务决策门(Service Decision Gate)与服务生命周期管理
156
156
 
@@ -184,7 +184,7 @@ serviceState:`AI_STARTED` / `AI_RESTARTED_FROM_USER_SERVICE` / `USER_STARTED`
184
184
 
185
185
  ### 重入沿用
186
186
 
187
- 同一变更的 harness-test 重入时,若环境未变(PG/端口/执行器与上次一致)、上次已确认执行器方案、且源码未改服务启动逻辑,可沿用上次服务决策不重复询问,执行日志记 `重入沿用+环境未变`。不适用情形(fingerprint 不匹配、环境已变、USER_STARTED、源码改启动逻辑)仍须询问/重启。详见 checklist.md「0.10.x 重入沿用」。
187
+ 同一变更的 harness-execute 重入时,若环境未变(PG/端口/执行器与上次一致)、上次已确认执行器方案、且源码未改服务启动逻辑,可沿用上次服务决策不重复询问,执行日志记 `重入沿用+环境未变`。不适用情形(fingerprint 不匹配、环境已变、USER_STARTED、源码改启动逻辑)仍须询问/重启。详见 testing-checklist.md「0.10.x 重入沿用」。
188
188
 
189
189
  ## 启动等待状态机
190
190
 
@@ -652,7 +652,7 @@ TEST_<change-name>_<timestamp>_<short-random>
652
652
  - credentialRefreshCount: 0 / 1(>1 → 🟡 WARN)
653
653
 
654
654
  ### 单元测试
655
- > ✅ 复用 harness-run 单元测试结果:Tests run: N, Failures: 0, Errors: 0
655
+ > ✅ 复用 harness-execute 单元测试结果:Tests run: N, Failures: 0, Errors: 0
656
656
  > (diffHash=<...>, module=<...>, profile=<...>, scope=<...>)
657
657
  > 或:🔄 已重跑(原因:diffHash 变化 / 行为性 post-test 修改 / run 未跑全量)
658
658
 
@@ -729,7 +729,7 @@ TEST_<change-name>_<timestamp>_<short-random>
729
729
  ### 下一步
730
730
  - 如果 ✅OK:进入 /harness-review
731
731
  - 如果 🟡WARN:根据 WARN 原因决定是否补充测试或进入 review
732
- - 如果 ❌FAIL:修复失败项后重新运行 /harness-test
732
+ - 如果 ❌FAIL:修复失败项后重新运行 /harness-execute
733
733
  ```
734
734
 
735
735
  ## CLI 速查(gate / ledger)
@@ -769,7 +769,7 @@ python <skills-root>/scripts/harness_ledger.py scenario-receipt-template --chang
769
769
  | `PROJECT_ROOT_INVALID` | `--project` 传了项目名而不是路径 | 传 `.` 或绝对路径;报错的 `resolvedProject` 显示实际解析结果 |
770
770
  | `SCENARIO_RECEIPT_REQUIRED` | manifest 是 schemaVersion 2,`--scenario-ids` 必须配 receipt | 用 `scenario-receipt-template` 生成骨架 |
771
771
  | `SCENARIO_RECEIPT_NOT_FOUND` | receipt 路径找不到 | 看报错的 `triedPaths`;相对路径同时按 CWD 与 `--change-dir` 解析 |
772
- | `REQUIRED_SCENARIO_NOT_EXECUTED`(test 关门) | `ownerPhase=test` 的场景到 test 阶段仍无通过 receipt——这是真阻塞 | 补跑该场景;接口被验证码挡住时按 `pitfalls.md` 规则 31 记 BLOCKED,不得伪造 receipt |
772
+ | `REQUIRED_SCENARIO_NOT_EXECUTED`(test 关门) | `ownerPhase=test` 的场景到 test 阶段仍无通过 receipt——这是真阻塞 | 补跑该场景;接口被验证码挡住时按 `testing-pitfalls.md` 规则 31 记 BLOCKED,不得伪造 receipt |
773
773
 
774
774
  `can-reuse` 的主文案按 `executionNeed` 呈现,错误码仅放技术详情:`first-run` 表示首次执行,`rerun` 表示已有证据因输入或环境变化失效,`evidence-incomplete` 表示旧记录缺少当前契约字段,`reuse` 表示可直接复用。不得把 `VALIDATION_MISSING` 翻译成“强制重跑”。
775
775
 
@@ -875,6 +875,6 @@ python <skills-root>/scripts/harness_ledger.py diff-hash --repo . --base <baseCo
875
875
 
876
876
  ## 执行日志记录
877
877
 
878
- `/harness-test` 只向 `events.ndjson` 追加事件(schema_version 3,兼容读取 v1/v2);`logs/execution-log.md` 由 `harness_events.py append` 自动渲染。Phase 0 之前 append `phase.start`;各阶段写入 `command` / `verification` / `decision` / `issue` / `artifact`,人类可读摘要放 `note`。事件类型与脚本用法见 [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]] 与 SKILL.md `## 执行日志`。
878
+ `/harness-execute` 只向 `events.ndjson` 追加事件(schema_version 3,兼容读取 v1/v2);`logs/execution-log.md` 由 `harness_events.py append` 自动渲染。Phase 0 之前 append `phase.start`;各阶段写入 `command` / `verification` / `decision` / `issue` / `artifact`,人类可读摘要放 `note`。事件类型与脚本用法见 [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]] 与 SKILL.md `## 执行日志`。
879
879
 
880
880
  关键 `note` / 事件须覆盖:0.1 命令执行模式、fallback 执行器、serviceState、凭证策略、单元测试复用、批量执行器、verification-ledger 写入、关门检查、API 状态(不得把 PARTIAL 写成 NOT_RUN)。
@@ -2,7 +2,7 @@
2
2
  name: harness-knowledge-ingest
3
3
  description: 确认归档 ZIP 已上传并由 Hunter Platform 在服务端解包、校验和入库。客户端不再构建或维护本地知识索引。
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=3c6eec08da6f5a5c; overlay=none; agent=codebuddy; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=7c08c3960f78dc1a; overlay=none; agent=codebuddy; do not edit -->
6
6
  # harness-knowledge-ingest
7
7
 
8
8
  知识 ingest 完全由 Hunter Platform 负责。归档完成时,客户端生成一个确定性 ZIP;
@@ -40,6 +40,12 @@ powershell.exe -Command "npx hunter-harness archive upload --file '<archive.zip>
40
40
  ```
41
41
 
42
42
  4. 检查响应中的包哈希、服务端保存状态和 `knowledge_status`。
43
+ 4.5. **查询面回读验证(强制)**:`knowledgeStatus=ready` 只是入库回执,不代表可查。
44
+ 执行 `npx hunter-harness knowledge status --json` 确认 `pipeline.results_count`
45
+ 符合预期(有候选的归档应 > 0);再用归档中的已知关键词跑一次
46
+ `npx hunter-harness knowledge query "<已知关键词>" --json`,`count=0` 视为
47
+ ingest 未真正完成——报告 `pipeline.jobs` 状态(queued/extracting/failed)
48
+ 并停止宣称 ready,不得仅凭上传回执收尾。
43
49
  5. 只有服务端确认原 ZIP 已持久保存且知识状态为 ready,才删除本地待上传 ZIP。
44
50
  6. 上传或 ingest 失败时保留 ZIP 与失败收据;修复连接后重试同一个 ZIP,不重新拼散文件。
45
51
 
@@ -2,7 +2,7 @@
2
2
  name: harness-knowledge-query
3
3
  description: 在规划、实现或排查前,通过 hunter-harness CLI 查询远端项目知识库。远端不可用时直接报告不可用,不建立本地索引或离线回退。
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=3c6eec08da6f5a5c; overlay=none; agent=codebuddy; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=7c08c3960f78dc1a; overlay=none; agent=codebuddy; do not edit -->
6
6
  # harness-knowledge-query
7
7
 
8
8
  项目知识以 Hunter Platform 的服务端索引为唯一真源。客户端只提交查询并消费结果:
@@ -3,7 +3,7 @@ name: harness-plan
3
3
  description: 将需求转化为设计文档+实施计划+完整测试场景表,必须在编码前完成。仅当用户显式调用 /harness-plan 或明确要求进入
4
4
  Harness 规划阶段时使用;不得因用户描述需求就自动触发。
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=3c6eec08da6f5a5c; overlay=none; agent=codebuddy; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=7c08c3960f78dc1a; overlay=none; agent=codebuddy; do not edit -->
7
7
  # harness-plan — 需求规划
8
8
 
9
9
  ## Purpose
@@ -68,10 +68,10 @@ description: 将需求转化为设计文档+实施计划+完整测试场景表
68
68
  | 阶段 | 动作 |
69
69
  |------|------|
70
70
  | 0 | git status;脏工作区 → baseline 隔离 + `decision`,不询问。环境体检并入 0.5 的引导命令,不再单独跑 doctor |
71
- | 0.5 | 先定英文 `change-name`(kebab-case,`^[a-z0-9]+(-[a-z0-9]+)*$`)与一次性中文展示标题(建议 6~24 个可见字符,保留必要产品名),然后**一条命令完成引导**:<br>`python <skills-root>/scripts/harness_context.py bootstrap-plan --project . --change <cn> --executor <tool> --title "<中文标题>" --json`<br>它按序做完 doctor → 建 change 骨架 → prepare → state capture(首次把当时 HEAD 固定为不可变 `changeBase`)→ classify(落 `meta/gate-policy.json`)→ 生成合规 `plan_<uuid>` run-id 并追加 `phase.start`,返回紧凑摘要:`runId`/`attempt`/`tier`/`defaultPhases`/`conditionalPhases`/`requiredValidations`/`changeBase`/`head`/`executionRoot`。**重跑复用同一 run-id、不重复写 `phase.start`**(换 run-id 会让 finalize 按生命周期身份 fail-closed)。finalizer 必须复用该 `runId`/`attempt` |
71
+ | 0.5 | 先定英文 `change-name`(kebab-case,`^[a-z0-9]+(-[a-z0-9]+)*$`)与一次性中文展示标题(建议 6~24 个可见字符,保留必要产品名),然后**一条命令完成引导**:<br>`python <skills-root>/scripts/harness_context.py bootstrap-plan --project . --change <cn> --executor <tool> --title "<中文标题>" --json`<br>它按序做完 doctor → 建 change 骨架 → prepare → state capture(首次把当时 HEAD 固定为不可变 `changeBase`)→ classify(落 `meta/gate-policy.json`)→ 生成合规 `plan_<uuid>` run-id 并追加 `phase.start`,返回紧凑摘要:`runId`/`attempt`/`tier`/`defaultPhases`/`conditionalPhases`/`requiredValidations`/`changeBase`/`head`/`executionRoot`。**重跑复用同一 run-id、不重复写 `phase.start`**(换 run-id 会让 finalize 按生命周期身份 fail-closed)。finalizer 必须复用该 `runId`/`attempt`。返回里的 `legacyBootstrap: true` 只是「本次引导前还没有任何交接凭证」的标记(首个阶段的正常状态),不是项目结构需要迁移 |
72
72
  | 0.5b | 仅在引导失败需要单步排查时用等价分解——**每条的参数都是必填,少一个就是白跑一轮**:<br>`harness_runtime.py doctor --project . --change-dir ".harness/changes/<cn>" --agent <claude-code\|codebuddy\|codex\|cursor> --json`<br>`harness_context.py prepare --project . --change <cn> --phase plan --executor <tool> --title "<中文标题>" --json`<br>`harness_state.py capture --project . --change-dir ".harness/changes/<cn>" --json`<br>`harness_gate.py classify --change <cn> --stage plan --json`<br>`harness_events.py append --change-dir ".harness/changes/<cn>" --phase plan --type phase.start --run-id plan_<uuid> --attempt 1`<br>⚠️ `--change-dir` 一律是 `.harness/changes/<cn>`(状态目录),**不是** prepare 返回的 `executionRoot`(代码执行根,无 worktree 时等于项目根)——填错会把 gate-policy/events 写到项目根 |
73
73
  | 0.6 | 用引导返回的 `tier`/`defaultPhases`/`requiredValidations` 生成 `plannedPhases`,向用户用中文说明可选阶段;确认后运行 `harness_context.py configure-plan --project . --change <cn> --phases "plan,execute,...,archive" --operator <tool> --reason "<中文原因>" --json`。无 Git 或不需要提交时不得加入 `submit`;快速迭代默认 `plan,execute,archive`。省略项由脚本写入 `skippedPhases`,不得伪造阶段事件。<br>⚠️ 无风险信号时 classify 默认 `standard`(`plan,execute,submit,archive` + compile/unitTest/unitTestFull),**不再默认 full**。需要 review 阶段与 apiTest 的高风险变更,在计划文档里写「风险等级: full」或用 `classify --tier-override full` 显式升档 |
74
- | 1 | 直接执行一次 `npx hunter-harness knowledge query "<用户需求原文>" --limit 10 --json`。这是唯一执行入口,不扫描技能目录、不查找其他脚本;失败记 `issue` 并继续,不建立本地索引或离线回退 |
74
+ | 1 | 直接执行一次 `npx hunter-harness knowledge query "<用户需求原文>" --limit 10 --json`。这是唯一执行入口,不扫描技能目录、不查找其他脚本;失败记 `issue` 并继续,不建立本地索引或离线回退。**查询结果(含 0 条)必须落事件**:`harness_events.py append --phase plan --type command --name "knowledge query" --message "count=<n>" --json`(query 回执的 `receipt.index_generation` 反映索引代数;0 条时可先跑 `npx hunter-harness knowledge status --json`(0.4.11+)区分「job 未跑 / 失败 / 结果为空」) |
75
75
  | 2 | 歧义优先检查 + 复杂度分级;先确认会改变实现方向的语义歧义 |
76
76
  | 3 | 按复杂度执行有预算的代码探索;简单修复不得扩散到无关模块 |
77
77
  | 4 | **设计审批包** blocking user confirmation;确认事件早于 approved 设计文档和 `meta/worktree.json` |
@@ -214,6 +214,7 @@ description: harness-plan 的阶段检查清单和覆盖检查列表。仅在执
214
214
 
215
215
  - [ ] **v2**:只手写 `meta/plan-evidence-input.json`。`plans/*.md` 由 finalize 派生,手写的会被渲染覆盖,只是白写
216
216
  - [ ] 任何缺失**都不得手工补写**(包括 `phase.end`);回到对应阶段改自然输入/staging 后重跑
217
+ - [ ] **phase.start/end 事件对完整**:plan 不经 gate close,0.4.11 起 `context close`/`handoff` 会自动补齐缺失的 `phase.end`(返回体 `phaseEndPair.code=PHASE_END_AUTO_PAIRED`);发现平台 Run 监控计时不停时先查这对事件,而不是手工写事件
217
218
  - [ ] v2 过渡期**不写** `meta/plan-finalization.json` 与 `logs/execution-log.md`;缺这两项不算失败,不得为凑表手工补
218
219
 
219
220
 
@@ -227,7 +228,7 @@ description: harness-plan 的阶段检查清单和覆盖检查列表。仅在执
227
228
  - 如果需求不明确,优先提问而不是猜测后继续设计
228
229
  - 任务拆分粒度按复杂度调整——plan 简表保持可追踪,implementation-detail 按风险和复杂度自适应展开
229
230
 
230
- > Plan 的结束行为(禁止询问执行模式、只提示 `/harness-run`)由 `SKILL.md` 的关键规则表定义,
231
+ > Plan 的结束行为(禁止询问执行模式、只提示 `/harness-execute`)由 `SKILL.md` 的关键规则表定义,
231
232
  > 详细规则见 `reference.md`「Plan 结束行为规则」。此处不再复述。
232
233
 
233
234
  ## 事件记录(前置规则)