@hunter-harness/workflow-harness 0.2.67 → 0.2.70

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 (210) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/contracts/workflow-policy.json +401 -88
  3. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
  4. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  5. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  6. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  7. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +4 -2
  8. package/harness/bundles/general/claude-code/harness-plan/reference.md +32 -2
  9. package/harness/bundles/general/claude-code/harness-pull/SKILL.md +73 -0
  10. package/harness/bundles/general/claude-code/harness-push/SKILL.md +73 -0
  11. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-run/SKILL.md +3 -1
  13. package/harness/bundles/general/claude-code/harness-run/reference.md +20 -0
  14. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  15. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  16. package/harness/bundles/general/claude-code/harness-test/SKILL.md +3 -1
  17. package/harness/bundles/general/claude-code/harness-test/pitfalls.md +34 -3
  18. package/harness/bundles/general/claude-code/harness-test/reference.md +9 -0
  19. package/harness/bundles/general/claude-code/scripts/harness_context.py +27 -7
  20. package/harness/bundles/general/claude-code/scripts/harness_events.py +12 -3
  21. package/harness/bundles/general/claude-code/scripts/harness_gate.py +127 -11
  22. package/harness/bundles/general/claude-code/scripts/harness_ledger.py +244 -5
  23. package/harness/bundles/general/claude-code/scripts/harness_plan_finalize.py +373 -19
  24. package/harness/bundles/general/claude-code/scripts/harness_service.py +69 -15
  25. package/harness/bundles/general/claude-code/scripts/harness_test_guard.py +48 -1
  26. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  27. package/harness/bundles/general/codebuddy/contracts/workflow-policy.json +401 -88
  28. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  29. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  30. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  31. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  32. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +4 -2
  33. package/harness/bundles/general/codebuddy/harness-plan/reference.md +32 -2
  34. package/harness/bundles/general/codebuddy/harness-pull/SKILL.md +55 -0
  35. package/harness/bundles/general/codebuddy/harness-push/SKILL.md +55 -0
  36. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  37. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +3 -1
  38. package/harness/bundles/general/codebuddy/harness-run/reference.md +20 -0
  39. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  40. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  41. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +3 -1
  42. package/harness/bundles/general/codebuddy/harness-test/pitfalls.md +34 -3
  43. package/harness/bundles/general/codebuddy/harness-test/reference.md +9 -0
  44. package/harness/bundles/general/codebuddy/scripts/harness_context.py +27 -7
  45. package/harness/bundles/general/codebuddy/scripts/harness_events.py +12 -3
  46. package/harness/bundles/general/codebuddy/scripts/harness_gate.py +127 -11
  47. package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +244 -5
  48. package/harness/bundles/general/codebuddy/scripts/harness_plan_finalize.py +373 -19
  49. package/harness/bundles/general/codebuddy/scripts/harness_service.py +69 -15
  50. package/harness/bundles/general/codebuddy/scripts/harness_test_guard.py +48 -1
  51. package/harness/bundles/general/codex/.harness-build.json +1 -1
  52. package/harness/bundles/general/codex/contracts/workflow-policy.json +401 -88
  53. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  54. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  55. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  56. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  57. package/harness/bundles/general/codex/harness-plan/SKILL.md +4 -2
  58. package/harness/bundles/general/codex/harness-plan/reference.md +32 -2
  59. package/harness/bundles/general/codex/harness-pull/SKILL.md +55 -0
  60. package/harness/bundles/general/codex/harness-push/SKILL.md +55 -0
  61. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  62. package/harness/bundles/general/codex/harness-run/SKILL.md +3 -1
  63. package/harness/bundles/general/codex/harness-run/reference.md +20 -0
  64. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  65. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  66. package/harness/bundles/general/codex/harness-test/SKILL.md +3 -1
  67. package/harness/bundles/general/codex/harness-test/pitfalls.md +34 -3
  68. package/harness/bundles/general/codex/harness-test/reference.md +9 -0
  69. package/harness/bundles/general/codex/scripts/harness_context.py +27 -7
  70. package/harness/bundles/general/codex/scripts/harness_events.py +12 -3
  71. package/harness/bundles/general/codex/scripts/harness_gate.py +127 -11
  72. package/harness/bundles/general/codex/scripts/harness_ledger.py +244 -5
  73. package/harness/bundles/general/codex/scripts/harness_plan_finalize.py +373 -19
  74. package/harness/bundles/general/codex/scripts/harness_service.py +69 -15
  75. package/harness/bundles/general/codex/scripts/harness_test_guard.py +48 -1
  76. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  77. package/harness/bundles/general/cursor/contracts/workflow-policy.json +401 -88
  78. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  79. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  80. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  81. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  82. package/harness/bundles/general/cursor/harness-plan/SKILL.md +4 -2
  83. package/harness/bundles/general/cursor/harness-plan/reference.md +32 -2
  84. package/harness/bundles/general/cursor/harness-pull/SKILL.md +55 -0
  85. package/harness/bundles/general/cursor/harness-push/SKILL.md +55 -0
  86. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  87. package/harness/bundles/general/cursor/harness-run/SKILL.md +3 -1
  88. package/harness/bundles/general/cursor/harness-run/reference.md +20 -0
  89. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  90. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  91. package/harness/bundles/general/cursor/harness-test/SKILL.md +3 -1
  92. package/harness/bundles/general/cursor/harness-test/pitfalls.md +34 -3
  93. package/harness/bundles/general/cursor/harness-test/reference.md +9 -0
  94. package/harness/bundles/general/cursor/scripts/harness_context.py +27 -7
  95. package/harness/bundles/general/cursor/scripts/harness_events.py +12 -3
  96. package/harness/bundles/general/cursor/scripts/harness_gate.py +127 -11
  97. package/harness/bundles/general/cursor/scripts/harness_ledger.py +244 -5
  98. package/harness/bundles/general/cursor/scripts/harness_plan_finalize.py +373 -19
  99. package/harness/bundles/general/cursor/scripts/harness_service.py +69 -15
  100. package/harness/bundles/general/cursor/scripts/harness_test_guard.py +48 -1
  101. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  102. package/harness/bundles/java/claude-code/contracts/workflow-policy.json +401 -88
  103. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  104. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  105. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  106. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  107. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  108. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  109. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +4 -2
  110. package/harness/bundles/java/claude-code/harness-plan/reference.md +32 -2
  111. package/harness/bundles/java/claude-code/harness-pull/SKILL.md +73 -0
  112. package/harness/bundles/java/claude-code/harness-push/SKILL.md +73 -0
  113. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  114. package/harness/bundles/java/claude-code/harness-run/SKILL.md +3 -1
  115. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  116. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  117. package/harness/bundles/java/claude-code/harness-test/SKILL.md +3 -1
  118. package/harness/bundles/java/claude-code/harness-test/pitfalls.md +34 -3
  119. package/harness/bundles/java/claude-code/scripts/harness_context.py +27 -7
  120. package/harness/bundles/java/claude-code/scripts/harness_events.py +12 -3
  121. package/harness/bundles/java/claude-code/scripts/harness_gate.py +127 -11
  122. package/harness/bundles/java/claude-code/scripts/harness_ledger.py +244 -5
  123. package/harness/bundles/java/claude-code/scripts/harness_plan_finalize.py +373 -19
  124. package/harness/bundles/java/claude-code/scripts/harness_service.py +69 -15
  125. package/harness/bundles/java/claude-code/scripts/harness_test_guard.py +48 -1
  126. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  127. package/harness/bundles/java/codebuddy/contracts/workflow-policy.json +401 -88
  128. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  129. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  130. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  131. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  132. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  133. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  134. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +4 -2
  135. package/harness/bundles/java/codebuddy/harness-plan/reference.md +32 -2
  136. package/harness/bundles/java/codebuddy/harness-pull/SKILL.md +55 -0
  137. package/harness/bundles/java/codebuddy/harness-push/SKILL.md +55 -0
  138. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  139. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +3 -1
  140. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  141. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  142. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +3 -1
  143. package/harness/bundles/java/codebuddy/harness-test/pitfalls.md +34 -3
  144. package/harness/bundles/java/codebuddy/scripts/harness_context.py +27 -7
  145. package/harness/bundles/java/codebuddy/scripts/harness_events.py +12 -3
  146. package/harness/bundles/java/codebuddy/scripts/harness_gate.py +127 -11
  147. package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +244 -5
  148. package/harness/bundles/java/codebuddy/scripts/harness_plan_finalize.py +373 -19
  149. package/harness/bundles/java/codebuddy/scripts/harness_service.py +69 -15
  150. package/harness/bundles/java/codebuddy/scripts/harness_test_guard.py +48 -1
  151. package/harness/bundles/java/codex/.harness-build.json +1 -1
  152. package/harness/bundles/java/codex/contracts/workflow-policy.json +401 -88
  153. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  154. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  155. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  156. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  157. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  158. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  159. package/harness/bundles/java/codex/harness-plan/SKILL.md +4 -2
  160. package/harness/bundles/java/codex/harness-plan/reference.md +32 -2
  161. package/harness/bundles/java/codex/harness-pull/SKILL.md +55 -0
  162. package/harness/bundles/java/codex/harness-push/SKILL.md +55 -0
  163. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  164. package/harness/bundles/java/codex/harness-run/SKILL.md +3 -1
  165. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  166. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  167. package/harness/bundles/java/codex/harness-test/SKILL.md +3 -1
  168. package/harness/bundles/java/codex/harness-test/pitfalls.md +34 -3
  169. package/harness/bundles/java/codex/scripts/harness_context.py +27 -7
  170. package/harness/bundles/java/codex/scripts/harness_events.py +12 -3
  171. package/harness/bundles/java/codex/scripts/harness_gate.py +127 -11
  172. package/harness/bundles/java/codex/scripts/harness_ledger.py +244 -5
  173. package/harness/bundles/java/codex/scripts/harness_plan_finalize.py +373 -19
  174. package/harness/bundles/java/codex/scripts/harness_service.py +69 -15
  175. package/harness/bundles/java/codex/scripts/harness_test_guard.py +48 -1
  176. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  177. package/harness/bundles/java/cursor/contracts/workflow-policy.json +401 -88
  178. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  179. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  180. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  181. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  182. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  183. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  184. package/harness/bundles/java/cursor/harness-plan/SKILL.md +4 -2
  185. package/harness/bundles/java/cursor/harness-plan/reference.md +32 -2
  186. package/harness/bundles/java/cursor/harness-pull/SKILL.md +55 -0
  187. package/harness/bundles/java/cursor/harness-push/SKILL.md +55 -0
  188. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  189. package/harness/bundles/java/cursor/harness-run/SKILL.md +3 -1
  190. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  191. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  192. package/harness/bundles/java/cursor/harness-test/SKILL.md +3 -1
  193. package/harness/bundles/java/cursor/harness-test/pitfalls.md +34 -3
  194. package/harness/bundles/java/cursor/scripts/harness_context.py +27 -7
  195. package/harness/bundles/java/cursor/scripts/harness_events.py +12 -3
  196. package/harness/bundles/java/cursor/scripts/harness_gate.py +127 -11
  197. package/harness/bundles/java/cursor/scripts/harness_ledger.py +244 -5
  198. package/harness/bundles/java/cursor/scripts/harness_plan_finalize.py +373 -19
  199. package/harness/bundles/java/cursor/scripts/harness_service.py +69 -15
  200. package/harness/bundles/java/cursor/scripts/harness_test_guard.py +48 -1
  201. package/harness/manifests/general/claude-code.json +36 -26
  202. package/harness/manifests/general/codebuddy.json +36 -26
  203. package/harness/manifests/general/codex.json +36 -26
  204. package/harness/manifests/general/cursor.json +36 -26
  205. package/harness/manifests/java/claude-code.json +36 -26
  206. package/harness/manifests/java/codebuddy.json +36 -26
  207. package/harness/manifests/java/codex.json +36 -26
  208. package/harness/manifests/java/cursor.json +36 -26
  209. package/hunter-workflow-family.json +11 -7
  210. package/package.json +1 -1
@@ -178,6 +178,32 @@ def _state_project_root(project: Path) -> Path:
178
178
  return resolved.parent if resolved.name == ".git" else project
179
179
 
180
180
 
181
+ def _invalid_project_root(
182
+ action: str, project: Path | str, resolved: Path
183
+ ) -> dict[str, Any] | None:
184
+ """Reject a --project that is not an existing directory.
185
+
186
+ Passing the *project name* (``--project udp``) instead of its path used to
187
+ resolve to ``<cwd>/udp`` and then surface as SNAPSHOT_MISSING — an error
188
+ that points at the wrong thing entirely. Fail here with the resolved path
189
+ so the real mistake is visible.
190
+ """
191
+ if resolved.is_dir():
192
+ return None
193
+ return _result(
194
+ False,
195
+ action,
196
+ "PROJECT_ROOT_INVALID",
197
+ [],
198
+ project=str(project),
199
+ resolvedProject=str(resolved),
200
+ hint=(
201
+ "--project takes a filesystem path to the project root "
202
+ "(use '.' when running from it), not the project name"
203
+ ),
204
+ )
205
+
206
+
181
207
  def _change_dir(project: Path, change_dir: Path | str) -> Path | None:
182
208
  state_project = _state_project_root(project)
183
209
  candidate = Path(change_dir)
@@ -556,6 +582,9 @@ def record(
556
582
  ) -> dict[str, Any]:
557
583
  action = "record"
558
584
  project_root = Path(project).resolve()
585
+ invalid_root = _invalid_project_root(action, project, project_root)
586
+ if invalid_root is not None:
587
+ return invalid_root
559
588
  if not files:
560
589
  return _result(False, action, "EMPTY_FILES", [])
561
590
  if reason not in REASONS:
@@ -1452,6 +1481,9 @@ def _reconcile_close_manifest(
1452
1481
  def begin(project: Path | str, change_dir: Path | str) -> dict[str, Any]:
1453
1482
  action = "begin"
1454
1483
  project_root = Path(project).resolve()
1484
+ invalid_root = _invalid_project_root(action, project, project_root)
1485
+ if invalid_root is not None:
1486
+ return invalid_root
1455
1487
  change_root = _change_dir(project_root, change_dir)
1456
1488
  if change_root is None:
1457
1489
  return _result(False, action, "CHANGE_DIR_OUTSIDE_PROJECT", [])
@@ -1545,12 +1577,24 @@ def begin(project: Path | str, change_dir: Path | str) -> dict[str, Any]:
1545
1577
  def close(project: Path | str, change_dir: Path | str) -> dict[str, Any]:
1546
1578
  action = "close"
1547
1579
  project_root = Path(project).resolve()
1580
+ invalid_root = _invalid_project_root(action, project, project_root)
1581
+ if invalid_root is not None:
1582
+ return invalid_root
1548
1583
  change_root = _change_dir(project_root, change_dir)
1549
1584
  if change_root is None:
1550
1585
  return _result(False, action, "CHANGE_DIR_OUTSIDE_PROJECT", [])
1551
1586
  snapshot_path = _state_root(change_root) / SNAPSHOT_REL
1552
1587
  if not snapshot_path.is_file():
1553
- return _result(False, action, "SNAPSHOT_MISSING", [])
1588
+ # Name the exact path: this snapshot is evidence/test-guard-snapshot.json,
1589
+ # not meta/state-snapshot.json, and the two are easy to confuse.
1590
+ return _result(
1591
+ False,
1592
+ action,
1593
+ "SNAPSHOT_MISSING",
1594
+ [],
1595
+ expectedSnapshot=str(snapshot_path),
1596
+ hint="run `harness_test_guard.py begin` for this change first",
1597
+ )
1554
1598
  try:
1555
1599
  snapshot = _read_json(snapshot_path)
1556
1600
  except (OSError, json.JSONDecodeError) as exc:
@@ -1752,6 +1796,9 @@ def mark(
1752
1796
  def stage(project: Path | str, change_dir: Path | str) -> dict[str, Any]:
1753
1797
  action = "stage"
1754
1798
  project_root = Path(project).resolve()
1799
+ invalid_root = _invalid_project_root(action, project, project_root)
1800
+ if invalid_root is not None:
1801
+ return invalid_root
1755
1802
  change_root = _change_dir(project_root, change_dir)
1756
1803
  if change_root is None:
1757
1804
  return _result(False, action, "CHANGE_DIR_OUTSIDE_PROJECT", [])
@@ -2,9 +2,9 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "claude-code",
5
- "bundle_version": "0.2.56",
5
+ "bundle_version": "0.2.59",
6
6
  "requires": {
7
- "minimumCliVersion": "0.2.76",
7
+ "minimumCliVersion": "0.2.79",
8
8
  "capabilities": [
9
9
  "sync@2",
10
10
  "rules-sync@1",
@@ -16,14 +16,16 @@
16
16
  "external-convergence@1",
17
17
  "codegraph-status@2",
18
18
  "doctor-capability@1",
19
- "registry-governance@1"
19
+ "registry-governance@1",
20
+ "remote-sync-push@1",
21
+ "remote-sync-pull@1"
20
22
  ]
21
23
  },
22
24
  "generator": "harness_deploy.py",
23
25
  "files": [
24
26
  {
25
27
  "path": ".harness-build.json",
26
- "sha256": "61bf764d2974e9cf2c308f2115600d5cac748746e0eafd8e3eb033bb11925bb1"
28
+ "sha256": "081ba4526127421dd9f38638fd86eece5ddb4f07264a4e94f950164a1b76b2cd"
27
29
  },
28
30
  {
29
31
  "path": "agents/harness-evaluator.md",
@@ -79,7 +81,7 @@
79
81
  },
80
82
  {
81
83
  "path": "contracts/workflow-policy.json",
82
- "sha256": "3b671d438a687d800879863590ff04bd953c7d3eac6865bda3d85cdfc26fbc52"
84
+ "sha256": "65a308f68b43b7c43b7566d77336b15152a391d26abc7f9fec18290994c85a82"
83
85
  },
84
86
  {
85
87
  "path": "harness-archive/checklist.md",
@@ -95,7 +97,7 @@
95
97
  },
96
98
  {
97
99
  "path": "harness-archive/SKILL.md",
98
- "sha256": "f4183871f5a87496262a6ad3a3bfcbd2b0263a137afa0b1c72a794cfd77421cd"
100
+ "sha256": "ec075dc1d847d1a810c8cb24f7fcbc37bb9e48ed18a11739e42333993d206d08"
99
101
  },
100
102
  {
101
103
  "path": "harness-archive/templates/summary-data-template.json",
@@ -111,7 +113,7 @@
111
113
  },
112
114
  {
113
115
  "path": "harness-codebase-map/SKILL.md",
114
- "sha256": "dfb222b4240e009575809f7f769528a48ce41e7189b17d286691cc03ae4a1c84"
116
+ "sha256": "6414d47dbd44b58cd2fe4a72be69b94a0444659cce6fa95d06fe01089d86d305"
115
117
  },
116
118
  {
117
119
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -151,11 +153,11 @@
151
153
  },
152
154
  {
153
155
  "path": "harness-knowledge-ingest/SKILL.md",
154
- "sha256": "16935e62cd8f17fc07fad8795b69cde8a17e1ccf7a11490767b63b98c6ffbb1f"
156
+ "sha256": "1368b2dd1dac8f09714706e21f7bc4b02f1afd08ac81ad2df952d1680bafa949"
155
157
  },
156
158
  {
157
159
  "path": "harness-knowledge-query/SKILL.md",
158
- "sha256": "55b8b54fcfeb13b90f8719d40186a29a7d844a97251ea8be719e68b4de7f6669"
160
+ "sha256": "7051b89fae0434d7e55738dcca7444294a666d9710828563326c1567e4d1043f"
159
161
  },
160
162
  {
161
163
  "path": "harness-plan/checklist.md",
@@ -167,11 +169,19 @@
167
169
  },
168
170
  {
169
171
  "path": "harness-plan/reference.md",
170
- "sha256": "25aa50db1667d8cebd63e566ebd7fa764f4e0c42f211666069f42835e75ee5b9"
172
+ "sha256": "e06263459603bba4be15f66455154836dc693c5d3f943abeb6774b30dbe304c7"
171
173
  },
172
174
  {
173
175
  "path": "harness-plan/SKILL.md",
174
- "sha256": "632f0d8bcb43dd53bbe25090b03a2aee6016f607d83ee4b5aa9ae7e2a21af1b5"
176
+ "sha256": "6263cd6bb080e8fe25db52486aadbb2301422e5989ca1fd8eda089273c80803e"
177
+ },
178
+ {
179
+ "path": "harness-pull/SKILL.md",
180
+ "sha256": "ef3f32a880bf67c1e0af2aaca385f16e2b710f78c89080226bdce508cce33618"
181
+ },
182
+ {
183
+ "path": "harness-push/SKILL.md",
184
+ "sha256": "f8a1d0ad94c22a04d41c42ba533ef99f269f6f9115ae0a825e780d321cc324e9"
175
185
  },
176
186
  {
177
187
  "path": "harness-review/checklist.md",
@@ -187,7 +197,7 @@
187
197
  },
188
198
  {
189
199
  "path": "harness-review/SKILL.md",
190
- "sha256": "7c8422bb30842da316954542ff0f43f0d62fa5f22bf13678ce6e5c19f6fbee83"
200
+ "sha256": "f09cd76e45a0092e3b0be1079974ca9c6967b1cd53d5773f2ed24a44fe19a899"
191
201
  },
192
202
  {
193
203
  "path": "harness-run/checklist.md",
@@ -199,11 +209,11 @@
199
209
  },
200
210
  {
201
211
  "path": "harness-run/reference.md",
202
- "sha256": "1d9714349da70302f19ba2a8f41bfaa125beb099db559070df3c0539c8da3a69"
212
+ "sha256": "a11250b12193017d716358c64338685218d4dc1c7022969eb3b52c48d9a2ff00"
203
213
  },
204
214
  {
205
215
  "path": "harness-run/SKILL.md",
206
- "sha256": "4df1af3efc8b58a19296f043fe86d71419262efd521df2334e3bace9b84620b8"
216
+ "sha256": "d6d6e6956f2cb89a1be8d6b88c76f93a990238754a5dda3b91a5fe9a043172d3"
207
217
  },
208
218
  {
209
219
  "path": "harness-submit/checklist.md",
@@ -215,7 +225,7 @@
215
225
  },
216
226
  {
217
227
  "path": "harness-submit/SKILL.md",
218
- "sha256": "afcf6d8515397d1beb5b439b32b1d475e3cafd13957517e4649c318527ce568b"
228
+ "sha256": "668e8c8b25ce64fa1ce7a6dcebd5cfec67fa3384f88ccc4f42ea6a6163946041"
219
229
  },
220
230
  {
221
231
  "path": "harness-sync/reference.md",
@@ -223,7 +233,7 @@
223
233
  },
224
234
  {
225
235
  "path": "harness-sync/SKILL.md",
226
- "sha256": "284e32beb780883baada6f6ea7db19f765c9380381012723541bcf06e93ec4a8"
236
+ "sha256": "c311a0a0568698c4b6b05ee6f6e52f22430e948e30d383f925fffa880a8d7c0b"
227
237
  },
228
238
  {
229
239
  "path": "harness-test/checklist.md",
@@ -235,11 +245,11 @@
235
245
  },
236
246
  {
237
247
  "path": "harness-test/pitfalls.md",
238
- "sha256": "e28bdcbff963d3cb071a5b0662fccf73682e8c26c83bb57981f9e4c2ce308ba3"
248
+ "sha256": "93ba0f76c4b182e0fbabd25d883dd2970c87040b97ff8c69f835ad6f2759f21d"
239
249
  },
240
250
  {
241
251
  "path": "harness-test/reference.md",
242
- "sha256": "02104991a1a551181a618cca6d793b3a193546b4f7c5d34858ea768dee7545ef"
252
+ "sha256": "b2445487ee14d96466641763870b44f01a29ab8d3cae1ec70d2a7c045e882b1e"
243
253
  },
244
254
  {
245
255
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -247,7 +257,7 @@
247
257
  },
248
258
  {
249
259
  "path": "harness-test/SKILL.md",
250
- "sha256": "6e63e8fbf0c2c4c27283b0f0f66f959472e39996d8cda8baf0cb00c90c2422cc"
260
+ "sha256": "ae70ceab928f0009cf12c9fb79bec47932bfac6ec9bb11ce9052a77bec34255b"
251
261
  },
252
262
  {
253
263
  "path": "protocols/archive-report-protocol.md",
@@ -331,7 +341,7 @@
331
341
  },
332
342
  {
333
343
  "path": "scripts/harness_context.py",
334
- "sha256": "464b59fea967bf123a7e203524b22ce68ead7db0250e686407ea29520853065f"
344
+ "sha256": "c3b4be68cf0034e30199e1cffb8a03c74e5d95267095b737a55bf6d96c1c1df3"
335
345
  },
336
346
  {
337
347
  "path": "scripts/harness_deploy.py",
@@ -351,7 +361,7 @@
351
361
  },
352
362
  {
353
363
  "path": "scripts/harness_events.py",
354
- "sha256": "f073ff0445a1de6d4e3030eb9b989e2f419ccdc9c36efcf060727ac4405b0804"
364
+ "sha256": "3116137be32bd696adce47c79f2af99a8f1517a7555bd1bbaffe27e17fd12fbc"
355
365
  },
356
366
  {
357
367
  "path": "scripts/harness_execution_contracts.py",
@@ -363,7 +373,7 @@
363
373
  },
364
374
  {
365
375
  "path": "scripts/harness_gate.py",
366
- "sha256": "662f3490217546c9a20ce910f14493133dcf1a5cd1127f6cc6c50747ac22618c"
376
+ "sha256": "0a226076091d9c1d715a48164dfc0ca123e1839a47753f826729bfca4e327c7f"
367
377
  },
368
378
  {
369
379
  "path": "scripts/harness_headless.py",
@@ -375,7 +385,7 @@
375
385
  },
376
386
  {
377
387
  "path": "scripts/harness_ledger.py",
378
- "sha256": "58f45d0a30c124b2493fc4a4c66f40c85c9a3dda952fccafbdc05a9a7a135d02"
388
+ "sha256": "5e5787ee891f9e41e815f487422946fc78b2242b78a01e232e0132782f887c6b"
379
389
  },
380
390
  {
381
391
  "path": "scripts/harness_migration_head.py",
@@ -399,7 +409,7 @@
399
409
  },
400
410
  {
401
411
  "path": "scripts/harness_plan_finalize.py",
402
- "sha256": "a71a1c7779946e51907bff724c4f6adf37d7be64bcf2a2a0039f0db9b771a09f"
412
+ "sha256": "af12b53ab5503eb5c0ead5bd58e8da9d5389c649958ac678bf448e4c8a286d5b"
403
413
  },
404
414
  {
405
415
  "path": "scripts/harness_preflight.py",
@@ -431,7 +441,7 @@
431
441
  },
432
442
  {
433
443
  "path": "scripts/harness_service.py",
434
- "sha256": "39cb9ff476e61df0c173cc1032b99b7db3a8e9c180d410a232f845c7bd13e328"
444
+ "sha256": "ea56f9e6d8454255c1206c1239ef5d4e04aa31cd21f6edd62ba04dba89a795f1"
435
445
  },
436
446
  {
437
447
  "path": "scripts/harness_state.py",
@@ -447,7 +457,7 @@
447
457
  },
448
458
  {
449
459
  "path": "scripts/harness_test_guard.py",
450
- "sha256": "a6ef4107e6ee32038753262623d2ff01c86cc640b42183c7117ed0da943c5742"
460
+ "sha256": "1b4420875a4dc2cfa14dd75b5a8bd4bf4da230bf916651262ae61f7ab5386a08"
451
461
  },
452
462
  {
453
463
  "path": "scripts/harness_test_runner.py",
@@ -2,9 +2,9 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "codebuddy",
5
- "bundle_version": "0.2.56",
5
+ "bundle_version": "0.2.59",
6
6
  "requires": {
7
- "minimumCliVersion": "0.2.76",
7
+ "minimumCliVersion": "0.2.79",
8
8
  "capabilities": [
9
9
  "sync@2",
10
10
  "rules-sync@1",
@@ -16,14 +16,16 @@
16
16
  "external-convergence@1",
17
17
  "codegraph-status@2",
18
18
  "doctor-capability@1",
19
- "registry-governance@1"
19
+ "registry-governance@1",
20
+ "remote-sync-push@1",
21
+ "remote-sync-pull@1"
20
22
  ]
21
23
  },
22
24
  "generator": "harness_deploy.py",
23
25
  "files": [
24
26
  {
25
27
  "path": ".harness-build.json",
26
- "sha256": "e397c212489b4d9ef555669a3e98d5736551921551559b2b471669b074386a15"
28
+ "sha256": "5c6b03036e917c534766506c2618b4c62ddf8ec0bed346959d3425f3ee947cd7"
27
29
  },
28
30
  {
29
31
  "path": "agents/harness-evaluator.md",
@@ -79,7 +81,7 @@
79
81
  },
80
82
  {
81
83
  "path": "contracts/workflow-policy.json",
82
- "sha256": "3b671d438a687d800879863590ff04bd953c7d3eac6865bda3d85cdfc26fbc52"
84
+ "sha256": "65a308f68b43b7c43b7566d77336b15152a391d26abc7f9fec18290994c85a82"
83
85
  },
84
86
  {
85
87
  "path": "harness-archive/checklist.md",
@@ -95,7 +97,7 @@
95
97
  },
96
98
  {
97
99
  "path": "harness-archive/SKILL.md",
98
- "sha256": "c03ed56c938ae49e46ff5b8514a88dd26015a13bebc6c692fc32955264826794"
100
+ "sha256": "9648f9c476b5804161e26634706f5a8509c05064263fffee46c2868135d7adac"
99
101
  },
100
102
  {
101
103
  "path": "harness-archive/templates/summary-data-template.json",
@@ -111,7 +113,7 @@
111
113
  },
112
114
  {
113
115
  "path": "harness-codebase-map/SKILL.md",
114
- "sha256": "0cc5671a0fc37085a0b00a9d6bc04d114f32052f381c3d082e73946bbcb51552"
116
+ "sha256": "0817b33db2ba793aba0f90192965e5fa13aeda313e9022764afb2de3243ff88a"
115
117
  },
116
118
  {
117
119
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -151,11 +153,11 @@
151
153
  },
152
154
  {
153
155
  "path": "harness-knowledge-ingest/SKILL.md",
154
- "sha256": "7f0dc5ed7c18b63afb5c85798cfc86efdfe67f64e3c13793ddfe6abfecde048f"
156
+ "sha256": "e766eb81b91c3f5f1f2b466cdaafe8d44f8c58c4629114e16b86f7a1e644cc56"
155
157
  },
156
158
  {
157
159
  "path": "harness-knowledge-query/SKILL.md",
158
- "sha256": "b8334155de3d86b17e2ed6686751d1591dd3f59869376585fdd20fdf269332f3"
160
+ "sha256": "027720727c9cfcbc714c42909f00f7eb9c47cea592fda5eac8b9f847a0bf04eb"
159
161
  },
160
162
  {
161
163
  "path": "harness-plan/checklist.md",
@@ -167,11 +169,19 @@
167
169
  },
168
170
  {
169
171
  "path": "harness-plan/reference.md",
170
- "sha256": "25aa50db1667d8cebd63e566ebd7fa764f4e0c42f211666069f42835e75ee5b9"
172
+ "sha256": "e06263459603bba4be15f66455154836dc693c5d3f943abeb6774b30dbe304c7"
171
173
  },
172
174
  {
173
175
  "path": "harness-plan/SKILL.md",
174
- "sha256": "be3ea45291719e5ecae39aa491e8bc8f93db5874a834d7e86534c5fffa5ccd55"
176
+ "sha256": "a64f1ebbabf936088e6edac8dc8a78f0d300dc505853af1faee99994dd986dd7"
177
+ },
178
+ {
179
+ "path": "harness-pull/SKILL.md",
180
+ "sha256": "db00756d9280b9f31fd1268fb11a42a50c1ea829ea407011e125a6edc1ef4883"
181
+ },
182
+ {
183
+ "path": "harness-push/SKILL.md",
184
+ "sha256": "e5abfb52c785ad4f49193b07a3481de13f2b16582d46ebd0f602cb887d119ce9"
175
185
  },
176
186
  {
177
187
  "path": "harness-review/checklist.md",
@@ -187,7 +197,7 @@
187
197
  },
188
198
  {
189
199
  "path": "harness-review/SKILL.md",
190
- "sha256": "e5064ff7cf3917aefecd2e3bdb712934a4d8f4ed8f7a863a61a7e369df8601db"
200
+ "sha256": "2c899517d6a7f83c042dadc9f73d6466b6faf7998e206642851b3da4d6e66199"
191
201
  },
192
202
  {
193
203
  "path": "harness-run/checklist.md",
@@ -199,11 +209,11 @@
199
209
  },
200
210
  {
201
211
  "path": "harness-run/reference.md",
202
- "sha256": "1d9714349da70302f19ba2a8f41bfaa125beb099db559070df3c0539c8da3a69"
212
+ "sha256": "a11250b12193017d716358c64338685218d4dc1c7022969eb3b52c48d9a2ff00"
203
213
  },
204
214
  {
205
215
  "path": "harness-run/SKILL.md",
206
- "sha256": "422b084248cbf8431790b419e7c70806ab44931258141a3d1c2312cb81c8550f"
216
+ "sha256": "a87272f260363da4216064fce2444a741f92131fcf136605d5d35babae4dc4b1"
207
217
  },
208
218
  {
209
219
  "path": "harness-submit/checklist.md",
@@ -215,7 +225,7 @@
215
225
  },
216
226
  {
217
227
  "path": "harness-submit/SKILL.md",
218
- "sha256": "5edf0a0ee975a5e4cb59b41ef7719037c266b7a382a3e1ea4e771fc7ad5f9cd9"
228
+ "sha256": "ddff7802558d312b1e76b9b37f5e31657bd6498d019b9e16af90967df7a568fc"
219
229
  },
220
230
  {
221
231
  "path": "harness-sync/reference.md",
@@ -223,7 +233,7 @@
223
233
  },
224
234
  {
225
235
  "path": "harness-sync/SKILL.md",
226
- "sha256": "fb93a6a4028b062a27c89853d3e5779ea00816b947c8f31484851bbf56aa766b"
236
+ "sha256": "e1ead760d54d81de7327cd400be23e5071cb83bc45697a5fbc8502e591b6361a"
227
237
  },
228
238
  {
229
239
  "path": "harness-test/checklist.md",
@@ -235,11 +245,11 @@
235
245
  },
236
246
  {
237
247
  "path": "harness-test/pitfalls.md",
238
- "sha256": "e28bdcbff963d3cb071a5b0662fccf73682e8c26c83bb57981f9e4c2ce308ba3"
248
+ "sha256": "93ba0f76c4b182e0fbabd25d883dd2970c87040b97ff8c69f835ad6f2759f21d"
239
249
  },
240
250
  {
241
251
  "path": "harness-test/reference.md",
242
- "sha256": "02104991a1a551181a618cca6d793b3a193546b4f7c5d34858ea768dee7545ef"
252
+ "sha256": "b2445487ee14d96466641763870b44f01a29ab8d3cae1ec70d2a7c045e882b1e"
243
253
  },
244
254
  {
245
255
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -247,7 +257,7 @@
247
257
  },
248
258
  {
249
259
  "path": "harness-test/SKILL.md",
250
- "sha256": "b06cda2654354ca9ba014c66719fb2009739cec72ccd4e25e41f98e2df626d14"
260
+ "sha256": "67d03e5569348017a6341c9bddd394e9a9f52926ac846be020976bcb007324b3"
251
261
  },
252
262
  {
253
263
  "path": "protocols/archive-report-protocol.md",
@@ -331,7 +341,7 @@
331
341
  },
332
342
  {
333
343
  "path": "scripts/harness_context.py",
334
- "sha256": "464b59fea967bf123a7e203524b22ce68ead7db0250e686407ea29520853065f"
344
+ "sha256": "c3b4be68cf0034e30199e1cffb8a03c74e5d95267095b737a55bf6d96c1c1df3"
335
345
  },
336
346
  {
337
347
  "path": "scripts/harness_deploy.py",
@@ -351,7 +361,7 @@
351
361
  },
352
362
  {
353
363
  "path": "scripts/harness_events.py",
354
- "sha256": "f073ff0445a1de6d4e3030eb9b989e2f419ccdc9c36efcf060727ac4405b0804"
364
+ "sha256": "3116137be32bd696adce47c79f2af99a8f1517a7555bd1bbaffe27e17fd12fbc"
355
365
  },
356
366
  {
357
367
  "path": "scripts/harness_execution_contracts.py",
@@ -363,7 +373,7 @@
363
373
  },
364
374
  {
365
375
  "path": "scripts/harness_gate.py",
366
- "sha256": "662f3490217546c9a20ce910f14493133dcf1a5cd1127f6cc6c50747ac22618c"
376
+ "sha256": "0a226076091d9c1d715a48164dfc0ca123e1839a47753f826729bfca4e327c7f"
367
377
  },
368
378
  {
369
379
  "path": "scripts/harness_headless.py",
@@ -375,7 +385,7 @@
375
385
  },
376
386
  {
377
387
  "path": "scripts/harness_ledger.py",
378
- "sha256": "58f45d0a30c124b2493fc4a4c66f40c85c9a3dda952fccafbdc05a9a7a135d02"
388
+ "sha256": "5e5787ee891f9e41e815f487422946fc78b2242b78a01e232e0132782f887c6b"
379
389
  },
380
390
  {
381
391
  "path": "scripts/harness_migration_head.py",
@@ -399,7 +409,7 @@
399
409
  },
400
410
  {
401
411
  "path": "scripts/harness_plan_finalize.py",
402
- "sha256": "a71a1c7779946e51907bff724c4f6adf37d7be64bcf2a2a0039f0db9b771a09f"
412
+ "sha256": "af12b53ab5503eb5c0ead5bd58e8da9d5389c649958ac678bf448e4c8a286d5b"
403
413
  },
404
414
  {
405
415
  "path": "scripts/harness_preflight.py",
@@ -431,7 +441,7 @@
431
441
  },
432
442
  {
433
443
  "path": "scripts/harness_service.py",
434
- "sha256": "39cb9ff476e61df0c173cc1032b99b7db3a8e9c180d410a232f845c7bd13e328"
444
+ "sha256": "ea56f9e6d8454255c1206c1239ef5d4e04aa31cd21f6edd62ba04dba89a795f1"
435
445
  },
436
446
  {
437
447
  "path": "scripts/harness_state.py",
@@ -447,7 +457,7 @@
447
457
  },
448
458
  {
449
459
  "path": "scripts/harness_test_guard.py",
450
- "sha256": "a6ef4107e6ee32038753262623d2ff01c86cc640b42183c7117ed0da943c5742"
460
+ "sha256": "1b4420875a4dc2cfa14dd75b5a8bd4bf4da230bf916651262ae61f7ab5386a08"
451
461
  },
452
462
  {
453
463
  "path": "scripts/harness_test_runner.py",