@hunter-harness/workflow-harness 0.2.41 → 0.2.43

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 (262) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/contracts/build-profile-v3.schema.json +56 -1
  3. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
  4. package/harness/bundles/general/claude-code/harness-archive/reference.md +1 -0
  5. package/harness/bundles/general/claude-code/harness-archive/templates/render-summary.mjs +8 -0
  6. package/harness/bundles/general/claude-code/harness-archive/templates/summary-data-template.json +28 -0
  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 +42 -16
  9. package/harness/bundles/general/claude-code/harness-knowledge-ingest/reference.md +57 -6
  10. package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +1097 -174
  11. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +1 -1
  13. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  14. package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
  15. package/harness/bundles/general/claude-code/harness-run/reference.md +6 -1
  16. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  17. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +16 -10
  18. package/harness/bundles/general/claude-code/harness-sync/reference.md +34 -14
  19. package/harness/bundles/general/claude-code/harness-test/SKILL.md +8 -2
  20. package/harness/bundles/general/claude-code/protocols/execution-session-protocol.md +52 -0
  21. package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +24 -1
  22. package/harness/bundles/general/claude-code/protocols/verification-graph-protocol.md +6 -0
  23. package/harness/bundles/general/claude-code/scripts/harness_archive.py +4 -0
  24. package/harness/bundles/general/claude-code/scripts/harness_efficiency.py +290 -0
  25. package/harness/bundles/general/claude-code/scripts/harness_environment.py +719 -35
  26. package/harness/bundles/general/claude-code/scripts/harness_fixback.py +742 -0
  27. package/harness/bundles/general/claude-code/scripts/harness_profile.py +34 -0
  28. package/harness/bundles/general/claude-code/scripts/harness_runtime.py +1165 -3
  29. package/harness/bundles/general/claude-code/scripts/harness_service.py +76 -0
  30. package/harness/bundles/general/claude-code/scripts/harness_test_runner.py +127 -39
  31. package/harness/bundles/general/claude-code/scripts/harness_verification.py +408 -8
  32. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  33. package/harness/bundles/general/codebuddy/contracts/build-profile-v3.schema.json +56 -1
  34. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  35. package/harness/bundles/general/codebuddy/harness-archive/reference.md +1 -0
  36. package/harness/bundles/general/codebuddy/harness-archive/templates/render-summary.mjs +8 -0
  37. package/harness/bundles/general/codebuddy/harness-archive/templates/summary-data-template.json +28 -0
  38. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  39. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +41 -15
  40. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/reference.md +57 -6
  41. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +1097 -174
  42. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  43. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +1 -1
  44. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  45. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
  46. package/harness/bundles/general/codebuddy/harness-run/reference.md +6 -1
  47. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  48. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +16 -10
  49. package/harness/bundles/general/codebuddy/harness-sync/reference.md +34 -14
  50. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +8 -2
  51. package/harness/bundles/general/codebuddy/protocols/execution-session-protocol.md +52 -0
  52. package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +24 -1
  53. package/harness/bundles/general/codebuddy/protocols/verification-graph-protocol.md +6 -0
  54. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +4 -0
  55. package/harness/bundles/general/codebuddy/scripts/harness_efficiency.py +290 -0
  56. package/harness/bundles/general/codebuddy/scripts/harness_environment.py +719 -35
  57. package/harness/bundles/general/codebuddy/scripts/harness_fixback.py +742 -0
  58. package/harness/bundles/general/codebuddy/scripts/harness_profile.py +34 -0
  59. package/harness/bundles/general/codebuddy/scripts/harness_runtime.py +1165 -3
  60. package/harness/bundles/general/codebuddy/scripts/harness_service.py +76 -0
  61. package/harness/bundles/general/codebuddy/scripts/harness_test_runner.py +127 -39
  62. package/harness/bundles/general/codebuddy/scripts/harness_verification.py +408 -8
  63. package/harness/bundles/general/codex/.harness-build.json +1 -1
  64. package/harness/bundles/general/codex/contracts/build-profile-v3.schema.json +56 -1
  65. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  66. package/harness/bundles/general/codex/harness-archive/reference.md +1 -0
  67. package/harness/bundles/general/codex/harness-archive/templates/render-summary.mjs +8 -0
  68. package/harness/bundles/general/codex/harness-archive/templates/summary-data-template.json +28 -0
  69. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  70. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +41 -15
  71. package/harness/bundles/general/codex/harness-knowledge-ingest/reference.md +57 -6
  72. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +1097 -174
  73. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  74. package/harness/bundles/general/codex/harness-plan/SKILL.md +1 -1
  75. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  76. package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
  77. package/harness/bundles/general/codex/harness-run/reference.md +6 -1
  78. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  79. package/harness/bundles/general/codex/harness-sync/SKILL.md +16 -10
  80. package/harness/bundles/general/codex/harness-sync/reference.md +34 -14
  81. package/harness/bundles/general/codex/harness-test/SKILL.md +8 -2
  82. package/harness/bundles/general/codex/protocols/execution-session-protocol.md +52 -0
  83. package/harness/bundles/general/codex/protocols/state-layout-protocol.md +24 -1
  84. package/harness/bundles/general/codex/protocols/verification-graph-protocol.md +6 -0
  85. package/harness/bundles/general/codex/scripts/harness_archive.py +4 -0
  86. package/harness/bundles/general/codex/scripts/harness_efficiency.py +290 -0
  87. package/harness/bundles/general/codex/scripts/harness_environment.py +719 -35
  88. package/harness/bundles/general/codex/scripts/harness_fixback.py +742 -0
  89. package/harness/bundles/general/codex/scripts/harness_profile.py +34 -0
  90. package/harness/bundles/general/codex/scripts/harness_runtime.py +1165 -3
  91. package/harness/bundles/general/codex/scripts/harness_service.py +76 -0
  92. package/harness/bundles/general/codex/scripts/harness_test_runner.py +127 -39
  93. package/harness/bundles/general/codex/scripts/harness_verification.py +408 -8
  94. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  95. package/harness/bundles/general/cursor/contracts/build-profile-v3.schema.json +56 -1
  96. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  97. package/harness/bundles/general/cursor/harness-archive/reference.md +1 -0
  98. package/harness/bundles/general/cursor/harness-archive/templates/render-summary.mjs +8 -0
  99. package/harness/bundles/general/cursor/harness-archive/templates/summary-data-template.json +28 -0
  100. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  101. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +41 -15
  102. package/harness/bundles/general/cursor/harness-knowledge-ingest/reference.md +57 -6
  103. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +1097 -174
  104. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  105. package/harness/bundles/general/cursor/harness-plan/SKILL.md +1 -1
  106. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  107. package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
  108. package/harness/bundles/general/cursor/harness-run/reference.md +6 -1
  109. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  110. package/harness/bundles/general/cursor/harness-sync/SKILL.md +16 -10
  111. package/harness/bundles/general/cursor/harness-sync/reference.md +34 -14
  112. package/harness/bundles/general/cursor/harness-test/SKILL.md +8 -2
  113. package/harness/bundles/general/cursor/protocols/execution-session-protocol.md +52 -0
  114. package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +24 -1
  115. package/harness/bundles/general/cursor/protocols/verification-graph-protocol.md +6 -0
  116. package/harness/bundles/general/cursor/scripts/harness_archive.py +4 -0
  117. package/harness/bundles/general/cursor/scripts/harness_efficiency.py +290 -0
  118. package/harness/bundles/general/cursor/scripts/harness_environment.py +719 -35
  119. package/harness/bundles/general/cursor/scripts/harness_fixback.py +742 -0
  120. package/harness/bundles/general/cursor/scripts/harness_profile.py +34 -0
  121. package/harness/bundles/general/cursor/scripts/harness_runtime.py +1165 -3
  122. package/harness/bundles/general/cursor/scripts/harness_service.py +76 -0
  123. package/harness/bundles/general/cursor/scripts/harness_test_runner.py +127 -39
  124. package/harness/bundles/general/cursor/scripts/harness_verification.py +408 -8
  125. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  126. package/harness/bundles/java/claude-code/contracts/build-profile-v3.schema.json +56 -1
  127. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  128. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  129. package/harness/bundles/java/claude-code/harness-archive/reference.md +1 -0
  130. package/harness/bundles/java/claude-code/harness-archive/templates/render-summary.mjs +8 -0
  131. package/harness/bundles/java/claude-code/harness-archive/templates/summary-data-template.json +28 -0
  132. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  133. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +42 -16
  134. package/harness/bundles/java/claude-code/harness-knowledge-ingest/reference.md +57 -6
  135. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +1097 -174
  136. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  137. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  138. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
  139. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  140. package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
  141. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  142. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +16 -10
  143. package/harness/bundles/java/claude-code/harness-sync/reference.md +34 -14
  144. package/harness/bundles/java/claude-code/harness-test/SKILL.md +8 -2
  145. package/harness/bundles/java/claude-code/protocols/execution-session-protocol.md +52 -0
  146. package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +24 -1
  147. package/harness/bundles/java/claude-code/protocols/verification-graph-protocol.md +6 -0
  148. package/harness/bundles/java/claude-code/scripts/harness_archive.py +4 -0
  149. package/harness/bundles/java/claude-code/scripts/harness_efficiency.py +290 -0
  150. package/harness/bundles/java/claude-code/scripts/harness_environment.py +719 -35
  151. package/harness/bundles/java/claude-code/scripts/harness_fixback.py +742 -0
  152. package/harness/bundles/java/claude-code/scripts/harness_profile.py +34 -0
  153. package/harness/bundles/java/claude-code/scripts/harness_runtime.py +1165 -3
  154. package/harness/bundles/java/claude-code/scripts/harness_service.py +76 -0
  155. package/harness/bundles/java/claude-code/scripts/harness_test_runner.py +127 -39
  156. package/harness/bundles/java/claude-code/scripts/harness_verification.py +408 -8
  157. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  158. package/harness/bundles/java/codebuddy/contracts/build-profile-v3.schema.json +56 -1
  159. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  160. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  161. package/harness/bundles/java/codebuddy/harness-archive/reference.md +1 -0
  162. package/harness/bundles/java/codebuddy/harness-archive/templates/render-summary.mjs +8 -0
  163. package/harness/bundles/java/codebuddy/harness-archive/templates/summary-data-template.json +28 -0
  164. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  165. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +41 -15
  166. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/reference.md +57 -6
  167. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +1097 -174
  168. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  169. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  170. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
  171. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  172. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
  173. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  174. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +16 -10
  175. package/harness/bundles/java/codebuddy/harness-sync/reference.md +34 -14
  176. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +8 -2
  177. package/harness/bundles/java/codebuddy/protocols/execution-session-protocol.md +52 -0
  178. package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +24 -1
  179. package/harness/bundles/java/codebuddy/protocols/verification-graph-protocol.md +6 -0
  180. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +4 -0
  181. package/harness/bundles/java/codebuddy/scripts/harness_efficiency.py +290 -0
  182. package/harness/bundles/java/codebuddy/scripts/harness_environment.py +719 -35
  183. package/harness/bundles/java/codebuddy/scripts/harness_fixback.py +742 -0
  184. package/harness/bundles/java/codebuddy/scripts/harness_profile.py +34 -0
  185. package/harness/bundles/java/codebuddy/scripts/harness_runtime.py +1165 -3
  186. package/harness/bundles/java/codebuddy/scripts/harness_service.py +76 -0
  187. package/harness/bundles/java/codebuddy/scripts/harness_test_runner.py +127 -39
  188. package/harness/bundles/java/codebuddy/scripts/harness_verification.py +408 -8
  189. package/harness/bundles/java/codex/.harness-build.json +1 -1
  190. package/harness/bundles/java/codex/contracts/build-profile-v3.schema.json +56 -1
  191. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  192. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  193. package/harness/bundles/java/codex/harness-archive/reference.md +1 -0
  194. package/harness/bundles/java/codex/harness-archive/templates/render-summary.mjs +8 -0
  195. package/harness/bundles/java/codex/harness-archive/templates/summary-data-template.json +28 -0
  196. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  197. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +41 -15
  198. package/harness/bundles/java/codex/harness-knowledge-ingest/reference.md +57 -6
  199. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +1097 -174
  200. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  201. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  202. package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
  203. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  204. package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
  205. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  206. package/harness/bundles/java/codex/harness-sync/SKILL.md +16 -10
  207. package/harness/bundles/java/codex/harness-sync/reference.md +34 -14
  208. package/harness/bundles/java/codex/harness-test/SKILL.md +8 -2
  209. package/harness/bundles/java/codex/protocols/execution-session-protocol.md +52 -0
  210. package/harness/bundles/java/codex/protocols/state-layout-protocol.md +24 -1
  211. package/harness/bundles/java/codex/protocols/verification-graph-protocol.md +6 -0
  212. package/harness/bundles/java/codex/scripts/harness_archive.py +4 -0
  213. package/harness/bundles/java/codex/scripts/harness_efficiency.py +290 -0
  214. package/harness/bundles/java/codex/scripts/harness_environment.py +719 -35
  215. package/harness/bundles/java/codex/scripts/harness_fixback.py +742 -0
  216. package/harness/bundles/java/codex/scripts/harness_profile.py +34 -0
  217. package/harness/bundles/java/codex/scripts/harness_runtime.py +1165 -3
  218. package/harness/bundles/java/codex/scripts/harness_service.py +76 -0
  219. package/harness/bundles/java/codex/scripts/harness_test_runner.py +127 -39
  220. package/harness/bundles/java/codex/scripts/harness_verification.py +408 -8
  221. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  222. package/harness/bundles/java/cursor/contracts/build-profile-v3.schema.json +56 -1
  223. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  224. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  225. package/harness/bundles/java/cursor/harness-archive/reference.md +1 -0
  226. package/harness/bundles/java/cursor/harness-archive/templates/render-summary.mjs +8 -0
  227. package/harness/bundles/java/cursor/harness-archive/templates/summary-data-template.json +28 -0
  228. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  229. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +41 -15
  230. package/harness/bundles/java/cursor/harness-knowledge-ingest/reference.md +57 -6
  231. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +1097 -174
  232. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  233. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  234. package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
  235. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  236. package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
  237. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  238. package/harness/bundles/java/cursor/harness-sync/SKILL.md +16 -10
  239. package/harness/bundles/java/cursor/harness-sync/reference.md +34 -14
  240. package/harness/bundles/java/cursor/harness-test/SKILL.md +8 -2
  241. package/harness/bundles/java/cursor/protocols/execution-session-protocol.md +52 -0
  242. package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +24 -1
  243. package/harness/bundles/java/cursor/protocols/verification-graph-protocol.md +6 -0
  244. package/harness/bundles/java/cursor/scripts/harness_archive.py +4 -0
  245. package/harness/bundles/java/cursor/scripts/harness_efficiency.py +290 -0
  246. package/harness/bundles/java/cursor/scripts/harness_environment.py +719 -35
  247. package/harness/bundles/java/cursor/scripts/harness_fixback.py +742 -0
  248. package/harness/bundles/java/cursor/scripts/harness_profile.py +34 -0
  249. package/harness/bundles/java/cursor/scripts/harness_runtime.py +1165 -3
  250. package/harness/bundles/java/cursor/scripts/harness_service.py +76 -0
  251. package/harness/bundles/java/cursor/scripts/harness_test_runner.py +127 -39
  252. package/harness/bundles/java/cursor/scripts/harness_verification.py +408 -8
  253. package/harness/manifests/general/claude-code.json +46 -33
  254. package/harness/manifests/general/codebuddy.json +46 -33
  255. package/harness/manifests/general/codex.json +46 -33
  256. package/harness/manifests/general/cursor.json +46 -33
  257. package/harness/manifests/java/claude-code.json +47 -34
  258. package/harness/manifests/java/codebuddy.json +47 -34
  259. package/harness/manifests/java/codex.json +47 -34
  260. package/harness/manifests/java/cursor.json +47 -34
  261. package/hunter-workflow-family.json +12 -10
  262. package/package.json +1 -1
@@ -3,7 +3,7 @@ name: harness-knowledge-query
3
3
  description: 根据新需求、设计任务、代码修改请求或问题排查,在规划和编码前查询 .harness/knowledge
4
4
  历史上下文。适用场景:query knowledge、查找历史需求、根据归档理解需求、继续之前类似开发、生成需求上下文包。
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=79326ada58817556; overlay=none; agent=codex; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=3b9f8916e29a59bb; overlay=none; agent=codex; do not edit -->
7
7
  # harness-knowledge-query
8
8
 
9
9
  并行 change 中查询必须传 `--change <change-id>`;成功后以该 change 的 `meta/knowledge-context.json` 为稳定指针。全局 `context-packs/latest.json` 仅向后兼容,不得用于判断多个 active change 的上下文归属。
@@ -2,7 +2,7 @@
2
2
  name: harness-plan
3
3
  description: 将需求转化为设计文档+实施计划+完整测试场景表,必须在编码前完成。使用场景:需求分析、feature plan、技术方案设计、实现方案规划
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=79326ada58817556; overlay=none; agent=codex; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=3b9f8916e29a59bb; overlay=none; agent=codex; do not edit -->
6
6
  # harness-plan — 需求规划
7
7
 
8
8
  ## Purpose
@@ -3,7 +3,7 @@ name: harness-review
3
3
  description: 6维度代码审查(架构/安全/规范/兼容/测试/性能),对照项目规则(见
4
4
  .harness/context-index.json)和测试场景表,在隔离上下文运行。使用场景:代码审查、提交前检查、合并评审
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=79326ada58817556; overlay=none; agent=codex; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=3b9f8916e29a59bb; overlay=none; agent=codex; do not edit -->
7
7
  # harness-review — 代码审查
8
8
 
9
9
  ## Purpose
@@ -2,7 +2,7 @@
2
2
  name: harness-run
3
3
  description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编译验证),逐变更簇实现计划中的任务。使用场景:开始编码、实现功能、写代码、TDD 编码
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=79326ada58817556; overlay=none; agent=codex; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=3b9f8916e29a59bb; overlay=none; agent=codex; do not edit -->
6
6
  # harness-run — 需求编码
7
7
 
8
8
  ## Purpose
@@ -94,7 +94,7 @@ requested=true + path missing
94
94
  6. **读取测试场景表**:`.harness/changes/<change-name>/plans/<change-name>-test-scenarios.md` → 获取测试真相源
95
95
  7. **读取验证账本**:`.harness/changes/<change-name>/evidence/verification-ledger.json`(如存在)→ 复用已有 compile/unitTest 结果
96
96
  8. **读取任务状态**:`.harness/changes/<change-name>/evidence/run-task-status.md`(如存在)→ 恢复上次运行状态
97
- 9. **读取 review fixback**:用户传入 `--fixback` 或要求修复 review 问题时,读取最新 `.harness/changes/<change-name>/reports/review/fixback-*.md`,并将 RED/YELLOW 条目映射为本轮变更簇
97
+ 9. **读取 review fixback**:用户传入 `--fixback` 或要求修复 review 问题时,读取最新 `.harness/changes/<change-name>/reports/review/fixback-*.md`,并用 `harness_fixback.py` 将相关 RED/YELLOW 条目合并为一个批次;每条问题保留 RED/GREEN 证据,批次关闭后只触发一次 affected verification 与一次 review
98
98
  10. 确认 `项目规则(见 .harness/context-index.json)/` 规则已加载
99
99
  11. **执行测试基础设施探测**(见下方"步骤 0.5")
100
100
  12. 确认构建环境正常(构建命令按技术栈,见项目 CLAUDE.md 或 `.harness/config/harness-build-config.md`;如 Java 的 `powershell.exe -Command "mvn compile -pl <module> -o -q"`)
@@ -102,6 +102,11 @@ requested=true + path missing
102
102
  14. **依赖模块预安装**:如果在 worktree 中执行,检查上游依赖是否已安装(如 Java 的 `mvn install` 到本地仓库、前端的依赖已 install)。缺失时先执行对应安装命令(Java 示例:`powershell.exe -Command "mvn install -pl <upstream-modules> -am -DskipTests -nsu"`)
103
103
  15. **代码探索优先用 codegraph_explore**:一次调用可获取多个相关符号的源码,替代逐个 Read 文件。违反 `项目 codegraph 规则` 规则逐个 Read 会浪费 3-5 分钟。仅在 codegraph 返回结果不完整时补充 Read
104
104
 
105
+ 长时编译或验证不得依赖当前对话持续在线;使用 `harness_runtime.py run-start` 创建
106
+ 受管会话,并以状态/日志游标重连。并行执行前先调用
107
+ `harness_verification.py` 的 `plan` 模式取得资源锁 wave;没有资源声明的重任务保持串行。详见
108
+ `../protocols/execution-session-protocol.md`。
109
+
105
110
  ### 步骤 0.0:正式产物来源确认
106
111
 
107
112
  在读取计划文件后,确认本次执行只使用 `.harness/changes/<change-name>/` 下的正式产物:
@@ -3,7 +3,7 @@ name: harness-submit
3
3
  description: 最终提交封装:验证→中文 commit→提交/推送;worktree 模式含 --no-ff
4
4
  合并回主分支。使用场景:提交代码、commit、push、合并分支、merge to main、完成开发
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=79326ada58817556; overlay=none; agent=codex; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=3b9f8916e29a59bb; overlay=none; agent=codex; do not edit -->
7
7
  # harness-submit — 最终提交(含 worktree 合并)
8
8
 
9
9
  ## Purpose
@@ -4,7 +4,7 @@ description: Use when the user asks to synchronize, refresh, or validate Harness
4
4
  metadata, adapters, knowledge, rules, instruction entrypoints, config origins,
5
5
  or CodeGraph status.
6
6
  ---
7
- <!-- generated by harness_deploy.py; core=79326ada58817556; overlay=none; agent=codex; do not edit -->
7
+ <!-- generated by harness_deploy.py; core=3b9f8916e29a59bb; overlay=none; agent=codex; do not edit -->
8
8
  # harness-sync
9
9
 
10
10
  ## Purpose
@@ -13,13 +13,10 @@ description: Use when the user asks to synchronize, refresh, or validate Harness
13
13
 
14
14
  ## Before running
15
15
 
16
- 读取 `reference.md`。先执行只读能力握手;若最低 CLI 版本或任一必需能力不满足,立即停止,不得先运行 knowledge、refresh 或其他重操作:
17
-
18
- ```powershell
19
- npx hunter-harness capabilities --json
20
- ```
21
-
22
- 工作流要求 `sync@1`、`rules-sync@1`、`rules-review@1`、`knowledge-sync@2`。`BLOCKED_CAPABILITY_MISMATCH` 属环境阻塞,不得降级为手工拼接旧流程。
16
+ 读取 `reference.md`。`sync` 自身会在任何重操作之前完成能力握手;不要另起一个
17
+ `capabilities` 进程。工作流要求 `sync@2`、`rules-sync@1`、`rules-review@1`、
18
+ `knowledge-sync@3`、`codegraph-status@2`。`BLOCKED_CAPABILITY_MISMATCH` 属环境阻塞,
19
+ 不得降级为手工拼接旧流程。
23
20
 
24
21
  ## Run
25
22
 
@@ -29,17 +26,26 @@ npx hunter-harness sync --project <项目路径> --profile interactive --progres
29
26
 
30
27
  CLI 负责 Python runtime 解析、投影事务、knowledge、rules、map、指令图、配置来源、change 状态及 CodeGraph 证据汇总。禁止直接调用内部 Python 脚本,禁止使用固定 `HEAD~5`,禁止自动全量重建 CodeGraph。
31
28
 
32
- 长阶段的 heartbeat 写 stderr;stdout 只保留紧凑摘要。完整报告写入摘要中的 `reportPath`,并带 `reportSha256`。不得把完整 JSON 报告直接回显到对话。
29
+ 只读诊断使用 `--check`(`--dry-run` 为兼容别名);它不得写报告、receipt 或投影。
30
+ 长阶段的 heartbeat 写 stderr;stdout 只保留紧凑摘要。完整报告写入摘要中的
31
+ `reportPath`,并带 `reportSha256`。需要组件级证据时显式加 `--verbose`,不得默认把完整
32
+ JSON 报告回显到对话。
33
+
34
+ 摘要中的 `remediations[]` 是稳定修复契约。先用对应 `previewCommand` 预览;低风险修复用
35
+ `--apply safe`,指定修复用 `--fix <id>`。需覆盖受管投影的修复必须同时提供 `--yes`,
36
+ 并依赖 refresh 事务留下的 before snapshot;不允许绕过确认或无备份覆盖。指定修复时,
37
+ 无关组件只做只读评估,不得顺带写入。
33
38
 
34
39
  ## Interpret
35
40
 
36
41
  - `OK`:所有可验证组件通过。
42
+ - `ADVISORY`:索引最新,但有待评审候选等非阻塞健康提示;退出码仍为 0。
37
43
  - `WARN`:存在过期、冲突、待评审或 `UNKNOWN` 证据;按 `reportPath` 中的 `nextAction` 处理。
38
44
  - `FAIL`:组件执行失败;不得宣称同步完成。
39
45
  - `BLOCKED`:runtime、项目状态或能力契约阻塞;先修复阻塞条件。
40
46
  - `UNKNOWN`:证据不足,不等于成功,也不触发无界重建。
41
47
 
42
- 非交互或 CI 使用 `--profile general --progress jsonl --json`,不得等待规则候选确认。交互式运行若报告规则待评审,再按 `reference.md` 的显式入口处理。
48
+ 非交互或 CI 使用 `--check --profile general --progress jsonl --json`,不得等待规则候选确认。交互式运行若报告规则待评审,再按 `reference.md` 的显式入口处理。
43
49
 
44
50
  ## Safety
45
51
 
@@ -6,13 +6,8 @@ description: harness-sync 的能力契约、统一状态模型、报告收据和
6
6
 
7
7
  ## 1. 能力握手
8
8
 
9
- 统一入口执行前读取:
10
-
11
- ```powershell
12
- npx hunter-harness capabilities --json
13
- ```
14
-
15
- 工作流 family manifest 声明 `minimumCliVersion` 和 `capabilities`。CLI 在任何高成本阶段之前核对版本与能力;缺失时返回:
9
+ 工作流 family manifest 声明 `minimumCliVersion` 和 `capabilities`。`sync` 在任何高成本
10
+ 阶段之前自行核对版本与能力;Skill 不要再运行独立的 `capabilities` 子进程。缺失时返回:
16
11
 
17
12
  ```json
18
13
  {
@@ -47,22 +42,41 @@ npx hunter-harness sync --project <项目路径> --profile interactive --progres
47
42
  CI/非交互式:
48
43
 
49
44
  ```powershell
50
- npx hunter-harness sync --project <项目路径> --profile general --progress jsonl --json
45
+ npx hunter-harness sync --check --project <项目路径> --profile general --progress jsonl --json
51
46
  ```
52
47
 
53
- `--dry-run` 只做只读检查或事务预览,不应生成持久报告、receipt 或投影。每个长阶段通过 stderr 输出受限 heartbeat;stdout 只输出:
48
+ `--check` 是严格只读检查;`--dry-run` 是兼容别名。两者都不生成持久报告、receipt
49
+ 投影。每个长阶段通过 stderr 输出受限 heartbeat;stdout 默认只输出:
54
50
 
55
51
  ```json
56
52
  {
57
53
  "status": "WARN",
58
54
  "runId": "<run-id>",
59
- "components": {"ok": 7, "warn": 1, "fail": 0, "blocked": 0, "unknown": 1},
55
+ "components": {"ok": 7, "advisory": 1, "warn": 0, "fail": 0, "blocked": 0, "unknown": 0},
56
+ "versions": {
57
+ "cliVersion": "0.0.0",
58
+ "workflowBundleVersion": "0.0.0",
59
+ "adapterBundleVersions": {}
60
+ },
61
+ "remediations": [],
60
62
  "reportPath": ".harness/runtime/sync/<run-id>/reports/sync-report.json",
61
63
  "reportSha256": "<sha256>"
62
64
  }
63
65
  ```
64
66
 
65
- 详细报告必须受大小限制,并包含每个组件的 `status`、`reasonCode`、`observedAt`、`durationMs`、输入/输出 hash、证据、是否自动修复及 `nextAction`。
67
+ 只读检查的 `reportPath/reportSha256` `null`。详细报告必须受大小限制,并包含每个组件
68
+ 的 `status`、`reasonCode`、`observedAt`、`durationMs`、输入/输出 hash、证据、是否自动
69
+ 修复及 `nextAction`;只有显式 `--verbose` 才把组件级详情写到 stdout。
70
+
71
+ ### 结构化修复
72
+
73
+ - `remediations[]` 含稳定 `id`、风险、写入范围、备份/回滚说明、预计耗时、是否需确认、
74
+ `previewCommand` 与 `applyCommand`。
75
+ - `--apply safe` 只执行低风险、无需确认的修复。
76
+ - `--fix <id>` 只执行该项;需要覆盖受管 Adapter 时必须加 `--yes`。
77
+ - 指定修复时,其他组件仍参与诊断但保持只读。
78
+ - Adapter 覆盖由 refresh 事务执行,before snapshot 位于最新 committed refresh
79
+ transaction;事务失败会自动回滚。预览永远不得产生写入。
66
80
 
67
81
  ## 4. 组件状态
68
82
 
@@ -77,15 +91,21 @@ npx hunter-harness sync --project <项目路径> --profile general --progress js
77
91
  | instruction graph | 入口、include 边、环、主题可达性 | 缺失引用或循环为 `FAIL` |
78
92
  | config origins | canonical/projection 路径与 hash | 漂移 `WARN`,不静默覆盖 |
79
93
  | changes | 五态分类及归档收据 | `INVALID`/`ORPHAN` 不自动删除 |
80
- | CodeGraph | 索引文件、守护进程管道、watcher 日志、pendingwatcher lag | 输出 `CURRENT/PENDING/STALE/INDEX_PRESENT_UNVERIFIED/MISSING/UNKNOWN`;不自动全量 reindex |
94
+ | CodeGraph | `codegraph status --json` 的 pending、数据库观察时间、watcher 可达性 | 输出 `CURRENT/PENDING/STALE/INDEX_PRESENT_UNVERIFIED/MISSING/UNKNOWN`;日志 mtime 只证明 watcher 活动,不证明索引完成;不自动全量 reindex |
81
95
 
82
- 全局状态优先级:`BLOCKED` → `FAIL` → `WARN` → `OK`。任一 `UNKNOWN` 至少使全局结果为 `WARN`。
96
+ 全局状态优先级:`BLOCKED` → `FAIL` → `WARN` → `ADVISORY` → `OK`。任一 `UNKNOWN`
97
+ 至少使全局结果为 `WARN`。knowledge freshness 与 health 分开:索引一致但仍有待裁决候选时
98
+ 为 `ADVISORY`,不得误报为过期。
83
99
 
84
100
  ## 5. Git 与 CodeGraph
85
101
 
86
102
  增量基线来自上次成功 sync receipt 的 `headCommit`。首次运行或 receipt 不可用时,仅收集当前 HEAD 和有界文件统计;禁止固定 `HEAD~5`。
87
103
 
88
- CodeGraph 状态探测读取 `.codegraph/codegraph.db`、daemon receipt/log,尝试有界管道连接,并比较项目文件与最近索引观察时间。只有服务可达、watcher 已启用且 `pendingFileCount=0` 时为 `CURRENT`;此时才可将当前 HEAD 记录为推断的 `indexedCommit`。不可用、待同步或证据不足时分别报告 `STALE/PENDING/INDEX_PRESENT_UNVERIFIED/UNKNOWN` 与明确后续动作。不要在 sync 内执行全量索引,不使用依赖 shell 连接符的跨平台命令。
104
+ CodeGraph 状态探测优先读取 `codegraph status --json` 的权威 pending 列表;只有该 API
105
+ 不可用时才退回受限文件扫描,并把来源标成 `database-scan` 或 `unverified`。`.agents/`、
106
+ `.cursor/`、`.claude/` 等 Adapter 投影和 Markdown 文档不计入源码 pending。daemon log
107
+ mtime 只写入 `watcherObservedAt`,不能冒充 `indexObservedAt`。只有服务可达、watcher 已
108
+ 启用且权威 `pendingFileCount=0` 时为 `CURRENT`。不要在 sync 内执行全量索引。
89
109
 
90
110
  ## 6. Instruction graph
91
111
 
@@ -2,7 +2,7 @@
2
2
  name: harness-test
3
3
  description: 测试执行:读取场景表,执行单元测试+API接口测试+数据兼容验证,输出测试报告。当用户说'跑测试/验证/跑用例/接口测试/单元测试'时使用
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=79326ada58817556; overlay=none; agent=codex; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=3b9f8916e29a59bb; overlay=none; agent=codex; do not edit -->
6
6
  # harness-test — 测试执行
7
7
 
8
8
  ## Purpose
@@ -72,11 +72,17 @@ Runner 强制同项目单实例、低调度优先级、逐命令超时、正常
72
72
 
73
73
  动态数据库/Redis/令牌字段必须先由 `harness_environment.py prepare` 生成 secret-free receipt,再用 `exec --environment-receipt <file> --required-environment-field <NAME>` 闭包注入;缺失或指纹变化在启动测试前返回 `VERIFICATION_ENVIRONMENT_INCOMPLETE`。复杂 JSON、Docker template 或含引号参数不得跨多层 `-Command` 传递,改用 `exec --argv-file <utf8-json> --runtime-receipt <file>`;参数文件记录 PowerShell edition/version,运行回执只存 argv hash。`harness_service.py ensure` 属于正式持久服务模式,禁止从 bounded runner 内启动;命中时返回 `PERSISTENT_SERVICE_MODE_REQUIRED`。
74
74
 
75
+ 预计超过交互窗口的正式验证使用 `harness_runtime.py run-start`,随后通过
76
+ `run-status` / `run-log --cursor` 重连;不得把调用方存活当作验证存活条件。环境 acquire
77
+ 必须显式选择 `change-session`(同 change + 内容指纹复用)或 `ephemeral`(每次重置)。
78
+ 验证 DAG 的并行度由 `resourceLocks` 决定,未分类重任务默认串行。完整合同见
79
+ `../protocols/execution-session-protocol.md`。
80
+
75
81
  ### Phase 0:环境准备(主会话执行,需要交互确认)
76
82
 
77
83
  先 `harness_context.py prepare --phase test --executor <tool> [--change <id>] --json`,再 `harness_context.py begin --phase test --change <id> --executor <tool> --json` 校验最新 run→test receipt 的 artifact/hash/HEAD;然后 **`harness_gate.py begin --phase test --change <id>`**(禁止手工 phase.start / 手写 ledger)。执行各项强制环境检查 + **命令执行模式 preflight (0.1)**;只有首选执行器不可用时,才执行 fallback 执行器探测。
78
84
 
79
- 验证写入**仅**允许 `harness_ledger.py record` / `can-reuse`;禁止 Write/Edit `verification-ledger.json`。测试跟踪:`harness_test_guard.py begin` → 执行 → `close`(可选 `mark` stale-test-repair)。阶段结束必须 `harness_gate.py close --phase test --status ...`,随后 `harness_context.py close --from-phase test --to-phase review --executor <tool> --json`;fixback 时改为 `--to-phase run` 并由 context 失效受影响 target。
85
+ 验证写入**仅**允许 `harness_ledger.py record` / `can-reuse`;禁止 Write/Edit `verification-ledger.json`。测试跟踪:`harness_test_guard.py begin` → 执行 → `close`(可选 `mark` stale-test-repair)。阶段结束必须 `harness_gate.py close --phase test --status ...`,随后 `harness_context.py close --from-phase test --to-phase review --executor <tool> --json`;fixback 时由 `harness_fixback.py` 合批记录 RED/GREEN 和 affected verification,再 `--to-phase run` 并由 context 失效受影响 target。
80
86
 
81
87
  - **Read `checklist.md`** — 各项检查详情 + 0.1 preflight + Playwright 探测 + 避坑规则指引
82
88
  - **失败处理**:任一项检查失败 → 终止流程并报告原因,用户确认修复后才能继续
@@ -0,0 +1,52 @@
1
+ ---
2
+ description: 长时命令、验证调度、环境复用与 fixback 的可恢复执行协议。
3
+ ---
4
+
5
+ # Execution Session Protocol
6
+
7
+ ## 受管运行会话
8
+
9
+ 可能超过交互窗口的命令必须通过 `harness_runtime.py run-start` 创建受管会话,而不是依赖调用方进程持续在线。会话状态位于:
10
+
11
+ ```text
12
+ runtime/run-sessions/<session-id>/
13
+ ├── session.json
14
+ ├── stdout.log
15
+ ├── stderr.log
16
+ └── worker.log
17
+ ```
18
+
19
+ `session.json` 只持久化脱敏身份:命令哈希、环境哈希、产品身份、验证目标、阶段、资源锁、进程身份、心跳、进度、超时和原因码。原始环境变量和敏感 argv 不得写入回执。
20
+
21
+ - `run-status` 可由新进程重连;心跳丢失超过 grace period 才标记 `INCOMPLETE`。
22
+ - `run-log --cursor` 按字节游标增量读取 UTF-8 日志,返回下一游标。
23
+ - `run-cancel` 只终止身份完全匹配的进程树;身份不确定时 fail closed。
24
+ - launcher 尚未启动子进程时失败,状态为 `INCOMPLETE/LAUNCHER_FAILED`;子进程非零退出为 `FAIL/CHILD_EXIT_NONZERO`;超时为 `CANCELLED/TIMEOUT`。
25
+ - `resourceLocks` 通过 `runtime/resource-locks/<lock-hash>.json` 原子独占;冲突会在启动测试进程前返回 `INCOMPLETE/RESOURCE_LOCK_BUSY`,终态写入前必须释放持有的锁。
26
+ - Windows 使用 shell-free argv 和 kill-on-close Job Object;Job Object 绑定失败时必须终止已验证的子进程并返回 `PROCESS_TREE_ISOLATION_UNAVAILABLE`,不得降级为无隔离运行。
27
+
28
+ ## 验证调度
29
+
30
+ `harness_verification.py plan` 对验证 DAG 做拓扑调度。每个目标声明 `dependsOn`、`resourceLocks`、identity 与复用策略。
31
+
32
+ - 只有资源锁不相交的 ready 目标可进入同一 wave。
33
+ - 未声明资源锁且预计大于等于 60 秒的目标自动使用 `harness:unclassified-heavy`,因此默认串行。
34
+ - 冻结后的产品 identity 发生变化时返回 `FROZEN_IDENTITY_DRIFT`,禁止继续执行或复用。
35
+ - 复用和跳过必须记录 `decision`、`reasonCode` 与人类可读 `explanation`;无证据不得返回 `REUSE`。
36
+
37
+ ## 环境会话
38
+
39
+ 环境租约支持两种模式:
40
+
41
+ - `change-session`:同一 change、stack、内容指纹和通过的 canary 可复用。
42
+ - `ephemeral`:每次 acquire 都创建新 session;替换既有 session 前必须提供匹配 stack/environment identity 的 provider reset 回执。
43
+
44
+ 租约获取通过注册锁原子串行化,跨 change 的 writable volume 永不共享。`change-session` 只有在内容指纹非空、environment hash、owner identity、expiry、mode、volume 和 canary 全部匹配时才可复用。内容指纹漂移标记 `STALE_CONTENT`;过期租约不可写。prepare/reuse 写入事实回执;reset/cleanup 只有在 provider operation evidence 为 `OK` 时才可如此命名。单纯释放租约只能记录 `release`,不得声称已清理外部环境。回执写入 change 的 `runtime/environment-receipts/`,文件名使用 stack hash,且不包含凭据明文。
45
+
46
+ ## Fixback 批次
47
+
48
+ Review/Test 回灌通过 `harness_fixback.py` 形成批次。一个批次可包含多条相关问题,但每条问题必须保留可读取的 JSON RED/GREEN 证据。证据必须位于项目或 change state 内,包含 evidence id、状态和产品 identity,并在批次中固定 SHA-256;RED 必须为 `FAIL`,GREEN 必须为 `PASS/OK`。affected verification 与 review 回执必须绑定最终产品 identity,其 `passedGates` 合集覆盖风险扩展后的全部门禁。`freeze-readiness` 会重新校验证据摘要;开放问题、证据漂移或缺门禁均阻止 code freeze。
49
+
50
+ ## 效率摘要
51
+
52
+ `harness_efficiency.py summary` 从运行会话、环境回执和失效回执生成事实型指标:墙钟区间并集、累计活动/资源等待、execution/launcher/verification 尝试、失败分类、环境 prepare/reuse/reset/cleanup、重复且没有新 result digest 的命令和人工 wrapper 数。reset/cleanup 只统计带有效 provider evidence 的回执。归档摘要自动包含该结构;指标不得归责个人,也不得在历史样本不足时虚构 ETA。
@@ -60,7 +60,14 @@ description: harness .harness 状态目录分层协议。用于减少根目录
60
60
  ├── sqls/
61
61
  ├── scripts/
62
62
  ├── runtime/
63
- └── service-session.json
63
+ ├── service-session.json
64
+ │ ├── run-sessions/<session-id>/
65
+ │ │ ├── session.json
66
+ │ │ ├── stdout.log
67
+ │ │ └── stderr.log
68
+ │ ├── environment-receipts/
69
+ │ ├── invalidations/
70
+ │ └── fixback/batches/
64
71
  └── backups/
65
72
  └── uncommitted-tests/
66
73
  ```
@@ -73,6 +80,10 @@ description: harness .harness 状态目录分层协议。用于减少根目录
73
80
 
74
81
  `build-profile.json` 的 `serviceStart.inputFiles`(glob 列表,相对 project 展开)是 `moduleInputsHash` 的来源。`harness_service.py ensure` 取 CLI `--files` ∪ `serviceStart.inputFiles` 计算依赖闭包;**空输入被拒绝**(exit 非 0),**不得生成可复用的空指纹**。通用项目 detect 无法猜 module 源,`inputFiles` 默认空数组,须人工配置。
75
82
 
83
+ 过期的 service session 只有在进程身份明确不匹配时才允许由 `retire-stale` 移入
84
+ `runtime/retired-service-sessions/`;该动作保留原始回执且不终止进程。受管命令、
85
+ 环境会话和 fixback 的完整合同见 `execution-session-protocol.md`。
86
+
76
87
  ## knowledge maintenance-outbox(§8)
77
88
 
78
89
  归档 close 不再同步执行知识维护;它写一个 pending outbox 项即返回:
@@ -179,3 +190,15 @@ Harness skill 读取的项目级配置(不提交 git)。缺失时使用下
179
190
  | `knowledge.manualReview` | boolean | `false` | `true` 时 knowledge-ingest promote 等高价值操作需人工确认;`false` 时按 skill 默认策略 |
180
191
 
181
192
  读取顺序:`.harness/config/harness.json` → 缺失则默认值。plan 阶段 5 设计审批包须读取 `defaultWorktree` 作为 worktree 选项的推荐值。
193
+
194
+ ## 可恢复文件事务
195
+
196
+ schema v3 事务在本地 `transactions/<transaction-id>/` 保存 journal、before snapshot、staged payload、after manifest 和小型 status 投影。journal 固定 project identity、执行器版本、目标 Bundle identity、ownership manifest hash、plan hash 与 snapshot digest。
197
+
198
+ 未完成事务同时镜像到用户级恢复根:
199
+
200
+ ```text
201
+ ${HUNTER_HARNESS_RECOVERY_ROOT:-~/.hunter-harness/recovery}/<project-path-hash>/transactions/<transaction-id>/
202
+ ```
203
+
204
+ 因此项目内 `.harness` 局部丢失后,`status` 仍可只读发现恢复项。`resume` 仅在 plan/snapshot/staged digest 与已完成操作的当前文件状态全部匹配时继续 pending operations;任一不匹配均 fail closed。`rollback` 在写回 before snapshot 前重新校验 snapshot digest。事务提交或回滚成功后删除用户级镜像;本地 committed 事务仍按保留策略提供显式回滚。
@@ -11,6 +11,9 @@ Build Profile v3 用 `verificationGraph` 取代账本内的固定验证目标清
11
11
  - `requiredCoverage`:`incremental/module-am/module`;
12
12
  - `candidate`:是否为发布候选门禁;
13
13
  - `requiredCapabilities`:执行环境必须具备的能力。
14
+ - `resourceLocks`:目标独占或共享的数据库、端口、浏览器、容器等资源身份;
15
+ - `estimatedDurationSeconds`:供默认串行策略和进度显示使用,不作为虚构 ETA 的依据;
16
+ - `reusePolicy`:允许复用时必须匹配的产品、环境、命令与覆盖身份。
14
17
 
15
18
  `candidateTarget` 必须引用已声明目标。未知目标、未知依赖、循环依赖、命令缺失都 fail closed。
16
19
 
@@ -22,5 +25,8 @@ Build Profile v3 用 `verificationGraph` 取代账本内的固定验证目标清
22
25
  4. 未进入闭包的目标是 `omitted`,与“执行失败”或“因能力阻断”分开报告。
23
26
  5. 账本记录目标定义的规范化 identity;依赖、覆盖度或能力声明变化后,旧证据必须失效。
24
27
  6. 候选目标即使自身命令可运行,也必须等待所有依赖和能力满足。
28
+ 7. ready 目标按 `resourceLocks` 分 wave;锁相交的目标不得并行。预计 ≥60 秒且未声明锁的目标默认归入 `harness:unclassified-heavy` 串行队列。
29
+ 8. code freeze 后产品 identity 漂移必须返回 `FROZEN_IDENTITY_DRIFT`;禁止在旧候选上补跑后声称覆盖新候选。
30
+ 9. 每个 `RUN / REUSE / SKIP / BLOCKED` 决策都必须带稳定 `reasonCode` 和解释;`REUSE` 还必须绑定现有证据 identity。
25
31
 
26
32
  JSON 合同见 `contracts/build-profile-v3.schema.json`;通用选择器为 `@hunter-harness/core` 的 `selectVerificationTargets`。
@@ -70,6 +70,7 @@ if str(SCRIPTS_DIR) not in sys.path:
70
70
  sys.path.insert(0, str(SCRIPTS_DIR))
71
71
 
72
72
  import harness_events as he # noqa: E402
73
+ import harness_efficiency as heff # noqa: E402
73
74
  import harness_gate as hgate # noqa: E402
74
75
  import harness_ledger as hl # noqa: E402
75
76
  import harness_paths as hp # noqa: E402
@@ -3890,12 +3891,15 @@ def collect_summary_data(
3890
3891
  "retention",
3891
3892
  "archiveDurability",
3892
3893
  "remoteCost",
3894
+ "efficiency",
3893
3895
  "projection",
3894
3896
  ):
3895
3897
  if key in existing:
3896
3898
  data[key] = _deepcopy_json(existing[key])
3897
3899
  if not for_replay or not isinstance(data.get("remoteCost"), dict):
3898
3900
  data["remoteCost"] = remote_cost
3901
+ if not for_replay or not isinstance(data.get("efficiency"), dict):
3902
+ data["efficiency"] = heff.collect_efficiency_summary(change_dir)
3899
3903
 
3900
3904
  event_summary = he.build_summary(change_dir, events) if events else {
3901
3905
  "ok": True,