@hunter-harness/workflow-harness 0.2.11 → 0.2.13

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 (250) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/contracts/ci-metrics.schema.json +36 -0
  3. package/harness/bundles/general/claude-code/contracts/workflow-policy.json +30 -0
  4. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
  5. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  6. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  7. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  8. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +4 -4
  9. package/harness/bundles/general/claude-code/harness-plan/checklist.md +6 -0
  10. package/harness/bundles/general/claude-code/harness-plan/reference.md +7 -2
  11. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
  13. package/harness/bundles/general/claude-code/harness-run/checklist.md +3 -2
  14. package/harness/bundles/general/claude-code/harness-run/reference.md +6 -4
  15. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  16. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +2 -2
  17. package/harness/bundles/general/claude-code/harness-sync/reference.md +5 -4
  18. package/harness/bundles/general/claude-code/harness-test/SKILL.md +1 -1
  19. package/harness/bundles/general/claude-code/scripts/harness_archive.py +282 -120
  20. package/harness/bundles/general/claude-code/scripts/harness_events.py +400 -24
  21. package/harness/bundles/general/claude-code/scripts/harness_gate.py +585 -21
  22. package/harness/bundles/general/claude-code/scripts/harness_integration.py +403 -18
  23. package/harness/bundles/general/claude-code/scripts/harness_ledger.py +225 -29
  24. package/harness/bundles/general/claude-code/scripts/harness_phase.py +926 -0
  25. package/harness/bundles/general/claude-code/scripts/harness_plan_finalize.py +361 -0
  26. package/harness/bundles/general/claude-code/scripts/harness_profile.py +50 -0
  27. package/harness/bundles/general/claude-code/scripts/harness_runtime.py +248 -0
  28. package/harness/bundles/general/claude-code/scripts/harness_state.py +15 -2
  29. package/harness/bundles/general/claude-code/scripts/harness_test_guard.py +188 -0
  30. package/harness/bundles/general/claude-code/scripts/harness_workflow_policy.py +19 -0
  31. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  32. package/harness/bundles/general/codebuddy/contracts/ci-metrics.schema.json +36 -0
  33. package/harness/bundles/general/codebuddy/contracts/workflow-policy.json +30 -0
  34. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  35. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  36. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  37. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  38. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +4 -4
  39. package/harness/bundles/general/codebuddy/harness-plan/checklist.md +6 -0
  40. package/harness/bundles/general/codebuddy/harness-plan/reference.md +7 -2
  41. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  42. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
  43. package/harness/bundles/general/codebuddy/harness-run/checklist.md +3 -2
  44. package/harness/bundles/general/codebuddy/harness-run/reference.md +6 -4
  45. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  46. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +2 -2
  47. package/harness/bundles/general/codebuddy/harness-sync/reference.md +5 -4
  48. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +1 -1
  49. package/harness/bundles/general/codebuddy/scripts/harness_archive.py +282 -120
  50. package/harness/bundles/general/codebuddy/scripts/harness_events.py +400 -24
  51. package/harness/bundles/general/codebuddy/scripts/harness_gate.py +585 -21
  52. package/harness/bundles/general/codebuddy/scripts/harness_integration.py +403 -18
  53. package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +225 -29
  54. package/harness/bundles/general/codebuddy/scripts/harness_phase.py +926 -0
  55. package/harness/bundles/general/codebuddy/scripts/harness_plan_finalize.py +361 -0
  56. package/harness/bundles/general/codebuddy/scripts/harness_profile.py +50 -0
  57. package/harness/bundles/general/codebuddy/scripts/harness_runtime.py +248 -0
  58. package/harness/bundles/general/codebuddy/scripts/harness_state.py +15 -2
  59. package/harness/bundles/general/codebuddy/scripts/harness_test_guard.py +188 -0
  60. package/harness/bundles/general/codebuddy/scripts/harness_workflow_policy.py +19 -0
  61. package/harness/bundles/general/codex/.harness-build.json +1 -1
  62. package/harness/bundles/general/codex/contracts/ci-metrics.schema.json +36 -0
  63. package/harness/bundles/general/codex/contracts/workflow-policy.json +30 -0
  64. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  65. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  66. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  67. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  68. package/harness/bundles/general/codex/harness-plan/SKILL.md +4 -4
  69. package/harness/bundles/general/codex/harness-plan/checklist.md +6 -0
  70. package/harness/bundles/general/codex/harness-plan/reference.md +7 -2
  71. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  72. package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
  73. package/harness/bundles/general/codex/harness-run/checklist.md +3 -2
  74. package/harness/bundles/general/codex/harness-run/reference.md +6 -4
  75. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  76. package/harness/bundles/general/codex/harness-sync/SKILL.md +2 -2
  77. package/harness/bundles/general/codex/harness-sync/reference.md +5 -4
  78. package/harness/bundles/general/codex/harness-test/SKILL.md +1 -1
  79. package/harness/bundles/general/codex/scripts/harness_archive.py +282 -120
  80. package/harness/bundles/general/codex/scripts/harness_events.py +400 -24
  81. package/harness/bundles/general/codex/scripts/harness_gate.py +585 -21
  82. package/harness/bundles/general/codex/scripts/harness_integration.py +403 -18
  83. package/harness/bundles/general/codex/scripts/harness_ledger.py +225 -29
  84. package/harness/bundles/general/codex/scripts/harness_phase.py +926 -0
  85. package/harness/bundles/general/codex/scripts/harness_plan_finalize.py +361 -0
  86. package/harness/bundles/general/codex/scripts/harness_profile.py +50 -0
  87. package/harness/bundles/general/codex/scripts/harness_runtime.py +248 -0
  88. package/harness/bundles/general/codex/scripts/harness_state.py +15 -2
  89. package/harness/bundles/general/codex/scripts/harness_test_guard.py +188 -0
  90. package/harness/bundles/general/codex/scripts/harness_workflow_policy.py +19 -0
  91. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  92. package/harness/bundles/general/cursor/contracts/ci-metrics.schema.json +36 -0
  93. package/harness/bundles/general/cursor/contracts/workflow-policy.json +30 -0
  94. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  95. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  96. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  97. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  98. package/harness/bundles/general/cursor/harness-plan/SKILL.md +4 -4
  99. package/harness/bundles/general/cursor/harness-plan/checklist.md +6 -0
  100. package/harness/bundles/general/cursor/harness-plan/reference.md +7 -2
  101. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  102. package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
  103. package/harness/bundles/general/cursor/harness-run/checklist.md +3 -2
  104. package/harness/bundles/general/cursor/harness-run/reference.md +6 -4
  105. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  106. package/harness/bundles/general/cursor/harness-sync/SKILL.md +2 -2
  107. package/harness/bundles/general/cursor/harness-sync/reference.md +5 -4
  108. package/harness/bundles/general/cursor/harness-test/SKILL.md +1 -1
  109. package/harness/bundles/general/cursor/scripts/harness_archive.py +282 -120
  110. package/harness/bundles/general/cursor/scripts/harness_events.py +400 -24
  111. package/harness/bundles/general/cursor/scripts/harness_gate.py +585 -21
  112. package/harness/bundles/general/cursor/scripts/harness_integration.py +403 -18
  113. package/harness/bundles/general/cursor/scripts/harness_ledger.py +225 -29
  114. package/harness/bundles/general/cursor/scripts/harness_phase.py +926 -0
  115. package/harness/bundles/general/cursor/scripts/harness_plan_finalize.py +361 -0
  116. package/harness/bundles/general/cursor/scripts/harness_profile.py +50 -0
  117. package/harness/bundles/general/cursor/scripts/harness_runtime.py +248 -0
  118. package/harness/bundles/general/cursor/scripts/harness_state.py +15 -2
  119. package/harness/bundles/general/cursor/scripts/harness_test_guard.py +188 -0
  120. package/harness/bundles/general/cursor/scripts/harness_workflow_policy.py +19 -0
  121. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  122. package/harness/bundles/java/claude-code/contracts/ci-metrics.schema.json +36 -0
  123. package/harness/bundles/java/claude-code/contracts/workflow-policy.json +30 -0
  124. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  125. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  126. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  127. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  128. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  129. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  130. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +4 -4
  131. package/harness/bundles/java/claude-code/harness-plan/checklist.md +6 -0
  132. package/harness/bundles/java/claude-code/harness-plan/reference.md +7 -2
  133. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  134. package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
  135. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  136. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +2 -2
  137. package/harness/bundles/java/claude-code/harness-sync/reference.md +5 -4
  138. package/harness/bundles/java/claude-code/harness-test/SKILL.md +1 -1
  139. package/harness/bundles/java/claude-code/scripts/harness_archive.py +282 -120
  140. package/harness/bundles/java/claude-code/scripts/harness_events.py +400 -24
  141. package/harness/bundles/java/claude-code/scripts/harness_gate.py +585 -21
  142. package/harness/bundles/java/claude-code/scripts/harness_integration.py +403 -18
  143. package/harness/bundles/java/claude-code/scripts/harness_ledger.py +225 -29
  144. package/harness/bundles/java/claude-code/scripts/harness_phase.py +926 -0
  145. package/harness/bundles/java/claude-code/scripts/harness_plan_finalize.py +361 -0
  146. package/harness/bundles/java/claude-code/scripts/harness_profile.py +50 -0
  147. package/harness/bundles/java/claude-code/scripts/harness_runtime.py +248 -0
  148. package/harness/bundles/java/claude-code/scripts/harness_state.py +15 -2
  149. package/harness/bundles/java/claude-code/scripts/harness_test_guard.py +188 -0
  150. package/harness/bundles/java/claude-code/scripts/harness_workflow_policy.py +19 -0
  151. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  152. package/harness/bundles/java/codebuddy/contracts/ci-metrics.schema.json +36 -0
  153. package/harness/bundles/java/codebuddy/contracts/workflow-policy.json +30 -0
  154. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  155. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  156. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  157. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  158. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  159. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  160. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +4 -4
  161. package/harness/bundles/java/codebuddy/harness-plan/checklist.md +6 -0
  162. package/harness/bundles/java/codebuddy/harness-plan/reference.md +7 -2
  163. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  164. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
  165. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  166. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +2 -2
  167. package/harness/bundles/java/codebuddy/harness-sync/reference.md +5 -4
  168. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +1 -1
  169. package/harness/bundles/java/codebuddy/scripts/harness_archive.py +282 -120
  170. package/harness/bundles/java/codebuddy/scripts/harness_events.py +400 -24
  171. package/harness/bundles/java/codebuddy/scripts/harness_gate.py +585 -21
  172. package/harness/bundles/java/codebuddy/scripts/harness_integration.py +403 -18
  173. package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +225 -29
  174. package/harness/bundles/java/codebuddy/scripts/harness_phase.py +926 -0
  175. package/harness/bundles/java/codebuddy/scripts/harness_plan_finalize.py +361 -0
  176. package/harness/bundles/java/codebuddy/scripts/harness_profile.py +50 -0
  177. package/harness/bundles/java/codebuddy/scripts/harness_runtime.py +248 -0
  178. package/harness/bundles/java/codebuddy/scripts/harness_state.py +15 -2
  179. package/harness/bundles/java/codebuddy/scripts/harness_test_guard.py +188 -0
  180. package/harness/bundles/java/codebuddy/scripts/harness_workflow_policy.py +19 -0
  181. package/harness/bundles/java/codex/.harness-build.json +1 -1
  182. package/harness/bundles/java/codex/contracts/ci-metrics.schema.json +36 -0
  183. package/harness/bundles/java/codex/contracts/workflow-policy.json +30 -0
  184. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  185. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  186. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  187. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  188. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  189. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  190. package/harness/bundles/java/codex/harness-plan/SKILL.md +4 -4
  191. package/harness/bundles/java/codex/harness-plan/checklist.md +6 -0
  192. package/harness/bundles/java/codex/harness-plan/reference.md +7 -2
  193. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  194. package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
  195. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  196. package/harness/bundles/java/codex/harness-sync/SKILL.md +2 -2
  197. package/harness/bundles/java/codex/harness-sync/reference.md +5 -4
  198. package/harness/bundles/java/codex/harness-test/SKILL.md +1 -1
  199. package/harness/bundles/java/codex/scripts/harness_archive.py +282 -120
  200. package/harness/bundles/java/codex/scripts/harness_events.py +400 -24
  201. package/harness/bundles/java/codex/scripts/harness_gate.py +585 -21
  202. package/harness/bundles/java/codex/scripts/harness_integration.py +403 -18
  203. package/harness/bundles/java/codex/scripts/harness_ledger.py +225 -29
  204. package/harness/bundles/java/codex/scripts/harness_phase.py +926 -0
  205. package/harness/bundles/java/codex/scripts/harness_plan_finalize.py +361 -0
  206. package/harness/bundles/java/codex/scripts/harness_profile.py +50 -0
  207. package/harness/bundles/java/codex/scripts/harness_runtime.py +248 -0
  208. package/harness/bundles/java/codex/scripts/harness_state.py +15 -2
  209. package/harness/bundles/java/codex/scripts/harness_test_guard.py +188 -0
  210. package/harness/bundles/java/codex/scripts/harness_workflow_policy.py +19 -0
  211. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  212. package/harness/bundles/java/cursor/contracts/ci-metrics.schema.json +36 -0
  213. package/harness/bundles/java/cursor/contracts/workflow-policy.json +30 -0
  214. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  215. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  216. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  217. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  218. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  219. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  220. package/harness/bundles/java/cursor/harness-plan/SKILL.md +4 -4
  221. package/harness/bundles/java/cursor/harness-plan/checklist.md +6 -0
  222. package/harness/bundles/java/cursor/harness-plan/reference.md +7 -2
  223. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  224. package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
  225. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  226. package/harness/bundles/java/cursor/harness-sync/SKILL.md +2 -2
  227. package/harness/bundles/java/cursor/harness-sync/reference.md +5 -4
  228. package/harness/bundles/java/cursor/harness-test/SKILL.md +1 -1
  229. package/harness/bundles/java/cursor/scripts/harness_archive.py +282 -120
  230. package/harness/bundles/java/cursor/scripts/harness_events.py +400 -24
  231. package/harness/bundles/java/cursor/scripts/harness_gate.py +585 -21
  232. package/harness/bundles/java/cursor/scripts/harness_integration.py +403 -18
  233. package/harness/bundles/java/cursor/scripts/harness_ledger.py +225 -29
  234. package/harness/bundles/java/cursor/scripts/harness_phase.py +926 -0
  235. package/harness/bundles/java/cursor/scripts/harness_plan_finalize.py +361 -0
  236. package/harness/bundles/java/cursor/scripts/harness_profile.py +50 -0
  237. package/harness/bundles/java/cursor/scripts/harness_runtime.py +248 -0
  238. package/harness/bundles/java/cursor/scripts/harness_state.py +15 -2
  239. package/harness/bundles/java/cursor/scripts/harness_test_guard.py +188 -0
  240. package/harness/bundles/java/cursor/scripts/harness_workflow_policy.py +19 -0
  241. package/harness/manifests/general/claude-code.json +43 -27
  242. package/harness/manifests/general/codebuddy.json +43 -27
  243. package/harness/manifests/general/codex.json +43 -27
  244. package/harness/manifests/general/cursor.json +43 -27
  245. package/harness/manifests/java/claude-code.json +43 -27
  246. package/harness/manifests/java/codebuddy.json +43 -27
  247. package/harness/manifests/java/codex.json +43 -27
  248. package/harness/manifests/java/cursor.json +43 -27
  249. package/hunter-workflow-family.json +2 -2
  250. package/package.json +1 -1
@@ -2,5 +2,5 @@
2
2
  "schemaVersion": 1,
3
3
  "overlay": "none",
4
4
  "agent": "claude-code",
5
- "coreHash": "61a84d6f204a76ae"
5
+ "coreHash": "8dd8ce9aa1ac47f5"
6
6
  }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://hunter-harness.dev/contracts/ci-metrics.schema.json",
4
+ "title": "Hunter Harness CI Metrics",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "runner",
10
+ "source",
11
+ "suites",
12
+ "passed",
13
+ "failed",
14
+ "skipped",
15
+ "setupErrors",
16
+ "durationMs",
17
+ "headSha"
18
+ ],
19
+ "properties": {
20
+ "schemaVersion": { "const": 1 },
21
+ "runner": { "enum": ["junit", "vitest", "playwright"] },
22
+ "source": { "type": ["string", "null"] },
23
+ "suites": { "type": ["integer", "null"], "minimum": 0 },
24
+ "passed": { "type": ["integer", "null"], "minimum": 0 },
25
+ "failed": { "type": ["integer", "null"], "minimum": 0 },
26
+ "skipped": { "type": ["integer", "null"], "minimum": 0 },
27
+ "setupErrors": { "type": ["integer", "null"], "minimum": 0 },
28
+ "durationMs": { "type": ["integer", "null"], "minimum": 0 },
29
+ "headSha": {
30
+ "anyOf": [
31
+ { "type": "null" },
32
+ { "type": "string", "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$" }
33
+ ]
34
+ }
35
+ }
36
+ }
@@ -138,6 +138,36 @@
138
138
  "submit": [],
139
139
  "package": ["package"]
140
140
  },
141
+ "validationPhases": {
142
+ "compile": "run",
143
+ "unitTest": "run",
144
+ "unitTestFull": "test",
145
+ "apiTest": "test",
146
+ "dbCompatibility": "test",
147
+ "package": "package"
148
+ },
149
+ "capabilityGates": {
150
+ "deployment": {
151
+ "signals": ["deploy-required"],
152
+ "requiredStages": ["package"],
153
+ "requiredValidations": ["package"]
154
+ },
155
+ "container": {
156
+ "signals": ["install-verification"],
157
+ "requiredStages": ["package"],
158
+ "requiredValidations": ["package"]
159
+ },
160
+ "api": {
161
+ "signals": ["api-diff-present"],
162
+ "requiredStages": ["apidoc"],
163
+ "requiredValidations": ["apiTest"]
164
+ },
165
+ "database": {
166
+ "signals": ["migration"],
167
+ "requiredStages": [],
168
+ "requiredValidations": ["dbCompatibility"]
169
+ }
170
+ },
141
171
  "conditionalStages": {
142
172
  "review": {
143
173
  "tiers": ["standard", "full"],
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-archive — 变更归档
25
25
 
26
26
  ## Purpose
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-codebase-map — 代码库地图
25
25
 
26
26
  ## Purpose
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; 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/` 索引。
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-knowledge-query
25
25
 
26
26
  并行 change 中查询必须传 `--change <change-id>`;成功后以该 change 的 `meta/knowledge-context.json` 为稳定指针。全局 `context-packs/latest.json` 仅向后兼容,不得用于判断多个 active change 的上下文归属。
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-plan — 需求规划
25
25
 
26
26
  ## Purpose
@@ -76,7 +76,7 @@ disallowed-tools:
76
76
 
77
77
  | 阶段 | 动作 |
78
78
  |------|------|
79
- | 0 | git status;脏工作区 → baseline 隔离 + `decision`,不询问 |
79
+ | 0 | 用当前解释器运行 `harness_runtime.py doctor`,后续消费绝对 argv;git status;脏工作区 → baseline 隔离 + `decision`,不询问 |
80
80
  | 0.5 | 先初始化 change-name + `phase.start`,从第一条知识查询起保留事件证据 |
81
81
  | 1 | `harness-knowledge-query` 单次 query(内部 ensure-current;失败记 `issue`) |
82
82
  | 2 | 歧义优先检查 + 复杂度分级;先确认会改变实现方向的语义歧义 |
@@ -84,7 +84,7 @@ disallowed-tools:
84
84
  | 4 | **设计审批包** AskUserQuestion;确认事件早于 approved 设计文档和 `meta/worktree.json` |
85
85
  | 5–6 | plan + implementation-detail + test-scenarios → `plans/` |
86
86
  | 7.5 | 仅 `--adversarial` 对抗评审 |
87
- | 8 | 产物完整性必检 → `checklist.md` |
87
+ | 8 | 在临时产物集上运行 `harness_plan_finalize.py finalize`;原子发布、唯一 `phase.end`、render → `checklist.md` |
88
88
 
89
89
  change-name 范围变更 → 提示重命名或记 🟡WARN(→ `reference.md`)
90
90
 
@@ -100,7 +100,7 @@ change-name 范围变更 → 提示重命名或记 🟡WARN(→ `reference.md`
100
100
  |------|------|
101
101
  | 产物路径 | 只写 `.harness/changes/<cn>/`;禁止 superpowers 输入 |
102
102
  | 设计审批包 | 一次 AskUserQuestion 含 worktree(读 `harness.json` `defaultWorktree`) |
103
- | 阶段 8 | spec/plan/detail/scenarios/worktree.json/logs/events 缺一不可 ❌FAIL |
103
+ | 阶段 8 | spec/plan/detail/scenarios/worktree.json 先进入 staging;仅 finalizer 校验成功后发布并写唯一 `phase.end`/log,失败不得手工补终态 |
104
104
  | Plan 结束 | **禁止**询问执行模式;只提示 `/harness-run` |
105
105
  | 知识查询 | 0.5 失败不得假装已读历史 |
106
106
  | 歧义优先检查 | 否定、对比、动作对象或范围存在多种合理解释时,最小取证后先给推荐理解并一次一问;确认前不深挖错误方向 |
@@ -213,6 +213,12 @@ source: harness-plan
213
213
 
214
214
  > **缺任一文件 → ❌FAIL,不得宣称 plan 完成。**
215
215
 
216
+ - [ ] 所有待发布产物先写入 staging,不直接覆盖正式 change 目录
217
+ - [ ] 执行 `harness_plan_finalize.py finalize --change-dir ... --staging-dir ... --change ... --run-id ... --attempt ... --json`
218
+ - [ ] finalizer 返回 `ok=true` 与 `artifactsHash`;重复执行返回 `idempotent=true`
219
+ - [ ] finalizer 失败时正式目录无半发布产物、无成功 `phase.end`、无伪造 execution log
220
+ - [ ] 禁止在 finalizer 之前手工追加成功 `phase.end`
221
+
216
222
  | 文件 | 必须存在 | 检查结果 |
217
223
  |------|:---:|:---:|
218
224
  | `.harness/changes/<change>/spec/<change>-design.md` | ✅ | □ |
@@ -14,8 +14,11 @@ description: harness-plan 的需求提取模板、任务拆分规则、测试场
14
14
  {
15
15
  "requested": true,
16
16
  "created": false,
17
- "path": ".claude/worktrees/<change-name>",
18
- "branch": "worktree/<change-name>",
17
+ "agent": "<active-adapter>",
18
+ "worktreeRoot": "<adapter-worktree-root>",
19
+ "branchPrefix": "<adapter-branch-prefix>",
20
+ "path": "<adapter-worktree-root>/<change-name>",
21
+ "branch": "<adapter-branch-prefix><change-name>",
19
22
  "decisionBy": "user",
20
23
  "decisionAt": "YYYY-MM-DD HH:mm",
21
24
  "ownerSkill": "harness-run"
@@ -38,6 +41,8 @@ description: harness-plan 的需求提取模板、任务拆分规则、测试场
38
41
 
39
42
  ### 决策事件 note 示例
40
43
 
44
+ `path` 与 `branch` 必须来自 `harness_runtime.py adapter`/`meta/runtime.json`,不得复制其他 agent 的历史路径。Codex 的合同固定为 `.codex/worktrees/<change-name>` 与 `codex/<change-name>`。
45
+
41
46
  `用户选择使用 Worktree;决策文件为 meta/worktree.json;requested=true, created=false;创建责任为 harness-run。`
42
47
 
43
48
  ## 参考 — 详细格式
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(curl *)
22
22
  - Bash(codegraph *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
25
25
  # harness-review — 代码审查
26
26
 
27
27
  ## Purpose
@@ -21,7 +21,7 @@ disallowed-tools:
21
21
  - Bash(curl *)
22
22
  - Bash(codegraph *)
23
23
  ---
24
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
24
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
25
25
  # harness-run — 需求编码
26
26
 
27
27
  ## Purpose
@@ -10,13 +10,14 @@ description: harness-run 的执行检查清单。仅在编码执行时读取。
10
10
 
11
11
  ### 步骤 0.0:Worktree 决策执行 ⚠️
12
12
 
13
+ - [ ] 运行 `harness_runtime.py doctor` 并读取 `meta/runtime.json`;后续使用绝对 executable 与 argv 数组
13
14
  - [ ] 读取 `.harness/changes/<change-name>/meta/worktree.json`(旧路径 `worktree.json` 兼容)
14
15
  - [ ] 如果文件缺失:🟡WARN,按 legacy 逻辑询问用户是否主目录执行或创建 worktree
15
16
  - [ ] `requested=false` → 主目录执行,记录原因
16
17
  - [ ] `requested=true` 且 worktree 存在 → 切换到 worktree 执行
17
18
  - [ ] `requested=true` 且 worktree 不存在 → 必须创建 worktree
18
19
  - [ ] worktree 创建命令必须使用 PowerShell:`git worktree add ...`
19
- - [ ] 创建后验证 `.claude/worktrees/<change-name>/.git` 存在
20
+ - [ ] 创建后验证 `<adapter-worktree-root>/<change-name>/.git` 存在;Codex 必须是 `.codex/worktrees/<change-name>`
20
21
  - [ ] 创建成功后更新 `meta/worktree.json` 的 `created=true/createdAt/createdBy`
21
22
  - [ ] 创建失败 → 停止,或 AskUserQuestion 询问是否改为主目录执行
22
23
  - [ ] 禁止 `requested=true && worktree 不存在` 时直接主目录执行
@@ -219,7 +220,7 @@ description: harness-run 的执行检查清单。仅在编码执行时读取。
219
220
 
220
221
  > 仅在 worktree 中执行时触发此步骤。在主目录执行时跳过(标记 ⏭️主目录跳过)。
221
222
 
222
- - [ ] 确认当前 cwd 在 `.claude/worktrees/<change-name>/`
223
+ - [ ] 确认当前 cwd 在 `<adapter-worktree-root>/<change-name>/` 下,且 branch 使用 adapter 的 prefix
223
224
  - [ ] 生成变更摘要:`git diff --stat` + `git diff --stat --cached`
224
225
  - [ ] 构建 commit message:`wip(<scope>): <change-name> 编码完成 — N任务/M文件变更`
225
226
  - [ ] **⚠️ 强制阻断**:用 AskUserQuestion 展示变更列表 + commit message,等待用户确认
@@ -49,20 +49,22 @@ requested=true + path missing
49
49
 
50
50
  ### PowerShell 命令模板
51
51
 
52
+ 先执行 runtime doctor,并从 `meta/runtime.json` 读取 adapter 的 `path`、`branch` 以及 PowerShell `argvPrefix`;不要依赖裸 `python`/`powershell.exe`,也不要硬编码 Claude 路径。
53
+
52
54
  ```powershell
53
- powershell.exe -NoProfile -Command "git worktree add '.claude/worktrees/<change-name>' -b 'worktree/<change-name>'"
55
+ & <powershell-argv-prefix> -Command "git worktree add -- '<adapter-worktree-path>' -b '<adapter-branch>'"
54
56
  ```
55
57
 
56
58
  如果分支已存在:
57
59
 
58
60
  ```powershell
59
- powershell.exe -NoProfile -Command "git worktree add '.claude/worktrees/<change-name>' 'worktree/<change-name>'"
61
+ & <powershell-argv-prefix> -Command "git worktree add -- '<adapter-worktree-path>' '<adapter-branch>'"
60
62
  ```
61
63
 
62
64
  验证:
63
65
 
64
66
  ```powershell
65
- powershell.exe -NoProfile -Command "Test-Path '.claude/worktrees/<change-name>/.git'"
67
+ & <powershell-argv-prefix> -Command "Test-Path -LiteralPath '<adapter-worktree-path>/.git'"
66
68
  ```
67
69
 
68
70
  ### 状态目录写入
@@ -72,7 +74,7 @@ powershell.exe -NoProfile -Command "Test-Path '.claude/worktrees/<change-name>/.
72
74
  ```json
73
75
  {
74
76
  "projectRoot": ".../udp",
75
- "worktreeRoot": ".../udp/.claude/worktrees/<change-name>",
77
+ "worktreeRoot": ".../udp/<adapter-worktree-root>/<change-name>",
76
78
  "stateDir": ".../udp/.harness/changes/<change-name>"
77
79
  }
78
80
  ```
@@ -20,7 +20,7 @@ disallowed-tools:
20
20
  - Bash(awk *)
21
21
  - Bash(curl *)
22
22
  ---
23
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
23
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
24
24
  # harness-submit — 最终提交(含 worktree 合并)
25
25
 
26
26
  ## Purpose
@@ -19,7 +19,7 @@ disallowed-tools:
19
19
  - Bash(awk *)
20
20
  - Bash(curl *)
21
21
  ---
22
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
22
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
23
23
  # harness-sync — 元数据同步
24
24
 
25
25
  ## Purpose
@@ -56,7 +56,7 @@ python <skills-root>/scripts/harness_sync.py finalize --project . --run-id <run-
56
56
  | 3.5 | `harness_knowledge.py sync`;可 `sync --update`;失败不得假装可用。**知识闭环主入口**是 `/harness-knowledge-ingest auto`(含 Agent judge),sync 不重复列人工知识待办 |
57
57
  | 3.6 | 单次运行 `harness_knowledge.py maintain --project . --drain --json`,有界推进全部 `.harness/knowledge/maintenance-outbox/{pending,failed}`;不得为每个条目重复启动 Python/重建索引(§8.2:archive close 只 enqueue,sync 异步推进 outbox 到 completed/pending-judge) |
58
58
  | 4 | CLAUDE.md 完整性/行数 → 超限 AskUserQuestion 瘦身 |
59
- | 5 | AGENTS.md CLAUDE.md 一致 |
59
+ | 5 | AGENTS.md 与各 Agent 指令入口一致;Claude Code 启用时验证 CLAUDE.md 引用 AGENTS.md,禁止反向循环引用 |
60
60
  | 6 | `.harness/` 结构(init 规程 → `reference.md` 第 6 步);已装 skill 新鲜度只经 `hunter-harness refresh --dry-run --json` 的 post-adaptation freshness 判断,禁止 raw build 字节比较 |
61
61
  | 7–9 | `项目规则(见 .harness/context-index.json)/`、构建配置、测试目录 — **只提示不自动修复** |
62
62
 
@@ -19,16 +19,17 @@ powershell.exe -Command "git -C '<项目路径>' diff --stat HEAD~5 2>$null"
19
19
 
20
20
  ### 2. CodeGraph 索引
21
21
 
22
- 检查索引状态,**优先使用 MCP 工具**(若当前环境提供 `mcp__codegraph__codegraph_status` 则调用);该工具不可用时**降级**为用 Glob 比对 `.codegraph/` 目录修改时间与最近提交时间。不允许通过普通 Bash 调 codegraph 命令:
22
+ 检查索引状态,**优先使用 MCP 工具**:若当前环境提供 `mcp__codegraph__codegraph_status` 则调用;没有 status 工具但提供 `codegraph_explore` 时,执行一次只读查询验证索引确实可响应,再用 Glob 比对 `.codegraph/` 目录修改时间与最近提交时间。两种 MCP 工具都不可用时才仅按时间戳降级。不允许通过普通 Bash 调 codegraph 命令:
23
23
 
24
24
  | 判断条件 | 状态 | 操作 |
25
25
  |----------|:----:|------|
26
26
  | 覆盖率 > 0% 且索引时间在最近提交之后 | ✅OK | 无需操作 |
27
+ | `codegraph_explore` 查询成功且索引时间在最近提交之后 | ✅OK(功能已验证,覆盖率数值未暴露) | 报告真实证据,不虚构覆盖率百分比 |
27
28
  | 覆盖率 = 0% | ❌FAIL(未初始化) | 通过 PowerShell 执行 `npx @colbymchenry/codegraph && codegraph init --index` |
28
29
  | 索引时间在最近提交之前 | 🟡WARN(过期) | 同上 |
29
30
 
30
31
  > 前提:项目构建命令必须已成功。构建失败时先执行 `npx hunter-harness` 初始化检查。
31
- > 若 MCP 工具与 codegraph CLI 均不可用,标记 🟡WARN(CodeGraph 状态无法验证) 并在报告中说明"CodeGraph 状态无法验证,需用户手动确认"。
32
+ > 若 status/explore MCP 工具均不可用,且时间戳证据也不足,标记 🟡WARN(CodeGraph 状态无法验证) 并在报告中说明具体缺失证据。成功的 explore 只能证明索引可用,不得伪造覆盖率数值。
32
33
 
33
34
  ### 3. harness-codebase-map 分析文档
34
35
 
@@ -61,7 +62,7 @@ powershell.exe -Command "git -C '<项目路径>' diff --stat HEAD~5 2>$null"
61
62
 
62
63
  ### 5. AGENTS.md 一致性
63
64
 
64
- 检查 `AGENTS.md` 是否引用最新版 CLAUDE.md,是否包含项目概述和规则索引。如果 CLAUDE.md 刚刚更新过,同步更新 AGENTS.md 中的引用描述。
65
+ 检查 `AGENTS.md` 是否包含项目概述和规则索引。Claude Code adapter 启用时,检查 `CLAUDE.md` 引用 `AGENTS.md`(canonical managed block 使用 `@AGENTS.md`),让共享约束保持单一来源;不得要求 `AGENTS.md` 反向引用 `CLAUDE.md`,否则会形成循环,且会破坏未启用 Claude Code 的项目。
65
66
 
66
67
  ### 6. .harness/ 完整性
67
68
 
@@ -133,7 +134,7 @@ powershell.exe -Command "git -C '<项目路径>' diff --stat HEAD~5 2>$null"
133
134
  | CodeGraph | 🟡WARN(索引过期) | 索引已过期(上次: 3天前,最近提交: 今天),已重新索引 |
134
135
  | harness-codebase-map (.harness/codebase/map/) | ✅OK | 2 天前更新,变更量 5 个文件,无需更新 |
135
136
  | CLAUDE.md | ✅OK | 180 行,6 个必要章节完整 |
136
- | AGENTS.md | ✅OK | 已正确引用 CLAUDE.md |
137
+ | AGENTS.md | ✅OK | 共享规则索引完整;CLAUDE.md 已单向引用 AGENTS.md |
137
138
  | .harness/ | ✅OK | config 目录存在,1 个变更目录(contribution-module) |
138
139
 
139
140
  ### 自动更新
@@ -22,7 +22,7 @@ disallowed-tools:
22
22
  - Bash(node *)
23
23
  - Bash(codegraph *)
24
24
  ---
25
- <!-- generated by harness_deploy.py; core=61a84d6f204a76ae; overlay=none; agent=claude-code; do not edit -->
25
+ <!-- generated by harness_deploy.py; core=8dd8ce9aa1ac47f5; overlay=none; agent=claude-code; do not edit -->
26
26
  # harness-test — 测试执行
27
27
 
28
28
  ## Purpose