@hunter-harness/workflow-harness 0.2.59 → 0.2.61

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 (282) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/README.md +14 -16
  3. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +43 -46
  4. package/harness/bundles/general/claude-code/harness-archive/checklist.md +10 -10
  5. package/harness/bundles/general/claude-code/harness-archive/reference.md +29 -22
  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 +4 -4
  11. package/harness/bundles/general/claude-code/harness-review/SKILL.md +2 -2
  12. package/harness/bundles/general/claude-code/harness-run/SKILL.md +5 -3
  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 +2 -2
  17. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  18. package/harness/bundles/general/claude-code/harness-test/SKILL.md +2 -2
  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 +18 -25
  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 +7 -7
  25. package/harness/bundles/general/claude-code/protocols/report-pipeline-protocol.md +10 -9
  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 +5 -6
  28. package/harness/bundles/general/claude-code/scripts/harness_archive.py +1043 -1108
  29. package/harness/bundles/general/claude-code/scripts/harness_context.py +8 -2
  30. package/harness/bundles/general/claude-code/scripts/harness_events.py +5 -0
  31. package/harness/bundles/general/claude-code/scripts/harness_ledger.py +79 -2
  32. package/harness/bundles/general/claude-code/scripts/harness_profile.py +7 -0
  33. package/harness/bundles/general/claude-code/scripts/harness_state.py +22 -3
  34. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  35. package/harness/bundles/general/codebuddy/README.md +14 -16
  36. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +43 -46
  37. package/harness/bundles/general/codebuddy/harness-archive/checklist.md +10 -10
  38. package/harness/bundles/general/codebuddy/harness-archive/reference.md +29 -22
  39. package/harness/bundles/general/codebuddy/harness-archive/templates/summary-data-template.json +1 -7
  40. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  41. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  42. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  43. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +4 -4
  44. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +2 -2
  45. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +5 -3
  46. package/harness/bundles/general/codebuddy/harness-run/checklist.md +10 -9
  47. package/harness/bundles/general/codebuddy/harness-run/protocols.md +2 -0
  48. package/harness/bundles/general/codebuddy/harness-run/reference.md +19 -16
  49. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +2 -2
  50. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  51. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +2 -2
  52. package/harness/bundles/general/codebuddy/harness-test/checklist.md +2 -2
  53. package/harness/bundles/general/codebuddy/harness-test/pitfalls.md +3 -3
  54. package/harness/bundles/general/codebuddy/harness-test/reference.md +2 -2
  55. package/harness/bundles/general/codebuddy/protocols/archive-report-protocol.md +18 -25
  56. package/harness/bundles/general/codebuddy/protocols/evidence-based-reporting-protocol.md +5 -5
  57. package/harness/bundles/general/codebuddy/protocols/ledger-protocol.md +7 -7
  58. package/harness/bundles/general/codebuddy/protocols/report-pipeline-protocol.md +10 -9
  59. package/harness/bundles/general/codebuddy/protocols/sensitive-info-protocol.md +3 -3
  60. package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +5 -6
  61. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +1043 -1108
  62. package/harness/bundles/general/codebuddy/scripts/harness_context.py +8 -2
  63. package/harness/bundles/general/codebuddy/scripts/harness_events.py +5 -0
  64. package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +79 -2
  65. package/harness/bundles/general/codebuddy/scripts/harness_profile.py +7 -0
  66. package/harness/bundles/general/codebuddy/scripts/harness_state.py +22 -3
  67. package/harness/bundles/general/codex/.harness-build.json +1 -1
  68. package/harness/bundles/general/codex/README.md +14 -16
  69. package/harness/bundles/general/codex/harness-archive/SKILL.md +43 -46
  70. package/harness/bundles/general/codex/harness-archive/checklist.md +10 -10
  71. package/harness/bundles/general/codex/harness-archive/reference.md +29 -22
  72. package/harness/bundles/general/codex/harness-archive/templates/summary-data-template.json +1 -7
  73. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  74. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  75. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  76. package/harness/bundles/general/codex/harness-plan/SKILL.md +4 -4
  77. package/harness/bundles/general/codex/harness-review/SKILL.md +2 -2
  78. package/harness/bundles/general/codex/harness-run/SKILL.md +5 -3
  79. package/harness/bundles/general/codex/harness-run/checklist.md +10 -9
  80. package/harness/bundles/general/codex/harness-run/protocols.md +2 -0
  81. package/harness/bundles/general/codex/harness-run/reference.md +19 -16
  82. package/harness/bundles/general/codex/harness-submit/SKILL.md +2 -2
  83. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  84. package/harness/bundles/general/codex/harness-test/SKILL.md +2 -2
  85. package/harness/bundles/general/codex/harness-test/checklist.md +2 -2
  86. package/harness/bundles/general/codex/harness-test/pitfalls.md +3 -3
  87. package/harness/bundles/general/codex/harness-test/reference.md +2 -2
  88. package/harness/bundles/general/codex/protocols/archive-report-protocol.md +18 -25
  89. package/harness/bundles/general/codex/protocols/evidence-based-reporting-protocol.md +5 -5
  90. package/harness/bundles/general/codex/protocols/ledger-protocol.md +7 -7
  91. package/harness/bundles/general/codex/protocols/report-pipeline-protocol.md +10 -9
  92. package/harness/bundles/general/codex/protocols/sensitive-info-protocol.md +3 -3
  93. package/harness/bundles/general/codex/protocols/state-layout-protocol.md +5 -6
  94. package/harness/bundles/general/codex/scripts/harness_archive.py +1043 -1108
  95. package/harness/bundles/general/codex/scripts/harness_context.py +8 -2
  96. package/harness/bundles/general/codex/scripts/harness_events.py +5 -0
  97. package/harness/bundles/general/codex/scripts/harness_ledger.py +79 -2
  98. package/harness/bundles/general/codex/scripts/harness_profile.py +7 -0
  99. package/harness/bundles/general/codex/scripts/harness_state.py +22 -3
  100. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  101. package/harness/bundles/general/cursor/README.md +14 -16
  102. package/harness/bundles/general/cursor/harness-archive/SKILL.md +43 -46
  103. package/harness/bundles/general/cursor/harness-archive/checklist.md +10 -10
  104. package/harness/bundles/general/cursor/harness-archive/reference.md +29 -22
  105. package/harness/bundles/general/cursor/harness-archive/templates/summary-data-template.json +1 -7
  106. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  107. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  108. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  109. package/harness/bundles/general/cursor/harness-plan/SKILL.md +4 -4
  110. package/harness/bundles/general/cursor/harness-review/SKILL.md +2 -2
  111. package/harness/bundles/general/cursor/harness-run/SKILL.md +5 -3
  112. package/harness/bundles/general/cursor/harness-run/checklist.md +10 -9
  113. package/harness/bundles/general/cursor/harness-run/protocols.md +2 -0
  114. package/harness/bundles/general/cursor/harness-run/reference.md +19 -16
  115. package/harness/bundles/general/cursor/harness-submit/SKILL.md +2 -2
  116. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  117. package/harness/bundles/general/cursor/harness-test/SKILL.md +2 -2
  118. package/harness/bundles/general/cursor/harness-test/checklist.md +2 -2
  119. package/harness/bundles/general/cursor/harness-test/pitfalls.md +3 -3
  120. package/harness/bundles/general/cursor/harness-test/reference.md +2 -2
  121. package/harness/bundles/general/cursor/protocols/archive-report-protocol.md +18 -25
  122. package/harness/bundles/general/cursor/protocols/evidence-based-reporting-protocol.md +5 -5
  123. package/harness/bundles/general/cursor/protocols/ledger-protocol.md +7 -7
  124. package/harness/bundles/general/cursor/protocols/report-pipeline-protocol.md +10 -9
  125. package/harness/bundles/general/cursor/protocols/sensitive-info-protocol.md +3 -3
  126. package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +5 -6
  127. package/harness/bundles/general/cursor/scripts/harness_archive.py +1043 -1108
  128. package/harness/bundles/general/cursor/scripts/harness_context.py +8 -2
  129. package/harness/bundles/general/cursor/scripts/harness_events.py +5 -0
  130. package/harness/bundles/general/cursor/scripts/harness_ledger.py +79 -2
  131. package/harness/bundles/general/cursor/scripts/harness_profile.py +7 -0
  132. package/harness/bundles/general/cursor/scripts/harness_state.py +22 -3
  133. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  134. package/harness/bundles/java/claude-code/README.md +14 -16
  135. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +2 -2
  136. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +43 -46
  137. package/harness/bundles/java/claude-code/harness-archive/checklist.md +10 -10
  138. package/harness/bundles/java/claude-code/harness-archive/reference.md +29 -22
  139. package/harness/bundles/java/claude-code/harness-archive/templates/summary-data-template.json +1 -7
  140. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  141. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  142. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  143. package/harness/bundles/java/claude-code/harness-package/SKILL.md +2 -2
  144. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +4 -4
  145. package/harness/bundles/java/claude-code/harness-review/SKILL.md +2 -2
  146. package/harness/bundles/java/claude-code/harness-run/SKILL.md +5 -3
  147. package/harness/bundles/java/claude-code/harness-run/protocols.md +2 -0
  148. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +2 -2
  149. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  150. package/harness/bundles/java/claude-code/harness-test/SKILL.md +2 -2
  151. package/harness/bundles/java/claude-code/harness-test/checklist.md +2 -2
  152. package/harness/bundles/java/claude-code/harness-test/pitfalls.md +3 -3
  153. package/harness/bundles/java/claude-code/harness-test/reference.md +2 -2
  154. package/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +18 -25
  155. package/harness/bundles/java/claude-code/protocols/evidence-based-reporting-protocol.md +5 -5
  156. package/harness/bundles/java/claude-code/protocols/ledger-protocol.md +7 -7
  157. package/harness/bundles/java/claude-code/protocols/report-pipeline-protocol.md +10 -9
  158. package/harness/bundles/java/claude-code/protocols/sensitive-info-protocol.md +3 -3
  159. package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +5 -6
  160. package/harness/bundles/java/claude-code/scripts/harness_archive.py +1043 -1108
  161. package/harness/bundles/java/claude-code/scripts/harness_context.py +8 -2
  162. package/harness/bundles/java/claude-code/scripts/harness_events.py +5 -0
  163. package/harness/bundles/java/claude-code/scripts/harness_ledger.py +79 -2
  164. package/harness/bundles/java/claude-code/scripts/harness_profile.py +7 -0
  165. package/harness/bundles/java/claude-code/scripts/harness_state.py +22 -3
  166. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  167. package/harness/bundles/java/codebuddy/README.md +14 -16
  168. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +2 -2
  169. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +43 -46
  170. package/harness/bundles/java/codebuddy/harness-archive/checklist.md +10 -10
  171. package/harness/bundles/java/codebuddy/harness-archive/reference.md +29 -22
  172. package/harness/bundles/java/codebuddy/harness-archive/templates/summary-data-template.json +1 -7
  173. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  174. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  175. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  176. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +2 -2
  177. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +4 -4
  178. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +2 -2
  179. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +5 -3
  180. package/harness/bundles/java/codebuddy/harness-run/protocols.md +2 -0
  181. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +2 -2
  182. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  183. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +2 -2
  184. package/harness/bundles/java/codebuddy/harness-test/checklist.md +2 -2
  185. package/harness/bundles/java/codebuddy/harness-test/pitfalls.md +3 -3
  186. package/harness/bundles/java/codebuddy/harness-test/reference.md +2 -2
  187. package/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +18 -25
  188. package/harness/bundles/java/codebuddy/protocols/evidence-based-reporting-protocol.md +5 -5
  189. package/harness/bundles/java/codebuddy/protocols/ledger-protocol.md +7 -7
  190. package/harness/bundles/java/codebuddy/protocols/report-pipeline-protocol.md +10 -9
  191. package/harness/bundles/java/codebuddy/protocols/sensitive-info-protocol.md +3 -3
  192. package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +5 -6
  193. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +1043 -1108
  194. package/harness/bundles/java/codebuddy/scripts/harness_context.py +8 -2
  195. package/harness/bundles/java/codebuddy/scripts/harness_events.py +5 -0
  196. package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +79 -2
  197. package/harness/bundles/java/codebuddy/scripts/harness_profile.py +7 -0
  198. package/harness/bundles/java/codebuddy/scripts/harness_state.py +22 -3
  199. package/harness/bundles/java/codex/.harness-build.json +1 -1
  200. package/harness/bundles/java/codex/README.md +14 -16
  201. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +2 -2
  202. package/harness/bundles/java/codex/harness-archive/SKILL.md +43 -46
  203. package/harness/bundles/java/codex/harness-archive/checklist.md +10 -10
  204. package/harness/bundles/java/codex/harness-archive/reference.md +29 -22
  205. package/harness/bundles/java/codex/harness-archive/templates/summary-data-template.json +1 -7
  206. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  207. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  208. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  209. package/harness/bundles/java/codex/harness-package/SKILL.md +2 -2
  210. package/harness/bundles/java/codex/harness-plan/SKILL.md +4 -4
  211. package/harness/bundles/java/codex/harness-review/SKILL.md +2 -2
  212. package/harness/bundles/java/codex/harness-run/SKILL.md +5 -3
  213. package/harness/bundles/java/codex/harness-run/protocols.md +2 -0
  214. package/harness/bundles/java/codex/harness-submit/SKILL.md +2 -2
  215. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  216. package/harness/bundles/java/codex/harness-test/SKILL.md +2 -2
  217. package/harness/bundles/java/codex/harness-test/checklist.md +2 -2
  218. package/harness/bundles/java/codex/harness-test/pitfalls.md +3 -3
  219. package/harness/bundles/java/codex/harness-test/reference.md +2 -2
  220. package/harness/bundles/java/codex/protocols/archive-report-protocol.md +18 -25
  221. package/harness/bundles/java/codex/protocols/evidence-based-reporting-protocol.md +5 -5
  222. package/harness/bundles/java/codex/protocols/ledger-protocol.md +7 -7
  223. package/harness/bundles/java/codex/protocols/report-pipeline-protocol.md +10 -9
  224. package/harness/bundles/java/codex/protocols/sensitive-info-protocol.md +3 -3
  225. package/harness/bundles/java/codex/protocols/state-layout-protocol.md +5 -6
  226. package/harness/bundles/java/codex/scripts/harness_archive.py +1043 -1108
  227. package/harness/bundles/java/codex/scripts/harness_context.py +8 -2
  228. package/harness/bundles/java/codex/scripts/harness_events.py +5 -0
  229. package/harness/bundles/java/codex/scripts/harness_ledger.py +79 -2
  230. package/harness/bundles/java/codex/scripts/harness_profile.py +7 -0
  231. package/harness/bundles/java/codex/scripts/harness_state.py +22 -3
  232. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  233. package/harness/bundles/java/cursor/README.md +14 -16
  234. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +2 -2
  235. package/harness/bundles/java/cursor/harness-archive/SKILL.md +43 -46
  236. package/harness/bundles/java/cursor/harness-archive/checklist.md +10 -10
  237. package/harness/bundles/java/cursor/harness-archive/reference.md +29 -22
  238. package/harness/bundles/java/cursor/harness-archive/templates/summary-data-template.json +1 -7
  239. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  240. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  241. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  242. package/harness/bundles/java/cursor/harness-package/SKILL.md +2 -2
  243. package/harness/bundles/java/cursor/harness-plan/SKILL.md +4 -4
  244. package/harness/bundles/java/cursor/harness-review/SKILL.md +2 -2
  245. package/harness/bundles/java/cursor/harness-run/SKILL.md +5 -3
  246. package/harness/bundles/java/cursor/harness-run/protocols.md +2 -0
  247. package/harness/bundles/java/cursor/harness-submit/SKILL.md +2 -2
  248. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  249. package/harness/bundles/java/cursor/harness-test/SKILL.md +2 -2
  250. package/harness/bundles/java/cursor/harness-test/checklist.md +2 -2
  251. package/harness/bundles/java/cursor/harness-test/pitfalls.md +3 -3
  252. package/harness/bundles/java/cursor/harness-test/reference.md +2 -2
  253. package/harness/bundles/java/cursor/protocols/archive-report-protocol.md +18 -25
  254. package/harness/bundles/java/cursor/protocols/evidence-based-reporting-protocol.md +5 -5
  255. package/harness/bundles/java/cursor/protocols/ledger-protocol.md +7 -7
  256. package/harness/bundles/java/cursor/protocols/report-pipeline-protocol.md +10 -9
  257. package/harness/bundles/java/cursor/protocols/sensitive-info-protocol.md +3 -3
  258. package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +5 -6
  259. package/harness/bundles/java/cursor/scripts/harness_archive.py +1043 -1108
  260. package/harness/bundles/java/cursor/scripts/harness_context.py +8 -2
  261. package/harness/bundles/java/cursor/scripts/harness_events.py +5 -0
  262. package/harness/bundles/java/cursor/scripts/harness_ledger.py +79 -2
  263. package/harness/bundles/java/cursor/scripts/harness_profile.py +7 -0
  264. package/harness/bundles/java/cursor/scripts/harness_state.py +22 -3
  265. package/harness/manifests/general/claude-code.json +35 -39
  266. package/harness/manifests/general/codebuddy.json +35 -39
  267. package/harness/manifests/general/codex.json +35 -39
  268. package/harness/manifests/general/cursor.json +35 -39
  269. package/harness/manifests/java/claude-code.json +35 -39
  270. package/harness/manifests/java/codebuddy.json +35 -39
  271. package/harness/manifests/java/codex.json +35 -39
  272. package/harness/manifests/java/cursor.json +35 -39
  273. package/hunter-workflow-family.json +5 -5
  274. package/package.json +1 -1
  275. package/harness/bundles/general/claude-code/harness-archive/templates/render-summary.mjs +0 -299
  276. package/harness/bundles/general/codebuddy/harness-archive/templates/render-summary.mjs +0 -299
  277. package/harness/bundles/general/codex/harness-archive/templates/render-summary.mjs +0 -299
  278. package/harness/bundles/general/cursor/harness-archive/templates/render-summary.mjs +0 -299
  279. package/harness/bundles/java/claude-code/harness-archive/templates/render-summary.mjs +0 -299
  280. package/harness/bundles/java/codebuddy/harness-archive/templates/render-summary.mjs +0 -299
  281. package/harness/bundles/java/codex/harness-archive/templates/render-summary.mjs +0 -299
  282. package/harness/bundles/java/cursor/harness-archive/templates/render-summary.mjs +0 -299
@@ -22,7 +22,7 @@ disallowed-tools:
22
22
  - Bash(curl *)
23
23
  - Bash(codegraph *)
24
24
  ---
25
- <!-- generated by harness_deploy.py; core=f89f132dc909b0d8; overlay=none; agent=claude-code; do not edit -->
25
+ <!-- generated by harness_deploy.py; core=a5e0c1d624b5fad6; overlay=none; agent=claude-code; do not edit -->
26
26
  # harness-run — 需求编码
27
27
 
28
28
  ## Purpose
@@ -67,7 +67,7 @@ disallowed-tools:
67
67
  6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
68
68
  7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
69
69
  8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
70
- 9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
70
+ 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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
71
71
 
72
72
  状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
73
73
  > 片段:read-protocol · run 必读文件优先级 → `reference.md` Step 0
@@ -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`。
@@ -116,7 +118,7 @@ disallowed-tools:
116
118
  | **探测/ledger** | 基础设施先探测;每次构建/测试经 `harness_ledger.py record`;禁止手写 ledger JSON;用 canonical `diff-hash --change-dir` |
117
119
  | **Gate/Guard** | 跨 Agent/阶段先用 `harness_context.py prepare/begin`;阶段门禁与上下文交接统一用 `harness_gate.py begin/close`;gate 内部负责 guard begin/close,模型只在需要记录测试来源或修复时调用 guard 的 `record/stage/mark` |
118
120
  | **预存变更** | 保留 → baseline 隔离;存在则最终 ≥ 🟡WARN |
119
- | **关门/状态** | 10 项关门检查;持久化 run-task-statusP0 静态-only 不得建议 submit |
121
+ | **关门/状态** | 10 项关门检查;持久化 run-task-status;仅 run-owned P0 静态-only 导致 WARN;test-owned 待办正常移交 |
120
122
  | **Worktree** | `requested=true` 时代码只写 worktree |
121
123
  | **PowerShell** | 所有 git/构建经 `powershell.exe -NoProfile -Command` |
122
124
 
@@ -164,13 +164,14 @@ description: harness-run 的执行检查清单。仅在编码执行时读取。
164
164
  - [ ] 单元测试场景逐条确认覆盖
165
165
  - [ ] 接口测试场景逐条确认代码逻辑覆盖
166
166
  - [ ] 数据兼容场景逐条确认(新字段 nullable、旧格式兼容)
167
- - [ ] 将覆盖结果展示给用户(✅/🟡/❌ 标注)
168
- - [ ] **覆盖状态必须正确分类**:✅ 自动化测试通过 / 🟡 静态检查未真实测试 / ❌ 未验证
167
+ - [ ] 将覆盖结果展示给用户(✅/🟡/❌/⏳ 标注)
168
+ - [ ] **覆盖状态必须正确分类**:✅ 自动化测试通过 / 🟡 静态检查未真实测试 / ❌ 未验证 / ⏳ `ownerPhase=test` 按计划移交
169
169
  - [ ] 🟡 静态检查 **不得计入"已测试通过"**
170
- - [ ] 如果任一 P0 场景仅静态验证 → 最终结果必须是 🟡WARN
170
+ - [ ] 如果任一 `ownerPhase=run` 的 P0 场景仅静态验证 → 最终结果必须是 🟡WARN
171
+ - [ ] `ownerPhase=test` 的任务或场景只记录为“待测试阶段执行”,不得将编码阶段降级为 WARN
171
172
  - [ ] 最终摘要禁止写 `5✅ + 17🟡 = 22/22`,必须写 `自动化测试通过: 5 / 静态检查未真实验证: 17 / 未验证: 0`
172
173
  - [ ] **禁止用测试用例数(如 178 tests)冒充场景数**——计数对象是 test-scenarios.md 的场景编号
173
- - [ ] 三类计数自洽:存在 🟡/❌ 场景时"未验证"不得为 0
174
+ - [ ] 四类计数自洽:run-owned 🟡/❌ 计入未验证;test-owned ⏳ 单列移交数量
174
175
  - [ ] 输出为场景表映射(UT/API/COM/INT 逐条或范围 ✅/🟡/❌),不得只给聚合测试数
175
176
 
176
177
  ### 权限/组织过滤类变更:安全矩阵
@@ -238,15 +239,15 @@ description: harness-run 的执行检查清单。仅在编码执行时读取。
238
239
  ## 事件收尾记录
239
240
 
240
241
  - [ ] append `phase.end` **仅**通过 `harness_gate.py close`(禁止手工 Edit `events.ndjson` / 直接 append phase.end 绕过 close 校验)
241
- - [ ] 如果存在 🟡静态验证 P0 场景 → 下一步必须写 `必须先运行 /harness-test`,不得并列"提交代码"
242
- - [ ] 如果存在数据库迁移/DB 验证未完成 → 最终不得输出纯 ✅OK
242
+ - [ ] 如果存在 run-owned 🟡静态验证 P0 场景 → 下一步必须写 `必须先运行 /harness-test`,不得并列"提交代码"
243
+ - [ ] 如果 run 阶段负责的数据库迁移/DB 验证未完成 → 最终不得输出纯 ✅OK
243
244
 
244
245
  ### 最终状态分级
245
246
 
246
- - [ ] **✅OK**:所有计划内代码变更完成 + 关键 P0 场景已自动化测试通过 + 构建成功 + 无预存变更或已隔离 + 无非计划文件混入 + 无 P0 静态-only 场景
247
- - [ ] **🟡WARN**:存在 P0/P1 场景仅静态验证 / 存在预存变更 / 数据库迁移需人工执行 / 数据访问层只做静态验证 / 低价值 Mock 替代真实验证
247
+ - [ ] **✅OK**:所有计划内代码变更完成 + run-owned 关键 P0 场景已自动化测试通过 + 构建成功 + 无预存变更或已隔离 + 无非计划文件混入 + 无 run-owned P0 静态-only 场景
248
+ - [ ] **🟡WARN**:存在 run-owned P0/P1 场景仅静态验证 / 存在预存变更 / run-owned 数据库验证未完成 / 低价值 Mock 替代真实验证
248
249
  - [ ] **❌FAIL**:构建失败 / 有效测试失败 / RED 无法建立 / 非计划文件被修改且无法解释 / git diff --check 失败
249
- - [ ] 如果存在数据库迁移/接口验证/DB 验证未完成 最终输出 🟡WARN,不得纯 ✅OK
250
+ - [ ] `ownerPhase=test` 的待办属于正常阶段移交;不得因为后续阶段尚未执行而把已完成的 run 标成 WARN
250
251
  ## PowerShell-only 命令检查
251
252
 
252
253
  - [ ] 所有 git 命令使用 `powershell.exe -NoProfile -Command "git ..."`
@@ -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 审查设为默认流程。
@@ -459,19 +459,20 @@ TestA+TestB+TestC RED → 实现相关代码 → TestA+TestB+TestC GREEN → 最
459
459
 
460
460
  ### ✅OK
461
461
  - 所有计划内代码变更完成
462
- - 关键 P0 场景已自动化测试通过
462
+ - 所有 `ownerPhase=run` 的关键 P0 场景已自动化测试通过
463
463
  - 构建成功
464
464
  - 无预存变更或预存变更已明确隔离
465
465
  - 无非计划文件混入
466
- - 无 P0 静态-only 场景
466
+ - 无 run-owned P0 静态-only 场景
467
+ - `ownerPhase=test` 的待办已清楚移交给测试阶段
467
468
 
468
469
  ### 🟡WARN
469
- - 存在 P0/P1 场景仅静态验证,需 harness-test
470
+ - 存在 `ownerPhase=run` 的 P0/P1 场景仅静态验证
470
471
  - 存在预存变更
471
- - 数据库迁移脚本需要人工执行或 DB 验证
472
- - 数据访问层/数据库迁移查询只做静态验证
472
+ - run 阶段负责的数据库迁移脚本需要人工执行或 DB 验证
473
+ - run 阶段负责的数据访问层/数据库迁移查询只做静态验证
473
474
  - 使用了低价值 Mock 替代真实验证
474
- - 构建/测试成功但仍需接口/DB 验证
475
+ - run 阶段负责的接口/DB 验证仍未完成
475
476
 
476
477
  ### ❌FAIL
477
478
  - 构建失败
@@ -480,8 +481,7 @@ TestA+TestB+TestC RED → 实现相关代码 → TestA+TestB+TestC GREEN → 最
480
481
  - 非计划文件被修改且无法解释
481
482
  - git diff --check 失败
482
483
 
483
- 如果存在数据库迁移、接口验证、DB 验证未完成,最终不得输出纯 ✅OK,应输出:
484
- 🟡WARN:编码完成,需 harness-test 验证剩余 DB/API 场景。
484
+ `ownerPhase=test` 的任务或场景按计划留给测试阶段属于正常移交,必须记录为“待测试阶段执行”,不得将编码阶段降级为 WARN。只有这些验证属于 `ownerPhase=run` 且未完成时,才输出 `🟡WARN`。
485
485
 
486
486
  ## 步骤 2:构建验证(默认轻量,按需全量 test)
487
487
 
@@ -544,18 +544,19 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
544
544
 
545
545
  ## 步骤 3:场景覆盖检查
546
546
 
547
- 对照场景表,逐条确认代码逻辑已覆盖,**并将覆盖结果展示给用户**。**状态必须三类标注**:
547
+ 对照场景表,逐条确认代码逻辑已覆盖,**并将覆盖结果展示给用户**。状态按阶段归属分为四类:
548
548
 
549
549
  - ✅ **已测试通过**:测试基础设施可用且测试已实际运行通过(测试命令输出测试通过证据,如 Java 的 Tests run + Failures: 0)
550
550
  - 🟡 **静态检查通过,未真实测试**:TDD 降级,仅做代码逻辑静态检查。**不得计入"已测试通过"**
551
551
  - ❌ **未覆盖 / 未验证**:场景未对应代码逻辑或需端到端验证
552
+ - ⏳ **按计划移交**:场景明确为 `ownerPhase=test`,由测试阶段执行;不计入 run 的 🟡/❌,也不降低编码阶段结果
552
553
 
553
554
  ### 静态验证不等于测试覆盖(⚠️ 关键规则)
554
555
 
555
556
  1. 🟡 静态检查 **不得计入"已测试通过"**
556
- 2. 如果任一 P0 场景仅静态验证,则 harness-run 最终结果必须是:
557
+ 2. 如果任一 `ownerPhase=run` 的 P0 场景仅静态验证,则 harness-run 最终结果必须是:
557
558
  `🟡WARN:编码和编译完成,但存在 P0 场景未真实验证`
558
- 3. 只有所有 P0 场景都有自动化测试或真实接口验证时,最终结果才能是:
559
+ 3. 只有所有 run-owned P0 场景都有自动化测试或真实接口验证时,最终结果才能是:
559
560
  `✅OK成功`
560
561
  4. **最终摘要禁止写**:`5✅ + 17🟡 = 22/22`
561
562
  5. **最终摘要必须写**:
@@ -566,7 +567,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
566
567
  harness-run 结果: 🟡WARN,必须进入 harness-test 后才能 submit
567
568
  ```
568
569
  6. **禁止用测试用例数冒充场景数**:计数对象是 `test-scenarios.md` 的场景编号(UT-001/N、API-001/N、COM-001/N、INT-001/N),不是测试框架的测试方法数(如 vitest "178 tests"、junit "Tests run: 178")。场景总数 = test-scenarios.md 的场景数。
569
- 7. **三类计数须自洽**:只要存在任一 🟡 场景,"未验证"计数不得为 0;"待 harness-test"的场景归入 🟡静态或 ❌未验证,不得既不算 ✅ 又让"未验证:0"。
570
+ 7. **四类计数须自洽**:run-owned 🟡/❌ 计入未验证;`ownerPhase=test` 单列为 ⏳“按计划移交”,不得冒充 ✅,也不得反向污染 run 的结果。
570
571
  8. **输出须为场景表映射**:按 `UT-001~037: ✅X/🟡Y/❌Z`、`API-001~032: ...`、`COM-001~007: ...`、`INT-001~008: ...` 形式逐条或范围标注,不得只给一个聚合测试数。
571
572
 
572
573
  > 展示格式示例:
@@ -575,9 +576,9 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
575
576
  > - ✅ UT-001~005: getEnabledIndicators 正常/异常/边界场景已测试通过
576
577
  > - 🟡 UT-006~010: getIndicatorPage 分页场景静态验证通过,待测试基础设施补齐后运行 harness-test
577
578
  > - ❌ UT-011~015: getIndicatorByCode 场景未覆盖,需补充测试用例
578
- > - API-001~005: enabled 接口场景代码逻辑已覆盖(接口测试待 harness-test 验证)
579
+ > - API-001~005: `ownerPhase=test`,接口测试按计划移交 harness-test
579
580
  > - ✅ COM-001~005: 数据库迁移脚本覆盖
580
- > - 🟡 INT-001~004: 需端到端部署验证
581
+ > - INT-001~004: `ownerPhase=test`,按计划移交测试阶段验证
581
582
  > ```
582
583
  >
583
584
  > **最终汇总**:
@@ -585,6 +586,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
585
586
  > 自动化测试通过: 5
586
587
  > 静态检查未真实验证: 17
587
588
  > 未验证: 0
589
+ > 按计划移交测试阶段: 4
588
590
  > harness-run 结果: 🟡WARN,必须进入 harness-test 后才能 submit
589
591
  > ```
590
592
 
@@ -767,7 +769,8 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
767
769
  - 自动化测试通过: K
768
770
  - 静态检查未真实验证: M
769
771
  - 未验证: P
770
- - harness-run 结果: ✅OK成功 / 🟡WARN,必须进入 harness-test 后才能 submit
772
+ - 按计划移交测试阶段: Q
773
+ - harness-run 结果: ✅OK成功 / 🟡WARN(只由 run-owned 工作决定)
771
774
 
772
775
  ### 关门检查结果
773
776
  - git status --porcelain: ✅/❌
@@ -785,7 +788,7 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
785
788
  - 状态已写入: `.harness/changes/<change-name>/evidence/run-task-status.md`
786
789
 
787
790
  ### 下一步
788
- > ⚠️ 如果存在 P0 场景为 🟡静态验证,下一步必须且只能是 harness-test。
791
+ > ⚠️ 如果存在 run-owned P0 场景为 🟡静态验证,下一步必须且只能是 harness-test。
789
792
 
790
793
  运行 `/harness-test` 验证剩余 P0 场景。
791
794
  在 harness-test 通过前,不建议也不应进入 `/harness-submit`。
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(awk *)
22
22
  - Bash(curl *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=f89f132dc909b0d8; overlay=none; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=a5e0c1d624b5fad6; overlay=none; agent=claude-code; do not edit -->
25
25
  # harness-submit — 最终提交(含 worktree 合并)
26
26
 
27
27
  ## Purpose
@@ -55,7 +55,7 @@ disallowed-tools:
55
55
  6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
56
56
  7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
57
57
  8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
58
- 9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
58
+ 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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
59
59
 
60
60
  状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
61
61
  > 片段:read-protocol
@@ -19,7 +19,7 @@ disallowed-tools:
19
19
  - Bash(awk *)
20
20
  - Bash(curl *)
21
21
  ---
22
- <!-- generated by harness_deploy.py; core=f89f132dc909b0d8; overlay=none; agent=claude-code; do not edit -->
22
+ <!-- generated by harness_deploy.py; core=a5e0c1d624b5fad6; overlay=none; 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=f89f132dc909b0d8; overlay=none; agent=claude-code; do not edit -->
26
+ <!-- generated by harness_deploy.py; core=a5e0c1d624b5fad6; overlay=none; agent=claude-code; do not edit -->
27
27
  # harness-test — 测试执行
28
28
 
29
29
  ## Purpose
@@ -59,7 +59,7 @@ disallowed-tools:
59
59
  6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
60
60
  7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
61
61
  8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
62
- 9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
62
+ 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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
63
63
 
64
64
  状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
65
65
  > 片段:read-protocol
@@ -232,7 +232,7 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
232
232
  - `USER_STARTED` → 保留进程,报告中提示用户可手动停止。
233
233
  - `REUSED_EXISTING` → 保留进程,除非用户明确要求关闭。
234
234
 
235
- 最终报告 / final-summary 必须包含:
235
+ 测试报告与 `summary-data.json` 的服务生命周期投影必须包含:
236
236
 
237
237
  ```md
238
238
  ## 服务生命周期
@@ -354,4 +354,4 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
354
354
  - 请求执行器必须在报告中明确记录(四种执行器,含降级原因)
355
355
  - 请求耗时统计必须包含在报告中
356
356
  - 服务由 AI 启动的情况,测试结束默认 Stop-Process;**即使测试失败也要进入 finally 清理**
357
- - final-summary apiTest 状态必须用 OK/PARTIAL/BLOCKED/NOT_RUN/FAIL(不得把 PARTIAL 写成 NOT_RUN)
357
+ - `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
 
@@ -708,7 +708,7 @@ TEST_<change-name>_<timestamp>_<short-random>
708
708
  - 测试数据: N 条已清理 / M 条遗留
709
709
  - credentialRefreshCount: 0
710
710
 
711
- ### final-summary(顶层维度状态)
711
+ ### 归档数据与平台监控(顶层维度状态)
712
712
  - compile: ✅ OK
713
713
  - unitTest: ✅ OK / 🟡 REUSED_FROM_RUN
714
714
  - apiTest: **OK / PARTIAL / BLOCKED / NOT_RUN / FAIL**
@@ -797,7 +797,7 @@ python <skills-root>/scripts/harness_ledger.py can-reuse --change-dir <dir> --ve
797
797
 
798
798
  > **P0 场景 BLOCKED 不得仍 OK**:必须 🟡 WARN 或 ❌ FAIL。
799
799
 
800
- ### API 测试维度状态(final-summary 中输出)
800
+ ### API 测试维度状态(写入 `summary-data.json` 并由平台展示)
801
801
 
802
802
  | 状态 | 定义 |
803
803
  |---|---|
@@ -1,12 +1,12 @@
1
1
  ---
2
- description: harness-archive 的数据化归档和 final-summary 渲染协议。用于减少模型长篇 HTML 生成、提升数据准确性和页面一致性。
2
+ description: harness-archive 的结构化归档与 summary-data 校验协议。用于减少重复产物、提升数据准确性和平台展示一致性。
3
3
  ---
4
4
 
5
5
  # Archive Report Protocol
6
6
 
7
7
  ## 原则
8
8
 
9
- archive 不应让模型临场生成 500+ 行 HTML。事实收集与校验由 `harness_archive.py finalize` 单命令完成(cleanup → **freeze(事件 cutoff)** → collect → source consistency → render → renderer consistency → validate → archive-meta 内嵌);模型仅通过 events 写入维护结论。`meta/archive-meta.md` 由 finalize 生成,禁止手写。历史 archive 回放用 `harness_archive.py replay`(只读,不写 archive-meta / 不跑 cleanup)。
9
+ 归档不应维护与平台重复的展示文件。常规入口是 `harness_archive.py execute`:它一次性完成状态采集与自动门禁,再复用预检结果调用 finalize。finalize 执行 cleanup → **freeze(事件 cutoff)** → collect → source consistency → summary validate → archive-meta。模型仅通过 events 写入维护结论。`meta/archive-meta.md` 由 finalize 生成,禁止手写。历史 archive 回放用 `harness_archive.py replay`(只读,不写 archive-meta / 不跑 cleanup)。
10
10
 
11
11
  `knownRisks` 仅收录 severity∈{warning,error,critical} 的 issue 事件;无 severity 的 issue 进入 `maintenanceNotes`。`finalStatusReasons` 解释 CONDITIONAL_OK/WARN/FAIL 原因。finalize 在 before-manifest 前 cleanup:删除 lock/pid/launcher/credential,截断超大日志。
12
12
 
@@ -21,7 +21,6 @@ archive-meta.md
21
21
  archive-manifest-before.json
22
22
  archive-manifest-after.json
23
23
  summary-data.json
24
- final-summary.html
25
24
  events.ndjson(新流程推荐;历史 archive 可缺失)
26
25
  ```
27
26
 
@@ -81,7 +80,7 @@ events.ndjson(新流程推荐;历史 archive 可缺失)
81
80
  }
82
81
  ```
83
82
 
84
- `final-summary.html` 的数字必须全部来自 events、`summary-data.json`、ledger 或 manifest,不得手写另一套统计。
83
+ `summary-data.json` 的数字必须全部来自 eventsledger 或 manifest,不得手写另一套统计。
85
84
 
86
85
  ### 数据采集来源(禁止手写统计)
87
86
 
@@ -90,7 +89,7 @@ events.ndjson(新流程推荐;历史 archive 可缺失)
90
89
  - `skillCalls`:从 execution-log 统计每个 `harness-<skill>` 小节出现次数(含重入)及结果。
91
90
  - `verification` 各项及 `passRate`:来自 `evidence/verification-ledger.json`,不得手写通过率。
92
91
  - `reviewSummary.redFixed`/`redConfirmed`/`yellowFixed`/`yellowDeferred`:从 review 报告清单 + 后续修复提交 diff 比对得出,不得手写。
93
- - `artifacts[]`:本次变更构建出的可分发 package 产物(如 `.jar`/`.war`/`.zip`/`.tar`/`.gz`/`.dll`/`.exe`/`.whl`/`.nupkg` 等)。来自项目构建输出目录扫描(按构建工具识别产物路径,如 Maven `target/*.jar`、Gradle `build/libs/*`、npm `dist/*`、.NET `bin/Release/*`),每项记录 `name`(basename)、`path`(相对仓库根)、`size`、`sha256`(`Get-FileHash -Algorithm SHA256` 计算),不得手写。无构建产物时留空数组(renderer 不渲染该卡)。注意:归档 manifest(`archive-manifest-after.json`)记录的是 `.harness/archive/` 目录文件,不包含项目构建产物,两者不可混用。
92
+ - `artifacts[]`:本次变更构建出的可分发 package 产物(如 `.jar`/`.war`/`.zip`/`.tar`/`.gz`/`.dll`/`.exe`/`.whl`/`.nupkg` 等)。来自项目构建输出目录扫描(按构建工具识别产物路径,如 Maven `target/*.jar`、Gradle `build/libs/*`、npm `dist/*`、.NET `bin/Release/*`),每项记录 `name`(basename)、`path`(相对仓库根)、`size`、`sha256`(`Get-FileHash -Algorithm SHA256` 计算),不得手写。无构建产物时留空数组,平台不展示空卡片。注意:归档 manifest(`archive-manifest-after.json`)记录的是 `.harness/archive/` 目录文件,不包含项目构建产物,两者不可混用。
94
93
  - `reportPipeline.commands[]` / `verificationChecks[]` / `validationIssues[]`:来自 `events.ndjson`、ledger、validate 结果。旧 archive 无 events 时可从 ledger/log/manifest 回放,不得编造。
95
94
 
96
95
  ## manifest/checksum
@@ -121,7 +120,7 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "harness-skills/harness-
121
120
 
122
121
  ## 页面内容
123
122
 
124
- final-summary 必须突出:
123
+ 平台归档摘要必须突出:
125
124
 
126
125
  1. 本次变更业务目标;
127
126
  2. 代码变更统计(diffStat:文件数 / insertions / deletions);
@@ -134,34 +133,28 @@ final-summary 必须突出:
134
133
  禁止出现顶部 `N/A`、正文 `100%` 这类互相矛盾的数据。
135
134
 
136
135
 
137
- ## final-summary 信息密度要求
136
+ ## summary-data 信息密度要求
138
137
 
139
- `summary-data.json` 至少包含 `verification`、`artifacts`、`reviewSummary`、`archiveManifest`、`maintenanceNotes`、`knownRisks`、`manualActions`。renderer 只根据 JSON 渲染,不在 HTML 中重新推理数据。
138
+ `summary-data.json` 至少包含 `verification`、`artifacts`、`reviewSummary`、`archiveManifest`、`maintenanceNotes`、`knownRisks`、`manualActions`。平台只读取该 JSON,不重新推理或维护第二套统计。
140
139
 
141
- `artifacts` 与 `uncommittedTestEvidence` 为空数组时,renderer 不渲染对应卡片("📦 产物清单"/"🧪 未提交测试证据"),避免空态噪音;非空才渲染。字段在 JSON 中始终保留,仅控制是否展示。
140
+ `artifacts` 与 `uncommittedTestEvidence` 为空数组时,平台不展示对应卡片,避免空态噪音;非空时才展示。字段在 JSON 中始终保留,仅控制界面展示。
142
141
 
143
- ## 渲染器
142
+ ## 数据校验
144
143
 
145
- 默认渲染器为 Node.js:
144
+ `validate` 是 finalize 的内嵌同进程步骤(不存在独立 `report validate` CLI)。validate error 存在时,finalize 恢复原 changes 目录并 exit 非 0,绝不删除原 changes 目录。warning 保留在报告中,但不会被误判为 validate error。Hunter Platform 直接读取已校验的 `summary-data.json`。
146
145
 
147
- ```powershell
148
- powershell.exe -NoProfile -Command "& '<node-path>' 'harness-skills/harness-archive/templates/render-summary.mjs' --summary '.harness/changes/<change>/reports/final/summary-data.json' --out '.harness/changes/<change>/reports/final/final-summary.html'"
149
- ```
150
-
151
- PowerShell HTML renderer 仅作 legacy fallback。该脚本以 UTF-8 with BOM 保存,确保 Windows PowerShell 5.1 正确识别编码(无 BOM 会被 5.1 按 ANSI/GBK 误读导致中文 label 乱码);默认渲染器仍为 Node.js `render-summary.mjs`。
152
-
153
- **Python fallback(`harness_archive.py` 内置)**:Node 不可用/超时/exit 非 0/未产出文件时,`harness_archive.py render_final_summary` 自动降级为内置 Python fallback(`render_fallback_html`),渲染含 changeName、finalStatus、`reportPipeline.commands`(command/exitCode)、`verification`(unitTests/apiTests/dbCompatibility)、changedFiles、archiveManifest、knownRisks、manualActions、maintenanceNotes 的确定性 HTML;USER_SKIPPED/BLOCKED_BY_DBA/失败状态可见,所有动态值 HTML 转义。返回结构统一为 `{ok, renderer: node|python-fallback|none, fallbackReason, out_path}`。Node 与 Python fallback **都失败**(`renderer=none, ok=false`)时,finalize 立即恢复原 change 目录并 exit 非 0,**绝不归档无 final-summary.html 的变更**。
146
+ 正常完成时,`baseCommit` 与产品 tip 相同属于 `ARCHIVE_BASE_EQUALS_FEATURE_TIP`,必须在暂存前阻断。不得手工改 ledger 或 state snapshot。已有提交确属本变更时,使用 `adopt-existing-range` 生成绑定仓库、ownership 和 diffHash 的不可变收据;主动废弃或被替代时允许零产品增量,但必须记录中文原因,且固定 `releaseEligible=false`。
154
147
 
155
- `validate` `harness_archive.py finalize` 的内嵌同进程步骤(不存在独立 `report validate` CLI);validate error 存在时,finalize 恢复原 changes 目录并 exit 非 0,绝不删除原 changes 目录。**缺 final-summary.html 恒为 validate error**(不再有"没有 HTML 但只 warning"的分支)。
148
+ 候选收据缺失时,`execute` 可以复用身份一致、范围完整的 `unitTestFull` ledger 自动生成本地候选认证。提交只改变 commit 身份而产品树和验证输入未变化时,允许安全重绑定到当前 HEAD;该过程不得执行测试。门禁策略未声明数据库能力且未要求 `dbCompatibility` 时,数据库投影为带原因的 `NOT_APPLICABLE`,不得把缺少无关数据库证据升级为归档错误。
156
149
 
157
150
  ## 冻结优先 finalize 与两层一致性(schemaVersion 2.3 起)
158
151
 
159
- finalize 在 collect 之前**冻结事件事实**:所有 archive-fact 事件落盘并 fsync 后,写入唯一的 `phase.end` 与 `evidence/evidence-cutoff.json`(`eventCount` + `sha256` + `frozenAt`)。cutoff 之后**禁止再向归档 events.ndjson 追加任何事件**;后续报告生成事实(render/validate 结果、manifest 比对)只写入 finalize JSON payload 与 maintenance outbox,不回写事件流。collect 是纯函数:stage/timeline/durations 全部由冻结事件推导,**不存在选择性 patch 步骤**。
152
+ finalize 在 collect 之前**冻结事件事实**:所有 archive-fact 事件落盘并 fsync 后,写入唯一的 `phase.end` 与 `evidence/evidence-cutoff.json`(`eventCount` + `sha256` + `frozenAt`)。cutoff 之后**禁止再向归档 events.ndjson 追加任何事件**;后续校验结果与 manifest 比对只写入 finalize JSON payload 与 maintenance outbox,不回写事件流。collect 是纯函数:stage/timeline/durations 全部由冻结事件推导,**不存在选择性 patch 步骤**。
160
153
 
161
154
  两层 validator 顺序执行,任何一层失败都恢复原 change 目录并非零退出:
162
155
 
163
- 1. **source consistency**(`validate_source_consistency`,render 前):summary 事实对照冻结来源——`event_count` 对 cutoff、verification 对 ledger typed metrics projection、review 计数对 sidecars。结果写入 `reportPipeline.sourceConsistency = {ok, issues}`;`ok=false` 时 issue code 含 `event-count-mismatch` / `verification-mismatch`。
164
- 2. **renderer consistency**(`validate_summary`,render 后):HTML 对照 summary-data,数字不得漂移。
156
+ 1. **source consistency**(`validate_source_consistency`):summary 事实对照冻结来源——`event_count` 对 cutoff、verification 对 ledger typed metrics projection、review 计数对 sidecars。结果写入 `reportPipeline.sourceConsistency = {ok, issues}`;`ok=false` 时 issue code 含 `event-count-mismatch` / `verification-mismatch`。
157
+ 2. **summary consistency**(`validate_summary_data`):检查最终状态与验证结果是否矛盾,以及结构化字段是否满足归档要求。
165
158
 
166
159
  ## versioned repair(不改写原归档)
167
160
 
@@ -171,14 +164,14 @@ finalize 在 collect 之前**冻结事件事实**:所有 archive-fact 事件
171
164
  python harness/scripts/harness_archive.py repair --archive-dir ".harness/archive/<archive-id>" --json
172
165
  ```
173
166
 
174
- repair 先在 archive 外生成候选 derived version,两层 validator 均通过后,才以不可变新版本写入 `derived/v<N>/{summary-data.json, final-summary.html, repair-record.json}`,并把 `derived/authoritative.json` pointer 指向该版本;**原 summary-data.json、final-summary.html 与 manifest 永不覆盖**。知识层只从 authoritative pointer 指向且 hash 校验通过的版本提取条目。
167
+ repair 先在 archive 外生成候选 derived version。来源校验与数据校验均通过后,才以不可变新版本写入 `derived/v<N>/{summary-data.json, repair-record.json}`,并把 `derived/authoritative.json` pointer 指向该版本;**原 summary-data.json 与 manifest 永不覆盖**。知识层只从 authoritative pointer 指向且 hash 校验通过的版本提取条目。
175
168
 
176
169
  ## 归档包与服务端知识 ingest(§8)
177
170
 
178
171
  archive close 的破坏性事务只执行确定性 close:
179
172
 
180
173
  ```text
181
- status -> manifest -> move -> collect -> render -> validate -> compare
174
+ execute(one-shot status + gate) -> manifest -> move -> collect -> validate -> compare
182
175
  -> 生成确定性核心 ZIP -> 上传并等待服务端持久化/ingest 收据 -> stop AI service -> return
183
176
  ```
184
177
 
@@ -200,4 +193,4 @@ CONDITIONAL_OK
200
193
 
201
194
  run/test 本轮新增、更新或安全修复且被 `.gitignore` 忽略的测试,必须先由 `test-tracking.json` + `harness_test_guard.py stage` 精确提交;这类测试不得继续作为“未提交证据”收尾,也不得计入可复用 P0 验证后随 worktree 删除。
202
195
 
203
- `uncommittedTestEvidence` 只兼容历史归档或明确只读的外部证据:归档到 `backups/uncommitted-tests/`,记录文件名、验证范围与未提交原因,并在 final-summary 展示风险。若它是本轮可修改的回归测试,则 archive 必须阻断并要求先走精确跟踪流程。
196
+ `uncommittedTestEvidence` 只兼容历史归档或明确只读的外部证据:归档到 `backups/uncommitted-tests/`,记录文件名、验证范围与未提交原因,并在 `summary-data.json` 中记录风险。若它是本轮可修改的回归测试,则 archive 必须阻断并要求先走精确跟踪流程。
@@ -66,11 +66,11 @@ description: harness 全流程的证据化报告协议。所有 skill 输出必
66
66
  | `To <remote>` + 推送范围 | ✅ 推送成功 |
67
67
  | 无输出 | ❌ 状态未知 |
68
68
 
69
- ## final-summary.html / summary-data.json 状态映射
69
+ ## summary-data.json 状态映射
70
70
 
71
- final-summary.html 默认由 `summary-data.json + render-summary.mjs` 渲染;旧占位符模板仅作 legacy reference。
71
+ 平台监控直接读取 `summary-data.json`。本地归档不再生成重复的 HTML 报告。
72
72
 
73
- 归档前必须执行 `harness_archive.py finalize` 内嵌 validate,或 `harness_archive.py replay` 等价校验。只有 validate 无 error 时,才能宣称 final-summary 与 summary-data 一致;validate error 不得被写成 WARN 或"已完成"。
73
+ 归档前必须执行 `harness_archive.py finalize` 内嵌 validate,或使用 `harness_archive.py replay` 做等价校验。只有 validate 无 error 时,才能宣称报告数据有效;validate error 不得被写成 WARN 或「已完成」。
74
74
 
75
75
  | 数据来源 | 无报告时 |
76
76
  |----------|----------|
@@ -122,7 +122,7 @@ harness-review 对代码/变更的审查发现按风险分级,反映的是**
122
122
  | 标记 | 含义 | 适用场景 |
123
123
  |:----:|------|----------|
124
124
  | CONDITIONAL_OK | 条件性通过 | API 测试 `USER_SKIPPED` 或 DB 兼容性 `BLOCKED_BY_DBA` 时的归档最终状态,不得写纯 OK,必须在 knownRisks/manualActions 说明风险接受与后续人工动作 |
125
- | 🔁REUSED | 复用前阶段结果 | 复用了前一阶段验证结果,final-summary 必须显式标记,不得伪装成重新执行 |
125
+ | 🔁REUSED | 复用前阶段结果 | 复用了前一阶段验证结果,summary-data 必须显式标记,不得伪装成重新执行 |
126
126
  | 📝ADVISORY | 参考性未运行 | review 参考性意见,未作为门禁执行 |
127
127
  | ⏭️ | 用户选择跳过 | 用户主动选择跳过某步骤(如仅本地 commit 不 push、跳过 test/review) |
128
128
 
@@ -131,4 +131,4 @@ harness-review 对代码/变更的审查发现按风险分级,反映的是**
131
131
  - skill 执行状态回答"这个步骤跑没跑、成没成";
132
132
  - review 发现严重级回答"被审查的东西有没有问题、问题多大";
133
133
  - 条件态/跳过态回答"这个步骤的最终结论是什么特殊情况"。
134
- - 三者独立:例如 test skill 可 ✅OK 执行成功,但 review 发现其覆盖的代码存在 RED 问题;又如 archive 可因 `USER_SKIPPED` 给出 CONDITIONAL_OK,同时 review 发现为 YELLOW。final-summary 必须分别展示,不得用一个维度覆盖另一个。
134
+ - 三者独立:例如 test skill 可 ✅OK 执行成功,但 review 发现其覆盖的代码存在 RED 问题;又如 archive 可因 `USER_SKIPPED` 给出 CONDITIONAL_OK,同时 review 发现为 YELLOW。summary-data 必须分别记录,不得用一个维度覆盖另一个。
@@ -14,7 +14,7 @@ description: verification-ledger、diffHash、service-fingerprint 的统一协
14
14
  - run 跑过测试命令(如 `mvn test`/`pytest`),test 阶段又原样跑一遍——浪费 3~8 分钟
15
15
  - submit/package 各自再 compile+test 一次——同一 diff 被验证三四轮
16
16
  - test 通过后用户改了一行注释/删了一个未用 import,package 不知道该不该重测,干脆全量重跑
17
- - final-summary 只展示全绿,看不出哪些是"重新执行"、哪些是"复用"、哪些是"小改动后复用"
17
+ - 阶段汇总只展示全绿时,看不出哪些是「重新执行」、哪些是「复用」、哪些是「小改动后复用」
18
18
 
19
19
  verification-ledger 把每次验证(compile / unit test / api test / package)的**结果 + 证据 + 作用范围 + diffHash** 记下来,后续阶段先读 ledger 再决定是否重跑。
20
20
 
@@ -255,13 +255,13 @@ API 测试: 🔁 复用上一轮结果(diffHash 未变 / 仅清理性变更)
255
255
  | harness-run | 步骤 2 前读(确认是否已有 compile/unitTest 可复用) | 步骤 2 后写 compile + unitTest(若跑了全量测试) |
256
256
  | harness-test | Phase 1 前读(复用 run 的 unitTest) | Phase 1/2 后写 unitTest + apiTest |
257
257
  | harness-submit | 验证前读(复用 test 的 compile/unitTest) | 若重跑则写回 |
258
- | harness-archive | 归档前读(汇总各阶段状态用于 final-summary) | 不写(归档时一并移入 archive) |
258
+ | harness-archive | 归档前读(汇总各阶段状态,写入 `summary-data.json` 并上传平台) | 不写(归档时一并移入 archive) |
259
259
 
260
- ## 八、状态与 final-summary 的对应
260
+ ## 八、状态与归档投影的对应
261
261
 
262
- ledger 的 `status` 与 final-summary 展示状态对应:
262
+ ledger 的 `status` 与 `summary-data.json`、平台监控中的展示状态对应:
263
263
 
264
- | ledger status | 含义 | final-summary 标记 |
264
+ | ledger status | 含义 | 归档与平台标记 |
265
265
  |:---:|------|------|
266
266
  | `OK`(本阶段真实执行并通过) | 真实验证 | ✅OK |
267
267
  | `OK` 但本阶段复用了前一阶段 | 复用 | 🔁REUSED |
@@ -270,7 +270,7 @@ ledger 的 `status` 与 final-summary 展示状态对应:
270
270
  | `ADVISORY` | review 参考性 | 📝ADVISORY |
271
271
  | postTestClassification=NON_BEHAVIORAL_CLEANUP | 小清理 | 🧹NON_BEHAVIORAL_CLEANUP |
272
272
 
273
- **强制规则**:任何阶段若复用了前一阶段结果,final-summary 必须显示 `🔁REUSED`,**不得伪装成重新执行**。
273
+ **强制规则**:任何阶段若复用了前一阶段结果,`summary-data.json` 与平台监控必须显示 `🔁REUSED`,**不得伪装成重新执行**。
274
274
 
275
275
  ## 九、Ledger v2(cluster 2)
276
276
 
@@ -329,7 +329,7 @@ v2 契约下 `record` 写入前强制解析并校验顶层身份字段,缺失
329
329
  | `schemaVersion` | 固定 `3` |
330
330
  | `repositoryId` | `harness_paths.repository_identity(repo_root)`(远端规范化 + root commit;无远端回退 git common-dir,跨 worktree 稳定,RET-09) |
331
331
  | `changeName` | change 目录名 |
332
- | `baseCommit` | `--base-commit` → 既有 ledger 值 → `git rev-parse --verify HEAD` |
332
+ | `baseCommit` | `--base-commit` → 既有 ledger 值 → `state-snapshot.json.changeBase`。只有全新 change 的首次 ledger 写入可以用当时 HEAD 建立基线;旧 ledger 迁移缺少以上三种证据时必须报错,禁止用迁移时的当前 HEAD 猜测基线 |
333
333
  | `currentHead` | `git rev-parse --verify HEAD`(验证执行时) |
334
334
  | `diffHash` | `--diff-hash` → 既有 ledger 值 → 按 ownership 范围重算(§10.3) |
335
335
  | `ownershipHash` | 契约 `ownership` 段规范化 JSON 的 sha256 |
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 结构化事件、summary-data 生成、final-summary 校验和外部可观测性边界协议(finalize/replay)。
2
+ description: 结构化事件、summary-data 生成与校验,以及外部可观测性边界协议(finalize/replay)。
3
3
  ---
4
4
 
5
5
  # Report Pipeline Protocol
@@ -10,7 +10,7 @@ description: 结构化事件、summary-data 生成、final-summary 校验和外
10
10
 
11
11
  1. **Event Layer**:`events.ndjson` 记录结构化执行事实。
12
12
  2. **Report Data Layer**:`summary-data.json` 由程序或确定性规则生成。
13
- 3. **Renderer / Final Report Layer**:`final-summary.html` 只渲染和解释 summary-data,不重新推理统计。
13
+ 3. **Platform View Layer**:Hunter Platform 读取 `summary-data.json` 并展示结果,不在本地保存重复报告。
14
14
 
15
15
  模型可以写维护者结论、风险解释和人工判断,但不得凭印象手写统计数字、通过率、耗时、命令结果或 artifact hash。
16
16
 
@@ -19,12 +19,12 @@ description: 结构化事件、summary-data 生成、final-summary 校验和外
19
19
  Skill-bundled 脚本(推荐):
20
20
 
21
21
  ```powershell
22
- python <skills-root>/scripts/harness_archive.py finalize --change-dir ".harness/changes/<change-name>" --archive-root ".harness/archive" --json
22
+ python <skills-root>/scripts/harness_archive.py execute --change-dir ".harness/changes/<change-name>" --archive-root ".harness/archive" --intent record-only --closure completed --json
23
23
  python <skills-root>/scripts/harness_archive.py replay --archive-dir ".harness/archive/YYYY-MM-DD-<change-name>" --json
24
24
  python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase "<phase>" --type <type> [--note "..."]
25
25
  ```
26
26
 
27
- 归档报告流水线只有两个入口,均由 `harness_archive.py` 提供:`collect`/`render`/`validate` 是 `finalize` 的内嵌同进程步骤,**不再作为独立 CLI 暴露**(不存在 `report collect`/`report validate` 子命令)。`summary-data.json` 只能由 `finalize`(归档时)或 `replay`(回放时)生成;**禁止 agent 临场手写或拼装等价的 `summary-data.json`**。`harness_archive.py` 不可用时归档失败退出,不得退回手写汇总。
27
+ 归档报告流水线的常规入口是 `execute`。它只采集一次状态并复用给内部 finalize;`collect` 与 `validate` 是 finalize 的内嵌同进程步骤,**不作为独立 CLI 暴露**(不存在 `report collect` / `report validate` 子命令)。`summary-data.json` 只能由 finalize(归档时)或 `replay`(回放时)生成;**禁止 agent 临场手写或拼装等价的 `summary-data.json`**。`harness_archive.py` 不可用时归档失败退出,不得退回手写汇总。
28
28
 
29
29
  ## events.ndjson
30
30
 
@@ -141,15 +141,16 @@ summary-data 必须保留原 archive final report 维度,并增加事件层摘
141
141
 
142
142
  新增 `reportPipeline` 不替代这些字段;它负责为这些字段提供可追溯的数据来源和一致性校验结果。
143
143
 
144
- ## finalize 责任边界(`harness_archive.py finalize`)
144
+ ## execute finalize 责任边界
145
+
146
+ `execute` 负责一次性状态采集、自动门禁、准备耗时事件和对 finalize 的单次调用。常规调用者不得串行执行 `auto-gate`、`status`、`finalize`。finalize 负责正式归档尝试,并复用 execute 传入的预检结果。
145
147
 
146
148
  | 阶段 | 责任 | 写入 |
147
149
  |---|---|---|
148
150
  | `collect` | 从 events/ledger/log/manifest/report/git evidence 收集事实 | `summary-data.json` |
149
- | `render` | `render-summary.mjs` 渲染 final-summary | `final-summary.html` |
150
- | `validate` | 检查 final-summary 是否覆盖 summary-data 关键事实 | issues;不得静默忽略 error |
151
+ | `validate` | 检查 summary-data 的身份、验证状态与事实是否一致 | issues;不得静默忽略 error |
151
152
 
152
- > **已废弃**:独立 `enrich` 步骤与 `harness-report` skill;全部并入 `finalize` 单命令。回放见 `harness_archive.py replay`。
153
+ > **已废弃**:独立 `enrich` 步骤与 `harness-report` skill;报告生成并入 finalize,常规归档由 `execute` 调用。回放见 `harness_archive.py replay`。
153
154
 
154
155
  `validate` error 存在时,`harness-archive` 不得删除原 changes 目录。
155
156
 
@@ -168,4 +169,4 @@ summary-data 必须保留原 archive final report 维度,并增加事件层摘
168
169
 
169
170
  - 可保留 `reportPipeline.externalTraceRefs[]` 等扩展字段。
170
171
  - 不得要求外部服务可用才允许 archive 成功。
171
- - 未来接入也必须以 `events.ndjson` 和 `summary-data.json` 为稳定合同,不改变 final-summary 质量维度。
172
+ - 未来接入也必须以 `events.ndjson` 和 `summary-data.json` 为稳定合同,不改变结构化报告的质量维度。
@@ -1,10 +1,10 @@
1
1
  ---
2
- description: harness 全流程的敏感信息脱敏协议。所有 skill 的输出(控制台、execution-log、报告、commit message、final-summary)按本协议脱敏,禁止明文 token/密码/密钥。由原 harness-plan/sensitive-info.md 迁移。
2
+ description: harness 全流程的敏感信息脱敏协议。所有 skill 的输出(控制台、execution-log、报告、commit message、summary-data)按本协议脱敏,禁止明文 token/密码/密钥。由原 harness-plan/sensitive-info.md 迁移。
3
3
  ---
4
4
 
5
5
  # Sensitive Info Protocol
6
6
 
7
- > 本协议适用于所有 harness-skills 的输出(控制台、execution-log.md、package-report、review-report、final-summary.html、commit message)。
7
+ > 本协议适用于所有 harness-skills 的输出(控制台、execution-log.md、package-report、review-report、summary-data.json、commit message)。
8
8
 
9
9
  ## 1. 禁止明文输出的信息类型
10
10
 
@@ -49,7 +49,7 @@ description: harness 全流程的敏感信息脱敏协议。所有 skill 的输
49
49
  | 执行日志 | `.harness/changes/<change-name>/logs/execution-log.md` |
50
50
  | 审查报告 | `.harness/changes/<change-name>/reports/review/review-report-*.md` |
51
51
  | 测试报告 | `.harness/changes/<change-name>/reports/test/test-report-*.md` |
52
- | 最终总结 | `.harness/archive/YYYY-MM-DD-<change-name>/reports/final/final-summary.html` |
52
+ | 最终总结数据 | `.harness/archive/YYYY-MM-DD-<change-name>/reports/final/summary-data.json` |
53
53
  | 归档元数据 | `.harness/archive/YYYY-MM-DD-<change-name>/meta/archive-meta.md` |
54
54
  | Commit message | git log 中的提交信息 |
55
55