@hunter-harness/workflow-harness 0.2.49 → 0.2.51

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 (234) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/README.md +4 -4
  3. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +11 -3
  4. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +6 -1
  5. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +45 -244
  6. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +41 -112
  7. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +9 -4
  8. package/harness/bundles/general/claude-code/harness-plan/checklist.md +2 -2
  9. package/harness/bundles/general/claude-code/harness-review/SKILL.md +7 -2
  10. package/harness/bundles/general/claude-code/harness-run/SKILL.md +8 -3
  11. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +7 -2
  12. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +12 -7
  13. package/harness/bundles/general/claude-code/harness-sync/reference.md +18 -11
  14. package/harness/bundles/general/claude-code/harness-test/SKILL.md +7 -2
  15. package/harness/bundles/general/claude-code/protocols/archive-report-protocol.md +5 -7
  16. package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +17 -11
  17. package/harness/bundles/general/claude-code/scripts/harness_archive.py +769 -191
  18. package/harness/bundles/general/claude-code/scripts/harness_events_sync.py +90 -12
  19. package/harness/bundles/general/claude-code/scripts/harness_gate.py +17 -0
  20. package/harness/bundles/general/claude-code/scripts/harness_profile.py +0 -1
  21. package/harness/bundles/general/claude-code/scripts/harness_state.py +3 -5
  22. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  23. package/harness/bundles/general/codebuddy/README.md +4 -4
  24. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +11 -3
  25. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +6 -1
  26. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +42 -230
  27. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +38 -98
  28. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +9 -4
  29. package/harness/bundles/general/codebuddy/harness-plan/checklist.md +2 -2
  30. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +7 -2
  31. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +8 -3
  32. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +7 -2
  33. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +13 -8
  34. package/harness/bundles/general/codebuddy/harness-sync/reference.md +18 -11
  35. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +7 -2
  36. package/harness/bundles/general/codebuddy/protocols/archive-report-protocol.md +5 -7
  37. package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +17 -11
  38. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +769 -191
  39. package/harness/bundles/general/codebuddy/scripts/harness_events_sync.py +90 -12
  40. package/harness/bundles/general/codebuddy/scripts/harness_gate.py +17 -0
  41. package/harness/bundles/general/codebuddy/scripts/harness_profile.py +0 -1
  42. package/harness/bundles/general/codebuddy/scripts/harness_state.py +3 -5
  43. package/harness/bundles/general/codex/.harness-build.json +1 -1
  44. package/harness/bundles/general/codex/README.md +4 -4
  45. package/harness/bundles/general/codex/harness-archive/SKILL.md +11 -3
  46. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +6 -1
  47. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +42 -230
  48. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +38 -98
  49. package/harness/bundles/general/codex/harness-plan/SKILL.md +9 -4
  50. package/harness/bundles/general/codex/harness-plan/checklist.md +2 -2
  51. package/harness/bundles/general/codex/harness-review/SKILL.md +7 -2
  52. package/harness/bundles/general/codex/harness-run/SKILL.md +8 -3
  53. package/harness/bundles/general/codex/harness-submit/SKILL.md +7 -2
  54. package/harness/bundles/general/codex/harness-sync/SKILL.md +13 -8
  55. package/harness/bundles/general/codex/harness-sync/reference.md +18 -11
  56. package/harness/bundles/general/codex/harness-test/SKILL.md +7 -2
  57. package/harness/bundles/general/codex/protocols/archive-report-protocol.md +5 -7
  58. package/harness/bundles/general/codex/protocols/state-layout-protocol.md +17 -11
  59. package/harness/bundles/general/codex/scripts/harness_archive.py +769 -191
  60. package/harness/bundles/general/codex/scripts/harness_events_sync.py +90 -12
  61. package/harness/bundles/general/codex/scripts/harness_gate.py +17 -0
  62. package/harness/bundles/general/codex/scripts/harness_profile.py +0 -1
  63. package/harness/bundles/general/codex/scripts/harness_state.py +3 -5
  64. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  65. package/harness/bundles/general/cursor/README.md +4 -4
  66. package/harness/bundles/general/cursor/harness-archive/SKILL.md +11 -3
  67. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +6 -1
  68. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +42 -230
  69. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +38 -98
  70. package/harness/bundles/general/cursor/harness-plan/SKILL.md +9 -4
  71. package/harness/bundles/general/cursor/harness-plan/checklist.md +2 -2
  72. package/harness/bundles/general/cursor/harness-review/SKILL.md +7 -2
  73. package/harness/bundles/general/cursor/harness-run/SKILL.md +8 -3
  74. package/harness/bundles/general/cursor/harness-submit/SKILL.md +7 -2
  75. package/harness/bundles/general/cursor/harness-sync/SKILL.md +13 -8
  76. package/harness/bundles/general/cursor/harness-sync/reference.md +18 -11
  77. package/harness/bundles/general/cursor/harness-test/SKILL.md +7 -2
  78. package/harness/bundles/general/cursor/protocols/archive-report-protocol.md +5 -7
  79. package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +17 -11
  80. package/harness/bundles/general/cursor/scripts/harness_archive.py +769 -191
  81. package/harness/bundles/general/cursor/scripts/harness_events_sync.py +90 -12
  82. package/harness/bundles/general/cursor/scripts/harness_gate.py +17 -0
  83. package/harness/bundles/general/cursor/scripts/harness_profile.py +0 -1
  84. package/harness/bundles/general/cursor/scripts/harness_state.py +3 -5
  85. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  86. package/harness/bundles/java/claude-code/README.md +4 -4
  87. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +7 -2
  88. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +11 -3
  89. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +6 -1
  90. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +45 -244
  91. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +41 -112
  92. package/harness/bundles/java/claude-code/harness-package/SKILL.md +7 -2
  93. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +9 -4
  94. package/harness/bundles/java/claude-code/harness-plan/checklist.md +2 -2
  95. package/harness/bundles/java/claude-code/harness-review/SKILL.md +7 -2
  96. package/harness/bundles/java/claude-code/harness-run/SKILL.md +8 -3
  97. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +7 -2
  98. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +12 -7
  99. package/harness/bundles/java/claude-code/harness-sync/reference.md +18 -11
  100. package/harness/bundles/java/claude-code/harness-test/SKILL.md +7 -2
  101. package/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +5 -7
  102. package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +17 -11
  103. package/harness/bundles/java/claude-code/scripts/harness_archive.py +769 -191
  104. package/harness/bundles/java/claude-code/scripts/harness_events_sync.py +90 -12
  105. package/harness/bundles/java/claude-code/scripts/harness_gate.py +17 -0
  106. package/harness/bundles/java/claude-code/scripts/harness_profile.py +0 -1
  107. package/harness/bundles/java/claude-code/scripts/harness_state.py +3 -5
  108. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  109. package/harness/bundles/java/codebuddy/README.md +4 -4
  110. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +7 -2
  111. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +11 -3
  112. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +6 -1
  113. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +42 -230
  114. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +38 -98
  115. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +7 -2
  116. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +9 -4
  117. package/harness/bundles/java/codebuddy/harness-plan/checklist.md +2 -2
  118. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +7 -2
  119. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +8 -3
  120. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +7 -2
  121. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +13 -8
  122. package/harness/bundles/java/codebuddy/harness-sync/reference.md +18 -11
  123. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +7 -2
  124. package/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +5 -7
  125. package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +17 -11
  126. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +769 -191
  127. package/harness/bundles/java/codebuddy/scripts/harness_events_sync.py +90 -12
  128. package/harness/bundles/java/codebuddy/scripts/harness_gate.py +17 -0
  129. package/harness/bundles/java/codebuddy/scripts/harness_profile.py +0 -1
  130. package/harness/bundles/java/codebuddy/scripts/harness_state.py +3 -5
  131. package/harness/bundles/java/codex/.harness-build.json +1 -1
  132. package/harness/bundles/java/codex/README.md +4 -4
  133. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +7 -2
  134. package/harness/bundles/java/codex/harness-archive/SKILL.md +11 -3
  135. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +6 -1
  136. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +42 -230
  137. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +38 -98
  138. package/harness/bundles/java/codex/harness-package/SKILL.md +7 -2
  139. package/harness/bundles/java/codex/harness-plan/SKILL.md +9 -4
  140. package/harness/bundles/java/codex/harness-plan/checklist.md +2 -2
  141. package/harness/bundles/java/codex/harness-review/SKILL.md +7 -2
  142. package/harness/bundles/java/codex/harness-run/SKILL.md +8 -3
  143. package/harness/bundles/java/codex/harness-submit/SKILL.md +7 -2
  144. package/harness/bundles/java/codex/harness-sync/SKILL.md +13 -8
  145. package/harness/bundles/java/codex/harness-sync/reference.md +18 -11
  146. package/harness/bundles/java/codex/harness-test/SKILL.md +7 -2
  147. package/harness/bundles/java/codex/protocols/archive-report-protocol.md +5 -7
  148. package/harness/bundles/java/codex/protocols/state-layout-protocol.md +17 -11
  149. package/harness/bundles/java/codex/scripts/harness_archive.py +769 -191
  150. package/harness/bundles/java/codex/scripts/harness_events_sync.py +90 -12
  151. package/harness/bundles/java/codex/scripts/harness_gate.py +17 -0
  152. package/harness/bundles/java/codex/scripts/harness_profile.py +0 -1
  153. package/harness/bundles/java/codex/scripts/harness_state.py +3 -5
  154. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  155. package/harness/bundles/java/cursor/README.md +4 -4
  156. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +7 -2
  157. package/harness/bundles/java/cursor/harness-archive/SKILL.md +11 -3
  158. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +6 -1
  159. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +42 -230
  160. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +38 -98
  161. package/harness/bundles/java/cursor/harness-package/SKILL.md +7 -2
  162. package/harness/bundles/java/cursor/harness-plan/SKILL.md +9 -4
  163. package/harness/bundles/java/cursor/harness-plan/checklist.md +2 -2
  164. package/harness/bundles/java/cursor/harness-review/SKILL.md +7 -2
  165. package/harness/bundles/java/cursor/harness-run/SKILL.md +8 -3
  166. package/harness/bundles/java/cursor/harness-submit/SKILL.md +7 -2
  167. package/harness/bundles/java/cursor/harness-sync/SKILL.md +13 -8
  168. package/harness/bundles/java/cursor/harness-sync/reference.md +18 -11
  169. package/harness/bundles/java/cursor/harness-test/SKILL.md +7 -2
  170. package/harness/bundles/java/cursor/protocols/archive-report-protocol.md +5 -7
  171. package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +17 -11
  172. package/harness/bundles/java/cursor/scripts/harness_archive.py +769 -191
  173. package/harness/bundles/java/cursor/scripts/harness_events_sync.py +90 -12
  174. package/harness/bundles/java/cursor/scripts/harness_gate.py +17 -0
  175. package/harness/bundles/java/cursor/scripts/harness_profile.py +0 -1
  176. package/harness/bundles/java/cursor/scripts/harness_state.py +3 -5
  177. package/harness/manifests/general/claude-code.json +23 -47
  178. package/harness/manifests/general/codebuddy.json +23 -47
  179. package/harness/manifests/general/codex.json +23 -47
  180. package/harness/manifests/general/cursor.json +23 -47
  181. package/harness/manifests/java/claude-code.json +25 -49
  182. package/harness/manifests/java/codebuddy.json +25 -49
  183. package/harness/manifests/java/codex.json +25 -49
  184. package/harness/manifests/java/cursor.json +25 -49
  185. package/hunter-workflow-family.json +4 -4
  186. package/package.json +1 -1
  187. package/harness/bundles/general/claude-code/harness-knowledge-ingest/design.md +0 -842
  188. package/harness/bundles/general/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  189. package/harness/bundles/general/claude-code/harness-knowledge-ingest/mcp-config.example.json +0 -10
  190. package/harness/bundles/general/claude-code/harness-knowledge-ingest/reference.md +0 -413
  191. package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  192. package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  193. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/design.md +0 -842
  194. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  195. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/mcp-config.example.json +0 -10
  196. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/reference.md +0 -413
  197. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  198. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  199. package/harness/bundles/general/codex/harness-knowledge-ingest/design.md +0 -842
  200. package/harness/bundles/general/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  201. package/harness/bundles/general/codex/harness-knowledge-ingest/mcp-config.example.json +0 -10
  202. package/harness/bundles/general/codex/harness-knowledge-ingest/reference.md +0 -413
  203. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  204. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  205. package/harness/bundles/general/cursor/harness-knowledge-ingest/design.md +0 -842
  206. package/harness/bundles/general/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  207. package/harness/bundles/general/cursor/harness-knowledge-ingest/mcp-config.example.json +0 -10
  208. package/harness/bundles/general/cursor/harness-knowledge-ingest/reference.md +0 -413
  209. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  210. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  211. package/harness/bundles/java/claude-code/harness-knowledge-ingest/design.md +0 -842
  212. package/harness/bundles/java/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  213. package/harness/bundles/java/claude-code/harness-knowledge-ingest/mcp-config.example.json +0 -10
  214. package/harness/bundles/java/claude-code/harness-knowledge-ingest/reference.md +0 -413
  215. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  216. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  217. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/design.md +0 -842
  218. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  219. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/mcp-config.example.json +0 -10
  220. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/reference.md +0 -413
  221. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  222. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  223. package/harness/bundles/java/codex/harness-knowledge-ingest/design.md +0 -842
  224. package/harness/bundles/java/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  225. package/harness/bundles/java/codex/harness-knowledge-ingest/mcp-config.example.json +0 -10
  226. package/harness/bundles/java/codex/harness-knowledge-ingest/reference.md +0 -413
  227. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  228. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
  229. package/harness/bundles/java/cursor/harness-knowledge-ingest/design.md +0 -842
  230. package/harness/bundles/java/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  231. package/harness/bundles/java/cursor/harness-knowledge-ingest/mcp-config.example.json +0 -10
  232. package/harness/bundles/java/cursor/harness-knowledge-ingest/reference.md +0 -413
  233. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
  234. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
@@ -22,7 +22,7 @@ disallowed-tools:
22
22
  - Bash(curl *)
23
23
  - Bash(codegraph *)
24
24
  ---
25
- <!-- generated by harness_deploy.py; core=0c4a64243d3f7bfb; overlay=java; agent=claude-code; do not edit -->
25
+ <!-- generated by harness_deploy.py; core=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
26
26
  # harness-review — 代码审查
27
27
 
28
28
  ## Purpose
@@ -56,7 +56,7 @@ disallowed-tools:
56
56
  6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
57
57
  7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
58
58
  8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
59
- 9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/knowledge/change/code 指纹,不再重复跑全量 `harness-sync`、知识重建或代码库扫描。只有对应 segment 变化或缺失时才定向刷新;快照不能替代源码读取和验证门禁。
59
+ 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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
60
60
 
61
61
  状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
62
62
  > 片段:read-protocol
@@ -125,6 +125,11 @@ review:
125
125
  - 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
126
126
  - 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
127
127
  - 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
128
+
129
+ ## 生成内容语言约定
130
+
131
+ - sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
132
+ - 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
128
133
  > 片段:p0-trust
129
134
 
130
135
  ## 关键规则(硬门禁速查)
@@ -22,7 +22,7 @@ disallowed-tools:
22
22
  - Bash(curl *)
23
23
  - Bash(codegraph *)
24
24
  ---
25
- <!-- generated by harness_deploy.py; core=0c4a64243d3f7bfb; overlay=java; agent=claude-code; do not edit -->
25
+ <!-- generated by harness_deploy.py; core=63cbdcb9833a5c07; overlay=java; 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/knowledge/change/code 指纹,不再重复跑全量 `harness-sync`、知识重建或代码库扫描。只有对应 segment 变化或缺失时才定向刷新;快照不能替代源码读取和验证门禁。
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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
71
71
 
72
72
  状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
73
73
  > 片段:read-protocol · run 必读文件优先级 → `reference.md` Step 0
@@ -78,7 +78,7 @@ disallowed-tools:
78
78
 
79
79
  ## Workflow 概要
80
80
 
81
- 0. 加载上下文:先 `harness_context.py prepare --phase run --executor <tool> [--change <id>] --json`,以返回的唯一 change/executionRoot/transition receipt 为准(多 active 缺参 → `ACTIVE_CHANGE_AMBIGUOUS`,禁止按 mtime 猜测);再 **`harness_context.py begin --phase run --change <id> --executor <tool> --json`** 校验 Plan artifact/hash/HEAD,读 spec/plan/detail/scenarios/ledger/run-task-status/worktree;`--fixback` 读 fixback → **`harness_gate.py begin --phase run --change <id>`**(claim + phase.start + identity;禁止手工 Write `events.ndjson` / 手工 `phase.end`)
81
+ 0. 加载上下文:先 `harness_context.py prepare --phase run --executor <tool> [--change <id>] --json`,以返回的唯一 change/executionRoot/transition receipt 为准(多 active 缺参 → `ACTIVE_CHANGE_AMBIGUOUS`,禁止按 mtime 猜测);再 **`harness_context.py begin --phase run --change <id> --executor <tool> --json`** 校验 Plan artifact/hash/HEAD,读 spec/plan/detail/scenarios/ledger/run-task-status/worktree;`--fixback` 读 fixback → **`harness_gate.py begin --phase run --change <id>`**(claim + phase.start + identity;禁止手工 Write `events.ndjson` / 手工 `phase.end`)。**C3 钩子**:`harness_gate.py begin` 在已连接平台时会 best-effort 调用 events-sync(注册 run / `running`);失败只告警,不阻断 begin。
82
82
  0.5. **测试基础设施探测**(先写 `CHECKING`,四项证据齐备后再结论)→ `reference.md` Step 0.5;进入 TDD 前执行 `harness_test_guard.py begin --project . --change-dir ".harness/changes/<cn>" --json`
83
83
  1. **变更簇 TDD** — `protocols.md` `run-tdd-protocol`;批量 RED/GREEN;按需 `change-cluster-review-protocol`(高风险 + reviewer 预检可用)
84
84
  2. 构建验证 + **仅**通过 `harness_ledger.py record` 写 ledger(禁止 Write/Edit `verification-ledger.json`);`diff-hash --change-dir` 纳入 ignored tests → `reference.md` Step 2c
@@ -102,6 +102,11 @@ disallowed-tools:
102
102
  - 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
103
103
  - 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
104
104
  - 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
105
+
106
+ ## 生成内容语言约定
107
+
108
+ - sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
109
+ - 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
105
110
  > 片段:p0-trust
106
111
 
107
112
  ## 关键规则(硬门禁速查)
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(awk *)
22
22
  - Bash(curl *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=0c4a64243d3f7bfb; overlay=java; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=63cbdcb9833a5c07; overlay=java; 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/knowledge/change/code 指纹,不再重复跑全量 `harness-sync`、知识重建或代码库扫描。只有对应 segment 变化或缺失时才定向刷新;快照不能替代源码读取和验证门禁。
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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
59
59
 
60
60
  状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
61
61
  > 片段:read-protocol
@@ -119,6 +119,11 @@ M7. **ledger + 收尾** — 经 `harness_ledger.py record` 写入 `mergeFinalHas
119
119
  - 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
120
120
  - 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
121
121
  - 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
122
+
123
+ ## 生成内容语言约定
124
+
125
+ - sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
126
+ - 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
122
127
  > 片段:p0-trust
123
128
 
124
129
  ## 关键规则(硬门禁速查)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: harness-sync
3
- description: "Use when the user asks to synchronize, refresh, or validate Harness metadata, adapters, knowledge, rules, instruction entrypoints, config origins, or CodeGraph status."
3
+ description: "Use when the user asks to synchronize, refresh, or validate Harness metadata, adapters, remote knowledge ownership, instruction entrypoints, config origins, or CodeGraph status."
4
4
  argument-hint: "项目路径或留空使用当前目录"
5
5
  effort: medium
6
6
  allowed-tools: [Read, Glob, Grep, Edit, Write, Bash(powershell.exe:*)]
@@ -19,12 +19,12 @@ disallowed-tools:
19
19
  - Bash(awk *)
20
20
  - Bash(curl *)
21
21
  ---
22
- <!-- generated by harness_deploy.py; core=0c4a64243d3f7bfb; overlay=java; agent=claude-code; do not edit -->
22
+ <!-- generated by harness_deploy.py; core=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
23
23
  # harness-sync
24
24
 
25
25
  ## Purpose
26
26
 
27
- 通过一个有界入口同步 Harness 投影、知识、公共规则和元数据,并输出可验证的组件收据。
27
+ 通过一个有界入口刷新 Harness Adapter 与元数据、检查远端知识职责和项目指令状态,并输出可验证的组件收据。`sync` 不直接改写 AGENTS/CLAUDE/CODEBUDDY 或规则;文档优化使用远端审计提案。
28
28
 
29
29
  ## Before running
30
30
 
@@ -39,7 +39,7 @@ disallowed-tools:
39
39
  npx hunter-harness sync --project <项目路径> --profile interactive --progress jsonl --json
40
40
  ```
41
41
 
42
- CLI 负责 Python runtime 解析、投影事务、knowledge、rules、map、指令图、配置来源、change 状态及 CodeGraph 证据汇总。禁止直接调用内部 Python 脚本,禁止使用固定 `HEAD~5`,禁止自动全量重建 CodeGraph。
42
+ CLI 负责 Python runtime 解析、Adapter 事务、远端知识职责、文档审计提示、map、指令图、配置来源、change 状态及 CodeGraph 证据汇总。禁止直接调用旧知识 Python 脚本,禁止使用固定 `HEAD~5`,禁止自动全量重建 CodeGraph。
43
43
 
44
44
  只读诊断使用 `--check`(`--dry-run` 为兼容别名);它不得写报告、receipt 或投影。
45
45
  长阶段的 heartbeat 写 stderr;stdout 只保留紧凑摘要。完整报告写入摘要中的
@@ -54,23 +54,28 @@ JSON 报告回显到对话。
54
54
  ## Interpret
55
55
 
56
56
  - `OK`:所有可验证组件通过。
57
- - `ADVISORY`:索引最新,但有待评审候选等非阻塞健康提示;退出码仍为 0
57
+ - `ADVISORY`:例如需要运行中文指令审计提案;退出码仍为 0,且 `sync` 本身没有改写文档。
58
58
  - `WARN`:存在过期、冲突、待评审或 `UNKNOWN` 证据;按 `reportPath` 中的 `nextAction` 处理。
59
59
  - `FAIL`:组件执行失败;不得宣称同步完成。
60
60
  - `BLOCKED`:runtime、项目状态或能力契约阻塞;先修复阻塞条件。
61
61
  - `UNKNOWN`:证据不足,不等于成功,也不触发无界重建。
62
62
 
63
- 非交互或 CI 使用 `--check --profile general --progress jsonl --json`,不得等待规则候选确认。交互式运行若报告规则待评审,再按 `reference.md` 的显式入口处理。
63
+ 非交互或 CI 使用 `--check --profile general --progress jsonl --json`。交互式运行若报告 `INSTRUCTION_AUDIT_REQUIRED`,运行 `hunter-harness instructions audit`;规则候选只进入提案,永不自动应用。
64
64
 
65
65
  ## Safety
66
66
 
67
- 同步不得修改 `.harness/state` 或 `.harness/cache` 的内部文件;只通过 CLI 事务写入。配置真源与生成投影存在漂移时只报告,不静默覆盖真源。change 清理先 dry-run,仅对已验证归档收据执行安全清理。
67
+ 同步不得直接修改项目指令文档或规则。配置真源与生成投影存在漂移时只报告,不静默覆盖真源。change 清理先 dry-run,仅对已验证归档收据执行安全清理。知识查询和 ingest 均为远端职责,不创建 `.harness/knowledge`。
68
68
 
69
69
  ## P0 执行可信度规则
70
70
 
71
71
  - 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
72
72
  - 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
73
73
  - 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
74
+
75
+ ## 生成内容语言约定
76
+
77
+ - sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
78
+ - 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
74
79
  > 片段:p0-trust
75
80
 
76
81
  ## 执行日志
@@ -29,7 +29,7 @@ CLI 按以下顺序解析 Python,并在详细报告中记录来源:
29
29
  5. `python3`
30
30
  6. `python`
31
31
 
32
- 所有探测都必须有超时。完全不可用时返回 `PYTHON_RUNTIME_UNAVAILABLE`,且不得进入 knowledge rules 阶段。
32
+ 所有探测都必须有超时。完全不可用时返回 `PYTHON_RUNTIME_UNAVAILABLE`,并跳过仍依赖 Python 的变更状态阶段;远端知识和指令审计不允许回退到本地 Python 实现。
33
33
 
34
34
  ## 3. 统一同步
35
35
 
@@ -84,9 +84,8 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
84
84
  |---|---|---|
85
85
  | capability | CLI 版本、必需能力 | 不匹配立即 `BLOCKED` |
86
86
  | adapter projection | 事务后的实际文件 hash | 使用 post-transaction 校验;partial refresh 不得把未选 adapter 标成 stale |
87
- | managed blocks | 全文件解析树 | 重复 ID、嵌套、闭合不匹配为结构错误 |
88
- | knowledge | manifest、entry 文件、SQLite ID 集合 | 三者不一致为 `FAIL`;进度与性能指标落报告 |
89
- | rules | 投影收据、冲突、待评审数 | 真实分歧只报告,不覆盖 |
87
+ | knowledge | 远端职责声明 | 固定报告 `remote-only`、`fallback=false`、`localIndex=false`;不运行本地 ingest |
88
+ | rules | 审计—提案—应用契约 | `sync` 只给出 `instructions audit` 下一步,不改写文档或自动应用候选 |
90
89
  | codebase map | manifest 文档清单、hash、生成时间 | 真实文件校验,不复用旧 display status |
91
90
  | instruction graph | 入口、include 边、环、主题可达性 | 缺失引用或循环为 `FAIL` |
92
91
  | config origins | canonical/projection 路径与 hash | 漂移 `WARN`,不静默覆盖 |
@@ -94,8 +93,7 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
94
93
  | CodeGraph | `codegraph status --json` 的 pending、数据库观察时间、watcher 可达性 | 输出 `CURRENT/PENDING/STALE/INDEX_PRESENT_UNVERIFIED/MISSING/UNKNOWN`;日志 mtime 只证明 watcher 活动,不证明索引完成;不自动全量 reindex |
95
94
 
96
95
  全局状态优先级:`BLOCKED` → `FAIL` → `WARN` → `ADVISORY` → `OK`。任一 `UNKNOWN`
97
- 至少使全局结果为 `WARN`。knowledge freshness health 分开:索引一致但仍有待裁决候选时
98
- 为 `ADVISORY`,不得误报为过期。
96
+ 至少使全局结果为 `WARN`。远端知识可用性由实际 query/upload 收据判断,`sync` 不伪造本地 freshness。
99
97
 
100
98
  ## 5. Git 与 CodeGraph
101
99
 
@@ -136,15 +134,23 @@ npx hunter-harness doctor --managed-blocks --json
136
134
 
137
135
  change cleanup 由同步报告提供具体动作。只允许已验证的 `ARCHIVED_LEFTOVER` 进入删除路径;`RECOVERABLE` 只能移入隔离区;`ORPHAN`/`INVALID` 保持原状并提示人工处理。
138
136
 
139
- ## 9. 规则候选
137
+ ## 9. 中文指令与规则提案
140
138
 
141
- 非交互 sync 只报告待评审数。用户主动要求评审时,先读取候选:
139
+ `sync` 只报告 `INSTRUCTION_AUDIT_REQUIRED`。需要优化时执行:
142
140
 
143
141
  ```powershell
144
- npx hunter-harness rules-review --json
142
+ npx hunter-harness instructions audit --json
145
143
  ```
146
144
 
147
- 公共规则变更仍需展示 evidence 和 diff,并由用户确认。应用后的 decision 必须绑定 candidate revision 与目标 hash;目标变化返回 `RULE_PATCH_STALE`,不得强制覆盖。
145
+ 服务端结合项目类型、现有文档、Codebase Map、近期变更总结和公开最佳实践生成中文提案。
146
+ 提案先保存到 `.harness/state/local/instruction-proposals/`,项目文件保持不变。审阅后显式执行:
147
+
148
+ ```powershell
149
+ npx hunter-harness instructions apply --proposal <proposal.json> --yes --json
150
+ ```
151
+
152
+ 应用必须校验基线 hash 并使用事务;文件在审计后变化则返回 `INSTRUCTION_PROPOSAL_STALE`。
153
+ 近期变更中的经验只形成 rule candidates,`instructions apply` 也不得自动写入这些候选。
148
154
 
149
155
  ## 10. 完成判定
150
156
 
@@ -153,6 +159,7 @@ npx hunter-harness rules-review --json
153
159
  - stdout 摘要与详细报告 hash 一致;
154
160
  - 没有 `FAIL` 或 `BLOCKED`;
155
161
  - 所有自动修复均有 post-transaction 证据;
156
- - knowledge manifest、文件、SQLite 集合一致;
162
+ - knowledge 组件明确为 remote-only,且未创建或刷新本地索引;
163
+ - 文档和规则组件未直接改写项目文件;
157
164
  - 未把 `UNKNOWN` 描述成已验证;
158
165
  - 第二次无输入变化的运行不产生投影 churn。
@@ -23,7 +23,7 @@ disallowed-tools:
23
23
  - Bash(node *)
24
24
  - Bash(codegraph *)
25
25
  ---
26
- <!-- generated by harness_deploy.py; core=0c4a64243d3f7bfb; overlay=java; agent=claude-code; do not edit -->
26
+ <!-- generated by harness_deploy.py; core=63cbdcb9833a5c07; overlay=java; 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/knowledge/change/code 指纹,不再重复跑全量 `harness-sync`、知识重建或代码库扫描。只有对应 segment 变化或缺失时才定向刷新;快照不能替代源码读取和验证门禁。
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` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
63
63
 
64
64
  状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
65
65
  > 片段:read-protocol
@@ -156,6 +156,11 @@ Runner 强制同项目单实例、低调度优先级、逐命令超时、正常
156
156
  - 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
157
157
  - 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
158
158
  - 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
159
+
160
+ ## 生成内容语言约定
161
+
162
+ - sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
163
+ - 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
159
164
  > 片段:p0-trust
160
165
 
161
166
  ## 关键规则(硬门禁速查)
@@ -173,20 +173,18 @@ python harness/scripts/harness_archive.py repair --archive-dir ".harness/archive
173
173
 
174
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 校验通过的版本提取条目。
175
175
 
176
- ## 归档与知识维护解耦(§8)
176
+ ## 归档包与服务端知识 ingest(§8)
177
177
 
178
178
  archive close 的破坏性事务只执行确定性 close:
179
179
 
180
180
  ```text
181
181
  status -> manifest -> move -> collect -> render -> validate -> compare
182
- -> maintenance outbox(pending) -> stop AI service -> return
182
+ -> 生成确定性核心 ZIP -> 上传并等待服务端持久化/ingest 收据 -> stop AI service -> return
183
183
  ```
184
184
 
185
- close **不再同步顺序启动四次** `harness_knowledge.py`(ingest/dedupe/auto-supersede/reverify-stale)。它写一个 `pending` outbox 项即返回,`knowledgeMaintenance=QUEUED`;写 outbox 失败时 `NOT_QUEUED`(warning,不回滚 archive,`finalStatus` 仍由验证事实决定,本次总状态 CONDITIONAL)。
186
-
187
- outbox 布局见 `state-layout-protocol.md`「knowledge maintenance-outbox」。`harness_knowledge.py maintain --project . --archive-id <id>` 单进程推进:claim pending/failed -> running -> 增量 ingest(含 in-memory near-dedupe,不再二次磁盘 dedupe)-> auto-supersede -> reverify-stale -> 导出残余 judge checklist -> completed(或 `completed_rules_pending_judge` 若 `pendingJudgements>0`)。失败 -> failed(attempts+1,可重试);completed 项幂等。`harness-sync` 启动时扫描 pending/failed outbox 并执行 maintain。
188
-
189
- **机械 maintain 不得假装完成语义裁决**:存在待裁决项(conflict / promote-candidate)时状态为 `completed_rules_pending_judge`、`pendingJudgements>0`、写 `pending-judgements-<archive-id>.json`,由模型层后续 `judge --apply` 处理;`manualReview=true` 时保留人工确认。
185
+ close 不再运行 `harness_knowledge.py`,也不写本地 outbox/index。服务端先保存原 ZIP,再安全
186
+ 解包发布核心文件并重建项目语义索引;客户端以 package hash 与 `knowledge_status` 作为收据。
187
+ 失败时本地归档保持有效,待上传 ZIP 保留供同包重试,不允许改走散文件 push 或本地索引。
190
188
 
191
189
  ## 最终状态
192
190
 
@@ -6,7 +6,7 @@ description: harness .harness 状态目录分层协议。用于减少根目录
6
6
 
7
7
  ## 升级与本地状态保护边界
8
8
 
9
- `.harness/archive/`、`.harness/changes/`、`.harness/knowledge/project-local/` 是 protected local roots。CLI init/configure/refresh/rules 操作前必须:
9
+ `.harness/archive/`、`.harness/changes/` 是 protected local roots。CLI init/configure/refresh/rules 操作前必须:
10
10
 
11
11
  1. 综合 project marker、adapter `.harness-build.json`、managed block、恢复事务和非空 `.harness` 判断 `absent / valid / partial / recovery-required`;
12
12
  2. 对 protected roots 记录文件数、目录数、字节数、Merkle root,以及 archive 首末 identity;
@@ -84,21 +84,27 @@ description: harness .harness 状态目录分层协议。用于减少根目录
84
84
  `runtime/retired-service-sessions/`;该动作保留原始回执且不终止进程。受管命令、
85
85
  环境会话和 fixback 的完整合同见 `execution-session-protocol.md`。
86
86
 
87
- ## knowledge maintenance-outbox(§8)
87
+ ## 归档上传重试状态(§8)
88
88
 
89
- 归档 close 不再同步执行知识维护;它写一个 pending outbox 项即返回:
89
+ 知识 ingest Hunter Platform 在接收归档 ZIP 后执行,本地不再创建 `.harness/knowledge`
90
+ 或 maintenance-outbox。尚未被服务端确认持久化的包保存在:
90
91
 
91
92
  ```text
92
- .harness/knowledge/maintenance-outbox/
93
- pending/<archive-id>.json # 待维护
94
- running/<archive-id>.json # maintain 正在处理
95
- completed/<archive-id>.json # 已完成(status=completed 或 completed_rules_pending_judge)
96
- failed/<archive-id>.json # 失败(attempts+1,可重试)
93
+ .harness/state/local/archive-packages/
94
+ <change-key>.zip # 确定性核心归档包
95
+ <change-key>.upload.json # 上传/失败收据(如存在)
97
96
  ```
98
97
 
99
- schema:`{schemaVersion, archiveId, archivePath, archiveManifestHash, status, attempts, createdAt, lastError, pendingJudgements?, completedAt?}`。
100
-
101
- `harness_knowledge.py maintain --project . --archive-id <id>` 单进程顺序:claim pending/failed -> running -> 增量 ingest(`build_index` 内含 in-memory near-dedupe,**不再二次磁盘 dedupe**)-> auto-supersede -> reverify-stale -> 导出残余 judge checklist -> running -> completed(或 `completed_rules_pending_judge` 若 `pendingJudgements>0`)。失败 -> failed(attempts+1,可重试)。completed 项重复 maintain 幂等。`harness-sync` 启动时扫描 pending/failed outbox 并执行 maintain。
98
+ ZIP 只包含 summary、spec、plans、archive-meta、change-context 和包 manifest。上传失败保留;
99
+ 每次 finalize 都先生成 ZIP 与对应回执,再按 `credentials.local.yaml` 或
100
+ `project.yaml` `server.url` + `server.token_env` 环境变量解析远端凭据。缺少凭据、
101
+ 网络失败、无效收据或知识状态为 `indexing`/`failed` 时均保留这两个按 change 命名的文件,
102
+ 因此可枚举 `*.upload.json` 独立重试,不会由后一次归档覆盖前一次。只有 CLI 已核对
103
+ package SHA-256,且服务端同时确认 `archive_status=durable` 与
104
+ `knowledge_status=ready` 时,才清理对应 ZIP 和回执。回执的 `uploadStatus` 为
105
+ `pending|failed|ready`,`reasonCode` 使用 `ARCHIVE_UPLOAD_*` 或
106
+ `ARCHIVE_KNOWLEDGE_*` 稳定错误码;`indexing` 必须映射为 `pending`,不得误报失败。
107
+ 远端知识查询失败不得创建本地 fallback。
102
108
 
103
109
  ## 读取兼容
104
110