@hunter-harness/workflow-harness 0.2.72 → 0.2.74

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 (206) 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 +1 -1
  4. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  5. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  6. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +14 -10
  7. package/harness/bundles/general/claude-code/harness-plan/checklist.md +49 -9
  8. package/harness/bundles/general/claude-code/harness-plan/reference.md +83 -33
  9. package/harness/bundles/general/claude-code/harness-pull/SKILL.md +1 -1
  10. package/harness/bundles/general/claude-code/harness-push/SKILL.md +1 -1
  11. package/harness/bundles/general/claude-code/harness-review/SKILL.md +3 -3
  12. package/harness/bundles/general/claude-code/harness-run/SKILL.md +6 -6
  13. package/harness/bundles/general/claude-code/harness-run/checklist.md +4 -1
  14. package/harness/bundles/general/claude-code/harness-run/reference.md +3 -3
  15. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +5 -4
  16. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  17. package/harness/bundles/general/claude-code/harness-test/SKILL.md +4 -4
  18. package/harness/bundles/general/claude-code/harness-test/checklist.md +2 -0
  19. package/harness/bundles/general/claude-code/scripts/harness_archive.py +82 -1
  20. package/harness/bundles/general/claude-code/scripts/harness_context.py +270 -0
  21. package/harness/bundles/general/claude-code/scripts/harness_gate.py +71 -2
  22. package/harness/bundles/general/claude-code/scripts/harness_ledger.py +25 -4
  23. package/harness/bundles/general/claude-code/scripts/harness_profile.py +45 -0
  24. package/harness/bundles/general/claude-code/scripts/harness_test_guard.py +8 -5
  25. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  26. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +3 -3
  27. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  28. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  29. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  30. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +14 -10
  31. package/harness/bundles/general/codebuddy/harness-plan/checklist.md +49 -9
  32. package/harness/bundles/general/codebuddy/harness-plan/reference.md +83 -33
  33. package/harness/bundles/general/codebuddy/harness-pull/SKILL.md +1 -1
  34. package/harness/bundles/general/codebuddy/harness-push/SKILL.md +1 -1
  35. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +3 -3
  36. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +6 -6
  37. package/harness/bundles/general/codebuddy/harness-run/checklist.md +4 -1
  38. package/harness/bundles/general/codebuddy/harness-run/reference.md +3 -3
  39. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +5 -4
  40. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  41. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +4 -4
  42. package/harness/bundles/general/codebuddy/harness-test/checklist.md +2 -0
  43. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +82 -1
  44. package/harness/bundles/general/codebuddy/scripts/harness_context.py +270 -0
  45. package/harness/bundles/general/codebuddy/scripts/harness_gate.py +71 -2
  46. package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +25 -4
  47. package/harness/bundles/general/codebuddy/scripts/harness_profile.py +45 -0
  48. package/harness/bundles/general/codebuddy/scripts/harness_test_guard.py +8 -5
  49. package/harness/bundles/general/codex/.harness-build.json +1 -1
  50. package/harness/bundles/general/codex/harness-archive/SKILL.md +3 -3
  51. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  52. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  53. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  54. package/harness/bundles/general/codex/harness-plan/SKILL.md +14 -10
  55. package/harness/bundles/general/codex/harness-plan/checklist.md +49 -9
  56. package/harness/bundles/general/codex/harness-plan/reference.md +83 -33
  57. package/harness/bundles/general/codex/harness-pull/SKILL.md +1 -1
  58. package/harness/bundles/general/codex/harness-push/SKILL.md +1 -1
  59. package/harness/bundles/general/codex/harness-review/SKILL.md +3 -3
  60. package/harness/bundles/general/codex/harness-run/SKILL.md +6 -6
  61. package/harness/bundles/general/codex/harness-run/checklist.md +4 -1
  62. package/harness/bundles/general/codex/harness-run/reference.md +3 -3
  63. package/harness/bundles/general/codex/harness-submit/SKILL.md +5 -4
  64. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  65. package/harness/bundles/general/codex/harness-test/SKILL.md +4 -4
  66. package/harness/bundles/general/codex/harness-test/checklist.md +2 -0
  67. package/harness/bundles/general/codex/scripts/harness_archive.py +82 -1
  68. package/harness/bundles/general/codex/scripts/harness_context.py +270 -0
  69. package/harness/bundles/general/codex/scripts/harness_gate.py +71 -2
  70. package/harness/bundles/general/codex/scripts/harness_ledger.py +25 -4
  71. package/harness/bundles/general/codex/scripts/harness_profile.py +45 -0
  72. package/harness/bundles/general/codex/scripts/harness_test_guard.py +8 -5
  73. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  74. package/harness/bundles/general/cursor/harness-archive/SKILL.md +3 -3
  75. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  76. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  77. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  78. package/harness/bundles/general/cursor/harness-plan/SKILL.md +14 -10
  79. package/harness/bundles/general/cursor/harness-plan/checklist.md +49 -9
  80. package/harness/bundles/general/cursor/harness-plan/reference.md +83 -33
  81. package/harness/bundles/general/cursor/harness-pull/SKILL.md +1 -1
  82. package/harness/bundles/general/cursor/harness-push/SKILL.md +1 -1
  83. package/harness/bundles/general/cursor/harness-review/SKILL.md +3 -3
  84. package/harness/bundles/general/cursor/harness-run/SKILL.md +6 -6
  85. package/harness/bundles/general/cursor/harness-run/checklist.md +4 -1
  86. package/harness/bundles/general/cursor/harness-run/reference.md +3 -3
  87. package/harness/bundles/general/cursor/harness-submit/SKILL.md +5 -4
  88. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  89. package/harness/bundles/general/cursor/harness-test/SKILL.md +4 -4
  90. package/harness/bundles/general/cursor/harness-test/checklist.md +2 -0
  91. package/harness/bundles/general/cursor/scripts/harness_archive.py +82 -1
  92. package/harness/bundles/general/cursor/scripts/harness_context.py +270 -0
  93. package/harness/bundles/general/cursor/scripts/harness_gate.py +71 -2
  94. package/harness/bundles/general/cursor/scripts/harness_ledger.py +25 -4
  95. package/harness/bundles/general/cursor/scripts/harness_profile.py +45 -0
  96. package/harness/bundles/general/cursor/scripts/harness_test_guard.py +8 -5
  97. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  98. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +3 -3
  99. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +3 -3
  100. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  101. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  102. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  103. package/harness/bundles/java/claude-code/harness-package/SKILL.md +3 -3
  104. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +14 -10
  105. package/harness/bundles/java/claude-code/harness-plan/checklist.md +49 -9
  106. package/harness/bundles/java/claude-code/harness-plan/reference.md +83 -33
  107. package/harness/bundles/java/claude-code/harness-pull/SKILL.md +1 -1
  108. package/harness/bundles/java/claude-code/harness-push/SKILL.md +1 -1
  109. package/harness/bundles/java/claude-code/harness-review/SKILL.md +3 -3
  110. package/harness/bundles/java/claude-code/harness-run/SKILL.md +6 -6
  111. package/harness/bundles/java/claude-code/harness-run/checklist.md +1 -1
  112. package/harness/bundles/java/claude-code/harness-run/reference.md +348 -348
  113. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +5 -4
  114. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  115. package/harness/bundles/java/claude-code/harness-test/SKILL.md +4 -4
  116. package/harness/bundles/java/claude-code/scripts/harness_archive.py +82 -1
  117. package/harness/bundles/java/claude-code/scripts/harness_context.py +270 -0
  118. package/harness/bundles/java/claude-code/scripts/harness_gate.py +71 -2
  119. package/harness/bundles/java/claude-code/scripts/harness_ledger.py +25 -4
  120. package/harness/bundles/java/claude-code/scripts/harness_profile.py +45 -0
  121. package/harness/bundles/java/claude-code/scripts/harness_test_guard.py +8 -5
  122. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  123. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +3 -3
  124. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +3 -3
  125. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  126. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  127. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  128. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +3 -3
  129. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +14 -10
  130. package/harness/bundles/java/codebuddy/harness-plan/checklist.md +49 -9
  131. package/harness/bundles/java/codebuddy/harness-plan/reference.md +83 -33
  132. package/harness/bundles/java/codebuddy/harness-pull/SKILL.md +1 -1
  133. package/harness/bundles/java/codebuddy/harness-push/SKILL.md +1 -1
  134. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +3 -3
  135. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +6 -6
  136. package/harness/bundles/java/codebuddy/harness-run/checklist.md +1 -1
  137. package/harness/bundles/java/codebuddy/harness-run/reference.md +348 -348
  138. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +5 -4
  139. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  140. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +4 -4
  141. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +82 -1
  142. package/harness/bundles/java/codebuddy/scripts/harness_context.py +270 -0
  143. package/harness/bundles/java/codebuddy/scripts/harness_gate.py +71 -2
  144. package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +25 -4
  145. package/harness/bundles/java/codebuddy/scripts/harness_profile.py +45 -0
  146. package/harness/bundles/java/codebuddy/scripts/harness_test_guard.py +8 -5
  147. package/harness/bundles/java/codex/.harness-build.json +1 -1
  148. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +3 -3
  149. package/harness/bundles/java/codex/harness-archive/SKILL.md +3 -3
  150. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  151. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  152. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  153. package/harness/bundles/java/codex/harness-package/SKILL.md +3 -3
  154. package/harness/bundles/java/codex/harness-plan/SKILL.md +14 -10
  155. package/harness/bundles/java/codex/harness-plan/checklist.md +49 -9
  156. package/harness/bundles/java/codex/harness-plan/reference.md +83 -33
  157. package/harness/bundles/java/codex/harness-pull/SKILL.md +1 -1
  158. package/harness/bundles/java/codex/harness-push/SKILL.md +1 -1
  159. package/harness/bundles/java/codex/harness-review/SKILL.md +3 -3
  160. package/harness/bundles/java/codex/harness-run/SKILL.md +6 -6
  161. package/harness/bundles/java/codex/harness-run/checklist.md +1 -1
  162. package/harness/bundles/java/codex/harness-run/reference.md +348 -348
  163. package/harness/bundles/java/codex/harness-submit/SKILL.md +5 -4
  164. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  165. package/harness/bundles/java/codex/harness-test/SKILL.md +4 -4
  166. package/harness/bundles/java/codex/scripts/harness_archive.py +82 -1
  167. package/harness/bundles/java/codex/scripts/harness_context.py +270 -0
  168. package/harness/bundles/java/codex/scripts/harness_gate.py +71 -2
  169. package/harness/bundles/java/codex/scripts/harness_ledger.py +25 -4
  170. package/harness/bundles/java/codex/scripts/harness_profile.py +45 -0
  171. package/harness/bundles/java/codex/scripts/harness_test_guard.py +8 -5
  172. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  173. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +3 -3
  174. package/harness/bundles/java/cursor/harness-archive/SKILL.md +3 -3
  175. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  176. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  177. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  178. package/harness/bundles/java/cursor/harness-package/SKILL.md +3 -3
  179. package/harness/bundles/java/cursor/harness-plan/SKILL.md +14 -10
  180. package/harness/bundles/java/cursor/harness-plan/checklist.md +49 -9
  181. package/harness/bundles/java/cursor/harness-plan/reference.md +83 -33
  182. package/harness/bundles/java/cursor/harness-pull/SKILL.md +1 -1
  183. package/harness/bundles/java/cursor/harness-push/SKILL.md +1 -1
  184. package/harness/bundles/java/cursor/harness-review/SKILL.md +3 -3
  185. package/harness/bundles/java/cursor/harness-run/SKILL.md +6 -6
  186. package/harness/bundles/java/cursor/harness-run/checklist.md +1 -1
  187. package/harness/bundles/java/cursor/harness-run/reference.md +348 -348
  188. package/harness/bundles/java/cursor/harness-submit/SKILL.md +5 -4
  189. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  190. package/harness/bundles/java/cursor/harness-test/SKILL.md +4 -4
  191. package/harness/bundles/java/cursor/scripts/harness_archive.py +82 -1
  192. package/harness/bundles/java/cursor/scripts/harness_context.py +270 -0
  193. package/harness/bundles/java/cursor/scripts/harness_gate.py +71 -2
  194. package/harness/bundles/java/cursor/scripts/harness_ledger.py +25 -4
  195. package/harness/bundles/java/cursor/scripts/harness_profile.py +45 -0
  196. package/harness/bundles/java/cursor/scripts/harness_test_guard.py +8 -5
  197. package/harness/manifests/general/claude-code.json +26 -26
  198. package/harness/manifests/general/codebuddy.json +26 -26
  199. package/harness/manifests/general/codex.json +26 -26
  200. package/harness/manifests/general/cursor.json +26 -26
  201. package/harness/manifests/java/claude-code.json +27 -27
  202. package/harness/manifests/java/codebuddy.json +27 -27
  203. package/harness/manifests/java/codex.json +27 -27
  204. package/harness/manifests/java/cursor.json +27 -27
  205. package/hunter-workflow-family.json +5 -5
  206. package/package.json +1 -1
@@ -3,7 +3,7 @@ name: harness-push
3
3
  description: 上传本地配置/规则/架构/指令(及显式归档)到 Hunter Platform。仅当用户显式调用 /harness-push
4
4
  或明确说'上传到平台'时使用;不得因存在本地修改就自动触发。
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=49a4943b301fe1fd; overlay=java; agent=codebuddy; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=f432924cb623923d; overlay=java; agent=codebuddy; do not edit -->
7
7
  # harness-push — 上传到 Hunter Platform
8
8
 
9
9
  ## Purpose
@@ -4,7 +4,7 @@ description: 6维度代码审查(架构/安全/规范/兼容/测试/性能)
4
4
  .harness/context-index.json)和测试场景表,在隔离上下文运行。仅当用户显式调用 /harness-review 时使用;不得在
5
5
  test 结束后自动接续执行。
6
6
  ---
7
- <!-- generated by harness_deploy.py; core=49a4943b301fe1fd; overlay=java; agent=codebuddy; do not edit -->
7
+ <!-- generated by harness_deploy.py; core=f432924cb623923d; overlay=java; agent=codebuddy; do not edit -->
8
8
  # harness-review — 代码审查
9
9
 
10
10
  ## Purpose
@@ -31,9 +31,9 @@ description: 6维度代码审查(架构/安全/规范/兼容/测试/性能)
31
31
  ## 统一读取协议
32
32
 
33
33
  1. **`.harness/changes/<change-name>/` 是唯一真相源** — 所有输入从该目录读取,产物写入对应子目录
34
- 2. **change-name 优先从 frontmatter 读取** — `spec/*-design.md`、`plans/*-plan.md` 的 YAML `change-name`
34
+ 2. **change-name 优先从 frontmatter 读取** — `plans/*-design.md`、`spec/*-design.md`、`plans/*-plan.md` 的 YAML `change-name`
35
35
  3. **frontmatter 缺失时兼容旧格式** — 从路径推断,标记 `🟡 legacy-plan`,不失败
36
- 4. **spec** — 设计真相源:`spec/<change>-design.md`
36
+ 4. **design** — 设计真相源按序取第一个存在的:`plans/<change>-design.md`(v2 发布产物,哈希绑定)→ `spec/<change>-design.md`(legacy 手写)。两份**同时存在**时以 `plans/` 为准,并记 `🟡 WARN 设计文档双份`——v2 发布的那份才受完整性门禁保护,读手写的那份等于绕过校验
37
37
  5. **plan** — 任务真相源:`plans/<change>-plan.md`
38
38
  6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
39
39
  7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
@@ -3,7 +3,7 @@ name: harness-run
3
3
  description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编译验证),逐变更簇实现计划中的任务。仅当用户显式调用
4
4
  /harness-run 时使用;不得因用户提到编码/实现就自动触发,也不得被其他阶段 skill 自动接续。
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=49a4943b301fe1fd; overlay=java; agent=codebuddy; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=f432924cb623923d; overlay=java; agent=codebuddy; do not edit -->
7
7
  # harness-run — 需求编码
8
8
 
9
9
  ## Purpose
@@ -18,7 +18,7 @@ description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编
18
18
 
19
19
  ## 前置条件
20
20
 
21
- - `spec/*-design.md`、`plans/*-plan.md`(含 frontmatter)存在且已审批
21
+ - 设计文档(`plans/*-design.md` 优先,回退 `spec/*-design.md`)与 `plans/*-plan.md`(含 frontmatter)存在且已审批
22
22
  - 读 `meta/worktree.json`:`requested=true` 时 worktree 须存在或 run 负责创建
23
23
 
24
24
  ## Worktree 门禁
@@ -41,9 +41,9 @@ description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编
41
41
  ## 统一读取协议
42
42
 
43
43
  1. **`.harness/changes/<change-name>/` 是唯一真相源** — 所有输入从该目录读取,产物写入对应子目录
44
- 2. **change-name 优先从 frontmatter 读取** — `spec/*-design.md`、`plans/*-plan.md` 的 YAML `change-name`
44
+ 2. **change-name 优先从 frontmatter 读取** — `plans/*-design.md`、`spec/*-design.md`、`plans/*-plan.md` 的 YAML `change-name`
45
45
  3. **frontmatter 缺失时兼容旧格式** — 从路径推断,标记 `🟡 legacy-plan`,不失败
46
- 4. **spec** — 设计真相源:`spec/<change>-design.md`
46
+ 4. **design** — 设计真相源按序取第一个存在的:`plans/<change>-design.md`(v2 发布产物,哈希绑定)→ `spec/<change>-design.md`(legacy 手写)。两份**同时存在**时以 `plans/` 为准,并记 `🟡 WARN 设计文档双份`——v2 发布的那份才受完整性门禁保护,读手写的那份等于绕过校验
47
47
  5. **plan** — 任务真相源:`plans/<change>-plan.md`
48
48
  6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
49
49
  7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
@@ -59,10 +59,10 @@ description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编
59
59
 
60
60
  ## Workflow 概要
61
61
 
62
- 0. 加载上下文:普通 Run 先 `harness_context.py prepare --phase run --executor <tool> [--change <id>] --json`,再 **`harness_context.py begin --phase run --change <id> --executor <tool> --json`** 校验交接,最后运行 **`harness_gate.py begin --phase run --change <id>`**。`harness_gate.py` 会从当前已安装适配器自动识别 skills root;只有执行复制到别处的脚本时才显式传 `--skills-root`。`--fixback` 不得拼装这些底层步骤,必须只调用一次 `harness_fixback.py launch-review --project . --change <id> --change-dir <change-dir> --executor <tool> --skills-root <skills-root> --product-identity <当前产品身份> --json`:该命令会先筛选结构化评审项,再原子选择 Fixback 分支、确认上下文、取得 Run 门禁并创建已填充批次。返回 `FIXBACK_NOTHING_TO_APPLY` 时直接报告“本轮评审没有需要执行的代码修复”并停止;返回阻塞码时按 `recoveryAction` 停止,不搜索实现、不试探其他参数、不创建空批次。禁止手写 `events.ndjson` / `phase.end`。已连接平台时 begin 会 best-effort 补传事件,失败只告警。
62
+ 0. 加载上下文:普通 Run 先 `harness_context.py prepare --project . --change <id> --phase run --executor <tool> --json`(`--project` 必填,漏了直接 argparse 报错),再 **`harness_context.py begin --project . --change <id> --phase run --executor <tool> --json`** 校验交接,最后运行 **`harness_gate.py begin --phase run --change <id>`**。<br>**交接凭证不必手工补**:v2 计划的 `plan finalize` 不写 context 事务,`prepare` 会在检测到 committed 的 `meta/publication-journals/*.json` 时自动补录 `plan → run` 凭证(凭证带 `bootstrapSource=plan_publication_journal` 留痕)。仍报 `HANDOFF_REQUIRED`/`LEGACY_BOOTSTRAP_REQUIRED` 说明**没有**这份发布证据——回到 plan 阶段确认发布是否真的完成,**不得**自己拼 `classify + configure-plan + close` 造凭证。`harness_gate.py` 会从当前已安装适配器自动识别 skills root;只有执行复制到别处的脚本时才显式传 `--skills-root`。`--fixback` 不得拼装这些底层步骤,必须只调用一次 `harness_fixback.py launch-review --project . --change <id> --change-dir <change-dir> --executor <tool> --skills-root <skills-root> --product-identity <当前产品身份> --json`:该命令会先筛选结构化评审项,再原子选择 Fixback 分支、确认上下文、取得 Run 门禁并创建已填充批次。返回 `FIXBACK_NOTHING_TO_APPLY` 时直接报告“本轮评审没有需要执行的代码修复”并停止;返回阻塞码时按 `recoveryAction` 停止,不搜索实现、不试探其他参数、不创建空批次。禁止手写 `events.ndjson` / `phase.end`。已连接平台时 begin 会 best-effort 补传事件,失败只告警。
63
63
  0.5. **测试基础设施探测**(先写 `CHECKING`,四项证据齐备后再结论)→ `reference.md` Step 0.5;测试基线已由上一步 gate begin 内部建立,不得再次执行 guard begin
64
64
  1. **变更簇 TDD** — `protocols.md` `run-tdd-protocol`;批量 RED/GREEN;按需 `change-cluster-review-protocol`(高风险 + reviewer 预检可用)
65
- 2. 构建验证 + **仅**通过 `harness_ledger.py record` 写 ledger(禁止 Write/Edit `verification-ledger.json`);若本阶段创建/删除了清单、锁文件、源码根或改变技术栈,最后一次产品编辑后、写账本与关门前必须执行 `harness_preflight.py detect --project . --json` 刷新 build profile。`record --project . --profile-input <key>` 会对缺失/陈旧 profile 自动检测并从同一 target 推导 scope、coverage、规范命令和输入闭包;不得再手填另一套身份。`diff-hash --change-dir` 纳入 ignored tests → `reference.md` Step 2c
65
+ 2. 构建验证 + **仅**通过 `harness_ledger.py record` 写 ledger(禁止 Write/Edit `verification-ledger.json`);若本阶段创建/删除了清单、锁文件、源码根或改变技术栈,最后一次产品编辑后、写账本与关门前必须执行 `harness_preflight.py detect --project . --json` 刷新 build profile。`record --project . --profile-input <key>` 会对缺失/陈旧 profile 自动检测并从同一 target 推导 scope、coverage、规范命令和输入闭包;不得再手填另一套身份。detect 在嵌套/多组件仓库返回 `DETECTION_AMBIGUOUS` 时,响应里的 `profileTemplate` 就是可填骨架(已含 defaultsFingerprint、excludedRoots 默认集与 commands 条目形状),按 `hint` 填好写入 `.harness/config/build-profile.json` 即可,**不要去反读 `harness_profile.py` 源码凑结构**。`diff-hash --change-dir` 纳入 ignored tests → `reference.md` Step 2c
66
66
  3. **场景覆盖检查**(场景表映射,禁止用用例数冒充场景数)
67
67
  4. **关门检查**(10 项)→ 只执行一次 `harness_gate.py close`;`--to-phase` 必须取返回的 `nextPhases` 或 `plannedPhases` 中 run 的真实后继,禁止写死 test。该命令内部关闭 test guard、写 `phase.end`、释放租约、写 handoff 并补传事件;不得再单独调用 test-guard/context close。失败时按结构化 `recoveryAction` 原样重试,已完成步骤幂等复用。
68
68
 
@@ -24,7 +24,7 @@
24
24
  - [ ] 读取并执行 `worktree.json`:如果 `requested=true` 必须创建/切换 worktree,创建失败则停止或询问用户改为主目录;禁止静默降级
25
25
  - [ ] **读取计划文件(主任务源)**:`.harness/changes/<change>/plans/<change>-plan.md` — 获取任务列表和依赖关系
26
26
  - [ ] **读取详细计划(补充参考)**:`.harness/changes/<change>/plans/<change>-implementation-detail.md`(如存在)
27
- - [ ] **读取设计文档**:`.harness/changes/<change>/spec/<change>-design.md` 获取核心设计决策和不变项
27
+ - [ ] **读取设计文档**:`.harness/changes/<change>/plans/<change>-design.md`(v2);不存在时回退 `spec/<change>-design.md`(legacy)— 获取核心设计决策和不变项
28
28
  - [ ] **读取测试场景表**:`.harness/changes/<change>/plans/<change>-test-scenarios.md` — 获取与当前任务相关的测试场景
29
29
  - [ ] **读取验证账本**:通过共享状态目录解析器定位 change,再读取 `evidence/verification-ledger.json`(兼容旧路径)— 复用已有 compile/unitTest 结果
30
30
  - [ ] **读取任务状态**:`.harness/changes/<change>/run-task-status.md`(如存在)— 恢复上次运行状态