@hunter-harness/workflow-harness 0.4.0 → 0.4.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 (386) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
  3. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  4. package/harness/bundles/general/claude-code/harness-execute/SKILL.md +1 -1
  5. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  6. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  7. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +1 -1
  8. package/harness/bundles/general/claude-code/harness-pull/SKILL.md +1 -1
  9. package/harness/bundles/general/claude-code/harness-push/SKILL.md +1 -1
  10. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  11. package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  13. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  14. package/harness/bundles/general/claude-code/harness-test/SKILL.md +1 -1
  15. package/harness/bundles/general/claude-code/scripts/harness_archive.py +29 -6
  16. package/harness/bundles/general/claude-code/scripts/harness_deploy.py +1 -1
  17. package/harness/bundles/general/claude-code/scripts/harness_knowledge_candidates.py +398 -0
  18. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  19. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  20. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  21. package/harness/bundles/general/codebuddy/harness-execute/SKILL.md +1 -1
  22. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  23. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  24. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +1 -1
  25. package/harness/bundles/general/codebuddy/harness-pull/SKILL.md +1 -1
  26. package/harness/bundles/general/codebuddy/harness-push/SKILL.md +1 -1
  27. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  28. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
  29. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  30. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  31. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +1 -1
  32. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +29 -6
  33. package/harness/bundles/general/codebuddy/scripts/harness_deploy.py +1 -1
  34. package/harness/bundles/general/codebuddy/scripts/harness_knowledge_candidates.py +398 -0
  35. package/harness/bundles/general/codex/.harness-build.json +1 -1
  36. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  37. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  38. package/harness/bundles/general/codex/harness-execute/SKILL.md +1 -1
  39. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  40. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  41. package/harness/bundles/general/codex/harness-plan/SKILL.md +1 -1
  42. package/harness/bundles/general/codex/harness-pull/SKILL.md +1 -1
  43. package/harness/bundles/general/codex/harness-push/SKILL.md +1 -1
  44. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  45. package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
  46. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  47. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  48. package/harness/bundles/general/codex/harness-test/SKILL.md +1 -1
  49. package/harness/bundles/general/codex/scripts/harness_archive.py +29 -6
  50. package/harness/bundles/general/codex/scripts/harness_deploy.py +1 -1
  51. package/harness/bundles/general/codex/scripts/harness_knowledge_candidates.py +398 -0
  52. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  53. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  54. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  55. package/harness/bundles/general/cursor/harness-execute/SKILL.md +1 -1
  56. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  57. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  58. package/harness/bundles/general/cursor/harness-plan/SKILL.md +1 -1
  59. package/harness/bundles/general/cursor/harness-pull/SKILL.md +1 -1
  60. package/harness/bundles/general/cursor/harness-push/SKILL.md +1 -1
  61. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  62. package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
  63. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  64. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  65. package/harness/bundles/general/cursor/harness-test/SKILL.md +1 -1
  66. package/harness/bundles/general/cursor/scripts/harness_archive.py +29 -6
  67. package/harness/bundles/general/cursor/scripts/harness_deploy.py +1 -1
  68. package/harness/bundles/general/cursor/scripts/harness_knowledge_candidates.py +398 -0
  69. package/harness/bundles/general/pi/.harness-build.json +6 -0
  70. package/harness/bundles/general/pi/CONTEXT.md +98 -0
  71. package/harness/bundles/general/pi/README.md +478 -0
  72. package/harness/bundles/general/pi/contracts/build-profile-v3.schema.json +302 -0
  73. package/harness/bundles/general/pi/contracts/ci-metrics.schema.json +36 -0
  74. package/harness/bundles/general/pi/contracts/doctor-capability.schema.json +43 -0
  75. package/harness/bundles/general/pi/contracts/external-platform-observation.schema.json +62 -0
  76. package/harness/bundles/general/pi/contracts/fixtures/managed-execution.json +341 -0
  77. package/harness/bundles/general/pi/contracts/process-identity.schema.json +132 -0
  78. package/harness/bundles/general/pi/contracts/run-session.schema.json +142 -0
  79. package/harness/bundles/general/pi/contracts/service-retirement-receipt.schema.json +85 -0
  80. package/harness/bundles/general/pi/contracts/service-session.schema.json +147 -0
  81. package/harness/bundles/general/pi/contracts/workflow-policy.json +574 -0
  82. package/harness/bundles/general/pi/harness-archive/SKILL.md +322 -0
  83. package/harness/bundles/general/pi/harness-archive/checklist.md +71 -0
  84. package/harness/bundles/general/pi/harness-archive/reference.md +150 -0
  85. package/harness/bundles/general/pi/harness-archive/scripts/gen-manifest.ps1 +31 -0
  86. package/harness/bundles/general/pi/harness-archive/templates/summary-data-template.json +218 -0
  87. package/harness/bundles/general/pi/harness-codebase-map/SKILL.md +116 -0
  88. package/harness/bundles/general/pi/harness-codebase-map/checklist.md +126 -0
  89. package/harness/bundles/general/pi/harness-codebase-map/reference.md +364 -0
  90. package/harness/bundles/general/pi/harness-codebase-map/templates/ARCHITECTURE.md +57 -0
  91. package/harness/bundles/general/pi/harness-codebase-map/templates/CONCERNS.md +49 -0
  92. package/harness/bundles/general/pi/harness-codebase-map/templates/CONVENTIONS.md +57 -0
  93. package/harness/bundles/general/pi/harness-codebase-map/templates/INTEGRATIONS.md +52 -0
  94. package/harness/bundles/general/pi/harness-codebase-map/templates/STACK.md +55 -0
  95. package/harness/bundles/general/pi/harness-codebase-map/templates/STRUCTURE.md +69 -0
  96. package/harness/bundles/general/pi/harness-codebase-map/templates/TESTING.md +64 -0
  97. package/harness/bundles/general/pi/harness-codebase-map/templates/map-manifest.schema.json +73 -0
  98. package/harness/bundles/general/pi/harness-codebase-map/templates/map-summary.md +64 -0
  99. package/harness/bundles/general/pi/harness-execute/SKILL.md +170 -0
  100. package/harness/bundles/general/pi/harness-knowledge-ingest/SKILL.md +103 -0
  101. package/harness/bundles/general/pi/harness-knowledge-query/SKILL.md +97 -0
  102. package/harness/bundles/general/pi/harness-plan/SKILL.md +158 -0
  103. package/harness/bundles/general/pi/harness-plan/checklist.md +243 -0
  104. package/harness/bundles/general/pi/harness-plan/protocols.md +133 -0
  105. package/harness/bundles/general/pi/harness-plan/reference.md +468 -0
  106. package/harness/bundles/general/pi/harness-pull/SKILL.md +55 -0
  107. package/harness/bundles/general/pi/harness-push/SKILL.md +83 -0
  108. package/harness/bundles/general/pi/harness-review/SKILL.md +175 -0
  109. package/harness/bundles/general/pi/harness-review/checklist.md +124 -0
  110. package/harness/bundles/general/pi/harness-review/protocols.md +69 -0
  111. package/harness/bundles/general/pi/harness-review/reference.md +114 -0
  112. package/harness/bundles/general/pi/harness-run/SKILL.md +188 -0
  113. package/harness/bundles/general/pi/harness-run/checklist.md +279 -0
  114. package/harness/bundles/general/pi/harness-run/protocols.md +141 -0
  115. package/harness/bundles/general/pi/harness-run/reference.md +886 -0
  116. package/harness/bundles/general/pi/harness-submit/SKILL.md +182 -0
  117. package/harness/bundles/general/pi/harness-submit/checklist.md +452 -0
  118. package/harness/bundles/general/pi/harness-submit/reference.md +152 -0
  119. package/harness/bundles/general/pi/harness-sync/SKILL.md +72 -0
  120. package/harness/bundles/general/pi/harness-sync/reference.md +176 -0
  121. package/harness/bundles/general/pi/harness-test/SKILL.md +250 -0
  122. package/harness/bundles/general/pi/harness-test/checklist.md +359 -0
  123. package/harness/bundles/general/pi/harness-test/pitfalls-java.md +14 -0
  124. package/harness/bundles/general/pi/harness-test/pitfalls.md +307 -0
  125. package/harness/bundles/general/pi/harness-test/reference.md +880 -0
  126. package/harness/bundles/general/pi/harness-test/scripts/runtime-helpers.mjs +216 -0
  127. package/harness/bundles/general/pi/protocols/archive-report-protocol.md +196 -0
  128. package/harness/bundles/general/pi/protocols/ci-layering-protocol.md +22 -0
  129. package/harness/bundles/general/pi/protocols/evidence-based-reporting-protocol.md +134 -0
  130. package/harness/bundles/general/pi/protocols/execution-session-protocol.md +52 -0
  131. package/harness/bundles/general/pi/protocols/external-platform-protocol.md +27 -0
  132. package/harness/bundles/general/pi/protocols/ledger-protocol.md +365 -0
  133. package/harness/bundles/general/pi/protocols/memory-closeout-protocol.md +21 -0
  134. package/harness/bundles/general/pi/protocols/model-routing-protocol.md +22 -0
  135. package/harness/bundles/general/pi/protocols/powershell-protocol.md +238 -0
  136. package/harness/bundles/general/pi/protocols/registry-governance-protocol.md +31 -0
  137. package/harness/bundles/general/pi/protocols/report-pipeline-protocol.md +172 -0
  138. package/harness/bundles/general/pi/protocols/sensitive-info-protocol.md +110 -0
  139. package/harness/bundles/general/pi/protocols/state-layout-protocol.md +209 -0
  140. package/harness/bundles/general/pi/protocols/submit-protocol.md +78 -0
  141. package/harness/bundles/general/pi/protocols/verification-graph-protocol.md +32 -0
  142. package/harness/bundles/general/pi/scripts/harness_adoption_metrics.py +391 -0
  143. package/harness/bundles/general/pi/scripts/harness_apidoc.py +53 -0
  144. package/harness/bundles/general/pi/scripts/harness_archive.py +11345 -0
  145. package/harness/bundles/general/pi/scripts/harness_change.py +1626 -0
  146. package/harness/bundles/general/pi/scripts/harness_check_gate.py +113 -0
  147. package/harness/bundles/general/pi/scripts/harness_context.py +1774 -0
  148. package/harness/bundles/general/pi/scripts/harness_deploy.py +968 -0
  149. package/harness/bundles/general/pi/scripts/harness_efficiency.py +443 -0
  150. package/harness/bundles/general/pi/scripts/harness_environment.py +1690 -0
  151. package/harness/bundles/general/pi/scripts/harness_events.py +2234 -0
  152. package/harness/bundles/general/pi/scripts/harness_events_sync.py +1425 -0
  153. package/harness/bundles/general/pi/scripts/harness_execution_contracts.py +596 -0
  154. package/harness/bundles/general/pi/scripts/harness_fixback.py +1975 -0
  155. package/harness/bundles/general/pi/scripts/harness_gate.py +3816 -0
  156. package/harness/bundles/general/pi/scripts/harness_headless.py +37 -0
  157. package/harness/bundles/general/pi/scripts/harness_integration.py +2564 -0
  158. package/harness/bundles/general/pi/scripts/harness_knowledge_candidates.py +796 -0
  159. package/harness/bundles/general/pi/scripts/harness_ledger.py +3556 -0
  160. package/harness/bundles/general/pi/scripts/harness_migration_head.py +220 -0
  161. package/harness/bundles/general/pi/scripts/harness_orchestration.py +344 -0
  162. package/harness/bundles/general/pi/scripts/harness_paths.py +676 -0
  163. package/harness/bundles/general/pi/scripts/harness_phase.py +1726 -0
  164. package/harness/bundles/general/pi/scripts/harness_plan_aggregate.py +249 -0
  165. package/harness/bundles/general/pi/scripts/harness_plan_finalize.py +1016 -0
  166. package/harness/bundles/general/pi/scripts/harness_preflight.py +650 -0
  167. package/harness/bundles/general/pi/scripts/harness_process.py +1065 -0
  168. package/harness/bundles/general/pi/scripts/harness_profile.py +1817 -0
  169. package/harness/bundles/general/pi/scripts/harness_report_model.py +442 -0
  170. package/harness/bundles/general/pi/scripts/harness_retry.py +175 -0
  171. package/harness/bundles/general/pi/scripts/harness_review.py +631 -0
  172. package/harness/bundles/general/pi/scripts/harness_runtime.py +2243 -0
  173. package/harness/bundles/general/pi/scripts/harness_service.py +3355 -0
  174. package/harness/bundles/general/pi/scripts/harness_state.py +365 -0
  175. package/harness/bundles/general/pi/scripts/harness_sync.py +407 -0
  176. package/harness/bundles/general/pi/scripts/harness_test_cleanup.py +175 -0
  177. package/harness/bundles/general/pi/scripts/harness_test_guard.py +1899 -0
  178. package/harness/bundles/general/pi/scripts/harness_test_runner.py +1586 -0
  179. package/harness/bundles/general/pi/scripts/harness_verification.py +593 -0
  180. package/harness/bundles/general/pi/scripts/harness_workflow_policy.py +266 -0
  181. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  182. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  183. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  184. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  185. package/harness/bundles/java/claude-code/harness-execute/SKILL.md +1 -1
  186. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  187. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  188. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  189. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
  190. package/harness/bundles/java/claude-code/harness-pull/SKILL.md +1 -1
  191. package/harness/bundles/java/claude-code/harness-push/SKILL.md +1 -1
  192. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  193. package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
  194. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  195. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  196. package/harness/bundles/java/claude-code/harness-test/SKILL.md +1 -1
  197. package/harness/bundles/java/claude-code/scripts/harness_archive.py +29 -6
  198. package/harness/bundles/java/claude-code/scripts/harness_deploy.py +1 -1
  199. package/harness/bundles/java/claude-code/scripts/harness_knowledge_candidates.py +398 -0
  200. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  201. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  202. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  203. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  204. package/harness/bundles/java/codebuddy/harness-execute/SKILL.md +1 -1
  205. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  206. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  207. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  208. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
  209. package/harness/bundles/java/codebuddy/harness-pull/SKILL.md +1 -1
  210. package/harness/bundles/java/codebuddy/harness-push/SKILL.md +1 -1
  211. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  212. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
  213. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  214. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  215. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +1 -1
  216. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +29 -6
  217. package/harness/bundles/java/codebuddy/scripts/harness_deploy.py +1 -1
  218. package/harness/bundles/java/codebuddy/scripts/harness_knowledge_candidates.py +398 -0
  219. package/harness/bundles/java/codex/.harness-build.json +1 -1
  220. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  221. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  222. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  223. package/harness/bundles/java/codex/harness-execute/SKILL.md +1 -1
  224. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  225. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  226. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  227. package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
  228. package/harness/bundles/java/codex/harness-pull/SKILL.md +1 -1
  229. package/harness/bundles/java/codex/harness-push/SKILL.md +1 -1
  230. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  231. package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
  232. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  233. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  234. package/harness/bundles/java/codex/harness-test/SKILL.md +1 -1
  235. package/harness/bundles/java/codex/scripts/harness_archive.py +29 -6
  236. package/harness/bundles/java/codex/scripts/harness_deploy.py +1 -1
  237. package/harness/bundles/java/codex/scripts/harness_knowledge_candidates.py +398 -0
  238. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  239. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  240. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  241. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  242. package/harness/bundles/java/cursor/harness-execute/SKILL.md +1 -1
  243. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  244. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  245. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  246. package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
  247. package/harness/bundles/java/cursor/harness-pull/SKILL.md +1 -1
  248. package/harness/bundles/java/cursor/harness-push/SKILL.md +1 -1
  249. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  250. package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
  251. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  252. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  253. package/harness/bundles/java/cursor/harness-test/SKILL.md +1 -1
  254. package/harness/bundles/java/cursor/scripts/harness_archive.py +29 -6
  255. package/harness/bundles/java/cursor/scripts/harness_deploy.py +1 -1
  256. package/harness/bundles/java/cursor/scripts/harness_knowledge_candidates.py +398 -0
  257. package/harness/bundles/java/pi/.harness-build.json +6 -0
  258. package/harness/bundles/java/pi/CONTEXT.md +98 -0
  259. package/harness/bundles/java/pi/README.md +478 -0
  260. package/harness/bundles/java/pi/contracts/build-profile-v3.schema.json +302 -0
  261. package/harness/bundles/java/pi/contracts/ci-metrics.schema.json +36 -0
  262. package/harness/bundles/java/pi/contracts/doctor-capability.schema.json +43 -0
  263. package/harness/bundles/java/pi/contracts/external-platform-observation.schema.json +62 -0
  264. package/harness/bundles/java/pi/contracts/fixtures/managed-execution.json +341 -0
  265. package/harness/bundles/java/pi/contracts/process-identity.schema.json +132 -0
  266. package/harness/bundles/java/pi/contracts/run-session.schema.json +142 -0
  267. package/harness/bundles/java/pi/contracts/service-retirement-receipt.schema.json +85 -0
  268. package/harness/bundles/java/pi/contracts/service-session.schema.json +147 -0
  269. package/harness/bundles/java/pi/contracts/workflow-policy.json +574 -0
  270. package/harness/bundles/java/pi/harness-apidoc/SKILL.md +97 -0
  271. package/harness/bundles/java/pi/harness-apidoc/checklist.md +142 -0
  272. package/harness/bundles/java/pi/harness-apidoc/reference.md +233 -0
  273. package/harness/bundles/java/pi/harness-archive/SKILL.md +322 -0
  274. package/harness/bundles/java/pi/harness-archive/checklist.md +71 -0
  275. package/harness/bundles/java/pi/harness-archive/reference.md +150 -0
  276. package/harness/bundles/java/pi/harness-archive/scripts/gen-manifest.ps1 +31 -0
  277. package/harness/bundles/java/pi/harness-archive/templates/summary-data-template.json +218 -0
  278. package/harness/bundles/java/pi/harness-codebase-map/SKILL.md +116 -0
  279. package/harness/bundles/java/pi/harness-codebase-map/checklist.md +126 -0
  280. package/harness/bundles/java/pi/harness-codebase-map/reference.md +364 -0
  281. package/harness/bundles/java/pi/harness-codebase-map/templates/ARCHITECTURE.md +57 -0
  282. package/harness/bundles/java/pi/harness-codebase-map/templates/CONCERNS.md +49 -0
  283. package/harness/bundles/java/pi/harness-codebase-map/templates/CONVENTIONS.md +57 -0
  284. package/harness/bundles/java/pi/harness-codebase-map/templates/INTEGRATIONS.md +52 -0
  285. package/harness/bundles/java/pi/harness-codebase-map/templates/STACK.md +55 -0
  286. package/harness/bundles/java/pi/harness-codebase-map/templates/STRUCTURE.md +69 -0
  287. package/harness/bundles/java/pi/harness-codebase-map/templates/TESTING.md +64 -0
  288. package/harness/bundles/java/pi/harness-codebase-map/templates/map-manifest.schema.json +73 -0
  289. package/harness/bundles/java/pi/harness-codebase-map/templates/map-summary.md +64 -0
  290. package/harness/bundles/java/pi/harness-execute/SKILL.md +170 -0
  291. package/harness/bundles/java/pi/harness-knowledge-ingest/SKILL.md +103 -0
  292. package/harness/bundles/java/pi/harness-knowledge-query/SKILL.md +97 -0
  293. package/harness/bundles/java/pi/harness-package/SKILL.md +94 -0
  294. package/harness/bundles/java/pi/harness-package/checklist.md +322 -0
  295. package/harness/bundles/java/pi/harness-package/reference.md +210 -0
  296. package/harness/bundles/java/pi/harness-plan/SKILL.md +158 -0
  297. package/harness/bundles/java/pi/harness-plan/checklist.md +243 -0
  298. package/harness/bundles/java/pi/harness-plan/protocols.md +133 -0
  299. package/harness/bundles/java/pi/harness-plan/reference.md +468 -0
  300. package/harness/bundles/java/pi/harness-pull/SKILL.md +55 -0
  301. package/harness/bundles/java/pi/harness-push/SKILL.md +83 -0
  302. package/harness/bundles/java/pi/harness-review/SKILL.md +175 -0
  303. package/harness/bundles/java/pi/harness-review/checklist.md +124 -0
  304. package/harness/bundles/java/pi/harness-review/protocols.md +69 -0
  305. package/harness/bundles/java/pi/harness-review/reference.md +114 -0
  306. package/harness/bundles/java/pi/harness-run/SKILL.md +206 -0
  307. package/harness/bundles/java/pi/harness-run/checklist.md +252 -0
  308. package/harness/bundles/java/pi/harness-run/protocols.md +141 -0
  309. package/harness/bundles/java/pi/harness-run/reference.md +820 -0
  310. package/harness/bundles/java/pi/harness-submit/SKILL.md +189 -0
  311. package/harness/bundles/java/pi/harness-submit/checklist.md +452 -0
  312. package/harness/bundles/java/pi/harness-submit/reference.md +152 -0
  313. package/harness/bundles/java/pi/harness-sync/SKILL.md +72 -0
  314. package/harness/bundles/java/pi/harness-sync/reference.md +176 -0
  315. package/harness/bundles/java/pi/harness-test/SKILL.md +264 -0
  316. package/harness/bundles/java/pi/harness-test/checklist.md +320 -0
  317. package/harness/bundles/java/pi/harness-test/pitfalls-java.md +16 -0
  318. package/harness/bundles/java/pi/harness-test/pitfalls.md +307 -0
  319. package/harness/bundles/java/pi/harness-test/reference.md +792 -0
  320. package/harness/bundles/java/pi/harness-test/scripts/runtime-helpers.mjs +216 -0
  321. package/harness/bundles/java/pi/protocols/archive-report-protocol.md +196 -0
  322. package/harness/bundles/java/pi/protocols/ci-layering-protocol.md +22 -0
  323. package/harness/bundles/java/pi/protocols/evidence-based-reporting-protocol.md +134 -0
  324. package/harness/bundles/java/pi/protocols/execution-session-protocol.md +52 -0
  325. package/harness/bundles/java/pi/protocols/external-platform-protocol.md +27 -0
  326. package/harness/bundles/java/pi/protocols/ledger-protocol.md +365 -0
  327. package/harness/bundles/java/pi/protocols/memory-closeout-protocol.md +21 -0
  328. package/harness/bundles/java/pi/protocols/model-routing-protocol.md +22 -0
  329. package/harness/bundles/java/pi/protocols/powershell-protocol.md +238 -0
  330. package/harness/bundles/java/pi/protocols/registry-governance-protocol.md +31 -0
  331. package/harness/bundles/java/pi/protocols/report-pipeline-protocol.md +172 -0
  332. package/harness/bundles/java/pi/protocols/sensitive-info-protocol.md +110 -0
  333. package/harness/bundles/java/pi/protocols/state-layout-protocol.md +209 -0
  334. package/harness/bundles/java/pi/protocols/submit-protocol.md +78 -0
  335. package/harness/bundles/java/pi/protocols/verification-graph-protocol.md +32 -0
  336. package/harness/bundles/java/pi/scripts/harness_adoption_metrics.py +391 -0
  337. package/harness/bundles/java/pi/scripts/harness_apidoc.py +53 -0
  338. package/harness/bundles/java/pi/scripts/harness_archive.py +11345 -0
  339. package/harness/bundles/java/pi/scripts/harness_change.py +1626 -0
  340. package/harness/bundles/java/pi/scripts/harness_check_gate.py +113 -0
  341. package/harness/bundles/java/pi/scripts/harness_context.py +1774 -0
  342. package/harness/bundles/java/pi/scripts/harness_deploy.py +968 -0
  343. package/harness/bundles/java/pi/scripts/harness_efficiency.py +443 -0
  344. package/harness/bundles/java/pi/scripts/harness_environment.py +1690 -0
  345. package/harness/bundles/java/pi/scripts/harness_events.py +2234 -0
  346. package/harness/bundles/java/pi/scripts/harness_events_sync.py +1425 -0
  347. package/harness/bundles/java/pi/scripts/harness_execution_contracts.py +596 -0
  348. package/harness/bundles/java/pi/scripts/harness_fixback.py +1975 -0
  349. package/harness/bundles/java/pi/scripts/harness_gate.py +3816 -0
  350. package/harness/bundles/java/pi/scripts/harness_headless.py +37 -0
  351. package/harness/bundles/java/pi/scripts/harness_integration.py +2564 -0
  352. package/harness/bundles/java/pi/scripts/harness_knowledge_candidates.py +796 -0
  353. package/harness/bundles/java/pi/scripts/harness_ledger.py +3556 -0
  354. package/harness/bundles/java/pi/scripts/harness_migration_head.py +220 -0
  355. package/harness/bundles/java/pi/scripts/harness_orchestration.py +344 -0
  356. package/harness/bundles/java/pi/scripts/harness_paths.py +676 -0
  357. package/harness/bundles/java/pi/scripts/harness_phase.py +1726 -0
  358. package/harness/bundles/java/pi/scripts/harness_plan_aggregate.py +249 -0
  359. package/harness/bundles/java/pi/scripts/harness_plan_finalize.py +1016 -0
  360. package/harness/bundles/java/pi/scripts/harness_preflight.py +650 -0
  361. package/harness/bundles/java/pi/scripts/harness_process.py +1065 -0
  362. package/harness/bundles/java/pi/scripts/harness_profile.py +1817 -0
  363. package/harness/bundles/java/pi/scripts/harness_report_model.py +442 -0
  364. package/harness/bundles/java/pi/scripts/harness_retry.py +175 -0
  365. package/harness/bundles/java/pi/scripts/harness_review.py +631 -0
  366. package/harness/bundles/java/pi/scripts/harness_runtime.py +2243 -0
  367. package/harness/bundles/java/pi/scripts/harness_service.py +3355 -0
  368. package/harness/bundles/java/pi/scripts/harness_state.py +365 -0
  369. package/harness/bundles/java/pi/scripts/harness_sync.py +407 -0
  370. package/harness/bundles/java/pi/scripts/harness_test_cleanup.py +175 -0
  371. package/harness/bundles/java/pi/scripts/harness_test_guard.py +1899 -0
  372. package/harness/bundles/java/pi/scripts/harness_test_runner.py +1586 -0
  373. package/harness/bundles/java/pi/scripts/harness_verification.py +593 -0
  374. package/harness/bundles/java/pi/scripts/harness_workflow_policy.py +266 -0
  375. package/harness/manifests/general/claude-code.json +17 -17
  376. package/harness/manifests/general/codebuddy.json +17 -17
  377. package/harness/manifests/general/codex.json +17 -17
  378. package/harness/manifests/general/cursor.json +17 -17
  379. package/harness/manifests/general/pi.json +475 -0
  380. package/harness/manifests/java/claude-code.json +19 -19
  381. package/harness/manifests/java/codebuddy.json +19 -19
  382. package/harness/manifests/java/codex.json +19 -19
  383. package/harness/manifests/java/cursor.json +19 -19
  384. package/harness/manifests/java/pi.json +499 -0
  385. package/hunter-workflow-family.json +2 -2
  386. package/package.json +1 -1
@@ -0,0 +1,158 @@
1
+ ---
2
+ name: harness-plan
3
+ description: 将需求转化为设计文档+实施计划+完整测试场景表,必须在编码前完成。仅当用户显式调用 /harness-plan 或明确要求进入
4
+ Harness 规划阶段时使用;不得因用户描述需求就自动触发。
5
+ ---
6
+ <!-- generated by harness_deploy.py; core=ec59ac2389d9dce9; overlay=none; agent=pi; do not edit -->
7
+ # harness-plan — 需求规划
8
+
9
+ ## Purpose
10
+
11
+ 确定 change 后必须运行 `python <skills-root>/scripts/harness_gate.py classify --change <id> --stage plan --json`,并把脚本返回的 risk tier、默认阶段、条件阶段和必需验证写入计划;不得凭模型印象另建风险分级。
12
+
13
+ 需求 → 设计文档 → 任务拆分 → 测试场景表(编码/测试唯一真相源)。项目已绑定远端平台时,阶段 1 只执行下表中的远端查询命令;远端不可用则记录 issue 并继续,不做本地回退。
14
+
15
+ ## When to Use
16
+
17
+ 仅当用户显式调用 `/harness-plan`(或明确说"用 harness 规划这个需求")时执行。用户只是描述需求、提问或讨论方案时,**不得**自动进入本 skill。
18
+
19
+ **单阶段原则**:本 skill 只负责 plan 阶段。plan finalize + verify 完成后必须停止并交还用户,仅提示 `plannedPhases` 中的真实下一阶段;禁止自动调用其他阶段 skill。
20
+
21
+ ## 统一读取协议
22
+
23
+ 0. **脚本在 `<skills-root>/scripts/` 共享,不在每个 skill 子目录下** — 实际形态是 `.codebuddy/skills/scripts/harness_*.py`(`.claude`/`.cursor`/`.codex` 同理),**没有** `.../skills/harness-<phase>/scripts/`。plan、run/test、archive 三份执行日志里都先猜成后者、报 `No such file` 再靠 Search 找回来;照第一种写法直接用
24
+ 1. **`.harness/changes/<change-name>/` 是唯一真相源** — 所有输入从该目录读取,产物写入对应子目录
25
+ 2. **change-name 优先从 frontmatter 读取** — `plans/*-design.md`、`spec/*-design.md`、`plans/*-plan.md` 的 YAML `change-name`
26
+ 3. **frontmatter 缺失时兼容旧格式** — 从路径推断,标记 `🟡 legacy-plan`,不失败
27
+ 4. **design** — 设计真相源按序取第一个存在的:`plans/<change>-design.md`(v2 发布产物,哈希绑定)→ `spec/<change>-design.md`(legacy 手写)。两份**同时存在**时以 `plans/` 为准,并记 `🟡 WARN 设计文档双份`——v2 发布的那份才受完整性门禁保护,读手写的那份等于绕过校验
28
+ 5. **plan** — 任务真相源:`plans/<change>-plan.md`
29
+ 6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
30
+ 7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
31
+ 8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
32
+ 9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --json`。首次 Plan 捕获时,脚本把当时的 Git HEAD 写入不可变 `changeBase`;后续阶段只刷新 `git.head` 与各段指纹,不得用当前 HEAD 覆盖 `changeBase`。只有迁移旧 change 且已能证明真实计划起点时,才在首次补录时传 `--base <baseCommit>`。`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
33
+
34
+ 状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
35
+ > 片段:read-protocol · plan 额外写 `meta/worktree.json`、`meta/change-context.json`
36
+
37
+ ## Worktree 门禁
38
+
39
+ 读取 `meta/worktree.json`(兼容旧路径 `worktree.json`):
40
+
41
+ | 条件 | 行为 |
42
+ |------|------|
43
+ | `requested=false` | 主目录执行 |
44
+ | `requested=true` + path 存在 | 切换 worktree 执行 |
45
+ | `requested=true` + path 不存在 | **必须创建**(run)或 **停止**(test/review/submit) |
46
+
47
+ **严禁** `requested=true` 时静默回主目录。创建失败 → 停止或 blocking user confirmation 降级(须 🟡WARN + 用户确认)。
48
+
49
+ **状态与代码分离**:代码/编译/测试在 `worktreeRoot`;`stateDir`(logs/events/ledger/reports)写回 `.harness/changes/<change-name>/`。
50
+
51
+ 创建命令与 JSON 模板 → 各 skill `reference.md`(plan 写决策,run 创建/更新)。
52
+ > 片段:worktree-gate · plan 在**设计审批包**写入 `worktree.json`(模板 → `reference.md`)
53
+
54
+ ## 原生规划协议
55
+
56
+ 内化为 `protocols.md`:`clarification-protocol`、`decision-grilling-protocol`、`implementation-planning-protocol`。不运行时调用 Superpowers/grill-me。
57
+
58
+ <!-- @section-id plan.delegate -->
59
+ ## 执行路由(inline 优先)
60
+
61
+ - **阶段 3 探索默认 inline**:主会话直接使用 CodeGraph/Read,简单修复和常规跨文件变更不得为“隔离上下文”额外启动 agent。
62
+ - **仅高复杂度探索考虑委派**:涉及多个独立模块、陌生大型代码库或可并行的独立调查时,才执行一次 `python <skills-root>/scripts/harness_preflight.py check-agents --skills-root <skills-root> --agent harness-explorer --json`。只有 `executionMode=delegated` 才委派;`executionMode=inline` 是正常路径,静默继续;`unavailable` 只记录安装问题后 inline。
63
+ - **阶段 7.5 evaluator**:仅 `--adversarial` 或 auth/支付/迁移/并发等高风险规划启用;需要固定 agent 时才预检。无论预检 inline、spawn 失败、空返回或只有元数据,都立即由主会话完成同一对抗检查,`fallbackPolicy=inline-no-retry`。
64
+ - 日志记录 `executionMode=inline|delegated`;只有真实定义损坏或 spawn 失败才记 issue。正常 inline 不得显示“subagent 不可用”告警。
65
+
66
+ ## Workflow 概要
67
+
68
+ | 阶段 | 动作 |
69
+ |------|------|
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` |
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
+ | 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` 并继续,不建立本地索引或离线回退 |
75
+ | 2 | 歧义优先检查 + 复杂度分级;先确认会改变实现方向的语义歧义 |
76
+ | 3 | 按复杂度执行有预算的代码探索;简单修复不得扩散到无关模块 |
77
+ | 4 | **设计审批包** blocking user confirmation;确认事件早于 approved 设计文档和 `meta/worktree.json` |
78
+ | 5–6 | **v2(默认)**:任务与场景只沉淀进 `meta/plan-evidence-input.json`(自然输入,字段定稿时点见 `reference.md` 阶段 8 v2 表);`plans/*.md` 四份由 finalize 派生,**不得手写**——手写的会被派生渲染覆盖,只是白写。|
79
+ | 7.5 | 仅 `--adversarial` 对抗评审 |
80
+ | 8 | **v2 路径(新 change 优先)**:`npx hunter-harness plan evidence-pack --input <meta/plan-evidence-input.json> --output <meta/plan-evidence.json>`,再 `npx hunter-harness plan finalize --input <meta/plan-evidence.json>`;exit 0 且 `code:"PLAN_FINALIZED"` 即发布完成(契约见 `reference.md` 阶段 8 v2 路径)。`risk_signals` 可留空:evidence-pack 按 affected_paths 与 git status 推断信号并与手填取并集;capabilities 由命令探测真实仓库状态,阶段 0.6 的 plannedPhases 会被读取。发布成功后把 `harness_context.py close` 的 `--to-phase` 取 `plannedPhases` 中 plan 的真实后继,不得写死。原子发布、派生清单计数对账、完整生命周期、render → `checklist.md` |
81
+
82
+ change-name 范围变更 → 提示重命名或记 🟡WARN(→ `reference.md`)
83
+
84
+ ## P0 执行可信度规则
85
+
86
+ - 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
87
+ - 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
88
+ - 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
89
+
90
+ ## 生成内容语言约定
91
+
92
+ - sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
93
+ - 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
94
+ > 片段:p0-trust
95
+
96
+ ## 关键规则
97
+
98
+ | 规则 | 要点 |
99
+ |------|------|
100
+ | 产物路径 | 只写 `.harness/changes/<cn>/`;禁止 superpowers 输入 |
101
+ | 设计真相源 | **v2** = `plans/<cn>-design.md`(finalize 派生、哈希绑定、八 target 之一);**legacy** = `spec/<cn>-design.md`。同一 change 只有一份设计权威,禁止两处并存导致漂移;下游读取顺序见 `shared/read-protocol.md` |
102
+ | Change 标题 | 首次 Plan 同时确定英文 `change-name` 与中文展示标题;英文名保持目录和机器标识不变,中文标题由 `prepare --title` 持久化,后续阶段只复用、不重新生成 |
103
+ | 阶段计划 | Plan 必须持久化 `plannedPhases`;固定从 plan 开始、以 archive 结束。Execute、Review、Submit、Package、API 文档可按项目策略省略;高风险必需项只能转为“提前结束且不可发布”,不得伪装通过 |
104
+ | 产品边界 | `ownership.productPaths` 必须覆盖计划会修改的源文件、测试文件和构建入口;只写目录前缀或精确文件,禁止 `**` 通配。finalize 前对照任务表补齐,避免归档阶段才发现边界缺口 |
105
+ | 空目录 | 不得为“预留目录”生成 `.gitkeep`;只有产品明确需要跟踪空目录时才能创建,并在计划中说明业务原因 |
106
+ | 设计审批包 | 一次 blocking user confirmation 含 worktree(读 `harness.json` `defaultWorktree`)。必须同时展示 **in_scope 与 out_of_scope 两个列表**——只展示"做什么"会让范围误判活到发布之后,代价是整份计划 republish |
107
+ | 引用即追问 | 需求引用了外部设计文档章节(贴段落、指 `### Bn`、说"之前设计的时候如…")时,阶段 2 必须确认该章节是否纳入本次范围,落到 in_scope 或 out_of_scope;引用 ≠ 纳入,也 ≠ 排除 |
108
+ | 阶段 8 | 唯一入口:`hunter-harness plan finalize`(证据包 → 八 target + journal committed + plan-events.ndjson)。失败不得手工补终态;历史 legacy 收据只读(`harness_plan_finalize.py verify`) |
109
+ | 发布路径 | **只有 v2**(`plan evidence-pack` → `plan finalize`);legacy staging/finalize/republish 已于 0.3.0 移除,历史 legacy 收据保持可读(`harness_plan_finalize.py verify`)。v2 的场景契约已补齐 `priority`/`owner_phase` 与可执行测试三元,派生的 `meta/scenario-manifest.json` 能被 execute 门禁与 `harness_ledger.py record` 解包消费,证据闭环走得通。P0/P1 场景必须给全可执行三元(要么整组给全、要么整组省略;省略则 manifest 降为 schemaVersion 1,关门绑不上结构化执行收据) |
110
+ | 发布后改产物 | 改 `meta/plan-evidence-input.json` 后重跑 `plan evidence-pack`(`context.attempt` 递增、`expected_baseline` 置 present 并带上次 manifest 哈希/generation),再 `plan finalize`——新 attempt + 重新派生 manifest 一次完成。**绝不手改 `meta/scenario-manifest.json`**(派生物,手改必致 `ARTIFACT_HASH_DRIFT`)→ `reference.md`「发布后修订计划」 |
111
+ | v2 输入骨架 | 不要猜 `plan-evidence-input.json` 结构:`npx hunter-harness plan evidence-pack --print-template` 给出**一个字不改就能通过 evidence-pack** 的骨架(结构合法;`change_key`/`run_id` 仍须换成真实身份才能 finalize),逐项替换即可。结构不符时命令返回 `PLAN_EVIDENCE_INPUT_INVALID`,带 `field_path` 与 `problems[]`(缺失/多余键、枚举取值)——按 problems 改完重跑;**不得**为找契约去反编译 `dist/bin.js` 或翻 npx 缓存。带不了 `<>` 的占位字段与硬约束清单 → `reference.md` 阶段 8 v2 路径 |
112
+ | Plan 结束 | **禁止**询问执行模式;只提示 `/harness-execute` |
113
+ | 知识查询 | 阶段 1 失败不得假装已读历史,也不得改用本地索引或其他执行入口 |
114
+ | 读命令输出 | `--json` 输出是完整结构,**不得**接 `\| tail -N` / `\| head -N` 后据此判断——截断的 JSON 解析不了,只会逼出一次补读。输出太长时读命令写下的文件(classify → `meta/gate-policy.json`),或用 `bootstrap-plan` 的紧凑摘要 |
115
+ | 歧义优先检查 | 否定、对比、动作对象或范围存在多种合理解释时,最小取证后先给推荐理解并一次一问;确认前不深挖错误方向 |
116
+ | 简单修复探索预算 | 预计不超过 2 个代码文件、且不涉及认证/安全/迁移/并发/API 契约重设时,最多 1 次合并 CodeGraph 查询 + 1 次定向补查、1 个用户澄清问题;无关发现只记非阻断说明 |
117
+ | 精简产物 | 简单修复只保留实现所需的设计、任务、边界和测试;禁止在 spec/plan/detail/scenarios 中重复同一背景和结论 |
118
+ | 测试执行成本 | 场景表必须设计快速反馈层级、预计时长、资源预算、超时和可复用证据;默认先跑受影响测试,再跑模块门禁,候选验证只复用身份一致的全量证据 |
119
+ | state snapshot | Plan 首次 capture 固定不可变 `changeBase`;后续刷新只更新 HEAD 和各段指纹,不得把当前 HEAD 写回为基线。读取 `state-snapshot.json` 了解 project/worktree root、HEAD/base、profile/rules/map/knowledge 指纹;失效由脚本刷新,**不得仅凭缓存跳过代码探索或验证门禁**(design §3.6) |
120
+ | 协议 | sensitive-info / evidence-based-reporting / state-layout |
121
+
122
+ 产出物表、frontmatter、legacy 兼容、结束输出模板 → `reference.md`
123
+
124
+ ## 渐进披露
125
+
126
+ - **Read `checklist.md`** — 阶段检查与覆盖表
127
+ - **Read `protocols.md`** — 阶段 4/6 原生协议
128
+ - **Read `reference.md`** — 模板与 worktree JSON
129
+
130
+ ## 交互白名单
131
+
132
+ 1. **设计审批包**(阶段 4):设计 + **范围(做什么/不做什么)** + 场景表 + worktree + change-name
133
+ 2. **decision-grilling**(阶段 2/3 澄清):语义歧义或高风险业务裁决(一次一问)
134
+
135
+ ## 执行日志
136
+
137
+ `events.ndjson` 为唯一事实源(schema_version 3,兼容读取 v1/v2;`note` 承载人类可读摘要);`logs/execution-log.md` 由 `harness_events.py` 渲染,**禁止用 Write/Edit 直接维护**。直接修改的内容会在 `phase.end` 或 finalize 时被完整重建覆盖,属于数据丢失;需要保留的详情必须进入事件 `note`。结构 → [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]]
138
+
139
+ **`phase.start` 由 `harness_gate.py begin` 写,不要再手工追加一次。** 两条同 `run-id` 的
140
+ `phase.start` 会让 `plan finalize` 以 `PHASE_START_DUPLICATE` 卡死,而且手工那次会先触发
141
+ auto-seal、把正在开始的 attempt 封成 `RECOVERED`。要补触发指令说明就带 `--note` 跑 `gate begin`。
142
+ (重复追加现已按 `(phase, run-id)` 判为幂等 no-op,但依赖它不如不写。)
143
+
144
+ ```powershell
145
+ # 阶段开始:gate begin 负责,note 在这里给
146
+ python <skills-root>/scripts/harness_gate.py begin --change-dir ".harness/changes/<change-name>" --phase <phase> --note "<触发指令>"
147
+ # 阶段中的其他事件才用 append
148
+ python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type <command|issue|verification> --run-id <phase-run-id> --note "<摘要>"
149
+ ```
150
+
151
+ > **脚本接线**:`harness_events.py append`;`harness_archive.py finalize`;`harness_preflight.py check`;`harness_ledger.py can-reuse`;`harness_service.py ensure/stop`(须 `--files`/`serviceStart.inputFiles`)。JSON 输出按 D13 护栏解读。
152
+
153
+ > **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。
154
+
155
+ 每个阶段的 `phase.start` 与对应 `phase.end` 必须复用同一 `--run-id` / `--attempt`;阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`。重试同一阶段时生成新的 run-id 并增加 `--attempt <n>`,不得覆盖或伪装成一次执行。**`attempt` 按 phase 全局递增,不是按 run-id**:一个 run-id 只绑定一个 attempt,重试必须「新 run-id + 下一个 attempt」两者同时换,只换其一会撞 `EVENT_ATTEMPT_CONFLICT` 或 `PHASE_ALREADY_CLOSED`。已发布 plan 的修订通过重跑 `plan evidence-pack` + `plan finalize` 分配新 attempt(`harness_plan_finalize.py republish` 已于 0.3.0 移除)。
156
+
157
+ 阶段跑得久(plan/run 常见)时用 `harness_context.py renew --project . --change <cn> --executor <tool>` 续租;租约到期本身不再阻断 `close`(同一 owner 的过期租约不构成冲突,收据里记 `leaseLapsed`),但续租能让 `view` 的状态如实反映在跑。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
158
+ > 片段:logging · phase=`plan`
@@ -0,0 +1,243 @@
1
+ ---
2
+ description: harness-plan 的阶段检查清单和覆盖检查列表。仅在执行完整需求规划时读取。
3
+ ---
4
+
5
+ # harness-plan 检查清单
6
+
7
+ ## 阶段 0:工作区变更检查 ⚠️ 强制检查
8
+
9
+ > 有未提交业务变更(排除 `.harness/`)→ **默认 baseline 隔离**,append `decision` 事件,**不 blocking user confirmation**,继续规划。PowerShell 失败 → ❌ 停止。
10
+
11
+ **固定命令**:`powershell.exe -Command "git -C '<项目路径>' status --porcelain"`
12
+
13
+ **判定**:stdout 为空 → ✅ 继续;stdout 非空 → baseline 隔离 + `decision`(note 含变更文件列表);Bash 被拒 → PowerShell 重试。
14
+
15
+ ## 阶段 0.5:一次性引导与知识查询
16
+
17
+ - [ ] 定好 change-name(kebab-case)与中文展示标题后,运行一次 `harness_context.py bootstrap-plan --project . --change <cn> --executor <tool> --title "<中文标题>" --json`
18
+ - [ ] 引导返回 `code:"PLAN_BOOTSTRAPPED"`,记下 `runId`/`attempt`/`tier`/`defaultPhases`/`changeBase`;后续 finalize 必须复用同一 `runId`/`attempt`
19
+ - [ ] 不再手工生成 run-id、不再单独跑 doctor/prepare/capture/classify/append;需要单步排查时才用 SKILL.md 阶段 0.5b 的等价分解
20
+ - [ ] 引导失败时按返回的 `code` 处理(`PROJECT_ROOT_INVALID` → 该项目未 init),**不得**跳过引导直接写产物
21
+ - [ ] 项目已绑定平台时执行一次远端 knowledge `query`;不另跑前置 sync,不创建本地索引
22
+ - [ ] 查询失败追加 `issue`,不得回退本地 archive/SQLite、重跑“sync + query”循环或假装已读取历史
23
+
24
+ ## 阶段 2:歧义优先检查与复杂度分级
25
+
26
+ - [ ] 否定、对比、动作对象、范围或保留/删除关系不存在未确认的多义解释
27
+ - [ ] 若存在歧义,仅完成最小取证后一次一问,并给出推荐理解
28
+ - [ ] **需求里引用了外部设计文档/章节(贴了段落、给了 `xxx.md` 的 `### Bn` 小节、说"之前设计的时候如…")时,必须确认该章节本次是否纳入**——引用不等于纳入,也不等于排除。把它列进 `in_scope` 或 `out_of_scope` 后再进入阶段 4;漏判会导致计划发布后整体作废重来(republish),是本流程最贵的返工
29
+ - [ ] 简单修复探索预算:最多 1 次合并 CodeGraph 查询 + 1 次定向补查、1 个澄清问题
30
+ - [ ] 无关发现只记非阻断 `issue`,未扩展当前方案或问题列表
31
+
32
+ ## 设计审批包字段:Worktree
33
+
34
+ > worktree 不再单独询问。阶段 4 **设计审批包** 一次 blocking user confirmation 含 worktree 选项(推荐值读 `harness.json` `defaultWorktree`)。确认后写入 `meta/worktree.json`。
35
+
36
+ - [ ] 审批包确认后写入 worktree.json(`requested` true/false)
37
+ - [ ] 阶段 8 检查 worktree.json 存在
38
+
39
+ ## 阶段 3:代码探索确认(含 Agent/CodeGraph 降级记录)
40
+
41
+ 阶段 3 执行完成后,确认以下事项:
42
+
43
+ ```
44
+ □ 已按复杂度选择 `executionMode=inline|delegated`;默认 inline
45
+ □ inline 时主会话直接使用 CodeGraph/Read,并返回结构化设计概要
46
+ □ 仅高复杂度且准备委派固定 agent 时,才运行一次 `check-agents --agent harness-explorer`
47
+ □ 只有预检 `executionMode=delegated` 才委派;`inline` 静默继续,不显示不可用告警
48
+ □ spawn 失败、空返回、0 tool uses、仅 "Done"/元数据 → 主会话探索,**不 retry 委派**
49
+ □ 执行日志记录 executionMode、委派原因(如有)、只读约束和核心结论
50
+ ```
51
+
52
+ > 正常 inline 只记 `decision`,不是降级或故障。如果已尝试委派但未返回有效输出(0 tool uses / 空返回 / 仅 "Done"),必须:
53
+ > - 追加一次 `issue` 事件并在 note 写明:子代理未返回有效输出,改为主会话只读探索
54
+ > - 主会话直接使用 codegraph MCP 工具(`mcp__codegraph__codegraph_explore`)和 Read 探索代码(只读,不执行写操作)
55
+ > - 不得在主会话中执行任何写操作
56
+ > - CodeGraph 如通过 MCP 调用,必须优先用 MCP 工具,不允许通过普通 Bash 调 codegraph 命令
57
+ > - 禁止把子代理未经工具验证的文本结论当作"详尽报告"或代码证据采纳
58
+
59
+ ## 影响面检查(远程客户端路径)
60
+
61
+ 变更涉及 HTTP/RPC 客户端时,在设计/任务拆分前完成路径静态比对:
62
+
63
+ - [ ] 变更涉及 HTTP/RPC 客户端(Feign/RestTemplate/SDK 封装)时:取客户端注解路径(类级 + 方法级拼接),与服务提供方 controller 的 `@RequestMapping` + 方法级注解**完整拼接路径**逐一比对,在计划/执行记录中列出比对结果。只看方法级注解不算完成。
64
+
65
+ ## 阶段 4:设计审批包 ⚠️ 强制阻断(一次 blocking user confirmation)
66
+
67
+ > 合并原「设计审核 + worktree + 场景表预览 + change-name」。推荐 worktree 读 `harness.json` `defaultWorktree`。
68
+
69
+ **展示内容**:
70
+
71
+ 1. 设计摘要 + 关键证据 + 风险 + 变更清单
72
+ 2. **本次做什么(in_scope)/ 本次不做什么(out_of_scope)** — 两个列表都必须显式列出,不得只展示"做什么"。用户看到"不做"清单才有机会当场纠正范围误判;`out_of_scope` 为空时写"无",不得省略该行。这两个列表随后原样进入 `plan-evidence-input.json` 的 `intent` 与 `approval.content`(两处必须集合相等)
73
+ 3. 测试场景表摘要 + 8 维度覆盖检查
74
+ 4. worktree 选项(是/否,含推荐理由)
75
+ 5. change-name(自动生成,可修改)
76
+ 6. 确认进入任务拆分
77
+
78
+ 确认后立即追加 decision 事件,并写入 `meta/worktree.json`。设计文档按路径分流:
79
+
80
+ - 审批内容写进 `meta/plan-evidence-input.json` 的 `approval.content`(含 `approver_id`),
81
+ `plans/<change>-design.md` 由 finalize 从审批内容派生——**不要**手写它,手写的会被覆盖
82
+
83
+ - [ ] 确认事件早于 approved 设计文档;未获确认时不得先落盘 `status: approved`
84
+
85
+ 展示可审核包后,使用 `blocking user confirmation` 询问用户:
86
+ - **确认**:设计方向正确,继续任务拆分
87
+ - **修改**:某个部分需要调整,修改后再审核
88
+ - **取消**:方向不对,回到需求澄清阶段
89
+
90
+ ### 设计文档自审清单
91
+
92
+ 写完设计文档后,用以下清单自检,**并将自审结果展示给用户**:
93
+
94
+ ```
95
+ □ 无"TBD"/"TODO"/未完成章节
96
+ □ 各节之间无矛盾
97
+ □ 范围聚焦,无不相关内容
98
+ □ 无歧义需求(可被两种方式解读的,已选一种并明确说明)
99
+ □ 自审结果已展示给用户
100
+ ```
101
+
102
+ > 展示格式示例:
103
+ > ```
104
+ > ### 设计文档自审
105
+ > - ✅ 无 TBD/TODO/未完成章节
106
+ > - ✅ 各节之间无矛盾
107
+ > - ✅ 范围聚焦,无不相关内容
108
+ > - ⚠️ 第3.2节"枚举删除"与第4节变更清单中"标记@Deprecated"有矛盾,已修正为"删除"
109
+ > ```
110
+
111
+ ## 测试场景覆盖检查表(8 维度覆盖检查表,强制输出)
112
+
113
+ > 注意:覆盖检查表是 8 维度,与 4 维度场景表(单元/接口/数据兼容/集成)是两个不同制品。
114
+
115
+ 生成场景表后,逐项确认是否覆盖,**必须输出覆盖检查表展示给用户确认**。未覆盖的维度必须标记为缺口(⚠️ 缺口),不得全部标记为 ✅:
116
+
117
+ | 覆盖维度 | 状态 | 说明 |
118
+ |---|---|---|
119
+ | 正常路径 | ✅/🟡/❌ | 每个接口 ≥ 1 个正常场景 |
120
+ | 参数校验 | ✅/🟡/❌ | 必填缺失、格式非法、类型错误 |
121
+ | 业务规则 | ✅/🟡/❌ | 唯一性、范围约束、状态机 |
122
+ | 权限/组织边界 | ✅/🟡/❌ | 无权限、跨组织、角色限制 |
123
+ | 数据兼容 | ✅/🟡/❌ | 旧数据无新字段 |
124
+ | 错误码 | ✅/🟡/❌ | 每个异常对应明确错误码 |
125
+ | 集成影响 | ✅/🟡/❌ | 跨模块调用、端到端流程 |
126
+ | 并发/幂等 | ✅/🟡/❌ | 重复提交、并发修改 |
127
+
128
+ > 展示格式示例:
129
+ > ```
130
+ > ### 场景覆盖检查表
131
+ > | 覆盖维度 | 状态 | 说明 |
132
+ > |---|---|---|
133
+ > | 正常路径 | ✅ | 5 个接口各 ≥ 1 个正常场景 |
134
+ > | 参数校验 | ✅ | 必填缺失、格式非法已覆盖 |
135
+ > | 业务规则 | ✅ | 唯一性、状态机已覆盖 |
136
+ > | 权限/组织边界 | 🟡 | ⚠️ 缺口:未覆盖跨组织场景,需补充 |
137
+ > | 数据兼容 | ✅ | 旧数据 scene_code 迁移场景已覆盖 |
138
+ > | 错误码 | ✅ | 3 个错误码均有对应场景 |
139
+ > | 集成影响 | 🟡 | ⚠️ 缺口:未覆盖端到端流程,需部署后验证 |
140
+ > | 并发/幂等 | ❌ | ⚠️ 缺口:未覆盖重复提交场景,需补充 |
141
+ > ```
142
+
143
+ ## 阶段 7.5:计划对抗评审(可选)确认
144
+
145
+ > 仅在用户选择启用对抗评审时执行本节检查。默认不启用(高风险构建 auth/支付/迁移/并发 才启用)。
146
+
147
+ 阶段 7.5 执行完成后,确认以下事项:
148
+
149
+ ```
150
+ □ 已用 **设计审批包** 一次 blocking user confirmation(设计 + 场景表摘要 + worktree + change-name)
151
+ □ **未**单独询问 worktree 或对抗评审(对抗评审仅 `--adversarial`)
152
+ □ 已按宿主能力选择隔离 evaluator 或主会话对抗自审;正常 inline 不记故障
153
+ □ 若委派,已使用隔离上下文且校验 tool uses > 0
154
+ □ 若委派返回 0/空/Done/元数据,已立即 inline 自审且未 retry
155
+ □ 已产出 VERDICT(APPROVED/REVISE) + 结构化问题清单(RED/YELLOW)
156
+ □ 评审报告已写入 .harness/changes/<change-name>/reports/plan-review/plan-review-YYYYMMDD-HHmm.md
157
+ □ VERDICT 和问题清单已展示给用户(不得仅记"已评审")
158
+ □ REVISE 时已询问用户是否修订;修订后可选再审
159
+ □ 评审为参考性,未阻塞阶段8
160
+ □ 执行日志记录了 evaluator 调用状态(委派成功/降级原因)+ VERDICT 摘要
161
+ □ 如为主会话自审降级,已标注"⚠️ 同会话自审,回音壁风险"
162
+ ```
163
+
164
+ ## 原生规划协议检查
165
+
166
+ ### 阶段 4:clarification + decision-grilling
167
+
168
+ 阶段 4 执行完成后,确认以下事项:
169
+
170
+ ```
171
+ □ 已读取 protocols.md,并按 clarification-protocol / decision-grilling-protocol 执行
172
+ □ 输入包含需求摘要 + 阶段1 context pack(如有)+ 阶段3代码探索结果 + 项目架构约束
173
+ □ 已用 decision / issue 事件 note 记录五类输出:风险识别 / 复用机会 / 替代方案 / 推荐方案 / 关键决策
174
+ □ 已叠加项目架构约束(分层规范、数据模型、接口规范)
175
+ □ 需求澄清结论已追加到 events.ndjson,阶段结束后执行日志由渲染器生成
176
+ □ 提问方式与问题预算符合 protocols.md 的 decision-grilling-protocol(预算数值以那份为准,此处不复述)
177
+ □ 能由 context pack / 阶段3代码探索 / CodeGraph 自答的问题已自答,未打扰用户
178
+ □ 每个需要用户决策的问题,AI 先给出了推荐答案、理由和取舍,用户仅确认或修正
179
+ □ 高风险/业务语义决策(范围、权限、安全、支付、迁移、删除、API契约、用户可见行为)已显式等待用户确认
180
+ ```
181
+
182
+ > 不再检查 Superpowers brainstorming 是否安装或调用;阶段 4 是 harness 原生协议,不存在外部 skill 降级分支。
183
+
184
+ ### 阶段 6:implementation-planning
185
+
186
+ 阶段 6 执行完成后,确认以下事项:
187
+
188
+ ```
189
+ □ 已读取 protocols.md,并按 implementation-planning-protocol 执行
190
+ □ 输入为阶段4已审核设计文档
191
+ □ 已用 artifact 事件 note 记录任务拆分摘要
192
+ □ 已叠加项目层序依赖(数据/契约→业务层→接口层)
193
+ □ 已生成 4 维度场景表(单元/接口/数据兼容/集成)
194
+ □ 每个自动化场景均标注执行层级、预计时长、资源预算、超时、可复用证据;快速反馈不默认扫描全仓库
195
+ □ 已确定变更名(kebab-case)
196
+ □ implementation-detail.md 按复杂度自适应:简单任务不过度展开,复杂任务写清接口/数据/顺序/风险/测试策略
197
+ □ plan / implementation-detail / test-scenarios 三件套互相引用一致,无 TBD/TODO/空泛占位
198
+ ```
199
+
200
+ > 产物是否齐全、任务表与场景表是否非空、优先级与 ownerPhase 取值是否合法,由 finalizer
201
+ > fail-closed 判定(`PLAN_ARTIFACT_MISSING` / `PLAN_TASKS_EMPTY` / `PLAN_SCENARIOS_EMPTY` /
202
+ > `PLAN_SCENARIO_PRIORITY_INVALID`),此处不重复勾选。上面留下的都是机器判不了的:
203
+ > 层序依赖是否合理、维度是否真被覆盖、详略是否配得上复杂度、三件套是否自洽。
204
+
205
+ > 不再检查 Superpowers writing-plans 是否安装或调用;阶段 6 是 harness 原生协议,不存在 `docs/superpowers/` 同步分支。
206
+
207
+ ## 阶段 8:结束前产物完整性检查 ⚠️ 强制
208
+
209
+ > **先认路径**:新 change 只走 v2;legacy 产物(历史 change)只读。必需文件清单 → `reference.md`「阶段 8」。
210
+
211
+ 文件是否齐全、哈希是否一致、身份是否匹配、计数是否对得上——这些 **finalizer 与 verify 已经 fail-closed 判定**,逐条复述不产生新结论,只会把一份事实变成两份。命令失败时按返回的 `code` 查 `reference.md`,不要对着清单猜。
212
+
213
+ 下面三条不在机器判定范围内,必须自己守:
214
+
215
+ - [ ] **v2**:只手写 `meta/plan-evidence-input.json`。`plans/*.md` 由 finalize 派生,手写的会被渲染覆盖,只是白写
216
+ - [ ] 任何缺失**都不得手工补写**(包括 `phase.end`);回到对应阶段改自然输入/staging 后重跑
217
+ - [ ] v2 过渡期**不写** `meta/plan-finalization.json` 与 `logs/execution-log.md`;缺这两项不算失败,不得为凑表手工补
218
+
219
+
220
+ ## 关键原则
221
+
222
+ - **产物路径唯一性**:正式 `.harness/changes/<change-name>/` 是唯一真相源;plan 只写 staging,由 finalizer 原子发布,禁止先写正式目录再补 staging
223
+ - **原生规划协议**:阶段 4/6 使用 clarification、decision-grilling、implementation-planning 三段内置协议,不运行时依赖 Superpowers/grill-me/writing-plans
224
+ - **阶段 4 是强制阻断检查点**——展示设计审批包后必须停下来问用户,收到回复后才能写 approved 设计文档。不要跳过
225
+ - 代码探索只读不写——这个阶段的目标是理解,不是修改
226
+ - 场景表是后续所有步骤的真相源——宁可多花时间打磨,不要草草了事
227
+ - 如果需求不明确,优先提问而不是猜测后继续设计
228
+ - 任务拆分粒度按复杂度调整——plan 简表保持可追踪,implementation-detail 按风险和复杂度自适应展开
229
+
230
+ > Plan 的结束行为(禁止询问执行模式、只提示 `/harness-run`)由 `SKILL.md` 的关键规则表定义,
231
+ > 详细规则见 `reference.md`「Plan 结束行为规则」。此处不再复述。
232
+
233
+ ## 事件记录(前置规则)
234
+
235
+ - [ ] 确定 change-name 后立即用稳定且可复用的 `--run-id` / `--attempt` append `phase.start` 事件;各阶段用 `harness_events.py append` 写入 `decision` / `issue` / `artifact`
236
+ - [ ] 阶段 0 在 change-name 确定前可不写事件;阶段 0.5 确定 change-name 后必须开始记录
237
+
238
+ ## 需求范围缩减后的 change-name 检查 ⚠️
239
+
240
+ - [ ] 阶段 4 澄清后,检查最终需求范围是否和 change-name 一致
241
+ - [ ] 如果用户取消某个需求,但 change-name 仍包含该需求关键词,必须建议重命名
242
+ - [ ] 重命名后同步目录名、spec/plan/scenarios 文件名、frontmatter、logs/execution-log、events.ndjson、meta/worktree.json
243
+ - [ ] 如果用户选择不重命名,记录 🟡WARN 到 events.ndjson(`issue` 或 `decision` 事件)
@@ -0,0 +1,133 @@
1
+ ---
2
+ description: harness-plan 的原生规划协议。吸收 brainstorming、grill-me、writing-plans 的方法论精华,但不运行时依赖外部 skill。
3
+ ---
4
+
5
+ # harness-plan 原生规划协议
6
+
7
+ 本文件定义 `/harness-plan` 的内置 planning kernel。它吸收外部 skill 的有效做法,但正式流程不调用 Superpowers、grill-me 或 writing-plans,也不读取或同步 `docs/superpowers/` 作为计划产物。
8
+
9
+ 核心原则:**流程更轻,质量门槛更硬**。删掉外部 skill 检查、Adapter Mode、降级和草稿同步;保留需求澄清、逐问决策、方案对比、任务自检和测试优先。
10
+
11
+ ## 协议一:clarification-protocol
12
+
13
+ 用于阶段 4,目标是把需求从“用户意图”收敛成可审核设计输入。
14
+
15
+ 必须输出以下五类结论。用 `harness_events.py append` 追加 `decision` / `issue` 事件,完整的人类可读结论放进事件 `note`;执行日志仅由事件渲染器派生:
16
+
17
+ | 输出 | 要求 |
18
+ |------|------|
19
+ | 风险识别 | 列出会影响实现、测试、数据、兼容性或交付判断的风险 |
20
+ | 复用机会 | 明确可复用的既有模块、接口、测试、迁移脚本或历史知识 |
21
+ | 替代方案 | 给出 2-3 个可行方案;简单需求可给 1 个主方案 + 1 个不选方案 |
22
+ | 推荐方案 | 明确推荐选项和理由,不让用户从空白处决策 |
23
+ | 用户确认的关键决策 | 只记录真正影响范围、行为、兼容性或风险的决策 |
24
+
25
+ 执行纪律:
26
+
27
+ 1. 先消费阶段 1 的 context pack、阶段 3 的代码探索结果和项目规则。
28
+ 2. 能由代码、历史知识、配置、现有文档回答的问题,不问用户。
29
+ 3. 需要用户裁决时,交给 `decision-grilling-protocol`。
30
+ 4. 影响面检查必须覆盖用户未显式提到的参数、数据、接口、权限、兼容性、模块引用和测试影响。
31
+ 5. 低风险工程判断可由 AI 推荐并记录后继续;高风险或业务语义判断必须等待用户确认。
32
+ 6. **歧义优先检查**:否定、对比、动作对象、范围或保留/删除关系存在多种合理解释时,只做足以定位现状的最小取证,然后先给出推荐理解并确认;不得先沿某一种猜测深挖完整代码路径。
33
+ 7. 探索中发现的无关问题仅以非阻断 `issue` 记录,不加入当前决策树,不扩展设计范围。
34
+
35
+ ## 协议二:decision-grilling-protocol
36
+
37
+ 用于阶段 4 的用户澄清问题。它借鉴 grill-me 的逐问决策树,但采用有限问题预算,避免仪式化盘问。
38
+
39
+ ### 问题预算
40
+
41
+ | 场景 | 用户问题上限 |
42
+ |------|:---:|
43
+ | 信息充分、无必须裁决的问题 | 0 |
44
+ | 简单修复 | 0-1 |
45
+ | 普通需求 | 1-3 |
46
+ | 高风险需求(auth、支付、数据迁移、并发、安全、不可逆删除、用户可见行为变化) | 5-7 |
47
+
48
+ 超过预算仍无法收敛时,不要继续追问;必须输出“未决决策清单”,标记阻塞项,并请用户裁决是否缩小范围或暂停。
49
+
50
+ 用户纠正了最初理解时,立即丢弃错误探索假设;简单修复最多再进行一次定向确认,不因旧探索结果追加连锁问题。
51
+
52
+ ### 提问格式
53
+
54
+ 每次只问一个问题,且必须包含推荐答案:
55
+
56
+ ```markdown
57
+ ### 需要确认:<决策主题>
58
+
59
+ 我的推荐:<推荐答案>
60
+
61
+ 理由:<为什么这个选择更适合当前代码、历史上下文和风险约束>
62
+
63
+ 取舍:<代价、风险、未来扩展限制>
64
+
65
+ 请确认是否采用该推荐,或指出要调整的方向。
66
+ ```
67
+
68
+ ### 自动采用与必须确认
69
+
70
+ 可自动采用推荐并记录:
71
+ - 文件组织、命名、任务顺序、测试拆分
72
+ - 是否复用现有 helper、adapter、测试 fixture
73
+ - 不改变用户可见行为的内部实现细节
74
+
75
+ 必须用户确认:
76
+ - 需求范围增删、延期或拆分
77
+ - 权限、安全、支付、审计、数据迁移、删除行为
78
+ - API 契约、错误码、前端兼容、用户可见行为变化
79
+ - 不可逆操作或可能影响历史数据的方案
80
+
81
+ 不确定归类时,按“必须确认”处理。
82
+
83
+ ## 协议三:implementation-planning-protocol
84
+
85
+ 用于阶段 6,目标是把已审核设计转成 harness 可执行计划,而不是生成外部超细步骤文档。
86
+
87
+ ### 产物分工
88
+
89
+ | 产物 | 定位 | 详细度 |
90
+ |------|------|--------|
91
+ | `<change-name>-plan.md` | 任务真相源 | 简洁任务表:任务、涉及文件、依赖 |
92
+ | `<change-name>-implementation-detail.md` | 执行参考 | 按复杂度自适应:关键接口、顺序、坑点、测试策略 |
93
+ | `<change-name>-test-scenarios.md` | 测试真相源 | 4 维度测试场景 + 覆盖检查 |
94
+
95
+ `implementation-detail.md` 必须存在,但不再强制写成 2-5 分钟粒度、逐行代码片段或逐 commit 指令。简单任务可以短,复杂任务必须细。
96
+
97
+ 简单修复的四份产物采用“单点事实、引用不复述”:设计写行为契约,plan 写任务与依赖,detail 写关键修改点与命令,scenarios 写可验证用例。不得复制同一段背景、风险或结论来增加篇幅。
98
+
99
+ ### 计划质量门槛
100
+
101
+ 任务拆分必须满足:
102
+
103
+ - 每个任务有明确目标、涉及文件和依赖。
104
+ - 不出现 `TBD`、`TODO`、`稍后实现`、`补充测试`、`适当处理错误` 等占位表达。
105
+ - 不引用尚未定义的类型、函数、接口或迁移文件。
106
+ - 层序依赖清晰:数据/契约先于业务实现,业务实现先于接口暴露,验证场景覆盖关键路径。
107
+ - 测试方向明确:单元、接口、数据兼容、集成至少说明适用与不适用原因。
108
+ - 如果设计范围发生收缩,先按 `change-name` 同步规则处理名称和路径。
109
+
110
+ ### implementation-detail 自适应规则
111
+
112
+ | 复杂度 | 内容要求 |
113
+ |--------|----------|
114
+ | 简单修复 | 关键文件、修改点、验证命令、容易误判的边界 |
115
+ | 中等功能 | 模块顺序、接口/数据约束、测试策略、回滚/兼容注意事项 |
116
+ | 高风险构建 | 迁移顺序、失败恢复、权限/安全边界、并发/幂等、评审关注点 |
117
+
118
+ 禁止为了“看起来完整”生成机械微步骤;也禁止因为“只是参考”而写空泛描述。
119
+
120
+ ## 自检
121
+
122
+ 阶段 4 和阶段 6 完成后,必须自检:
123
+
124
+ ```markdown
125
+ ### 原生规划协议自检
126
+ - clarification-protocol:风险 / 复用 / 替代方案 / 推荐方案 / 关键决策均已记录
127
+ - decision-grilling-protocol:用户问题未超预算;每问包含推荐答案;能自查的问题未打扰用户
128
+ - implementation-planning-protocol:plan 简表、implementation-detail、test-scenarios 三件套一致,无占位符
129
+ ```
130
+
131
+ 自检结论直接展示给用户即可,**不要**再追加一条 `verification` 事件——「协议自检通过」不改变
132
+ 任何结论,只增加监控噪声(roadmap 12 号「事件规则」)。真正影响行为的东西照常留痕:关键决策
133
+ 追加 `decision`,发现的冲突与阻塞追加 `issue`。渲染器在 `phase.end` 后生成执行日志。