@hunter-harness/workflow-harness 0.2.28 → 0.2.30

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 (162) 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 +34 -2
  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-ingest/scripts/harness_knowledge.py +323 -32
  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 +1 -1
  9. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  10. package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
  11. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +28 -51
  13. package/harness/bundles/general/claude-code/harness-sync/reference.md +89 -142
  14. package/harness/bundles/general/claude-code/harness-test/SKILL.md +26 -2
  15. package/harness/bundles/general/claude-code/harness-test/checklist.md +15 -0
  16. package/harness/bundles/general/claude-code/harness-test/reference.md +28 -4
  17. package/harness/bundles/general/claude-code/scripts/harness_change.py +189 -0
  18. package/harness/bundles/general/claude-code/scripts/harness_test_runner.py +974 -0
  19. package/harness/bundles/general/claude-code/scripts/harness_workflow_policy.py +87 -0
  20. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  21. package/harness/bundles/general/codebuddy/contracts/workflow-policy.json +34 -2
  22. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  23. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  24. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  25. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  26. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  27. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +1 -1
  28. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  29. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
  30. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  31. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +30 -51
  32. package/harness/bundles/general/codebuddy/harness-sync/reference.md +89 -142
  33. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +26 -2
  34. package/harness/bundles/general/codebuddy/harness-test/checklist.md +15 -0
  35. package/harness/bundles/general/codebuddy/harness-test/reference.md +28 -4
  36. package/harness/bundles/general/codebuddy/scripts/harness_change.py +189 -0
  37. package/harness/bundles/general/codebuddy/scripts/harness_test_runner.py +974 -0
  38. package/harness/bundles/general/codebuddy/scripts/harness_workflow_policy.py +87 -0
  39. package/harness/bundles/general/codex/.harness-build.json +1 -1
  40. package/harness/bundles/general/codex/contracts/workflow-policy.json +34 -2
  41. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  42. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  43. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  44. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  45. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  46. package/harness/bundles/general/codex/harness-plan/SKILL.md +1 -1
  47. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  48. package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
  49. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  50. package/harness/bundles/general/codex/harness-sync/SKILL.md +30 -51
  51. package/harness/bundles/general/codex/harness-sync/reference.md +89 -142
  52. package/harness/bundles/general/codex/harness-test/SKILL.md +26 -2
  53. package/harness/bundles/general/codex/harness-test/checklist.md +15 -0
  54. package/harness/bundles/general/codex/harness-test/reference.md +28 -4
  55. package/harness/bundles/general/codex/scripts/harness_change.py +189 -0
  56. package/harness/bundles/general/codex/scripts/harness_test_runner.py +974 -0
  57. package/harness/bundles/general/codex/scripts/harness_workflow_policy.py +87 -0
  58. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  59. package/harness/bundles/general/cursor/contracts/workflow-policy.json +34 -2
  60. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  61. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  62. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  63. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  64. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  65. package/harness/bundles/general/cursor/harness-plan/SKILL.md +1 -1
  66. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  67. package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
  68. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  69. package/harness/bundles/general/cursor/harness-sync/SKILL.md +30 -51
  70. package/harness/bundles/general/cursor/harness-sync/reference.md +89 -142
  71. package/harness/bundles/general/cursor/harness-test/SKILL.md +26 -2
  72. package/harness/bundles/general/cursor/harness-test/checklist.md +15 -0
  73. package/harness/bundles/general/cursor/harness-test/reference.md +28 -4
  74. package/harness/bundles/general/cursor/scripts/harness_change.py +189 -0
  75. package/harness/bundles/general/cursor/scripts/harness_test_runner.py +974 -0
  76. package/harness/bundles/general/cursor/scripts/harness_workflow_policy.py +87 -0
  77. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  78. package/harness/bundles/java/claude-code/contracts/workflow-policy.json +34 -2
  79. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  80. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  81. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  82. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  83. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  84. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  85. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  86. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
  87. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  88. package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
  89. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  90. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +28 -51
  91. package/harness/bundles/java/claude-code/harness-sync/reference.md +89 -142
  92. package/harness/bundles/java/claude-code/harness-test/SKILL.md +26 -2
  93. package/harness/bundles/java/claude-code/scripts/harness_change.py +189 -0
  94. package/harness/bundles/java/claude-code/scripts/harness_test_runner.py +974 -0
  95. package/harness/bundles/java/claude-code/scripts/harness_workflow_policy.py +87 -0
  96. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  97. package/harness/bundles/java/codebuddy/contracts/workflow-policy.json +34 -2
  98. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  99. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  100. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  101. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  102. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  103. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  104. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  105. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
  106. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  107. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
  108. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  109. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +30 -51
  110. package/harness/bundles/java/codebuddy/harness-sync/reference.md +89 -142
  111. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +26 -2
  112. package/harness/bundles/java/codebuddy/scripts/harness_change.py +189 -0
  113. package/harness/bundles/java/codebuddy/scripts/harness_test_runner.py +974 -0
  114. package/harness/bundles/java/codebuddy/scripts/harness_workflow_policy.py +87 -0
  115. package/harness/bundles/java/codex/.harness-build.json +1 -1
  116. package/harness/bundles/java/codex/contracts/workflow-policy.json +34 -2
  117. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  118. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  119. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  120. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  121. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  122. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  123. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  124. package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
  125. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  126. package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
  127. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  128. package/harness/bundles/java/codex/harness-sync/SKILL.md +30 -51
  129. package/harness/bundles/java/codex/harness-sync/reference.md +89 -142
  130. package/harness/bundles/java/codex/harness-test/SKILL.md +26 -2
  131. package/harness/bundles/java/codex/scripts/harness_change.py +189 -0
  132. package/harness/bundles/java/codex/scripts/harness_test_runner.py +974 -0
  133. package/harness/bundles/java/codex/scripts/harness_workflow_policy.py +87 -0
  134. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  135. package/harness/bundles/java/cursor/contracts/workflow-policy.json +34 -2
  136. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  137. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  138. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  139. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  140. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +323 -32
  141. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  142. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  143. package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
  144. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  145. package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
  146. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  147. package/harness/bundles/java/cursor/harness-sync/SKILL.md +30 -51
  148. package/harness/bundles/java/cursor/harness-sync/reference.md +89 -142
  149. package/harness/bundles/java/cursor/harness-test/SKILL.md +26 -2
  150. package/harness/bundles/java/cursor/scripts/harness_change.py +189 -0
  151. package/harness/bundles/java/cursor/scripts/harness_test_runner.py +974 -0
  152. package/harness/bundles/java/cursor/scripts/harness_workflow_policy.py +87 -0
  153. package/harness/manifests/general/claude-code.json +32 -19
  154. package/harness/manifests/general/codebuddy.json +32 -19
  155. package/harness/manifests/general/codex.json +32 -19
  156. package/harness/manifests/general/cursor.json +32 -19
  157. package/harness/manifests/java/claude-code.json +32 -19
  158. package/harness/manifests/java/codebuddy.json +32 -19
  159. package/harness/manifests/java/codex.json +32 -19
  160. package/harness/manifests/java/cursor.json +32 -19
  161. package/hunter-workflow-family.json +18 -2
  162. package/package.json +1 -1
@@ -15,6 +15,7 @@ POLICY_REL = Path("harness") / "contracts" / "workflow-policy.json"
15
15
  TOP_LEVEL_KEYS = frozenset(
16
16
  {
17
17
  "schemaVersion",
18
+ "testExecution",
18
19
  "riskTiers",
19
20
  "skills",
20
21
  "requiredArtifacts",
@@ -62,6 +63,27 @@ CHECKPOINT_RULE_KEYS = frozenset(
62
63
  "reviewerTool",
63
64
  }
64
65
  )
66
+ TEST_EXECUTION_KEYS = frozenset(
67
+ {
68
+ "runner",
69
+ "defaultProfile",
70
+ "maxWorkers",
71
+ "singleInstance",
72
+ "processTreeCleanup",
73
+ "detachedProcessPreflight",
74
+ "confirmationFlag",
75
+ "confirmationRequiredProfiles",
76
+ "resourceIntensiveModules",
77
+ "profiles",
78
+ }
79
+ )
80
+ TEST_EXECUTION_PROFILE_KEYS = frozenset(
81
+ {
82
+ "description",
83
+ "includesResourceIntensive",
84
+ "moduleTimeoutSeconds",
85
+ }
86
+ )
65
87
 
66
88
 
67
89
  class PolicyValidationError(ValueError):
@@ -94,6 +116,71 @@ def validate_policy(data: Any) -> dict[str, Any]:
94
116
  if data["schemaVersion"] != 1:
95
117
  raise PolicyValidationError("unsupported schemaVersion")
96
118
 
119
+ test_execution = data["testExecution"]
120
+ _require_type(test_execution, dict, "testExecution")
121
+ _reject_unknown(test_execution, TEST_EXECUTION_KEYS, "testExecution")
122
+ for key in ("runner", "defaultProfile", "confirmationFlag"):
123
+ _require_type(test_execution[key], str, f"testExecution.{key}")
124
+ max_workers = test_execution["maxWorkers"]
125
+ _require_type(max_workers, int, "testExecution.maxWorkers")
126
+ if isinstance(max_workers, bool) or max_workers < 1 or max_workers > 2:
127
+ raise PolicyValidationError("testExecution.maxWorkers must be 1 or 2")
128
+ for key in (
129
+ "singleInstance",
130
+ "processTreeCleanup",
131
+ "detachedProcessPreflight",
132
+ ):
133
+ _require_type(test_execution[key], bool, f"testExecution.{key}")
134
+ if not test_execution[key]:
135
+ raise PolicyValidationError(f"testExecution.{key} must be true")
136
+ for key in ("confirmationRequiredProfiles", "resourceIntensiveModules"):
137
+ values = test_execution[key]
138
+ _require_type(values, list, f"testExecution.{key}")
139
+ if any(not isinstance(item, str) or not item for item in values):
140
+ raise PolicyValidationError(
141
+ f"testExecution.{key} must contain non-empty strings"
142
+ )
143
+
144
+ execution_profiles = test_execution["profiles"]
145
+ _require_type(execution_profiles, dict, "testExecution.profiles")
146
+ required_profile_names = {"safe", "system", "full"}
147
+ if set(execution_profiles) != required_profile_names:
148
+ raise PolicyValidationError(
149
+ "testExecution.profiles must define exactly safe, system, and full"
150
+ )
151
+ if test_execution["defaultProfile"] != "safe":
152
+ raise PolicyValidationError("testExecution.defaultProfile must be safe")
153
+ confirmation_profiles = set(test_execution["confirmationRequiredProfiles"])
154
+ if not {"system", "full"}.issubset(confirmation_profiles):
155
+ raise PolicyValidationError(
156
+ "testExecution confirmation must cover system and full"
157
+ )
158
+ for profile_name, profile in execution_profiles.items():
159
+ path = f"testExecution.profiles.{profile_name}"
160
+ _require_type(profile, dict, path)
161
+ _reject_unknown(profile, TEST_EXECUTION_PROFILE_KEYS, path)
162
+ _require_type(profile["description"], str, f"{path}.description")
163
+ _require_type(
164
+ profile["includesResourceIntensive"],
165
+ bool,
166
+ f"{path}.includesResourceIntensive",
167
+ )
168
+ timeout = profile["moduleTimeoutSeconds"]
169
+ _require_type(timeout, int, f"{path}.moduleTimeoutSeconds")
170
+ if isinstance(timeout, bool) or timeout <= 0:
171
+ raise PolicyValidationError(
172
+ f"{path}.moduleTimeoutSeconds must be a positive integer"
173
+ )
174
+ if execution_profiles["safe"]["includesResourceIntensive"]:
175
+ raise PolicyValidationError(
176
+ "testExecution.profiles.safe must exclude resource-intensive tests"
177
+ )
178
+ for profile_name in ("system", "full"):
179
+ if not execution_profiles[profile_name]["includesResourceIntensive"]:
180
+ raise PolicyValidationError(
181
+ f"testExecution.profiles.{profile_name} must include resource-intensive tests"
182
+ )
183
+
97
184
  risk_tiers = data["riskTiers"]
98
185
  _require_type(risk_tiers, dict, "riskTiers")
99
186
  for tier_name, tier in risk_tiers.items():
@@ -2,12 +2,21 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "claude-code",
5
- "bundle_version": "0.2.20",
5
+ "bundle_version": "0.2.22",
6
+ "requires": {
7
+ "minimumCliVersion": "0.2.32",
8
+ "capabilities": [
9
+ "sync@1",
10
+ "rules-sync@1",
11
+ "rules-review@1",
12
+ "knowledge-sync@2"
13
+ ]
14
+ },
6
15
  "generator": "harness_deploy.py",
7
16
  "files": [
8
17
  {
9
18
  "path": ".harness-build.json",
10
- "sha256": "0809145ca89c6ac4f8171a4d4c59b51765295ed87d17921a6e082ec3d2a08794"
19
+ "sha256": "4f645a6ea2dbc12bfeacc4e7fa280eb5c7d94fae89f2d1a14fdeb36dc6b136ef"
11
20
  },
12
21
  {
13
22
  "path": "agents/harness-evaluator.md",
@@ -31,7 +40,7 @@
31
40
  },
32
41
  {
33
42
  "path": "contracts/workflow-policy.json",
34
- "sha256": "3f39160c6905338a527170c0f15d83715ad56ac9fb449f4f568a6714ccdd3c9a"
43
+ "sha256": "92574af8d7252527be8cd2871675fc02ab7c3df95a72dab93228f6f884844971"
35
44
  },
36
45
  {
37
46
  "path": "harness-archive/checklist.md",
@@ -47,7 +56,7 @@
47
56
  },
48
57
  {
49
58
  "path": "harness-archive/SKILL.md",
50
- "sha256": "23d6de279f5de6a2f7d094a06e8c82e11e5a981962f4caaa1eb93fad0fea191e"
59
+ "sha256": "5e3600f67b1bc14b0f62e8aec014028177a7e5330589022d39c15333b27a5131"
51
60
  },
52
61
  {
53
62
  "path": "harness-archive/templates/render-summary.mjs",
@@ -67,7 +76,7 @@
67
76
  },
68
77
  {
69
78
  "path": "harness-codebase-map/SKILL.md",
70
- "sha256": "d5c7ed3c0534b1139d5619a195d125e823fa2c8132381964cca7267693670a3c"
79
+ "sha256": "362596e8436d7eccae9c9d3266de955de03c33d67daf398d2e54e7c2d3779466"
71
80
  },
72
81
  {
73
82
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -127,15 +136,15 @@
127
136
  },
128
137
  {
129
138
  "path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
130
- "sha256": "c7278af0c041f36e466d1730349cc27377729fc772d70f513e171c7152149a20"
139
+ "sha256": "f312b778909d1710068aab0b58f22ac709796e0827882121810957e17041bf0c"
131
140
  },
132
141
  {
133
142
  "path": "harness-knowledge-ingest/SKILL.md",
134
- "sha256": "58d3e33b4ad84bfbfd4076a41d70ee4b2000a095ab88178a73c7b629f4a7e2da"
143
+ "sha256": "2089e3deb019f18e5fe8e9a43a1a1b7b3dfc5c75fe4a341a063e83b5343266df"
135
144
  },
136
145
  {
137
146
  "path": "harness-knowledge-query/SKILL.md",
138
- "sha256": "0cd059a03611231977e2c60eea0dc276d328859a2bb3380275dc7a3403d5486e"
147
+ "sha256": "86489e25387f04f0018266fe944d27a49ad1df56561131d06ff5aa90961d66fe"
139
148
  },
140
149
  {
141
150
  "path": "harness-plan/checklist.md",
@@ -151,7 +160,7 @@
151
160
  },
152
161
  {
153
162
  "path": "harness-plan/SKILL.md",
154
- "sha256": "ea08579e63ab0a3ef5628b08855b074f7d5abecf91e3280f14cebf4ca3361816"
163
+ "sha256": "58f3d47c78720b0886cce6dc537985126a347d3ca66004e4d9fceecacc03864d"
155
164
  },
156
165
  {
157
166
  "path": "harness-review/checklist.md",
@@ -167,7 +176,7 @@
167
176
  },
168
177
  {
169
178
  "path": "harness-review/SKILL.md",
170
- "sha256": "90981054382094ce3085e579871e8dc5b502d1f049d1725cab0dd29c0ee639f7"
179
+ "sha256": "4e72843c9b2a4b72f5ebf9a082c5d00acc10434a6d34726a471cfd773d37dfe2"
171
180
  },
172
181
  {
173
182
  "path": "harness-run/checklist.md",
@@ -183,7 +192,7 @@
183
192
  },
184
193
  {
185
194
  "path": "harness-run/SKILL.md",
186
- "sha256": "daa7c768a74f0ee487da63de781acef819136a22ba4d0c24896dba4373627e0c"
195
+ "sha256": "da3edf8bb7f8f911969d565e81a3795094cb73ad77fc10731042f7b08ab5b91d"
187
196
  },
188
197
  {
189
198
  "path": "harness-submit/checklist.md",
@@ -195,19 +204,19 @@
195
204
  },
196
205
  {
197
206
  "path": "harness-submit/SKILL.md",
198
- "sha256": "aa5fa2c49315097a4e8a228ce5142bc92e73b5bd9f3061d9c3a6381ff098c482"
207
+ "sha256": "049ea0adebc605ddf8d6633a0e353810f0cbf1e01dcf80522b269cc4d19825b0"
199
208
  },
200
209
  {
201
210
  "path": "harness-sync/reference.md",
202
- "sha256": "24ab6641392f42aaf659a030f9cae910a303e2194675be8aab1bd2672ae49f8b"
211
+ "sha256": "9d0be464bd32b14d9b0199988c46d44c83ef1e887dbbd4b85d640ee256818cd4"
203
212
  },
204
213
  {
205
214
  "path": "harness-sync/SKILL.md",
206
- "sha256": "553f96c639c07ef88d4acf90b5f0957f040ddb525c16bfc38102f6ee8052707d"
215
+ "sha256": "97443b68b5965487bdc2baa1a2c49456dbff350ed6a084d3c58ceaa1dd66e2bd"
207
216
  },
208
217
  {
209
218
  "path": "harness-test/checklist.md",
210
- "sha256": "499bc792815fc364123452f81b00c4043211289538f6f7dd62d19355d60d2e9e"
219
+ "sha256": "f974457a7aa094e1fbdb7d3039b0e8f3cacb777638603366e63a0aaf9a514aad"
211
220
  },
212
221
  {
213
222
  "path": "harness-test/pitfalls-java.md",
@@ -219,7 +228,7 @@
219
228
  },
220
229
  {
221
230
  "path": "harness-test/reference.md",
222
- "sha256": "1b705db0a2f075d7c7aa48a9130719557daf1d5cddc0271ea68d4e75a3f827b2"
231
+ "sha256": "b7cbfc91cff9ed7fef7b9cbee79f81e8cc588ffd956b531570eabef98ad24125"
223
232
  },
224
233
  {
225
234
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -227,7 +236,7 @@
227
236
  },
228
237
  {
229
238
  "path": "harness-test/SKILL.md",
230
- "sha256": "fbd5c2d16c91cda0e990d102af8ff92a5af4c25e9a79a48bb5ddd0730b3d670e"
239
+ "sha256": "a659416aae12417c37a61bc97a370fa84cb302082535e893b09e64ee407e7ea8"
231
240
  },
232
241
  {
233
242
  "path": "protocols/archive-report-protocol.md",
@@ -279,7 +288,7 @@
279
288
  },
280
289
  {
281
290
  "path": "scripts/harness_change.py",
282
- "sha256": "72d1030fdc77b26076b24553ef017a95eb095db16fc2e1b7aff837d76f9aae44"
291
+ "sha256": "0283a881b61c35ae9b66ed988ff180f06ad7c1c13d4e5837a8926d543e4e9958"
283
292
  },
284
293
  {
285
294
  "path": "scripts/harness_check_gate.py",
@@ -365,9 +374,13 @@
365
374
  "path": "scripts/harness_test_guard.py",
366
375
  "sha256": "426fd0002f643fc4b473f04f0c1164330de8a0c622cde7e07aad78d6a5e64df5"
367
376
  },
377
+ {
378
+ "path": "scripts/harness_test_runner.py",
379
+ "sha256": "ba8b8b5628728593a1bcdab464b80b2a90536a909c0ce7df6a832f8ab16f08d1"
380
+ },
368
381
  {
369
382
  "path": "scripts/harness_workflow_policy.py",
370
- "sha256": "a01530d0992cd589129b847c15f1d038cb54992387f694748c09fa182a2de240"
383
+ "sha256": "3c05971bccef2422217f88bf0d0a2e346248e46964474f20d383b95acec185da"
371
384
  }
372
385
  ]
373
386
  }
@@ -2,12 +2,21 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "codebuddy",
5
- "bundle_version": "0.2.20",
5
+ "bundle_version": "0.2.22",
6
+ "requires": {
7
+ "minimumCliVersion": "0.2.32",
8
+ "capabilities": [
9
+ "sync@1",
10
+ "rules-sync@1",
11
+ "rules-review@1",
12
+ "knowledge-sync@2"
13
+ ]
14
+ },
6
15
  "generator": "harness_deploy.py",
7
16
  "files": [
8
17
  {
9
18
  "path": ".harness-build.json",
10
- "sha256": "589141258ceffaca7974cc88787b16e4ec8f98f73dae284f186a21268e986094"
19
+ "sha256": "1b1edf412736eb2e37c385f5accc1a023b7cca55e2ecd06720c351e2f73f0310"
11
20
  },
12
21
  {
13
22
  "path": "agents/harness-evaluator.md",
@@ -31,7 +40,7 @@
31
40
  },
32
41
  {
33
42
  "path": "contracts/workflow-policy.json",
34
- "sha256": "3f39160c6905338a527170c0f15d83715ad56ac9fb449f4f568a6714ccdd3c9a"
43
+ "sha256": "92574af8d7252527be8cd2871675fc02ab7c3df95a72dab93228f6f884844971"
35
44
  },
36
45
  {
37
46
  "path": "harness-archive/checklist.md",
@@ -47,7 +56,7 @@
47
56
  },
48
57
  {
49
58
  "path": "harness-archive/SKILL.md",
50
- "sha256": "349def83c53ed94fa0bc0788f66c12c2c594763f007878e2139094699700ffa7"
59
+ "sha256": "ecfe6d01d7738c46ae9a917d15217bf36f8ce80a4ac1b5a25b86ee2a5f705fc8"
51
60
  },
52
61
  {
53
62
  "path": "harness-archive/templates/render-summary.mjs",
@@ -67,7 +76,7 @@
67
76
  },
68
77
  {
69
78
  "path": "harness-codebase-map/SKILL.md",
70
- "sha256": "12fc24b7976df8c2388f85f6c340a1dd84b200598d67e935a55c8dbd430b488f"
79
+ "sha256": "f65bdad16aa2678a7f05d19377c1ab8f683d1eeaaa5b3e25e6ace8e9be1cb9f4"
71
80
  },
72
81
  {
73
82
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -127,15 +136,15 @@
127
136
  },
128
137
  {
129
138
  "path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
130
- "sha256": "c7278af0c041f36e466d1730349cc27377729fc772d70f513e171c7152149a20"
139
+ "sha256": "f312b778909d1710068aab0b58f22ac709796e0827882121810957e17041bf0c"
131
140
  },
132
141
  {
133
142
  "path": "harness-knowledge-ingest/SKILL.md",
134
- "sha256": "cc551e42b4b7d8bc931b2515619f441f75832875b2fa1b6178e44f8265ab513a"
143
+ "sha256": "eafb9645f7759a1f3a4222f614648c4e4cab10f40e12025f4f86803958c18981"
135
144
  },
136
145
  {
137
146
  "path": "harness-knowledge-query/SKILL.md",
138
- "sha256": "ac131f402c171a26d7d6658c8f0cede664a25ebcac305b6af46a35adb26505c3"
147
+ "sha256": "b77c9263979f2a7e6052a8fc3e8c65d04c3b3c437608fcb24465de51f007bee1"
139
148
  },
140
149
  {
141
150
  "path": "harness-plan/checklist.md",
@@ -151,7 +160,7 @@
151
160
  },
152
161
  {
153
162
  "path": "harness-plan/SKILL.md",
154
- "sha256": "5d623e8e634f9df73bca710cfb68fc4482cc67d2c8c6f4eb539d9237326cd853"
163
+ "sha256": "cb7ff9fea1bd20e444874f74a7e4cc2ac1f3ff08a3c809d8a6e391fdc81673cc"
155
164
  },
156
165
  {
157
166
  "path": "harness-review/checklist.md",
@@ -167,7 +176,7 @@
167
176
  },
168
177
  {
169
178
  "path": "harness-review/SKILL.md",
170
- "sha256": "889361f257549b3e09e540ee9a6d3beed062b2d2096f62543348fca686f5b171"
179
+ "sha256": "ee3074541db22e7c569b28e03ee3c3b7abc7580acaab1eb50b6a8a1bc69a4f9b"
171
180
  },
172
181
  {
173
182
  "path": "harness-run/checklist.md",
@@ -183,7 +192,7 @@
183
192
  },
184
193
  {
185
194
  "path": "harness-run/SKILL.md",
186
- "sha256": "21934d0530070ab1c3da9823cab9311c7b3e7e2e5e9f92c1a6691e55b4dadef4"
195
+ "sha256": "441c14c2d496aea4cddd81dc3f731078424f987499ab76b9e96571bf9c692bf8"
187
196
  },
188
197
  {
189
198
  "path": "harness-submit/checklist.md",
@@ -195,19 +204,19 @@
195
204
  },
196
205
  {
197
206
  "path": "harness-submit/SKILL.md",
198
- "sha256": "8675a2679440d3c2214a3127aed798576f09e6f265612d3b418b38edf05c161e"
207
+ "sha256": "79348493fa46cff6669c70270011e21c0aabaefa82e01fadc97ecdaea436618d"
199
208
  },
200
209
  {
201
210
  "path": "harness-sync/reference.md",
202
- "sha256": "24ab6641392f42aaf659a030f9cae910a303e2194675be8aab1bd2672ae49f8b"
211
+ "sha256": "9d0be464bd32b14d9b0199988c46d44c83ef1e887dbbd4b85d640ee256818cd4"
203
212
  },
204
213
  {
205
214
  "path": "harness-sync/SKILL.md",
206
- "sha256": "accbe7d7a158b2f17ee058be631caaa9ffa799b88a0145b5e10e9411a90e29a8"
215
+ "sha256": "3979d0bf699119d0a66bb8f2ecfc68bffc0e7d77efc06b26040bca125221ea17"
207
216
  },
208
217
  {
209
218
  "path": "harness-test/checklist.md",
210
- "sha256": "499bc792815fc364123452f81b00c4043211289538f6f7dd62d19355d60d2e9e"
219
+ "sha256": "f974457a7aa094e1fbdb7d3039b0e8f3cacb777638603366e63a0aaf9a514aad"
211
220
  },
212
221
  {
213
222
  "path": "harness-test/pitfalls-java.md",
@@ -219,7 +228,7 @@
219
228
  },
220
229
  {
221
230
  "path": "harness-test/reference.md",
222
- "sha256": "1b705db0a2f075d7c7aa48a9130719557daf1d5cddc0271ea68d4e75a3f827b2"
231
+ "sha256": "b7cbfc91cff9ed7fef7b9cbee79f81e8cc588ffd956b531570eabef98ad24125"
223
232
  },
224
233
  {
225
234
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -227,7 +236,7 @@
227
236
  },
228
237
  {
229
238
  "path": "harness-test/SKILL.md",
230
- "sha256": "bf0ca920374d60c2f8dd68d2465ac06688354b4c0f5c8a12ab41aed6645f2067"
239
+ "sha256": "364c727b2183b8f9cf1deb1343ba90533f3dd8bfaa4fb776caf4d116a5de16f4"
231
240
  },
232
241
  {
233
242
  "path": "protocols/archive-report-protocol.md",
@@ -279,7 +288,7 @@
279
288
  },
280
289
  {
281
290
  "path": "scripts/harness_change.py",
282
- "sha256": "72d1030fdc77b26076b24553ef017a95eb095db16fc2e1b7aff837d76f9aae44"
291
+ "sha256": "0283a881b61c35ae9b66ed988ff180f06ad7c1c13d4e5837a8926d543e4e9958"
283
292
  },
284
293
  {
285
294
  "path": "scripts/harness_check_gate.py",
@@ -365,9 +374,13 @@
365
374
  "path": "scripts/harness_test_guard.py",
366
375
  "sha256": "426fd0002f643fc4b473f04f0c1164330de8a0c622cde7e07aad78d6a5e64df5"
367
376
  },
377
+ {
378
+ "path": "scripts/harness_test_runner.py",
379
+ "sha256": "ba8b8b5628728593a1bcdab464b80b2a90536a909c0ce7df6a832f8ab16f08d1"
380
+ },
368
381
  {
369
382
  "path": "scripts/harness_workflow_policy.py",
370
- "sha256": "a01530d0992cd589129b847c15f1d038cb54992387f694748c09fa182a2de240"
383
+ "sha256": "3c05971bccef2422217f88bf0d0a2e346248e46964474f20d383b95acec185da"
371
384
  }
372
385
  ]
373
386
  }
@@ -2,12 +2,21 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "codex",
5
- "bundle_version": "0.2.20",
5
+ "bundle_version": "0.2.22",
6
+ "requires": {
7
+ "minimumCliVersion": "0.2.32",
8
+ "capabilities": [
9
+ "sync@1",
10
+ "rules-sync@1",
11
+ "rules-review@1",
12
+ "knowledge-sync@2"
13
+ ]
14
+ },
6
15
  "generator": "harness_deploy.py",
7
16
  "files": [
8
17
  {
9
18
  "path": ".harness-build.json",
10
- "sha256": "28c9f541492a6ee41d1ec94182b7bfe58f43bc3aa86797108885a54790a9300a"
19
+ "sha256": "854ab533dcdb5c46d82c75f95ad4bad67627cab1a908bb62b90c42b383c5f453"
11
20
  },
12
21
  {
13
22
  "path": "CONTEXT.md",
@@ -19,7 +28,7 @@
19
28
  },
20
29
  {
21
30
  "path": "contracts/workflow-policy.json",
22
- "sha256": "3f39160c6905338a527170c0f15d83715ad56ac9fb449f4f568a6714ccdd3c9a"
31
+ "sha256": "92574af8d7252527be8cd2871675fc02ab7c3df95a72dab93228f6f884844971"
23
32
  },
24
33
  {
25
34
  "path": "harness-archive/checklist.md",
@@ -35,7 +44,7 @@
35
44
  },
36
45
  {
37
46
  "path": "harness-archive/SKILL.md",
38
- "sha256": "e915daa5d82b48eafa12544a047089ccb428fc76066a15f31af45849cc3b8c85"
47
+ "sha256": "88b0e7775d0949a2fd2eb071492427a41d174089fe09e23e2df788a61e98e429"
39
48
  },
40
49
  {
41
50
  "path": "harness-archive/templates/render-summary.mjs",
@@ -55,7 +64,7 @@
55
64
  },
56
65
  {
57
66
  "path": "harness-codebase-map/SKILL.md",
58
- "sha256": "b04fb2f44915c73973323bcb5b28c8faf1a5b950be63b81eab45623a346ad807"
67
+ "sha256": "73418d81f56874db063c92567f3fa8912e42bbf7f7ae63864988d8dd80269d76"
59
68
  },
60
69
  {
61
70
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -115,15 +124,15 @@
115
124
  },
116
125
  {
117
126
  "path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
118
- "sha256": "c7278af0c041f36e466d1730349cc27377729fc772d70f513e171c7152149a20"
127
+ "sha256": "f312b778909d1710068aab0b58f22ac709796e0827882121810957e17041bf0c"
119
128
  },
120
129
  {
121
130
  "path": "harness-knowledge-ingest/SKILL.md",
122
- "sha256": "858d36e5ee48647b6ef1d9677dfd47e522212c9ee940733ff7681234a4eb086a"
131
+ "sha256": "a5081476e1bd9299a833d8b68bdf41f8811f7657955406b04e951ce47fd8dbaf"
123
132
  },
124
133
  {
125
134
  "path": "harness-knowledge-query/SKILL.md",
126
- "sha256": "bc2aa9fc3861716b4b3c02e77f8251231f8b65cd5de62d44b224ad2c960ddc44"
135
+ "sha256": "af533fd20141c0f6db1368cd42447b05d5363fd253eb955dd60587cc32e432b8"
127
136
  },
128
137
  {
129
138
  "path": "harness-plan/checklist.md",
@@ -139,7 +148,7 @@
139
148
  },
140
149
  {
141
150
  "path": "harness-plan/SKILL.md",
142
- "sha256": "e143110834592b2180d0c08d3e1dbec87bf2c9350183854019622496ca59695d"
151
+ "sha256": "bc1f31fda7139bcf8f8673c6e85231225affe2f628aa68e0852b09c1bad5afcb"
143
152
  },
144
153
  {
145
154
  "path": "harness-review/checklist.md",
@@ -155,7 +164,7 @@
155
164
  },
156
165
  {
157
166
  "path": "harness-review/SKILL.md",
158
- "sha256": "c345e080f3ea8bb94aad89abd1f52ca9c6e8ece2c1f09e4434814dcdf534a85b"
167
+ "sha256": "5d454356e9c73e2e38ffcb1bf090a13f8a457e8c0b68d278b2c877faa613c21b"
159
168
  },
160
169
  {
161
170
  "path": "harness-run/checklist.md",
@@ -171,7 +180,7 @@
171
180
  },
172
181
  {
173
182
  "path": "harness-run/SKILL.md",
174
- "sha256": "cd52720b011af257244e240771fd5154f6d9c32a675bab156663411ccaefc974"
183
+ "sha256": "bab195e3a861441c993721e414dd9ed056be77afc959da0a8c3b9e6d1ee7ab40"
175
184
  },
176
185
  {
177
186
  "path": "harness-submit/checklist.md",
@@ -183,19 +192,19 @@
183
192
  },
184
193
  {
185
194
  "path": "harness-submit/SKILL.md",
186
- "sha256": "12481ed4c841f1d5d17d605cee6abe634d6726f952807df5fd04e296c0409c48"
195
+ "sha256": "db71b6586246ae6c9381bdb97195d390bfdf5cccd14ebc4286c8bf9c1b088b14"
187
196
  },
188
197
  {
189
198
  "path": "harness-sync/reference.md",
190
- "sha256": "24ab6641392f42aaf659a030f9cae910a303e2194675be8aab1bd2672ae49f8b"
199
+ "sha256": "9d0be464bd32b14d9b0199988c46d44c83ef1e887dbbd4b85d640ee256818cd4"
191
200
  },
192
201
  {
193
202
  "path": "harness-sync/SKILL.md",
194
- "sha256": "f393bf3f62b2083d0b791aa68ee77f302b7c4a6737a357d57ef8d0c421b133ac"
203
+ "sha256": "6e69c550c106f176cea7d9bc852c93b18e0da507933021fefe161a84aaa6aaa7"
195
204
  },
196
205
  {
197
206
  "path": "harness-test/checklist.md",
198
- "sha256": "499bc792815fc364123452f81b00c4043211289538f6f7dd62d19355d60d2e9e"
207
+ "sha256": "f974457a7aa094e1fbdb7d3039b0e8f3cacb777638603366e63a0aaf9a514aad"
199
208
  },
200
209
  {
201
210
  "path": "harness-test/pitfalls-java.md",
@@ -207,7 +216,7 @@
207
216
  },
208
217
  {
209
218
  "path": "harness-test/reference.md",
210
- "sha256": "1b705db0a2f075d7c7aa48a9130719557daf1d5cddc0271ea68d4e75a3f827b2"
219
+ "sha256": "b7cbfc91cff9ed7fef7b9cbee79f81e8cc588ffd956b531570eabef98ad24125"
211
220
  },
212
221
  {
213
222
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -215,7 +224,7 @@
215
224
  },
216
225
  {
217
226
  "path": "harness-test/SKILL.md",
218
- "sha256": "857393d938f17be453e5aed7a7b712e4efcff6977b605464fdde2818f5c58e19"
227
+ "sha256": "55624805dfdf59f344dcece0e06fa97bc47bbc214ced8ff19be6d0851e2ac4d8"
219
228
  },
220
229
  {
221
230
  "path": "protocols/archive-report-protocol.md",
@@ -267,7 +276,7 @@
267
276
  },
268
277
  {
269
278
  "path": "scripts/harness_change.py",
270
- "sha256": "72d1030fdc77b26076b24553ef017a95eb095db16fc2e1b7aff837d76f9aae44"
279
+ "sha256": "0283a881b61c35ae9b66ed988ff180f06ad7c1c13d4e5837a8926d543e4e9958"
271
280
  },
272
281
  {
273
282
  "path": "scripts/harness_check_gate.py",
@@ -353,9 +362,13 @@
353
362
  "path": "scripts/harness_test_guard.py",
354
363
  "sha256": "426fd0002f643fc4b473f04f0c1164330de8a0c622cde7e07aad78d6a5e64df5"
355
364
  },
365
+ {
366
+ "path": "scripts/harness_test_runner.py",
367
+ "sha256": "ba8b8b5628728593a1bcdab464b80b2a90536a909c0ce7df6a832f8ab16f08d1"
368
+ },
356
369
  {
357
370
  "path": "scripts/harness_workflow_policy.py",
358
- "sha256": "a01530d0992cd589129b847c15f1d038cb54992387f694748c09fa182a2de240"
371
+ "sha256": "3c05971bccef2422217f88bf0d0a2e346248e46964474f20d383b95acec185da"
359
372
  }
360
373
  ]
361
374
  }