@hunter-harness/workflow-harness 0.2.59 → 0.2.60

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 (242) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/README.md +11 -13
  3. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +13 -16
  4. package/harness/bundles/general/claude-code/harness-archive/checklist.md +5 -8
  5. package/harness/bundles/general/claude-code/harness-archive/reference.md +7 -16
  6. package/harness/bundles/general/claude-code/harness-archive/templates/summary-data-template.json +1 -7
  7. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  8. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  9. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  10. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +1 -1
  11. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-run/SKILL.md +4 -2
  13. package/harness/bundles/general/claude-code/harness-run/checklist.md +10 -9
  14. package/harness/bundles/general/claude-code/harness-run/protocols.md +2 -0
  15. package/harness/bundles/general/claude-code/harness-run/reference.md +19 -16
  16. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  17. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  18. package/harness/bundles/general/claude-code/harness-test/SKILL.md +1 -1
  19. package/harness/bundles/general/claude-code/harness-test/checklist.md +2 -2
  20. package/harness/bundles/general/claude-code/harness-test/pitfalls.md +3 -3
  21. package/harness/bundles/general/claude-code/harness-test/reference.md +2 -2
  22. package/harness/bundles/general/claude-code/protocols/archive-report-protocol.md +16 -27
  23. package/harness/bundles/general/claude-code/protocols/evidence-based-reporting-protocol.md +5 -5
  24. package/harness/bundles/general/claude-code/protocols/ledger-protocol.md +6 -6
  25. package/harness/bundles/general/claude-code/protocols/report-pipeline-protocol.md +5 -6
  26. package/harness/bundles/general/claude-code/protocols/sensitive-info-protocol.md +3 -3
  27. package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +2 -4
  28. package/harness/bundles/general/claude-code/scripts/harness_archive.py +161 -987
  29. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  30. package/harness/bundles/general/codebuddy/README.md +11 -13
  31. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +13 -16
  32. package/harness/bundles/general/codebuddy/harness-archive/checklist.md +5 -8
  33. package/harness/bundles/general/codebuddy/harness-archive/reference.md +7 -16
  34. package/harness/bundles/general/codebuddy/harness-archive/templates/summary-data-template.json +1 -7
  35. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  36. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  37. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  38. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +1 -1
  39. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  40. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +4 -2
  41. package/harness/bundles/general/codebuddy/harness-run/checklist.md +10 -9
  42. package/harness/bundles/general/codebuddy/harness-run/protocols.md +2 -0
  43. package/harness/bundles/general/codebuddy/harness-run/reference.md +19 -16
  44. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  45. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  46. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +1 -1
  47. package/harness/bundles/general/codebuddy/harness-test/checklist.md +2 -2
  48. package/harness/bundles/general/codebuddy/harness-test/pitfalls.md +3 -3
  49. package/harness/bundles/general/codebuddy/harness-test/reference.md +2 -2
  50. package/harness/bundles/general/codebuddy/protocols/archive-report-protocol.md +16 -27
  51. package/harness/bundles/general/codebuddy/protocols/evidence-based-reporting-protocol.md +5 -5
  52. package/harness/bundles/general/codebuddy/protocols/ledger-protocol.md +6 -6
  53. package/harness/bundles/general/codebuddy/protocols/report-pipeline-protocol.md +5 -6
  54. package/harness/bundles/general/codebuddy/protocols/sensitive-info-protocol.md +3 -3
  55. package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +2 -4
  56. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +161 -987
  57. package/harness/bundles/general/codex/.harness-build.json +1 -1
  58. package/harness/bundles/general/codex/README.md +11 -13
  59. package/harness/bundles/general/codex/harness-archive/SKILL.md +13 -16
  60. package/harness/bundles/general/codex/harness-archive/checklist.md +5 -8
  61. package/harness/bundles/general/codex/harness-archive/reference.md +7 -16
  62. package/harness/bundles/general/codex/harness-archive/templates/summary-data-template.json +1 -7
  63. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  64. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  65. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  66. package/harness/bundles/general/codex/harness-plan/SKILL.md +1 -1
  67. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  68. package/harness/bundles/general/codex/harness-run/SKILL.md +4 -2
  69. package/harness/bundles/general/codex/harness-run/checklist.md +10 -9
  70. package/harness/bundles/general/codex/harness-run/protocols.md +2 -0
  71. package/harness/bundles/general/codex/harness-run/reference.md +19 -16
  72. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  73. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  74. package/harness/bundles/general/codex/harness-test/SKILL.md +1 -1
  75. package/harness/bundles/general/codex/harness-test/checklist.md +2 -2
  76. package/harness/bundles/general/codex/harness-test/pitfalls.md +3 -3
  77. package/harness/bundles/general/codex/harness-test/reference.md +2 -2
  78. package/harness/bundles/general/codex/protocols/archive-report-protocol.md +16 -27
  79. package/harness/bundles/general/codex/protocols/evidence-based-reporting-protocol.md +5 -5
  80. package/harness/bundles/general/codex/protocols/ledger-protocol.md +6 -6
  81. package/harness/bundles/general/codex/protocols/report-pipeline-protocol.md +5 -6
  82. package/harness/bundles/general/codex/protocols/sensitive-info-protocol.md +3 -3
  83. package/harness/bundles/general/codex/protocols/state-layout-protocol.md +2 -4
  84. package/harness/bundles/general/codex/scripts/harness_archive.py +161 -987
  85. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  86. package/harness/bundles/general/cursor/README.md +11 -13
  87. package/harness/bundles/general/cursor/harness-archive/SKILL.md +13 -16
  88. package/harness/bundles/general/cursor/harness-archive/checklist.md +5 -8
  89. package/harness/bundles/general/cursor/harness-archive/reference.md +7 -16
  90. package/harness/bundles/general/cursor/harness-archive/templates/summary-data-template.json +1 -7
  91. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  92. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  93. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  94. package/harness/bundles/general/cursor/harness-plan/SKILL.md +1 -1
  95. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  96. package/harness/bundles/general/cursor/harness-run/SKILL.md +4 -2
  97. package/harness/bundles/general/cursor/harness-run/checklist.md +10 -9
  98. package/harness/bundles/general/cursor/harness-run/protocols.md +2 -0
  99. package/harness/bundles/general/cursor/harness-run/reference.md +19 -16
  100. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  101. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  102. package/harness/bundles/general/cursor/harness-test/SKILL.md +1 -1
  103. package/harness/bundles/general/cursor/harness-test/checklist.md +2 -2
  104. package/harness/bundles/general/cursor/harness-test/pitfalls.md +3 -3
  105. package/harness/bundles/general/cursor/harness-test/reference.md +2 -2
  106. package/harness/bundles/general/cursor/protocols/archive-report-protocol.md +16 -27
  107. package/harness/bundles/general/cursor/protocols/evidence-based-reporting-protocol.md +5 -5
  108. package/harness/bundles/general/cursor/protocols/ledger-protocol.md +6 -6
  109. package/harness/bundles/general/cursor/protocols/report-pipeline-protocol.md +5 -6
  110. package/harness/bundles/general/cursor/protocols/sensitive-info-protocol.md +3 -3
  111. package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +2 -4
  112. package/harness/bundles/general/cursor/scripts/harness_archive.py +161 -987
  113. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  114. package/harness/bundles/java/claude-code/README.md +11 -13
  115. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  116. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +13 -16
  117. package/harness/bundles/java/claude-code/harness-archive/checklist.md +5 -8
  118. package/harness/bundles/java/claude-code/harness-archive/reference.md +7 -16
  119. package/harness/bundles/java/claude-code/harness-archive/templates/summary-data-template.json +1 -7
  120. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  121. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  122. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  123. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  124. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
  125. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  126. package/harness/bundles/java/claude-code/harness-run/SKILL.md +4 -2
  127. package/harness/bundles/java/claude-code/harness-run/protocols.md +2 -0
  128. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  129. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  130. package/harness/bundles/java/claude-code/harness-test/SKILL.md +1 -1
  131. package/harness/bundles/java/claude-code/harness-test/checklist.md +2 -2
  132. package/harness/bundles/java/claude-code/harness-test/pitfalls.md +3 -3
  133. package/harness/bundles/java/claude-code/harness-test/reference.md +2 -2
  134. package/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +16 -27
  135. package/harness/bundles/java/claude-code/protocols/evidence-based-reporting-protocol.md +5 -5
  136. package/harness/bundles/java/claude-code/protocols/ledger-protocol.md +6 -6
  137. package/harness/bundles/java/claude-code/protocols/report-pipeline-protocol.md +5 -6
  138. package/harness/bundles/java/claude-code/protocols/sensitive-info-protocol.md +3 -3
  139. package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +2 -4
  140. package/harness/bundles/java/claude-code/scripts/harness_archive.py +161 -987
  141. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  142. package/harness/bundles/java/codebuddy/README.md +11 -13
  143. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  144. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +13 -16
  145. package/harness/bundles/java/codebuddy/harness-archive/checklist.md +5 -8
  146. package/harness/bundles/java/codebuddy/harness-archive/reference.md +7 -16
  147. package/harness/bundles/java/codebuddy/harness-archive/templates/summary-data-template.json +1 -7
  148. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  149. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  150. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  151. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  152. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
  153. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  154. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +4 -2
  155. package/harness/bundles/java/codebuddy/harness-run/protocols.md +2 -0
  156. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  157. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  158. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +1 -1
  159. package/harness/bundles/java/codebuddy/harness-test/checklist.md +2 -2
  160. package/harness/bundles/java/codebuddy/harness-test/pitfalls.md +3 -3
  161. package/harness/bundles/java/codebuddy/harness-test/reference.md +2 -2
  162. package/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +16 -27
  163. package/harness/bundles/java/codebuddy/protocols/evidence-based-reporting-protocol.md +5 -5
  164. package/harness/bundles/java/codebuddy/protocols/ledger-protocol.md +6 -6
  165. package/harness/bundles/java/codebuddy/protocols/report-pipeline-protocol.md +5 -6
  166. package/harness/bundles/java/codebuddy/protocols/sensitive-info-protocol.md +3 -3
  167. package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +2 -4
  168. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +161 -987
  169. package/harness/bundles/java/codex/.harness-build.json +1 -1
  170. package/harness/bundles/java/codex/README.md +11 -13
  171. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  172. package/harness/bundles/java/codex/harness-archive/SKILL.md +13 -16
  173. package/harness/bundles/java/codex/harness-archive/checklist.md +5 -8
  174. package/harness/bundles/java/codex/harness-archive/reference.md +7 -16
  175. package/harness/bundles/java/codex/harness-archive/templates/summary-data-template.json +1 -7
  176. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  177. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  178. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  179. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  180. package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
  181. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  182. package/harness/bundles/java/codex/harness-run/SKILL.md +4 -2
  183. package/harness/bundles/java/codex/harness-run/protocols.md +2 -0
  184. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  185. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  186. package/harness/bundles/java/codex/harness-test/SKILL.md +1 -1
  187. package/harness/bundles/java/codex/harness-test/checklist.md +2 -2
  188. package/harness/bundles/java/codex/harness-test/pitfalls.md +3 -3
  189. package/harness/bundles/java/codex/harness-test/reference.md +2 -2
  190. package/harness/bundles/java/codex/protocols/archive-report-protocol.md +16 -27
  191. package/harness/bundles/java/codex/protocols/evidence-based-reporting-protocol.md +5 -5
  192. package/harness/bundles/java/codex/protocols/ledger-protocol.md +6 -6
  193. package/harness/bundles/java/codex/protocols/report-pipeline-protocol.md +5 -6
  194. package/harness/bundles/java/codex/protocols/sensitive-info-protocol.md +3 -3
  195. package/harness/bundles/java/codex/protocols/state-layout-protocol.md +2 -4
  196. package/harness/bundles/java/codex/scripts/harness_archive.py +161 -987
  197. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  198. package/harness/bundles/java/cursor/README.md +11 -13
  199. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  200. package/harness/bundles/java/cursor/harness-archive/SKILL.md +13 -16
  201. package/harness/bundles/java/cursor/harness-archive/checklist.md +5 -8
  202. package/harness/bundles/java/cursor/harness-archive/reference.md +7 -16
  203. package/harness/bundles/java/cursor/harness-archive/templates/summary-data-template.json +1 -7
  204. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  205. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  206. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  207. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  208. package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
  209. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  210. package/harness/bundles/java/cursor/harness-run/SKILL.md +4 -2
  211. package/harness/bundles/java/cursor/harness-run/protocols.md +2 -0
  212. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  213. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  214. package/harness/bundles/java/cursor/harness-test/SKILL.md +1 -1
  215. package/harness/bundles/java/cursor/harness-test/checklist.md +2 -2
  216. package/harness/bundles/java/cursor/harness-test/pitfalls.md +3 -3
  217. package/harness/bundles/java/cursor/harness-test/reference.md +2 -2
  218. package/harness/bundles/java/cursor/protocols/archive-report-protocol.md +16 -27
  219. package/harness/bundles/java/cursor/protocols/evidence-based-reporting-protocol.md +5 -5
  220. package/harness/bundles/java/cursor/protocols/ledger-protocol.md +6 -6
  221. package/harness/bundles/java/cursor/protocols/report-pipeline-protocol.md +5 -6
  222. package/harness/bundles/java/cursor/protocols/sensitive-info-protocol.md +3 -3
  223. package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +2 -4
  224. package/harness/bundles/java/cursor/scripts/harness_archive.py +161 -987
  225. package/harness/manifests/general/claude-code.json +30 -34
  226. package/harness/manifests/general/codebuddy.json +30 -34
  227. package/harness/manifests/general/codex.json +30 -34
  228. package/harness/manifests/general/cursor.json +30 -34
  229. package/harness/manifests/java/claude-code.json +30 -34
  230. package/harness/manifests/java/codebuddy.json +30 -34
  231. package/harness/manifests/java/codex.json +30 -34
  232. package/harness/manifests/java/cursor.json +30 -34
  233. package/hunter-workflow-family.json +5 -5
  234. package/package.json +1 -1
  235. package/harness/bundles/general/claude-code/harness-archive/templates/render-summary.mjs +0 -299
  236. package/harness/bundles/general/codebuddy/harness-archive/templates/render-summary.mjs +0 -299
  237. package/harness/bundles/general/codex/harness-archive/templates/render-summary.mjs +0 -299
  238. package/harness/bundles/general/cursor/harness-archive/templates/render-summary.mjs +0 -299
  239. package/harness/bundles/java/claude-code/harness-archive/templates/render-summary.mjs +0 -299
  240. package/harness/bundles/java/codebuddy/harness-archive/templates/render-summary.mjs +0 -299
  241. package/harness/bundles/java/codex/harness-archive/templates/render-summary.mjs +0 -299
  242. package/harness/bundles/java/cursor/harness-archive/templates/render-summary.mjs +0 -299
@@ -2,5 +2,5 @@
2
2
  "schemaVersion": 1,
3
3
  "overlay": "java",
4
4
  "agent": "claude-code",
5
- "coreHash": "4045fc0e7244d3e6"
5
+ "coreHash": "ed5c4708eeba6351"
6
6
  }
@@ -23,18 +23,18 @@
23
23
 
24
24
  ## 共用规则文件(强制约束)
25
25
 
26
- 跨 skill 共用的强制约束规则全部集中在 `protocols/` 下(8 个 protocol;其中 report pipeline 用于结构化事件、summary-data 生成和 final-summary 校验),各 skill 通过相对路径引用:
26
+ 跨 skill 共用的强制约束规则全部集中在 `protocols/` 下(8 个 protocol;其中 report pipeline 用于结构化事件,以及 summary-data 的生成与校验),各 skill 通过相对路径引用:
27
27
 
28
28
  | 文件 | 作用 |
29
29
  |------|------|
30
30
  | `protocols/powershell-protocol.md` | Shell 执行安全策略:Windows/中文路径下禁止普通 Bash,所有 git/构建命令必须通过 `powershell.exe -Command "..."` 执行;命令被拒绝时不得回退普通 Bash;所有"成功"必须有明确证据(构建成功 / git 输出 / 文件存在 / exit code 0) |
31
- | `protocols/sensitive-info-protocol.md` | 敏感信息脱敏:token、密码、Authorization header、Cookie、API key、access/secret key 不得明文出现在 execution-log、报告、commit message、final-summary 中;引用时统一替换为 `<TOKEN_REDACTED>` / `<PASSWORD_REDACTED>` / `<SECRET_REDACTED>` |
31
+ | `protocols/sensitive-info-protocol.md` | 敏感信息脱敏:token、密码、Authorization header、Cookie、API key、access/secret key 不得明文出现在 execution-log、报告、commit message、summary-data 中;引用时统一替换为 `<TOKEN_REDACTED>` / `<PASSWORD_REDACTED>` / `<SECRET_REDACTED>` |
32
32
  | `protocols/evidence-based-reporting-protocol.md` | 证据化报告:所有 skill 输出必须区分 ✅ 真实成功 / 🟡 静态验证或用户跳过 / ❌ 失败或被拒绝;禁止把"静态验证"写成"测试通过",禁止把"命令被拒绝"写成"成功" |
33
33
  | `protocols/ledger-protocol.md` | 验证账本:每个变更目录维护 `verification-ledger.json`,记录 compile/unitTest/apiTest 的结果+证据+diffHash+作用范围;后续阶段先读 ledger 判定是否可复用,避免跨阶段重复编译/测试;post-test 变更按 7 类分类,决定是否重跑 |
34
34
  | `protocols/state-layout-protocol.md` | 状态目录分层:`.harness/changes/<cn>/` 下按 `meta/`、`logs/`、`evidence/`、`reports/`、`scripts/`、`backups/` 子目录分层写入;读取时先读新路径再兼容旧路径 |
35
35
  | `protocols/submit-protocol.md` | 固定提交交互:提交方式与 commit message 确认使用固定选项模板,禁止 AI footer |
36
- | `protocols/archive-report-protocol.md` | 归档报告:`summary-data.json` + 模板渲染 `final-summary.html`,含 manifest/checksum 真实性规则 |
37
- | `protocols/report-pipeline-protocol.md` | 报告流水线:`events.ndjson` + `harness_archive.py finalize/replay` + final-summary 一致性校验 |
36
+ | `protocols/archive-report-protocol.md` | 归档报告:`summary-data.json`、manifest/checksum 与真实性规则 |
37
+ | `protocols/report-pipeline-protocol.md` | 报告流水线:`events.ndjson` + `harness_archive.py finalize/replay` + 数据一致性校验 |
38
38
 
39
39
  每个 skill 的 SKILL.md 关键规则章节都通过相对路径引用这些 protocol(`../protocols/powershell-protocol.md` 等)。
40
40
 
@@ -85,8 +85,7 @@
85
85
  │ │ ├── test/
86
86
  │ │ ├── review/
87
87
  │ │ └── final/
88
- │ │ ├── summary-data.json
89
- │ │ └── final-summary.html # 最终报告(代码量+产出清单+测试/审查摘要)
88
+ │ │ └── summary-data.json # 平台展示使用的最终报告数据
90
89
  │ ├── events.ndjson # 结构化事件层(新流程推荐;历史 archive 可缺失)
91
90
  │ └── backups/
92
91
  ├── <change-name>/ # 当前未归档变更(最多 1 个,不提交)
@@ -211,8 +210,7 @@ harness-skills/
211
210
  ├── checklist.md # 归档前后检查项
212
211
  ├── reference.md # 归档操作 + 占位符真实性规则
213
212
  └── templates/
214
- ├── summary-data-template.json # final-summary 数据结构
215
- └── render-summary.mjs # final-summary UTF-8 固定渲染脚本
213
+ └── summary-data-template.json # 最终报告数据结构
216
214
  ```
217
215
 
218
216
  ## Skill 列表
@@ -280,11 +278,11 @@ harness-skills/
280
278
  | **submit hash 记录** | pre-pull local hash + final pushed hash 双标注(主目录);worktree 模式 submit 段只本地 commit,合并段产生 `mergeFinalHash`,archive 以 `mergeFinalHash` 为准(无则回退 final pushed hash) |
281
279
  | **archive 阶段 1** | 归档前确认实际计划阶段的证据与结局;有 Git 时核对最终提交身份,无 Git、无 upstream 或跳过 submit 时使用内容清单身份。发布候选资格与本地封存分开判断;阶段边界由 finalize 单进程维护,调用者不额外 append |
282
280
  | **archive 文件移动** | 只用 PowerShell 或 Read+Write+验证,**禁止 Bash mv/cp/rm**;移动失败时不删除原目录 |
283
- | **archive final-summary** | 必须运行 `harness_archive.py finalize` 生成权威 `summary-data.json` 并完成 validate;`final-summary.html` 为可选展示投影(默认渲染,失败只记 warning 不回滚;`finalize --no-html` 可跳过)。无测试或无 review 时必须在 JSON 中标记 `NOT_RUN` / `ADVISORY_NOT_RUN`,禁止伪造 100% 通过率。状态演进须真实展示(✅OK / 🟡WARN / 🔁REUSED / 🔁RETESTED / 📝ADVISORY / 🧹NON_BEHAVIORAL_CLEANUP) |
281
+ | **archive 最终报告** | 必须运行 `harness_archive.py finalize` 生成权威 `summary-data.json` 并完成 validate。平台直接读取该 JSON;本地不生成重复的 HTML 报告。无测试或无 review 时必须标记 `NOT_RUN` / `ADVISORY_NOT_RUN`,禁止伪造 100% 通过率。状态演进须真实展示(✅OK / 🟡WARN / 🔁REUSED / 🔁RETESTED / 📝ADVISORY / 🧹NON_BEHAVIORAL_CLEANUP) |
284
282
 
285
283
  ### 敏感信息脱敏
286
284
 
287
- - token / Authorization / Cookie / Redis 密码 / 数据库密码 / API key / access&secret key 不得明文出现在 execution-log、报告、commit message、final-summary
285
+ - token / Authorization / Cookie / Redis 密码 / 数据库密码 / API key / access&secret key 不得明文出现在 execution-log、报告、commit message、summary-data
288
286
  - 引用敏感值时统一使用占位符:`<TOKEN_REDACTED>` / `<PASSWORD_REDACTED>` / `<SECRET_REDACTED>` / `<API_KEY_REDACTED>` / `<AUTH_HEADER_REDACTED>` / `<COOKIE_REDACTED>`
289
287
  - 命令示例使用占位符,不复述真实值
290
288
  - 测试中临时使用的 token 在持久化测试报告中必须替换为占位符
@@ -455,8 +453,8 @@ npx hunter-harness # 初始化阶段检查环境/CodeGraph/基础状态(非
455
453
  - `protocols/sensitive-info-protocol.md`:敏感信息脱敏(token/密码/密钥占位符化,已取代原 `harness-plan/sensitive-info.md`,各 skill 引用此版本)。
456
454
  - `protocols/evidence-based-reporting-protocol.md`:证据化报告(✅/🟡/❌ 三态,已取代原 `harness-plan/evidence-based-reporting.md`,各 skill 引用此版本)。
457
455
  - `protocols/submit-protocol.md`:固定提交交互、中文 commit 文件、禁止 AI footer。
458
- - `protocols/archive-report-protocol.md`:summary-data + template 渲染 final-summary、manifest/checksum
459
- - `protocols/report-pipeline-protocol.md`:events.ndjson + `harness_archive.py finalize/replay` + final-summary 一致性校验。
456
+ - `protocols/archive-report-protocol.md`:summary-data、manifest/checksum 与平台归档展示合同。
457
+ - `protocols/report-pipeline-protocol.md`:events.ndjson + `harness_archive.py finalize/replay` + summary-data 一致性校验。
460
458
  - `protocols/state-layout-protocol.md`:`.harness/changes/<cn>/` 子目录分层(meta/logs/evidence/reports/scripts/backups),读取先新后旧。
461
459
 
462
460
  各 skill 的 `SKILL.md` 只保留阶段目标和硬门禁,细节优先引用这些协议,避免在多个 skill 中复制并产生冲突。
@@ -477,4 +475,4 @@ backups/ 未提交但用于验证的测试文件等备份
477
475
 
478
476
  读取时先读新路径,再兼容旧路径。详见 `protocols/state-layout-protocol.md`。
479
477
 
480
- Archive 最终报告默认运行 `harness_archive.py finalize`,再使用 `harness-archive/templates/render-summary.mjs` `summary-data.json` 渲染,避免 PowerShell 中文乱码、模型长 HTML 生成中断和日志汇总统计漂移。
478
+ Archive 最终报告由 `harness_archive.py finalize` 生成 `summary-data.json`。Hunter Platform 直接读取该文件,避免本地重复渲染和两份报告数据不一致。
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(awk *)
22
22
  - Bash(curl *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
25
25
  # harness-apidoc — 前端接口文档(Java overlay)
26
26
 
27
27
  ## Purpose
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(awk *)
22
22
  - Bash(curl *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
25
25
  # harness-archive — 变更归档
26
26
 
27
27
  ## Purpose
@@ -76,7 +76,7 @@ disallowed-tools:
76
76
  ### Phase 0:读取规则和上下文
77
77
 
78
78
  1. 读取本文件。
79
- 2. 按需读取 `reference.md`(归档流程、manifest、summary-data、final-summary 渲染、目录结构与最终状态规则)。
79
+ 2. 按需读取 `reference.md`(归档流程、manifest、summary-data、目录结构与最终状态规则)。
80
80
  3. 读取共用约束:
81
81
  - `../protocols/archive-report-protocol.md`
82
82
  - `../protocols/state-layout-protocol.md`
@@ -106,14 +106,13 @@ disallowed-tools:
106
106
 
107
107
  1. 对“发布候选”使用 `--intent release-candidate --closure completed`;对正常本地完成使用 `--intent record-only --closure completed`;主动废弃或被替代分别使用 `--intent record-only --closure abandoned|superseded --closure-reason "<中文原因>"`。先运行 `status`;有可复用全量 ledger 时可运行 `certify-local`,不得重复测试。
108
108
  2. `meta/archive-meta.md` **由 `harness_archive.py finalize` 自动生成**(与 summary-data `finalStatus` 同源);**禁止 agent 手写**该文件,手写视为数据丢失。维护者结论写入 events(decision/issue)即可,finalize 会汇总到 summary / archive-meta。
109
- 3. 运行 `harness_archive.py finalize --change-dir "<executionRoot>" --archive-root ".harness/archive" --intent <...> --closure <...> [--closure-reason "..."] --json`;读 JSON(cleanup、事件、移动、collect、render、validate、manifest、archive-meta、ZIP、上传与服务端知识状态)。finalize 内部只负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**本地不执行知识 ingest**;服务端在 ZIP 持久保存并解包后 ingest。失败时保留原目录、ZIP 和回执。
109
+ 3. 运行 `harness_archive.py finalize --change-dir "<executionRoot>" --archive-root ".harness/archive" --intent <...> --closure <...> [--closure-reason "..."] --json`;读 JSON(cleanup、事件、移动、collect、validate、manifest、archive-meta、ZIP、上传与服务端知识状态)。finalize 内部只负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**本地不执行知识 ingest**;服务端在 ZIP 持久保存并解包后 ingest。失败时保留原目录、ZIP 和回执。
110
110
  - **归档包上传**:始终先生成一个确定性 ZIP;有远程凭据时再调用 `npx hunter-harness archive upload`。ZIP 仅包含 `summary-data.json`、`spec/**/*.md`、`plans/**/*.md`、`archive-meta.md`、`change-context.json` 和稳定 manifest;明确排除 logs、review/test 报告、HTML、缓存、备份、凭据和临时文件。
111
111
  - **失败可恢复**:无论远端凭据是否齐全,都先生成 ZIP 与 `<change-key>.upload.json`;上传或服务端 ingest 失败不破坏本地归档。待上传 ZIP 与逐 change 回执保留在 `.harness/state/local/archive-packages/`,可枚举独立重试。只有 CLI 核验 package hash 且服务端同时返回 `archive_status=durable`、`knowledge_status=ready` 后,才清理对应 ZIP 与回执;`indexing` 记为 pending,不记为失败。
112
112
  - **监控终态(C3)**:auto-upload 之后自动 `events-sync`,用归档前 change 路径派生的 `run_id` + 原 `change_key` 上报;失败只记 warning。
113
113
 
114
114
  - **Read `reference.md`** — finalize 输出字段、archive-meta 格式、CONDITIONAL_OK 规则
115
115
  - **Read `templates/summary-data-template.json`** — summary-data 数据结构
116
- - **Read `templates/render-summary.mjs`** — final-summary 渲染脚本(finalize 内嵌调用)
117
116
 
118
117
  ### Phase 4:验证与提示
119
118
 
@@ -149,9 +148,9 @@ disallowed-tools:
149
148
 
150
149
  移动用 Read+Write+验证 或 PowerShell;**禁止 Bash mv/cp/rm**。移动失败时不删除原目录,报错退出让用户手动处理。
151
150
 
152
- ### 四、数据化归档门禁(先数据后渲染)
151
+ ### 四、数据化归档门禁
153
152
 
154
- 必须通过 `harness_archive.py finalize` 生成权威 `reports/final/summary-data.json` 并完成 validate;`final-summary.html` 为可选展示投影(默认渲染;渲染失败只记 warning、不回滚归档;`finalize --no-html` 可完全跳过本地 HTML)。**禁止模型临场写 500+ 行 HTML**。统计数字只能来自 summary-data、events、ledger 或 manifest。详见 `../protocols/report-pipeline-protocol.md`、`../protocols/archive-report-protocol.md`、`reference.md`。
153
+ 必须通过 `harness_archive.py finalize` 生成权威 `reports/final/summary-data.json` 并完成 validate。平台监控直接读取该数据;本地不再生成重复的 HTML 报告。统计数字只能来自 summary-data、events、ledger 或 manifest。详见 `../protocols/report-pipeline-protocol.md`、`../protocols/archive-report-protocol.md`、`reference.md`。
155
154
 
156
155
  ### 五、manifest/checksum 必须存在
157
156
 
@@ -166,13 +165,13 @@ disallowed-tools:
166
165
 
167
166
  ### 七、verification-ledger 汇总状态
168
167
 
169
- 归档前读 `evidence/verification-ledger.json`,提取各阶段 status、postTestClassification、复用关系,供 final-summary 真实展示状态演进。若 ledger 有 `postTestClassification`,final-summary 必须展示该分类及对应的复用/重测决策。
168
+ 归档前读 `evidence/verification-ledger.json`,提取各阶段 status、postTestClassification、复用关系,供 summary-data 真实记录状态演进。若 ledger 有 `postTestClassification`,summary-data 必须记录该分类及对应的复用/重测决策。
170
169
 
171
- ### 八、final-summary 不得伪造且必须展示状态演进
170
+ ### 八、summary-data 不得伪造且必须记录状态演进
172
171
 
173
172
  无测试报告 → 显示"未运行测试 / 静态验证",不得 100% 通过率;无 review → "📝ADVISORY:未运行 review"。状态用 ✅OK / 🟡WARN / 🔁REUSED / 🔁RETESTED / 📝ADVISORY / 🧹NON_BEHAVIORAL_CLEANUP,复用前一阶段结果显示 🔁REUSED,**不得伪装成重新执行,不得无脑全绿**。
174
173
 
175
- **final-summary 是可再生展示投影,非硬产物**:`summary-data.json` 是最终报告的唯一权威数据源,必须产出并通过 validate/adequacy。HTML 渲染默认执行(Node 渲染器失败时自动 Python fallback),但渲染失败只记 warning,**不再回滚归档**;`finalize --no-html` 可完全跳过本地 HTML(配置远端平台时由平台按 summary-data.json 渲染)。
174
+ `summary-data.json` 是最终报告的唯一权威数据源,必须产出并通过 validate/adequacy。平台按该文件展示归档结果,本地不维护第二份展示文件。
176
175
 
177
176
  ### 九、CONDITIONAL_OK 最终状态
178
177
 
@@ -180,7 +179,7 @@ API 测试 `USER_SKIPPED` 或 DB 兼容 `BLOCKED_BY_DBA` 时,最终状态必
180
179
 
181
180
  ### 十、未提交测试文件归档
182
181
 
183
- 未提交但用于验证的测试文件必须归档到 `backups/uncommitted-tests/` 并在 final-summary 中展示。
182
+ 未提交但用于验证的测试文件必须归档到 `backups/uncommitted-tests/`,并在 summary-data 中记录。
184
183
 
185
184
  ### 十一、归档事件单一所有权
186
185
 
@@ -188,7 +187,7 @@ finalize 内部负责且仅负责一次 `phase.start` / `phase.end`,并在移
188
187
 
189
188
  ### 十二、Shell 安全 / 敏感信息 / 证据化报告
190
189
 
191
- git 命令通过 `powershell.exe -Command "..."` 执行;archive-meta.md 和 final-summary.html 不得含明文 token/密码/密钥;归档报告必须区分 ✅真实成功 / 🟡跳过·静态验证 / ❌失败。
190
+ git 命令通过 `powershell.exe -Command "..."` 执行;archive-meta.md 和 summary-data.json 不得含明文 token、密码或密钥;归档报告必须区分 ✅真实成功 / 🟡跳过·静态验证 / ❌失败。
192
191
 
193
192
  ### 十三、归档完整性与发布资格分离
194
193
 
@@ -196,23 +195,21 @@ git 命令通过 `powershell.exe -Command "..."` 执行;archive-meta.md 和 fi
196
195
 
197
196
  ## Output Format
198
197
 
199
- > 归档元数据格式见 `reference.md` 的 archive-meta 模板;最终报告由 `templates/summary-data-template.json` 数据结构 + `templates/render-summary.mjs` 固定脚本渲染。
198
+ > 归档元数据格式见 `reference.md` 的 archive-meta 模板;最终报告使用 `templates/summary-data-template.json` 定义的数据结构。
200
199
 
201
200
  产出文件:
202
201
 
203
202
  - `.harness/archive/YYYY-MM-DD-<change-name>/meta/archive-meta.md` — 归档元数据
204
203
  - `.harness/archive/YYYY-MM-DD-<change-name>/events.ndjson` — 结构化事件层(新流程推荐;旧 archive 可缺失)
205
204
  - `.harness/archive/YYYY-MM-DD-<change-name>/reports/final/summary-data.json` — 最终报告数据源
206
- - `.harness/archive/YYYY-MM-DD-<change-name>/reports/final/final-summary.html` — 可选展示投影,由 `render-summary.mjs` 渲染(Node 失败时 Python fallback);渲染失败降级 warning,`--no-html` 可跳过
207
205
  - `.harness/archive/YYYY-MM-DD-<change-name>/evidence/archive-manifest-before.json` / `archive-manifest-after.json` — 归档前后 manifest/checksum
208
206
 
209
207
  ## 渐进披露
210
208
 
211
209
  - **Read `checklist.md`** 仅在 Phase 1 归档前检查和 Phase 4 验证时 — 含归档前检查项和归档后验证项
212
- - **Read `reference.md`** 仅在 Phase 0/2/3 时 — 含归档流程、archive-meta 格式、summary-data 字段说明、final-summary 渲染规则、目录结构与最终状态规则
213
- - **Read `reference.md`** 仅在 Phase 3 finalize 时 — summary-data、final-summary 校验与 archive-meta 补写
210
+ - **Read `reference.md`** 仅在 Phase 0/2/3 时 — 含归档流程、archive-meta 格式、summary-data 字段说明、目录结构与最终状态规则
211
+ - **Read `reference.md`** 仅在 Phase 3 finalize 时 — summary-data 校验与 archive-meta 补写
214
212
  - **Read `templates/summary-data-template.json`** 仅在 Phase 3 生成 `summary-data.json` 时 — 含最终报告数据结构
215
- - **Read `templates/render-summary.mjs`** 仅在 Phase 3 渲染 `final-summary.html` 时 — 固定 HTML 渲染脚本
216
213
 
217
214
  ## 交互白名单
218
215
 
@@ -8,11 +8,10 @@ description: harness-archive 的归档前检查项和归档后验证项。仅在
8
8
 
9
9
  归档遵循 `../protocols/archive-report-protocol.md`,门禁要点见 SKILL.md `## 关键规则` 四/五/九:
10
10
 
11
- - 先写 `reports/final/summary-data.json`,再渲染 `reports/final/final-summary.html`。
11
+ - 生成并校验 `reports/final/summary-data.json`;平台直接使用该文件展示结果。
12
12
  - 归档前生成 `evidence/archive-manifest-before.json`,移动后生成 `archive-manifest-after.json`。
13
- - final-summary 的统计只能来自 summary-data 或 manifest。
13
+ - 归档统计只能来自 summary-data 或 manifest。
14
14
  - before/after checksum 不一致时,不得删除原目录。
15
- - 默认渲染器 `templates/render-summary.mjs`(finalize 内嵌调用)。
16
15
  - 需要跨工作区恢复时传 `--durable-root <独立存储>`;成功必须为 `ARCHIVED_DURABLE`,并验证 content-addressed object 与 durable receipt 可读回。
17
16
  - `restore-durable` 只恢复到不存在的目标;目标已存在或对象 digest 不符时 fail closed,禁止覆盖。
18
17
  - 未配置 durable root 时显式记录 `ARCHIVED_LOCAL_ONLY` 风险,不得把同工作区 move 宣称为独立备份。
@@ -48,11 +47,11 @@ description: harness-archive 的归档前检查项和归档后验证项。仅在
48
47
  - [ ] 最终产品身份来自 Submit 收据或当前内容;提交前候选只允许在验证输入未变化时由 `certify-local` 自动重绑定
49
48
  - [ ] **test/review 报告状态确认**:
50
49
  - ✅ `.harness/changes/<change-name>/tests/test-report-*.md` 存在 → 归档正常
51
- - 🟡 不存在 → 必须在 archive-meta.md 和 final-summary.html 中标记"跳过测试"或"未运行测试",不得伪造通过率
50
+ - 🟡 不存在 → 必须在 archive-meta.md 和 summary-data.json 中标记「跳过测试」或「未运行测试」,不得伪造通过率
52
51
  - ✅ `.harness/changes/<change-name>/reports/review/review-report-*.md` 存在(旧路径 `reviews/review-report-*.md` 兼容回退)→ 作为 📝ADVISORY 归档材料
53
52
  - 📝 `.harness/changes/<change-name>/reports/review/fixback-*.md` 存在 → 随 review 报告一并归档;默认 advisory,除非 `strict-review-gate=true`
54
53
  - 🟡 不存在但 `logs/execution-log.md` 有 harness-review 小节 → **review 已运行但未落盘**(harness-review `context:fork` 交接缝常见,见 `agent/case-candidates/2026-06-30-harness-review-forked-not-persisting-report.md`):从 execution-log/会话补落盘到 `reports/review/review-report-YYYYMMDD-HHmm.md` 再归档,**不得误标"未运行 review"**(实际跑过)
55
- - 🟡 不存在且 execution-log 无 review 小节 → 在 archive-meta.md 和 final-summary.html 中标记"📝ADVISORY:未运行 review"
54
+ - 🟡 不存在且 execution-log 无 review 小节 → 在 archive-meta.md 和 summary-data.json 中标记「📝ADVISORY:未运行 review
56
55
 
57
56
  ## 归档后验证(Phase 4)
58
57
 
@@ -61,11 +60,9 @@ description: harness-archive 的归档前检查项和归档后验证项。仅在
61
60
  - [ ] before/after manifest 校验通过(排除 `logs/execution-log.md`——归档追加结束记录预期 sha256 变化;其他 moved 文件 sha256 必须一致,missing/mismatch=0)
62
61
  - [ ] archive-meta.md 由 finalize 自动生成且字段完整;调用者未手写或补改
63
62
  - [ ] summary-data.json 已生成,且为合法 JSON
64
- - [ ] final-summary.html 已由 `templates/render-summary.mjs` 渲染生成
65
- - [ ] **final-summary.html 真实性检查**:
63
+ - [ ] **summary-data.json 真实性检查**:
66
64
  - 无测试报告时,`summary-data.json.verification.unitTests.status` / `summary-data.json.verification.apiTests.status` 必须标记为 `NOT_RUN`、`USER_SKIPPED`、`BLOCKED` 或 `STATIC_ONLY`,不得显示 100%
67
65
  - 无 review 报告时,`summary-data.json.reviewSummary.status` 必须标记为 `ADVISORY_NOT_RUN`,不得显示 100%
68
66
  - 跳过、复用、人工确认的部分必须明确标记,不伪装成 ✅
69
- - final-summary.html 中不得残留 `{{...}}` 占位符
70
67
  - [ ] 原目录 `.harness/changes/<change-name>/` 已删除(仅在前面所有验证通过后)
71
68
  - [ ] .harness/ 下无残留未归档变更目录
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: harness-archive 的归档流程、manifest、summary-data、final-summary 渲染、目录结构与最终状态规则。
2
+ description: harness-archive 的归档流程、manifest、summary-data 校验、目录结构与最终状态规则。
3
3
  ---
4
4
 
5
5
  # harness-archive 参考
@@ -12,7 +12,7 @@ description: harness-archive 的归档流程、manifest、summary-data、final-s
12
12
  - **Phase 3 执行归档**:
13
13
  1. 运行 `python <skills-root>/scripts/harness_archive.py status --change-dir ... --json` 做前置检查。
14
14
  2. `meta/archive-meta.md` 由 finalize 生成(与 summary `finalStatus` 同源);禁止手写。维护者结论写入 events 即可。finalize 在 before-manifest 前执行 cleanup(删除 lock/pid/launcher/credential,截断超大日志)。
15
- 3. 运行 `python <skills-root>/scripts/harness_archive.py finalize --change-dir ... --archive-root ".harness/archive" --json`;读 JSON 结果。finalize 内部负责且仅负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**finalize 报错或 validate 失败时不删除原 changes 目录**。finalize 为冻结优先(freeze-first):collect 前先 fsync 事件并写 `evidence/evidence-cutoff.json`,cutoff 后不再追加事件;随后依次执行 source consistency(层 1,写入 `reportPipeline.sourceConsistency`)→ render → renderer consistency(层 2),任一层失败即恢复原目录并非零退出。
15
+ 3. 运行 `python <skills-root>/scripts/harness_archive.py finalize --change-dir ... --archive-root ".harness/archive" --json`;读 JSON 结果。finalize 内部负责且仅负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**finalize 报错或 validate 失败时不删除原 changes 目录**。finalize 为冻结优先(freeze-first):collect 前先 fsync 事件并写 `evidence/evidence-cutoff.json`,cutoff 后不再追加事件;随后依次执行 source consistency(层 1,写入 `reportPipeline.sourceConsistency`)→ summary consistency(层 2),任一层失败即恢复原目录并非零退出。
16
16
  - **Phase 4 验证与提示**:见 `checklist.md` 归档后验证项。
17
17
 
18
18
  ## manifest 生成
@@ -55,29 +55,21 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "harness-skills/harness-
55
55
 
56
56
  报告必须突出业务目标和维护者结论。所有统计数字只能来自 events、summary-data、ledger 或 manifest,不得手写另一套。历史 archive 没有 `events.ndjson` 时,允许从 ledger/log/manifest 回放,并在 `reportPipeline.sources` 中记录来源。
57
57
 
58
- ## final-summary 渲染
58
+ ## 平台展示与数据校验
59
59
 
60
- 默认使用 Node.js 渲染器:
61
-
62
- ```powershell
63
- powershell.exe -NoProfile -Command "& '<node-path>' 'harness-skills/harness-archive/templates/render-summary.mjs' --summary '.harness/archive/<date-change>/reports/final/summary-data.json' --out '.harness/archive/<date-change>/reports/final/final-summary.html'"
64
- ```
65
-
66
- 如模板脚本位于 skill 目录,则先复制到 archive 目录或直接引用 skill 路径。
67
-
68
- 禁止模型临场手写大段 HTML。确需临时修 HTML,只能修模板,不得让统计数字脱离 `summary-data.json`。
60
+ 平台监控直接读取 `reports/final/summary-data.json`,归档阶段不再生成本地 HTML 报告,也不得由模型临场维护第二份展示数据。
69
61
 
70
62
  `validate` 是 `harness_archive.py finalize` 的内嵌同进程步骤(不再作为独立 `report validate` CLI 调用)。finalize 在 validate error 存在时恢复原 `.harness/changes/<change>` 目录并 exit 非 0,绝不归档未通过校验的变更。
71
63
 
72
64
  ## repair(归档后修复,不改写原版)
73
65
 
74
- 归档后发现 source/renderer 不一致时,使用显式修复(`replay` 仍为只读):
66
+ 归档后发现来源事实与 summary-data 不一致时,使用显式修复(`replay` 仍为只读):
75
67
 
76
68
  ```powershell
77
69
  python <skills-root>/scripts/harness_archive.py repair --archive-dir ".harness/archive/<archive-id>" --json
78
70
  ```
79
71
 
80
- repair 在 archive 外生成候选版本,两层 validator 通过后写入不可变 `derived/v<N>/`(summary-data.json + final-summary.html + repair-record.json),并更新 `derived/authoritative.json` pointer;原 summary、HTML、manifest 不覆盖。知识层仅从 authoritative pointer 且 hash 校验通过的版本提取。
72
+ repair 在 archive 外生成候选版本。来源校验与数据校验通过后,写入不可变 `derived/v<N>/`(summary-data.json + repair-record.json),并更新 `derived/authoritative.json` pointer;原 summarymanifest 不覆盖。知识层仅从 authoritative pointer 且 hash 校验通过的版本提取。
81
73
 
82
74
  ## archive-meta.md 模板
83
75
 
@@ -103,8 +95,7 @@ cleanup 步骤(before-manifest 前):删除 `events.ndjson.lock`、`runtime
103
95
 
104
96
  ## 目录结构与最终状态规则
105
97
 
106
- - 默认渲染器:`templates/render-summary.mjs`,输入 `reports/final/summary-data.json`,输出 `reports/final/final-summary.html`。
107
- - `render-summary.mjs` 是默认 UTF-8 渲染器;finalize 内嵌调用,不得由模型临场写 HTML。
98
+ - 平台直接读取 `reports/final/summary-data.json`;本地不生成重复展示文件。
108
99
  - 新路径优先:`meta/`、`logs/`、`evidence/`、`reports/final/`、`scripts/`、`backups/uncommitted-tests/`。旧路径只做读取兼容,不再写大量根目录文件。
109
100
  - 当 `summary-data.json.verification.apiTests.status=USER_SKIPPED` 或 `verification.dbCompatibility.status=BLOCKED_BY_DBA`,最终状态必须是 `CONDITIONAL_OK`。
110
101
  - 复杂 PowerShell 命令写入 `scripts/*.ps1` 后 `-File` 执行,禁止内联 `$` / `$_`。
@@ -203,13 +203,7 @@
203
203
  "source": "events.ndjson | evidence/verification-ledger.json"
204
204
  }
205
205
  ],
206
- "artifacts": [
207
- {
208
- "path": "reports/final/final-summary.html",
209
- "kind": "final-report",
210
- "phase": "archive"
211
- }
212
- ],
206
+ "artifacts": [],
213
207
  "validationIssues": [],
214
208
  "sourceConsistency": {
215
209
  "ok": true,
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
24
24
  # harness-codebase-map — 代码库地图
25
25
 
26
26
  ## Purpose
@@ -8,7 +8,7 @@ disallowed-tools:
8
8
  - Bash(git *)
9
9
  - Bash(curl *)
10
10
  ---
11
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
11
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
12
12
  # harness-knowledge-ingest
13
13
 
14
14
  知识 ingest 完全由 Hunter Platform 负责。归档完成时,客户端生成一个确定性 ZIP;
@@ -8,7 +8,7 @@ disallowed-tools:
8
8
  - Bash(git *)
9
9
  - Bash(curl *)
10
10
  ---
11
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
11
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
12
12
  # harness-knowledge-query
13
13
 
14
14
  项目知识以 Hunter Platform 的服务端索引为唯一真源。客户端只提交查询并消费结果:
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(awk *)
22
22
  - Bash(curl *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
25
25
  # harness-package — 增量模块打包(Java overlay)
26
26
 
27
27
  ## Purpose
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(awk *)
22
22
  - Bash(curl *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
25
25
  # harness-plan — 需求规划
26
26
 
27
27
  ## Purpose
@@ -22,7 +22,7 @@ disallowed-tools:
22
22
  - Bash(curl *)
23
23
  - Bash(codegraph *)
24
24
  ---
25
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
25
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
26
26
  # harness-review — 代码审查
27
27
 
28
28
  ## Purpose
@@ -22,7 +22,7 @@ disallowed-tools:
22
22
  - Bash(curl *)
23
23
  - Bash(codegraph *)
24
24
  ---
25
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
25
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
26
26
  # harness-run — 需求编码
27
27
 
28
28
  ## Purpose
@@ -85,6 +85,8 @@ disallowed-tools:
85
85
  3. **场景覆盖检查**(场景表映射,禁止用用例数冒充场景数)
86
86
  4. **关门检查**(10 项)→ 只执行一次 `harness_gate.py close`;`--to-phase` 必须取返回的 `nextPhases` 或 `plannedPhases` 中 run 的真实后继,禁止写死 test。该命令内部关闭 test guard、写 `phase.end`、释放租约、写 handoff 并补传事件;不得再单独调用 test-guard/context close。失败时按结构化 `recoveryAction` 原样重试,已完成步骤幂等复用。
87
87
 
88
+ **阶段归属规则**:只用 `ownerPhase=run` 的任务和场景判定编码阶段结果。`ownerPhase=test` 的任务或场景按计划留给测试阶段属于正常移交,必须记录为“待测试阶段执行”,不得将编码阶段降级为 WARN;只有 run 自身负责的工作未完成、验证降级或证据异常时才使用 WARN。
89
+
88
90
  **Fixback**:入口只用 `launch-review`,后续问题处理通过 `resolve-issue/close` 驱动,不得把修复说明当成新的普通 Run。只读取返回的受影响问题和文件;验证仅失效与 `changedFiles` 相交的目标,其他 Test/Review 证据继续复用。RED 优先;`manual`、`workflow` 或未选用的建议不进入代码批次,使用中文记录处理结论。
89
91
 
90
92
  **执行器边界**:优先使用项目 build profile 和已有测试入口。禁止为了绕过 ESM、路径或参数问题临时生成 `.js`、`require` 脚本;需要文件式 runner 时使用项目已有入口,确需新增时遵循项目模块类型(例如 ESM 使用 `.mjs`)。runner 包装说明写入 `runnerCommand` 元数据,不得拼进账本的规范 `command`。
@@ -124,7 +126,7 @@ disallowed-tools:
124
126
  | **探测/ledger** | 基础设施先探测;每次构建/测试经 `harness_ledger.py record`;禁止手写 ledger JSON;用 canonical `diff-hash --change-dir` |
125
127
  | **Gate/Guard** | 跨 Agent/阶段先用 `harness_context.py prepare/begin`;阶段门禁与上下文交接统一用 `harness_gate.py begin/close`;gate 内部负责 guard begin/close,模型只在需要记录测试来源或修复时调用 guard 的 `record/stage/mark` |
126
128
  | **预存变更** | 保留 → baseline 隔离;存在则最终 ≥ 🟡WARN |
127
- | **关门/状态** | 10 项关门检查;持久化 run-task-statusP0 静态-only 不得建议 submit |
129
+ | **关门/状态** | 10 项关门检查;持久化 run-task-status;仅 run-owned P0 静态-only 导致 WARN;test-owned 待办正常移交 |
128
130
  | **Worktree** | `requested=true` 时代码只写 worktree |
129
131
  | **PowerShell** | 所有 git/构建经 `powershell.exe -NoProfile -Command` |
130
132
 
@@ -40,6 +40,8 @@ REFACTOR 只允许不改变行为的整理。若重构改变行为,必须回
40
40
 
41
41
  禁止把静态验证写成“测试通过”。静态 RED/GREEN 的最终状态至少是 🟡WARN,除非后续真实验证已完成。
42
42
 
43
+ 上述分级只评估 `ownerPhase=run` 的任务和场景。`ownerPhase=test` 的验证按计划留给测试阶段时,记录为“待测试阶段执行”,不得将编码阶段降级为 WARN;后续阶段未开始不是当前阶段的风险。
44
+
43
45
  ## 协议二:change-cluster-review-protocol
44
46
 
45
47
  用于高风险变更簇后的轻量审查。它内化 subagent-driven-development 的“新上下文审查”价值,但不把每个变更簇的 subagent 审查设为默认流程。
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(awk *)
22
22
  - Bash(curl *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
25
25
  # harness-submit — 最终提交(含 worktree 合并)
26
26
 
27
27
  ## Purpose
@@ -19,7 +19,7 @@ disallowed-tools:
19
19
  - Bash(awk *)
20
20
  - Bash(curl *)
21
21
  ---
22
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
22
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
23
23
  # harness-sync
24
24
 
25
25
  ## Purpose
@@ -23,7 +23,7 @@ disallowed-tools:
23
23
  - Bash(node *)
24
24
  - Bash(codegraph *)
25
25
  ---
26
- <!-- generated by harness_deploy.py; core=4045fc0e7244d3e6; overlay=java; agent=claude-code; do not edit -->
26
+ <!-- generated by harness_deploy.py; core=ed5c4708eeba6351; overlay=java; agent=claude-code; do not edit -->
27
27
  # harness-test — 测试执行
28
28
 
29
29
  ## Purpose
@@ -179,7 +179,7 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
179
179
  - `USER_STARTED` → 保留进程,报告中提示用户可手动停止。
180
180
  - `REUSED_EXISTING` → 保留进程,除非用户明确要求关闭。
181
181
 
182
- 最终报告 / final-summary 必须包含:
182
+ 测试报告与 `summary-data.json` 的服务生命周期投影必须包含:
183
183
 
184
184
  ```md
185
185
  ## 服务生命周期
@@ -317,4 +317,4 @@ powershell.exe -Command "Copy-Item '<main-dir>/<module>/src/main/resources/appli
317
317
  - 请求执行器必须在报告中明确记录(四种执行器,含降级原因)
318
318
  - 请求耗时统计必须包含在报告中
319
319
  - 服务由 AI 启动的情况,测试结束默认 Stop-Process;**即使测试失败也要进入 finally 清理**
320
- - final-summary apiTest 状态必须用 OK/PARTIAL/BLOCKED/NOT_RUN/FAIL(不得把 PARTIAL 写成 NOT_RUN)
320
+ - `summary-data.json` 与平台监控中的 `apiTest` 状态必须使用 OK/PARTIAL/BLOCKED/NOT_RUN/FAIL(不得把 PARTIAL 写成 NOT_RUN)
@@ -32,7 +32,7 @@ description: harness-test 的踩坑规则(来自真实对话日志)。执行
32
32
  | 21 | **直接 Edit tracked 应用配置文件** | 测试期间改配置,之后又还原,diff 噪声大 | 把运行时配置覆盖直接写进 tracked 文件 | 生成 ASCII 运行时配置叠加 `C:/temp/harness-test-overlay/<change>/application-harness-test.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
- | 24 | **final-summary PARTIAL 写成 NOT_RUN** | 报告显示"未执行",但实际跑了 6 个场景 | 状态枚举不完整,只有 OK/FAIL/NOT_RUN | API 维度状态使用 OK/PARTIAL/BLOCKED/NOT_RUN/FAIL,5 PASS+9 BLOCKED+1 FAIL → `apiTest=PARTIAL` |
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` |
36
36
  | 25 | **AI 启动的服务测试结束不关闭** | 端口长期占用,下次启动端口占用异常(如 `BindException`) | 没有 service lifecycle 管理 | 通过 `service.pid` + `serviceState` 区分,AI_STARTED 默认 Stop-Process,**即使测试失败也 finally 清理** |
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 必须输出一次状态行 |
@@ -208,9 +208,9 @@ $cred = $resp.data.accessToken
208
208
  **后果**:后续接口大面积 400/500,掩盖真正的根因(setup 失败)
209
209
  **正确做法**:执行器强制 setup/test/cleanup 三阶段;依赖 setup 数据的场景在 test 阶段开头判定依赖,缺失则标 🟡 BLOCKED,**不发起请求**
210
210
 
211
- ### 规则 24:final-summary PARTIAL 写成 NOT_RUN
211
+ ### 规则 24:归档数据把 PARTIAL 写成 NOT_RUN
212
212
  **严重度**:🟡WARN
213
- **场景**:15 个 API 场景中 5 PASS + 9 BLOCKED + 1 FAIL,final-summary `apiTest=NOT_RUN`
213
+ **场景**:15 个 API 场景中 5 PASS + 9 BLOCKED + 1 FAIL,`summary-data.json` 却写成 `apiTest=NOT_RUN`,导致平台错误显示为「未执行」。
214
214
  **后果**:报告与现实不符,下游 review / submit / package 误判
215
215
  **正确做法**:API 维度状态使用 5 个值:`OK / PARTIAL / BLOCKED / NOT_RUN / FAIL`。"部分执行+部分阻塞" 是 `PARTIAL`,附说明:`apiTest=PARTIAL — 15 个场景中 5 个 PASS, 9 个 BLOCKED, 1 个 FAIL`
216
216
 
@@ -663,7 +663,7 @@ JAVATEST_<change-name>_<timestamp>_<short-random>
663
663
  - 测试数据: N 条已清理 / M 条遗留
664
664
  - tokenRefreshCount: 0
665
665
 
666
- ### final-summary(顶层维度状态)
666
+ ### 归档数据与平台监控(顶层维度状态)
667
667
  - compile: ✅ OK
668
668
  - unitTest: ✅ OK / 🟡 REUSED_FROM_RUN
669
669
  - apiTest: **OK / PARTIAL / BLOCKED / NOT_RUN / FAIL**
@@ -720,7 +720,7 @@ JAVATEST_<change-name>_<timestamp>_<short-random>
720
720
 
721
721
  > **P0 场景 BLOCKED 不得仍 OK**:必须 🟡 WARN 或 ❌ FAIL。
722
722
 
723
- ### API 测试维度状态(final-summary 中输出)
723
+ ### API 测试维度状态(写入 `summary-data.json` 并由平台展示)
724
724
 
725
725
  | 状态 | 定义 |
726
726
  |---|---|