@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
@@ -119,12 +119,19 @@ def post_json(endpoint: dict[str, str], path: str, body: dict[str, Any]) -> dict
119
119
  return json.loads(response.read().decode("utf-8"))
120
120
 
121
121
 
122
- def sync_change(project: Path, change_dir: Path, *, heartbeat_only: bool = False) -> dict[str, Any]:
122
+ def sync_change(
123
+ project: Path,
124
+ change_dir: Path,
125
+ *,
126
+ heartbeat_only: bool = False,
127
+ run_id: str | None = None,
128
+ change_key: str | None = None,
129
+ ) -> dict[str, Any]:
123
130
  endpoint = load_endpoint(project)
124
131
  if endpoint is None:
125
132
  return {"ok": True, "skipped": True, "reason": "remote credentials not configured"}
126
- change_key = change_dir.name
127
- rid = run_id_for(change_dir)
133
+ resolved_key = change_key or change_dir.name
134
+ rid = run_id or run_id_for(change_dir)
128
135
  project_id = endpoint["project_id"]
129
136
 
130
137
  # Always heartbeat so the console can separate connection vs run status.
@@ -138,20 +145,26 @@ def sync_change(project: Path, change_dir: Path, *, heartbeat_only: bool = False
138
145
  {
139
146
  "protocol_version": "hunter-progress-sync/v1",
140
147
  "run_id": rid,
141
- "change_key": change_key,
148
+ "change_key": resolved_key,
142
149
  "client_time": client_time,
143
- "title": change_key,
150
+ "title": resolved_key,
144
151
  },
145
152
  )
146
153
  except (urllib.error.URLError, TimeoutError, OSError, json.JSONDecodeError) as exc:
147
154
  return {"ok": False, "error": f"heartbeat failed: {exc}", "run_id": rid}
148
155
 
149
156
  if heartbeat_only:
150
- return {"ok": True, "heartbeat": True, "run_id": rid}
157
+ return {"ok": True, "heartbeat": True, "run_id": rid, "change_key": resolved_key}
151
158
 
152
159
  events_file = change_dir / "events.ndjson"
153
160
  if not events_file.is_file():
154
- return {"ok": True, "run_id": rid, "uploaded": 0, "reason": "no events.ndjson"}
161
+ return {
162
+ "ok": True,
163
+ "run_id": rid,
164
+ "change_key": resolved_key,
165
+ "uploaded": 0,
166
+ "reason": "no events.ndjson",
167
+ }
155
168
 
156
169
  lines = events_file.read_text(encoding="utf-8").splitlines()
157
170
  acked = load_cursor(change_dir)
@@ -167,7 +180,7 @@ def sync_change(project: Path, change_dir: Path, *, heartbeat_only: bool = False
167
180
  continue
168
181
  if not isinstance(event, dict):
169
182
  continue
170
- event_id = str(event.get("id") or f"{change_key}:{acked + offset}")
183
+ event_id = str(event.get("id") or f"{resolved_key}:{acked + offset}")
171
184
  payload = sanitize(event)
172
185
  batch.append(
173
186
  {
@@ -181,7 +194,13 @@ def sync_change(project: Path, change_dir: Path, *, heartbeat_only: bool = False
181
194
  )
182
195
  if not batch:
183
196
  save_cursor(change_dir, len(lines))
184
- return {"ok": True, "run_id": rid, "uploaded": 0, "acked_lines": len(lines)}
197
+ return {
198
+ "ok": True,
199
+ "run_id": rid,
200
+ "change_key": resolved_key,
201
+ "uploaded": 0,
202
+ "acked_lines": len(lines),
203
+ }
185
204
 
186
205
  # Drop None phase keys for strict schema.
187
206
  for item in batch:
@@ -195,8 +214,8 @@ def sync_change(project: Path, change_dir: Path, *, heartbeat_only: bool = False
195
214
  {
196
215
  "protocol_version": "hunter-progress-sync/v1",
197
216
  "run_id": rid,
198
- "change_key": change_key,
199
- "title": change_key,
217
+ "change_key": resolved_key,
218
+ "title": resolved_key,
200
219
  "events": batch,
201
220
  },
202
221
  )
@@ -222,6 +241,7 @@ def sync_change(project: Path, change_dir: Path, *, heartbeat_only: bool = False
222
241
  return {
223
242
  "ok": accepted == len(batch),
224
243
  "run_id": rid,
244
+ "change_key": resolved_key,
225
245
  "uploaded": accepted,
226
246
  "batch_size": len(batch),
227
247
  "acked_lines": acked_lines,
@@ -229,10 +249,62 @@ def sync_change(project: Path, change_dir: Path, *, heartbeat_only: bool = False
229
249
  }
230
250
 
231
251
 
252
+ def auto_events_sync(
253
+ project_root: Path,
254
+ change_dir: Path,
255
+ *,
256
+ heartbeat_only: bool = False,
257
+ run_id: str | None = None,
258
+ change_key: str | None = None,
259
+ ) -> dict[str, Any]:
260
+ """Best-effort platform events sync (same style as auto_push_archive_core).
261
+
262
+ Failures become warnings so the caller never rolls back the main workflow.
263
+ """
264
+ project_root = project_root.resolve()
265
+ change_dir = change_dir.resolve()
266
+ if load_endpoint(project_root) is None:
267
+ return {"skipped": True, "reason": "no remote credentials"}
268
+ try:
269
+ result = sync_change(
270
+ project_root,
271
+ change_dir,
272
+ heartbeat_only=heartbeat_only,
273
+ run_id=run_id,
274
+ change_key=change_key,
275
+ )
276
+ except Exception as exc: # noqa: BLE001 — best-effort never blocks caller
277
+ return {
278
+ "skipped": False,
279
+ "ok": False,
280
+ "warning": f"events-sync deferred: {exc}",
281
+ }
282
+ if result.get("skipped"):
283
+ return {"skipped": True, "reason": result.get("reason") or "skipped"}
284
+ if result.get("ok"):
285
+ return {"skipped": False, "ok": True, **{
286
+ key: result[key]
287
+ for key in ("run_id", "change_key", "uploaded", "acked_lines", "heartbeat")
288
+ if key in result
289
+ }}
290
+ return {
291
+ "skipped": False,
292
+ "ok": False,
293
+ "warning": str(result.get("error") or "events-sync failed"),
294
+ **{
295
+ key: result[key]
296
+ for key in ("run_id", "change_key")
297
+ if key in result
298
+ },
299
+ }
300
+
301
+
232
302
  def main(argv: list[str] | None = None) -> int:
233
303
  parser = argparse.ArgumentParser(description="Sync events.ndjson to platform Run monitoring")
234
304
  parser.add_argument("--project", default=".", help="Project root")
235
305
  parser.add_argument("--change-dir", help="Specific change directory")
306
+ parser.add_argument("--run-id", help="Override stable run_id (archive finalize continuity)")
307
+ parser.add_argument("--change-key", help="Override change_key sent to the platform")
236
308
  parser.add_argument("--heartbeat-only", action="store_true")
237
309
  parser.add_argument("--json", action="store_true")
238
310
  args = parser.parse_args(argv)
@@ -243,7 +315,13 @@ def main(argv: list[str] | None = None) -> int:
243
315
  root = project / ".harness" / "changes"
244
316
  changes = sorted(path for path in root.glob("*") if path.is_dir()) if root.is_dir() else []
245
317
  results = [
246
- sync_change(project, change_dir, heartbeat_only=args.heartbeat_only)
318
+ sync_change(
319
+ project,
320
+ change_dir,
321
+ heartbeat_only=args.heartbeat_only,
322
+ run_id=args.run_id,
323
+ change_key=args.change_key,
324
+ )
247
325
  for change_dir in changes
248
326
  ]
249
327
  ok = all(item.get("ok") for item in results) if results else True
@@ -31,6 +31,7 @@ if str(SCRIPTS_DIR) not in sys.path:
31
31
 
32
32
  import harness_change as hc # noqa: E402
33
33
  import harness_events as he # noqa: E402
34
+ import harness_events_sync as hes # noqa: E402
34
35
  import harness_ledger as hl # noqa: E402
35
36
  import harness_paths as hp # noqa: E402
36
37
  import harness_plan_finalize as hpf # noqa: E402
@@ -2213,6 +2214,22 @@ def cmd_begin(args: argparse.Namespace) -> int:
2213
2214
  "gateSeverityMode": severity_mode,
2214
2215
  "gateWarnings": gate_warnings,
2215
2216
  }
2217
+ # C3: best-effort start platform run monitoring (register + running via heartbeat/events).
2218
+ try:
2219
+ monitor = hes.auto_events_sync(project, change_dir)
2220
+ payload["platformMonitor"] = monitor
2221
+ if monitor.get("warning"):
2222
+ warnings_msg = str(monitor["warning"])
2223
+ gate_warnings.append({
2224
+ "code": "PLATFORM_EVENTS_SYNC_WARN",
2225
+ "message": warnings_msg,
2226
+ })
2227
+ payload["gateWarnings"] = gate_warnings
2228
+ except Exception as exc: # noqa: BLE001 — never block phase begin
2229
+ payload["platformMonitor"] = {
2230
+ "ok": False,
2231
+ "warning": f"events-sync hook failed: {exc}",
2232
+ }
2216
2233
  emit(payload, as_json=as_json)
2217
2234
  return 0
2218
2235
 
@@ -852,7 +852,6 @@ def _node_commands(project: Path) -> dict[str, Any]:
852
852
  inputs.extend(
853
853
  [
854
854
  "harness/scripts/*.py",
855
- "harness/harness-knowledge-ingest/scripts/*.py",
856
855
  "harness/harness-test/scripts/*.mjs",
857
856
  "harness/harness-test/scripts/tests/*.mjs",
858
857
  "scripts/*.mjs",
@@ -218,11 +218,9 @@ def discover_segment_files(
218
218
  project / "harness.json",
219
219
  ]
220
220
  codebase_map = list((project / ".harness/codebase/map").glob("**/*"))
221
- knowledge = [
222
- project / ".harness/knowledge/index.json",
223
- project / ".harness/knowledge/status.json",
224
- project / ".harness/knowledge/config.json",
225
- ]
221
+ # Knowledge is remote-only. Keep the segment for schema compatibility, but
222
+ # do not discover or fingerprint local indexes/fallback state.
223
+ knowledge: list[Path] = []
226
224
  change_inputs: list[Path] = []
227
225
  for folder in ("spec", "plans", "meta"):
228
226
  change_inputs.extend((change_dir / folder).glob("**/*"))
@@ -2,9 +2,9 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "claude-code",
5
- "bundle_version": "0.2.37",
5
+ "bundle_version": "0.2.39",
6
6
  "requires": {
7
- "minimumCliVersion": "0.2.51",
7
+ "minimumCliVersion": "0.2.53",
8
8
  "capabilities": [
9
9
  "sync@2",
10
10
  "rules-sync@1",
@@ -23,7 +23,7 @@
23
23
  "files": [
24
24
  {
25
25
  "path": ".harness-build.json",
26
- "sha256": "eadad2ab2439a1213cdd76b7acb9c16fb7a15da6d51c1829bb2288eb830eed2a"
26
+ "sha256": "f53fc1874dd7d02adbcea358256c9ef1c8dd9d17a1abb88c487cf492bfb229be"
27
27
  },
28
28
  {
29
29
  "path": "agents/harness-evaluator.md",
@@ -95,7 +95,7 @@
95
95
  },
96
96
  {
97
97
  "path": "harness-archive/SKILL.md",
98
- "sha256": "55bef68b5a39d074df92590e5e1fd8d0ce24f0abbba6438de7561c691d59eb5e"
98
+ "sha256": "080013e619368952f329b76e6aed44b7473aabf7dbe33a2838ad8373abd3a1e4"
99
99
  },
100
100
  {
101
101
  "path": "harness-archive/templates/render-summary.mjs",
@@ -115,7 +115,7 @@
115
115
  },
116
116
  {
117
117
  "path": "harness-codebase-map/SKILL.md",
118
- "sha256": "666e18d829b6e54e878737950470002cc9c1fb4f0292cb1af9da13ab21cb488e"
118
+ "sha256": "965ba75b28b7bd19994b0abad4ee831e396716211e10ee0255eb45623e97227c"
119
119
  },
120
120
  {
121
121
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -153,41 +153,17 @@
153
153
  "path": "harness-codebase-map/templates/TESTING.md",
154
154
  "sha256": "3e19408d0d711a8a9432a17b6f85e025d20e19c31fa385bacb622012e300c015"
155
155
  },
156
- {
157
- "path": "harness-knowledge-ingest/design.md",
158
- "sha256": "9d641634a8870eae0f637e2f380722176b48176d414c9493fa2872c791fda46a"
159
- },
160
- {
161
- "path": "harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml",
162
- "sha256": "943f93bf0d0b41f8a6b7e398b0e41367e54133a683a337637f081713b36d8ed3"
163
- },
164
- {
165
- "path": "harness-knowledge-ingest/mcp-config.example.json",
166
- "sha256": "538f815812f7e6e327ec295511bd15f41212be53df142e2fe1bc18c1f47c4124"
167
- },
168
- {
169
- "path": "harness-knowledge-ingest/reference.md",
170
- "sha256": "aaff0f08ff72f17ad610d6db51e9482b4eaeda87962765f679b2893dff9762e7"
171
- },
172
- {
173
- "path": "harness-knowledge-ingest/scripts/harness_knowledge_mcp.py",
174
- "sha256": "a421ca43e8d1ef1718d51a398e20abae411ea0007b3d45aa333791c511a2aa33"
175
- },
176
- {
177
- "path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
178
- "sha256": "e12d01a9695ccc6624a4a7690f831622d18866fc0a6c383c640dc7345394d047"
179
- },
180
156
  {
181
157
  "path": "harness-knowledge-ingest/SKILL.md",
182
- "sha256": "97173b627a90afafc3c77c0e1535194b42e7ff8453ed98a42fffe3fa12cbb8d4"
158
+ "sha256": "3e31c801b653630af8a35358b37f40ff5e6f4f7363665b432259ffb697d8dae6"
183
159
  },
184
160
  {
185
161
  "path": "harness-knowledge-query/SKILL.md",
186
- "sha256": "3a328158896c205980132d69ba5db420977db9639d2d8a94c44dec46e48654bb"
162
+ "sha256": "9c6a80f0c2212f9a4d5fa70bda25e5a1e77b06396b5cd37bc0456399c39f006f"
187
163
  },
188
164
  {
189
165
  "path": "harness-plan/checklist.md",
190
- "sha256": "e99853043c543ad4ae3bcd4d5f773f5e518177034444b86cac3348c62a003f7a"
166
+ "sha256": "501e5e73c973e845134a94bd00834274f702d7c45be4e4f1b0fc63d8f9bd0945"
191
167
  },
192
168
  {
193
169
  "path": "harness-plan/protocols.md",
@@ -199,7 +175,7 @@
199
175
  },
200
176
  {
201
177
  "path": "harness-plan/SKILL.md",
202
- "sha256": "ca4118e2ef6a1d952ec08c1fbdc099bcb886c75f078d2c61318790bf126e991b"
178
+ "sha256": "3ce0040e074f5378fa33bcab1be66c9590bafb19ff28856475d06fa338606874"
203
179
  },
204
180
  {
205
181
  "path": "harness-review/checklist.md",
@@ -215,7 +191,7 @@
215
191
  },
216
192
  {
217
193
  "path": "harness-review/SKILL.md",
218
- "sha256": "ab978e9d4a9e90043628a75e3b47c3668b028e1b278bdcc7c8e977fa7eefe19d"
194
+ "sha256": "223bb89ea0494d6731293878b38648f6f63ab6e9676b5667b19b5075e35719e2"
219
195
  },
220
196
  {
221
197
  "path": "harness-run/checklist.md",
@@ -231,7 +207,7 @@
231
207
  },
232
208
  {
233
209
  "path": "harness-run/SKILL.md",
234
- "sha256": "8790202ebeeea57c40236353c03b68f476de4b092a1e519cb01fce1d56bef19f"
210
+ "sha256": "102cbd1e0310ffe786c6ad102c2b753ca60d57f48c676f98fc2f4425c22919f2"
235
211
  },
236
212
  {
237
213
  "path": "harness-submit/checklist.md",
@@ -243,15 +219,15 @@
243
219
  },
244
220
  {
245
221
  "path": "harness-submit/SKILL.md",
246
- "sha256": "8f2fe6de526027d2af9a7261626c912226c2c42a7a2c05404c51ea4a2c8b1f5b"
222
+ "sha256": "1f1a33492bba74851a44ca937801a632b92a64351abb89356292d44cca13c901"
247
223
  },
248
224
  {
249
225
  "path": "harness-sync/reference.md",
250
- "sha256": "d841ffde8afd2739ed14c765e4d2dd40b4a799771e8256f0ac07d11e0c97f54d"
226
+ "sha256": "7f2aea7240db514c42530cffc00d78910ade30aaf54787042e017885a1ad9a41"
251
227
  },
252
228
  {
253
229
  "path": "harness-sync/SKILL.md",
254
- "sha256": "76963989cbf601dcd8b8bec19033b097f79e30bb2c5b348fc3fa9cd20bc400bc"
230
+ "sha256": "867c7ab7061aa7c89e349139c81fb1cb2b799205107b3c9436809b351c15a1da"
255
231
  },
256
232
  {
257
233
  "path": "harness-test/checklist.md",
@@ -275,11 +251,11 @@
275
251
  },
276
252
  {
277
253
  "path": "harness-test/SKILL.md",
278
- "sha256": "0337985e4716861ad656194eb16048a18814414ec1563aa1177882c589144398"
254
+ "sha256": "11be06d58e0ea5829f08341036bc7cc5bd1065b44f97aee0d819afa3ce0c529d"
279
255
  },
280
256
  {
281
257
  "path": "protocols/archive-report-protocol.md",
282
- "sha256": "4237892699de6e4a45cf9196733029d82bbbc67ba3b22751449842c49ea0a68e"
258
+ "sha256": "50bdb1769a57b6e8f29e769a3ae9090c9eddf63a1e22c34bf3671e456cace2d9"
283
259
  },
284
260
  {
285
261
  "path": "protocols/ci-layering-protocol.md",
@@ -327,7 +303,7 @@
327
303
  },
328
304
  {
329
305
  "path": "protocols/state-layout-protocol.md",
330
- "sha256": "517bfa32a9446a898e753344ac652e16cf282fe19abc59490e90926f35ee1e81"
306
+ "sha256": "6cfbaf850cc2455ff89909a27bcfd9f7caa3f210cf552fa0b93b44367b43f860"
331
307
  },
332
308
  {
333
309
  "path": "protocols/submit-protocol.md",
@@ -339,7 +315,7 @@
339
315
  },
340
316
  {
341
317
  "path": "README.md",
342
- "sha256": "74a3ee92b7c7cc015e000143e53a0746a66bb6adcc6d2b6a648edc9c41cca32b"
318
+ "sha256": "9b97846381d413dc7d50f5d7841f4cabf6ea3e2c4b0163c43586317b481cec4c"
343
319
  },
344
320
  {
345
321
  "path": "scripts/harness_apidoc.py",
@@ -347,7 +323,7 @@
347
323
  },
348
324
  {
349
325
  "path": "scripts/harness_archive.py",
350
- "sha256": "5ca2338060125a5cc2df55d53864be2122e7f573b4c35a4f14c5803a232b1ec7"
326
+ "sha256": "e40181eec861bb1795bad27e8b5d1278a883ffadf8672e2f3888e25e34910869"
351
327
  },
352
328
  {
353
329
  "path": "scripts/harness_change.py",
@@ -375,7 +351,7 @@
375
351
  },
376
352
  {
377
353
  "path": "scripts/harness_events_sync.py",
378
- "sha256": "1097e6fccc1b81a54db2ccacdd8f8db835b5763dbf5c472873b82eb718e33f5f"
354
+ "sha256": "1dfd9b595e9b533ccbcba6521c05a9c59c9f6343acea371e2b68fd2eab9a6d97"
379
355
  },
380
356
  {
381
357
  "path": "scripts/harness_events.py",
@@ -391,7 +367,7 @@
391
367
  },
392
368
  {
393
369
  "path": "scripts/harness_gate.py",
394
- "sha256": "69588cf964a12e4819f4539090e39a2eb73666c9289fc1cf55f3846da4dc353c"
370
+ "sha256": "4ef8d33f1e3d3d44af6d7c32684665bab2e9b1cbd75b946cc926130624ff5a8f"
395
371
  },
396
372
  {
397
373
  "path": "scripts/harness_headless.py",
@@ -439,7 +415,7 @@
439
415
  },
440
416
  {
441
417
  "path": "scripts/harness_profile.py",
442
- "sha256": "253e302ea170fbbc80b387afa3dd1a0024d428e1e1b4d3171ac6a42148b201a2"
418
+ "sha256": "16b1aac01efc469a57a468fbcb20d72b4cd22a447ae76d0104a013bd3bd4aa0e"
443
419
  },
444
420
  {
445
421
  "path": "scripts/harness_report_model.py",
@@ -463,7 +439,7 @@
463
439
  },
464
440
  {
465
441
  "path": "scripts/harness_state.py",
466
- "sha256": "abadf62081ffa514c7efd41b538e824b05398fdc6f4b0d64a5d618207ee64e4d"
442
+ "sha256": "2a74c29c8c230d0780f23d079cb294597729141e9b988679a0dcc16caf209400"
467
443
  },
468
444
  {
469
445
  "path": "scripts/harness_sync.py",
@@ -2,9 +2,9 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "codebuddy",
5
- "bundle_version": "0.2.37",
5
+ "bundle_version": "0.2.39",
6
6
  "requires": {
7
- "minimumCliVersion": "0.2.51",
7
+ "minimumCliVersion": "0.2.53",
8
8
  "capabilities": [
9
9
  "sync@2",
10
10
  "rules-sync@1",
@@ -23,7 +23,7 @@
23
23
  "files": [
24
24
  {
25
25
  "path": ".harness-build.json",
26
- "sha256": "e48c74e19275fd1d90562cfc2a66744a15b100b0f1c804393bddb4d495c0e123"
26
+ "sha256": "088e321c0734314df74f03d085259c10a644b2cfea9296d74a52ac814c58d6a3"
27
27
  },
28
28
  {
29
29
  "path": "agents/harness-evaluator.md",
@@ -95,7 +95,7 @@
95
95
  },
96
96
  {
97
97
  "path": "harness-archive/SKILL.md",
98
- "sha256": "e2f8f9a32b51813d0a70d7abc85ae13edd55db17fdaa6b32e485d46a48f5530e"
98
+ "sha256": "a6e89f60ac18ae3e51bb23fb1ac2c35966b7dc8cb8dc1236992e72a41e203dbb"
99
99
  },
100
100
  {
101
101
  "path": "harness-archive/templates/render-summary.mjs",
@@ -115,7 +115,7 @@
115
115
  },
116
116
  {
117
117
  "path": "harness-codebase-map/SKILL.md",
118
- "sha256": "fddef637398a996e5478fe998df1d7c023755554efe28267f507120aa27e1049"
118
+ "sha256": "9eebed61df63b65f89cfebced1303ffa4028d7178e68d447d1aa36a4723dc4fe"
119
119
  },
120
120
  {
121
121
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -153,41 +153,17 @@
153
153
  "path": "harness-codebase-map/templates/TESTING.md",
154
154
  "sha256": "3e19408d0d711a8a9432a17b6f85e025d20e19c31fa385bacb622012e300c015"
155
155
  },
156
- {
157
- "path": "harness-knowledge-ingest/design.md",
158
- "sha256": "9d641634a8870eae0f637e2f380722176b48176d414c9493fa2872c791fda46a"
159
- },
160
- {
161
- "path": "harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml",
162
- "sha256": "943f93bf0d0b41f8a6b7e398b0e41367e54133a683a337637f081713b36d8ed3"
163
- },
164
- {
165
- "path": "harness-knowledge-ingest/mcp-config.example.json",
166
- "sha256": "538f815812f7e6e327ec295511bd15f41212be53df142e2fe1bc18c1f47c4124"
167
- },
168
- {
169
- "path": "harness-knowledge-ingest/reference.md",
170
- "sha256": "aaff0f08ff72f17ad610d6db51e9482b4eaeda87962765f679b2893dff9762e7"
171
- },
172
- {
173
- "path": "harness-knowledge-ingest/scripts/harness_knowledge_mcp.py",
174
- "sha256": "a421ca43e8d1ef1718d51a398e20abae411ea0007b3d45aa333791c511a2aa33"
175
- },
176
- {
177
- "path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
178
- "sha256": "e12d01a9695ccc6624a4a7690f831622d18866fc0a6c383c640dc7345394d047"
179
- },
180
156
  {
181
157
  "path": "harness-knowledge-ingest/SKILL.md",
182
- "sha256": "d3839f3a47460c17187006be10dc46c74a3c252070a3a13f9152f8059679c5a4"
158
+ "sha256": "797d61862cf9ac0b4fdb259bbf01b991c1a17b937483936bbbfb09bc71cf69fa"
183
159
  },
184
160
  {
185
161
  "path": "harness-knowledge-query/SKILL.md",
186
- "sha256": "faedc1889ea29fc7d82775b2c9304afa63eca47b6fcac06231f6c28dd23892aa"
162
+ "sha256": "4df482024002f30fe34799f2c9b0762ac28c77322891ed1aa9e2a06a5091865b"
187
163
  },
188
164
  {
189
165
  "path": "harness-plan/checklist.md",
190
- "sha256": "e99853043c543ad4ae3bcd4d5f773f5e518177034444b86cac3348c62a003f7a"
166
+ "sha256": "501e5e73c973e845134a94bd00834274f702d7c45be4e4f1b0fc63d8f9bd0945"
191
167
  },
192
168
  {
193
169
  "path": "harness-plan/protocols.md",
@@ -199,7 +175,7 @@
199
175
  },
200
176
  {
201
177
  "path": "harness-plan/SKILL.md",
202
- "sha256": "90975cc672289475020cdec61bd226a14b50c26fe19943c4cc75241cee959376"
178
+ "sha256": "aac1509ea13deb3b30a7be2691f68e2b34e14b7af0e17c9f970fd54f4ec8521e"
203
179
  },
204
180
  {
205
181
  "path": "harness-review/checklist.md",
@@ -215,7 +191,7 @@
215
191
  },
216
192
  {
217
193
  "path": "harness-review/SKILL.md",
218
- "sha256": "e7d18c2f4779854c9af3d5929d40a845d98290dfb610cbacd0cf83f491e3a0fd"
194
+ "sha256": "ce7f1ecf8f8eb52831a72091e5fe0e215e73ef9511de9ce4f1921b7731827382"
219
195
  },
220
196
  {
221
197
  "path": "harness-run/checklist.md",
@@ -231,7 +207,7 @@
231
207
  },
232
208
  {
233
209
  "path": "harness-run/SKILL.md",
234
- "sha256": "9c6b9452c937b87f55286cf1d0a2f40fc5a24cf4e8c188f1f3db75651ff19bfd"
210
+ "sha256": "0f3819e5026bd0b4a17f013d55a2832ea8c84ef56cabda1ea329c53a1a95a60d"
235
211
  },
236
212
  {
237
213
  "path": "harness-submit/checklist.md",
@@ -243,15 +219,15 @@
243
219
  },
244
220
  {
245
221
  "path": "harness-submit/SKILL.md",
246
- "sha256": "4e56355b089bab70135d3e9734c7c28df83f3d29311148ac31c502fa94453689"
222
+ "sha256": "4e15984f55107f031af0e9ccf576756ed48f7df4479ef7bfef8bab1c7ab1f3fb"
247
223
  },
248
224
  {
249
225
  "path": "harness-sync/reference.md",
250
- "sha256": "d841ffde8afd2739ed14c765e4d2dd40b4a799771e8256f0ac07d11e0c97f54d"
226
+ "sha256": "7f2aea7240db514c42530cffc00d78910ade30aaf54787042e017885a1ad9a41"
251
227
  },
252
228
  {
253
229
  "path": "harness-sync/SKILL.md",
254
- "sha256": "a124ffa0df253e2901972efa9535f79fcd15e650be17cab9ecb16bfa5d2ba23a"
230
+ "sha256": "042f20f95a288ce9574ad70efd41f8a62a43b9afcb19812a71669b6f610e7c24"
255
231
  },
256
232
  {
257
233
  "path": "harness-test/checklist.md",
@@ -275,11 +251,11 @@
275
251
  },
276
252
  {
277
253
  "path": "harness-test/SKILL.md",
278
- "sha256": "8a57a6040c5797f01c8eefbaf37ca585584617a48e79a043226c99f40dc3385a"
254
+ "sha256": "538d81040e40bb2f9a4e8ed2544651e2e17038e33993a885cbdd4334e765a0ef"
279
255
  },
280
256
  {
281
257
  "path": "protocols/archive-report-protocol.md",
282
- "sha256": "4237892699de6e4a45cf9196733029d82bbbc67ba3b22751449842c49ea0a68e"
258
+ "sha256": "50bdb1769a57b6e8f29e769a3ae9090c9eddf63a1e22c34bf3671e456cace2d9"
283
259
  },
284
260
  {
285
261
  "path": "protocols/ci-layering-protocol.md",
@@ -327,7 +303,7 @@
327
303
  },
328
304
  {
329
305
  "path": "protocols/state-layout-protocol.md",
330
- "sha256": "517bfa32a9446a898e753344ac652e16cf282fe19abc59490e90926f35ee1e81"
306
+ "sha256": "6cfbaf850cc2455ff89909a27bcfd9f7caa3f210cf552fa0b93b44367b43f860"
331
307
  },
332
308
  {
333
309
  "path": "protocols/submit-protocol.md",
@@ -339,7 +315,7 @@
339
315
  },
340
316
  {
341
317
  "path": "README.md",
342
- "sha256": "74a3ee92b7c7cc015e000143e53a0746a66bb6adcc6d2b6a648edc9c41cca32b"
318
+ "sha256": "9b97846381d413dc7d50f5d7841f4cabf6ea3e2c4b0163c43586317b481cec4c"
343
319
  },
344
320
  {
345
321
  "path": "scripts/harness_apidoc.py",
@@ -347,7 +323,7 @@
347
323
  },
348
324
  {
349
325
  "path": "scripts/harness_archive.py",
350
- "sha256": "5ca2338060125a5cc2df55d53864be2122e7f573b4c35a4f14c5803a232b1ec7"
326
+ "sha256": "e40181eec861bb1795bad27e8b5d1278a883ffadf8672e2f3888e25e34910869"
351
327
  },
352
328
  {
353
329
  "path": "scripts/harness_change.py",
@@ -375,7 +351,7 @@
375
351
  },
376
352
  {
377
353
  "path": "scripts/harness_events_sync.py",
378
- "sha256": "1097e6fccc1b81a54db2ccacdd8f8db835b5763dbf5c472873b82eb718e33f5f"
354
+ "sha256": "1dfd9b595e9b533ccbcba6521c05a9c59c9f6343acea371e2b68fd2eab9a6d97"
379
355
  },
380
356
  {
381
357
  "path": "scripts/harness_events.py",
@@ -391,7 +367,7 @@
391
367
  },
392
368
  {
393
369
  "path": "scripts/harness_gate.py",
394
- "sha256": "69588cf964a12e4819f4539090e39a2eb73666c9289fc1cf55f3846da4dc353c"
370
+ "sha256": "4ef8d33f1e3d3d44af6d7c32684665bab2e9b1cbd75b946cc926130624ff5a8f"
395
371
  },
396
372
  {
397
373
  "path": "scripts/harness_headless.py",
@@ -439,7 +415,7 @@
439
415
  },
440
416
  {
441
417
  "path": "scripts/harness_profile.py",
442
- "sha256": "253e302ea170fbbc80b387afa3dd1a0024d428e1e1b4d3171ac6a42148b201a2"
418
+ "sha256": "16b1aac01efc469a57a468fbcb20d72b4cd22a447ae76d0104a013bd3bd4aa0e"
443
419
  },
444
420
  {
445
421
  "path": "scripts/harness_report_model.py",
@@ -463,7 +439,7 @@
463
439
  },
464
440
  {
465
441
  "path": "scripts/harness_state.py",
466
- "sha256": "abadf62081ffa514c7efd41b538e824b05398fdc6f4b0d64a5d618207ee64e4d"
442
+ "sha256": "2a74c29c8c230d0780f23d079cb294597729141e9b988679a0dcc16caf209400"
467
443
  },
468
444
  {
469
445
  "path": "scripts/harness_sync.py",