@hunter-harness/workflow-harness 0.2.29 → 0.2.31

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 (170) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +3 -3
  3. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +3 -3
  4. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +3 -3
  5. package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  6. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +3 -3
  7. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +6 -6
  8. package/harness/bundles/general/claude-code/harness-plan/checklist.md +10 -4
  9. package/harness/bundles/general/claude-code/harness-plan/reference.md +17 -17
  10. package/harness/bundles/general/claude-code/harness-review/SKILL.md +3 -3
  11. package/harness/bundles/general/claude-code/harness-run/SKILL.md +4 -4
  12. package/harness/bundles/general/claude-code/harness-run/checklist.md +2 -2
  13. package/harness/bundles/general/claude-code/harness-run/reference.md +3 -12
  14. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +3 -3
  15. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +30 -53
  16. package/harness/bundles/general/claude-code/harness-sync/reference.md +89 -142
  17. package/harness/bundles/general/claude-code/harness-test/SKILL.md +3 -3
  18. package/harness/bundles/general/claude-code/scripts/harness_change.py +189 -0
  19. package/harness/bundles/general/claude-code/scripts/harness_gate.py +97 -14
  20. package/harness/bundles/general/claude-code/scripts/harness_plan_finalize.py +364 -74
  21. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  22. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +3 -3
  23. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +3 -3
  24. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +3 -3
  25. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  26. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +3 -3
  27. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +6 -6
  28. package/harness/bundles/general/codebuddy/harness-plan/checklist.md +10 -4
  29. package/harness/bundles/general/codebuddy/harness-plan/reference.md +17 -17
  30. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +3 -3
  31. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +4 -4
  32. package/harness/bundles/general/codebuddy/harness-run/checklist.md +2 -2
  33. package/harness/bundles/general/codebuddy/harness-run/reference.md +3 -12
  34. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +3 -3
  35. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +32 -53
  36. package/harness/bundles/general/codebuddy/harness-sync/reference.md +89 -142
  37. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +3 -3
  38. package/harness/bundles/general/codebuddy/scripts/harness_change.py +189 -0
  39. package/harness/bundles/general/codebuddy/scripts/harness_gate.py +97 -14
  40. package/harness/bundles/general/codebuddy/scripts/harness_plan_finalize.py +364 -74
  41. package/harness/bundles/general/codex/.harness-build.json +1 -1
  42. package/harness/bundles/general/codex/harness-archive/SKILL.md +3 -3
  43. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +3 -3
  44. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +3 -3
  45. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  46. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +3 -3
  47. package/harness/bundles/general/codex/harness-plan/SKILL.md +6 -6
  48. package/harness/bundles/general/codex/harness-plan/checklist.md +10 -4
  49. package/harness/bundles/general/codex/harness-plan/reference.md +17 -17
  50. package/harness/bundles/general/codex/harness-review/SKILL.md +3 -3
  51. package/harness/bundles/general/codex/harness-run/SKILL.md +4 -4
  52. package/harness/bundles/general/codex/harness-run/checklist.md +2 -2
  53. package/harness/bundles/general/codex/harness-run/reference.md +3 -12
  54. package/harness/bundles/general/codex/harness-submit/SKILL.md +3 -3
  55. package/harness/bundles/general/codex/harness-sync/SKILL.md +32 -53
  56. package/harness/bundles/general/codex/harness-sync/reference.md +89 -142
  57. package/harness/bundles/general/codex/harness-test/SKILL.md +3 -3
  58. package/harness/bundles/general/codex/scripts/harness_change.py +189 -0
  59. package/harness/bundles/general/codex/scripts/harness_gate.py +97 -14
  60. package/harness/bundles/general/codex/scripts/harness_plan_finalize.py +364 -74
  61. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  62. package/harness/bundles/general/cursor/harness-archive/SKILL.md +3 -3
  63. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +3 -3
  64. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +3 -3
  65. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  66. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +3 -3
  67. package/harness/bundles/general/cursor/harness-plan/SKILL.md +6 -6
  68. package/harness/bundles/general/cursor/harness-plan/checklist.md +10 -4
  69. package/harness/bundles/general/cursor/harness-plan/reference.md +17 -17
  70. package/harness/bundles/general/cursor/harness-review/SKILL.md +3 -3
  71. package/harness/bundles/general/cursor/harness-run/SKILL.md +4 -4
  72. package/harness/bundles/general/cursor/harness-run/checklist.md +2 -2
  73. package/harness/bundles/general/cursor/harness-run/reference.md +3 -12
  74. package/harness/bundles/general/cursor/harness-submit/SKILL.md +3 -3
  75. package/harness/bundles/general/cursor/harness-sync/SKILL.md +32 -53
  76. package/harness/bundles/general/cursor/harness-sync/reference.md +89 -142
  77. package/harness/bundles/general/cursor/harness-test/SKILL.md +3 -3
  78. package/harness/bundles/general/cursor/scripts/harness_change.py +189 -0
  79. package/harness/bundles/general/cursor/scripts/harness_gate.py +97 -14
  80. package/harness/bundles/general/cursor/scripts/harness_plan_finalize.py +364 -74
  81. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  82. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +3 -3
  83. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +3 -3
  84. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +3 -3
  85. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +3 -3
  86. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  87. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +3 -3
  88. package/harness/bundles/java/claude-code/harness-package/SKILL.md +3 -3
  89. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +6 -6
  90. package/harness/bundles/java/claude-code/harness-plan/checklist.md +10 -4
  91. package/harness/bundles/java/claude-code/harness-plan/reference.md +17 -17
  92. package/harness/bundles/java/claude-code/harness-review/SKILL.md +3 -3
  93. package/harness/bundles/java/claude-code/harness-run/SKILL.md +4 -4
  94. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +3 -3
  95. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +30 -53
  96. package/harness/bundles/java/claude-code/harness-sync/reference.md +89 -142
  97. package/harness/bundles/java/claude-code/harness-test/SKILL.md +3 -3
  98. package/harness/bundles/java/claude-code/scripts/harness_change.py +189 -0
  99. package/harness/bundles/java/claude-code/scripts/harness_gate.py +97 -14
  100. package/harness/bundles/java/claude-code/scripts/harness_plan_finalize.py +364 -74
  101. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  102. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +3 -3
  103. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +3 -3
  104. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +3 -3
  105. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +3 -3
  106. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  107. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +3 -3
  108. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +3 -3
  109. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +6 -6
  110. package/harness/bundles/java/codebuddy/harness-plan/checklist.md +10 -4
  111. package/harness/bundles/java/codebuddy/harness-plan/reference.md +17 -17
  112. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +3 -3
  113. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +4 -4
  114. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +3 -3
  115. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +32 -53
  116. package/harness/bundles/java/codebuddy/harness-sync/reference.md +89 -142
  117. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +3 -3
  118. package/harness/bundles/java/codebuddy/scripts/harness_change.py +189 -0
  119. package/harness/bundles/java/codebuddy/scripts/harness_gate.py +97 -14
  120. package/harness/bundles/java/codebuddy/scripts/harness_plan_finalize.py +364 -74
  121. package/harness/bundles/java/codex/.harness-build.json +1 -1
  122. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +3 -3
  123. package/harness/bundles/java/codex/harness-archive/SKILL.md +3 -3
  124. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +3 -3
  125. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +3 -3
  126. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  127. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +3 -3
  128. package/harness/bundles/java/codex/harness-package/SKILL.md +3 -3
  129. package/harness/bundles/java/codex/harness-plan/SKILL.md +6 -6
  130. package/harness/bundles/java/codex/harness-plan/checklist.md +10 -4
  131. package/harness/bundles/java/codex/harness-plan/reference.md +17 -17
  132. package/harness/bundles/java/codex/harness-review/SKILL.md +3 -3
  133. package/harness/bundles/java/codex/harness-run/SKILL.md +4 -4
  134. package/harness/bundles/java/codex/harness-submit/SKILL.md +3 -3
  135. package/harness/bundles/java/codex/harness-sync/SKILL.md +32 -53
  136. package/harness/bundles/java/codex/harness-sync/reference.md +89 -142
  137. package/harness/bundles/java/codex/harness-test/SKILL.md +3 -3
  138. package/harness/bundles/java/codex/scripts/harness_change.py +189 -0
  139. package/harness/bundles/java/codex/scripts/harness_gate.py +97 -14
  140. package/harness/bundles/java/codex/scripts/harness_plan_finalize.py +364 -74
  141. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  142. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +3 -3
  143. package/harness/bundles/java/cursor/harness-archive/SKILL.md +3 -3
  144. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +3 -3
  145. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +3 -3
  146. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  147. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +3 -3
  148. package/harness/bundles/java/cursor/harness-package/SKILL.md +3 -3
  149. package/harness/bundles/java/cursor/harness-plan/SKILL.md +6 -6
  150. package/harness/bundles/java/cursor/harness-plan/checklist.md +10 -4
  151. package/harness/bundles/java/cursor/harness-plan/reference.md +17 -17
  152. package/harness/bundles/java/cursor/harness-review/SKILL.md +3 -3
  153. package/harness/bundles/java/cursor/harness-run/SKILL.md +4 -4
  154. package/harness/bundles/java/cursor/harness-submit/SKILL.md +3 -3
  155. package/harness/bundles/java/cursor/harness-sync/SKILL.md +32 -53
  156. package/harness/bundles/java/cursor/harness-sync/reference.md +89 -142
  157. package/harness/bundles/java/cursor/harness-test/SKILL.md +3 -3
  158. package/harness/bundles/java/cursor/scripts/harness_change.py +189 -0
  159. package/harness/bundles/java/cursor/scripts/harness_gate.py +97 -14
  160. package/harness/bundles/java/cursor/scripts/harness_plan_finalize.py +364 -74
  161. package/harness/manifests/general/claude-code.json +30 -21
  162. package/harness/manifests/general/codebuddy.json +30 -21
  163. package/harness/manifests/general/codex.json +30 -21
  164. package/harness/manifests/general/cursor.json +30 -21
  165. package/harness/manifests/java/claude-code.json +30 -21
  166. package/harness/manifests/java/codebuddy.json +30 -21
  167. package/harness/manifests/java/codex.json +30 -21
  168. package/harness/manifests/java/cursor.json +30 -21
  169. package/hunter-workflow-family.json +18 -2
  170. package/package.json +1 -1
@@ -2,5 +2,5 @@
2
2
  "schemaVersion": 1,
3
3
  "overlay": "none",
4
4
  "agent": "claude-code",
5
- "coreHash": "9a2ab44ad7a34065"
5
+ "coreHash": "33c3c012031041b2"
6
6
  }
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=9a2ab44ad7a34065; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=33c3c012031041b2; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-archive — 变更归档
25
25
 
26
26
  ## Purpose
@@ -225,12 +225,12 @@ git 命令通过 `powershell.exe -Command "..."` 执行;archive-meta.md 和 fi
225
225
  `events.ndjson` 为唯一事实源(schema_version 3,兼容读取 v1/v2;`note` 承载人类可读摘要);`logs/execution-log.md` 由 `harness_events.py` 渲染,**禁止用 Write/Edit 直接维护**。直接修改的内容会在 `phase.end` 或 finalize 时被完整重建覆盖,属于数据丢失;需要保留的详情必须进入事件 `note`。结构 → [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]]
226
226
 
227
227
  ```powershell
228
- python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --note "<触发指令>"
228
+ python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --run-id <phase-run-id> --attempt <n> --note "<触发指令>"
229
229
  ```
230
230
 
231
231
  > **脚本接线**:`harness_events.py append`;`harness_archive.py finalize`;`harness_preflight.py check`;`harness_ledger.py can-reuse`;`harness_service.py ensure/stop`(须 `--files`/`serviceStart.inputFiles`)。JSON 输出按 D13 护栏解读。
232
232
 
233
233
  > **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。
234
234
 
235
- 每次阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`;重试同一阶段时增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
235
+ 每个阶段的 `phase.start` 与对应 `phase.end` 必须复用同一 `--run-id` / `--attempt`;阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`。重试同一阶段时生成新的 run-id 并增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
236
236
  > 片段:logging · phase=`archive`
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=9a2ab44ad7a34065; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=33c3c012031041b2; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-codebase-map — 代码库地图
25
25
 
26
26
  ## Purpose
@@ -106,12 +106,12 @@ disallowed-tools:
106
106
  `events.ndjson` 为唯一事实源(schema_version 3,兼容读取 v1/v2;`note` 承载人类可读摘要);`logs/execution-log.md` 由 `harness_events.py` 渲染,**禁止用 Write/Edit 直接维护**。直接修改的内容会在 `phase.end` 或 finalize 时被完整重建覆盖,属于数据丢失;需要保留的详情必须进入事件 `note`。结构 → [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]]
107
107
 
108
108
  ```powershell
109
- python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --note "<触发指令>"
109
+ python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --run-id <phase-run-id> --attempt <n> --note "<触发指令>"
110
110
  ```
111
111
 
112
112
  > **脚本接线**:`harness_events.py append`;`harness_archive.py finalize`;`harness_preflight.py check`;`harness_ledger.py can-reuse`;`harness_service.py ensure/stop`(须 `--files`/`serviceStart.inputFiles`)。JSON 输出按 D13 护栏解读。
113
113
 
114
114
  > **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。
115
115
 
116
- 每次阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`;重试同一阶段时增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
116
+ 每个阶段的 `phase.start` 与对应 `phase.end` 必须复用同一 `--run-id` / `--attempt`;阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`。重试同一阶段时生成新的 run-id 并增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
117
117
  > 片段:logging · phase=`codebase-map`;默认写 reports,有未归档变更时另写 change events
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=9a2ab44ad7a34065; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=33c3c012031041b2; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-knowledge-ingest
25
25
 
26
26
  从 `.harness/archive/**/reports/final/summary-data.json` 抽取项目知识,生成并维护本地 `.harness/knowledge/` 索引。
@@ -255,12 +255,12 @@ powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' sync
255
255
  `events.ndjson` 为唯一事实源(schema_version 3,兼容读取 v1/v2;`note` 承载人类可读摘要);`logs/execution-log.md` 由 `harness_events.py` 渲染,**禁止用 Write/Edit 直接维护**。直接修改的内容会在 `phase.end` 或 finalize 时被完整重建覆盖,属于数据丢失;需要保留的详情必须进入事件 `note`。结构 → [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]]
256
256
 
257
257
  ```powershell
258
- python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --note "<触发指令>"
258
+ python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --run-id <phase-run-id> --attempt <n> --note "<触发指令>"
259
259
  ```
260
260
 
261
261
  > **脚本接线**:`harness_events.py append`;`harness_archive.py finalize`;`harness_preflight.py check`;`harness_ledger.py can-reuse`;`harness_service.py ensure/stop`(须 `--files`/`serviceStart.inputFiles`)。JSON 输出按 D13 护栏解读。
262
262
 
263
263
  > **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。
264
264
 
265
- 每次阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`;重试同一阶段时增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
265
+ 每个阶段的 `phase.start` 与对应 `phase.end` 必须复用同一 `--run-id` / `--attempt`;阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`。重试同一阶段时生成新的 run-id 并增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
266
266
  > 片段:logging · phase=`knowledge-ingest` · 默认控制台报告;变更上下文写 phase/decision/issue/artifact