@hunter-harness/workflow-harness 0.2.28 → 0.2.29

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 (138) 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-query/SKILL.md +1 -1
  7. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +1 -1
  8. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  9. package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
  10. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  11. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-test/SKILL.md +26 -2
  13. package/harness/bundles/general/claude-code/harness-test/checklist.md +15 -0
  14. package/harness/bundles/general/claude-code/harness-test/reference.md +28 -4
  15. package/harness/bundles/general/claude-code/scripts/harness_test_runner.py +974 -0
  16. package/harness/bundles/general/claude-code/scripts/harness_workflow_policy.py +87 -0
  17. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  18. package/harness/bundles/general/codebuddy/contracts/workflow-policy.json +34 -2
  19. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  20. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  21. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  22. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  23. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +1 -1
  24. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  25. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
  26. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  27. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  28. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +26 -2
  29. package/harness/bundles/general/codebuddy/harness-test/checklist.md +15 -0
  30. package/harness/bundles/general/codebuddy/harness-test/reference.md +28 -4
  31. package/harness/bundles/general/codebuddy/scripts/harness_test_runner.py +974 -0
  32. package/harness/bundles/general/codebuddy/scripts/harness_workflow_policy.py +87 -0
  33. package/harness/bundles/general/codex/.harness-build.json +1 -1
  34. package/harness/bundles/general/codex/contracts/workflow-policy.json +34 -2
  35. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  36. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  37. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  38. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  39. package/harness/bundles/general/codex/harness-plan/SKILL.md +1 -1
  40. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  41. package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
  42. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  43. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  44. package/harness/bundles/general/codex/harness-test/SKILL.md +26 -2
  45. package/harness/bundles/general/codex/harness-test/checklist.md +15 -0
  46. package/harness/bundles/general/codex/harness-test/reference.md +28 -4
  47. package/harness/bundles/general/codex/scripts/harness_test_runner.py +974 -0
  48. package/harness/bundles/general/codex/scripts/harness_workflow_policy.py +87 -0
  49. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  50. package/harness/bundles/general/cursor/contracts/workflow-policy.json +34 -2
  51. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  52. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  53. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  54. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  55. package/harness/bundles/general/cursor/harness-plan/SKILL.md +1 -1
  56. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  57. package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
  58. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  59. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  60. package/harness/bundles/general/cursor/harness-test/SKILL.md +26 -2
  61. package/harness/bundles/general/cursor/harness-test/checklist.md +15 -0
  62. package/harness/bundles/general/cursor/harness-test/reference.md +28 -4
  63. package/harness/bundles/general/cursor/scripts/harness_test_runner.py +974 -0
  64. package/harness/bundles/general/cursor/scripts/harness_workflow_policy.py +87 -0
  65. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  66. package/harness/bundles/java/claude-code/contracts/workflow-policy.json +34 -2
  67. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  68. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  69. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  70. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  71. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  72. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  73. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
  74. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  75. package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
  76. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  77. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  78. package/harness/bundles/java/claude-code/harness-test/SKILL.md +26 -2
  79. package/harness/bundles/java/claude-code/scripts/harness_test_runner.py +974 -0
  80. package/harness/bundles/java/claude-code/scripts/harness_workflow_policy.py +87 -0
  81. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  82. package/harness/bundles/java/codebuddy/contracts/workflow-policy.json +34 -2
  83. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  84. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  85. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  86. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  87. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  88. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  89. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
  90. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  91. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
  92. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  93. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  94. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +26 -2
  95. package/harness/bundles/java/codebuddy/scripts/harness_test_runner.py +974 -0
  96. package/harness/bundles/java/codebuddy/scripts/harness_workflow_policy.py +87 -0
  97. package/harness/bundles/java/codex/.harness-build.json +1 -1
  98. package/harness/bundles/java/codex/contracts/workflow-policy.json +34 -2
  99. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  100. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  101. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  102. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  103. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  104. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  105. package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
  106. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  107. package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
  108. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  109. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  110. package/harness/bundles/java/codex/harness-test/SKILL.md +26 -2
  111. package/harness/bundles/java/codex/scripts/harness_test_runner.py +974 -0
  112. package/harness/bundles/java/codex/scripts/harness_workflow_policy.py +87 -0
  113. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  114. package/harness/bundles/java/cursor/contracts/workflow-policy.json +34 -2
  115. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  116. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  117. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  118. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  119. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  120. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  121. package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
  122. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  123. package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
  124. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  125. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  126. package/harness/bundles/java/cursor/harness-test/SKILL.md +26 -2
  127. package/harness/bundles/java/cursor/scripts/harness_test_runner.py +974 -0
  128. package/harness/bundles/java/cursor/scripts/harness_workflow_policy.py +87 -0
  129. package/harness/manifests/general/claude-code.json +20 -16
  130. package/harness/manifests/general/codebuddy.json +20 -16
  131. package/harness/manifests/general/codex.json +20 -16
  132. package/harness/manifests/general/cursor.json +20 -16
  133. package/harness/manifests/java/claude-code.json +20 -16
  134. package/harness/manifests/java/codebuddy.json +20 -16
  135. package/harness/manifests/java/codex.json +20 -16
  136. package/harness/manifests/java/cursor.json +20 -16
  137. package/hunter-workflow-family.json +2 -2
  138. 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,12 @@
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.21",
6
6
  "generator": "harness_deploy.py",
7
7
  "files": [
8
8
  {
9
9
  "path": ".harness-build.json",
10
- "sha256": "0809145ca89c6ac4f8171a4d4c59b51765295ed87d17921a6e082ec3d2a08794"
10
+ "sha256": "ea2c4ed992ecbcdd6951fc52754a8b40b7408433c4270c6f7797199db5a889b7"
11
11
  },
12
12
  {
13
13
  "path": "agents/harness-evaluator.md",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  {
33
33
  "path": "contracts/workflow-policy.json",
34
- "sha256": "3f39160c6905338a527170c0f15d83715ad56ac9fb449f4f568a6714ccdd3c9a"
34
+ "sha256": "92574af8d7252527be8cd2871675fc02ab7c3df95a72dab93228f6f884844971"
35
35
  },
36
36
  {
37
37
  "path": "harness-archive/checklist.md",
@@ -47,7 +47,7 @@
47
47
  },
48
48
  {
49
49
  "path": "harness-archive/SKILL.md",
50
- "sha256": "23d6de279f5de6a2f7d094a06e8c82e11e5a981962f4caaa1eb93fad0fea191e"
50
+ "sha256": "dc9fe0755237665f6cb7f1502d762741485fb74c0943ccd94033f712c9368125"
51
51
  },
52
52
  {
53
53
  "path": "harness-archive/templates/render-summary.mjs",
@@ -67,7 +67,7 @@
67
67
  },
68
68
  {
69
69
  "path": "harness-codebase-map/SKILL.md",
70
- "sha256": "d5c7ed3c0534b1139d5619a195d125e823fa2c8132381964cca7267693670a3c"
70
+ "sha256": "101e1bbb7547afc3e5b2dfcf0ce59cfbb883bbfcf33e248fd003099d7f7c129c"
71
71
  },
72
72
  {
73
73
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -131,11 +131,11 @@
131
131
  },
132
132
  {
133
133
  "path": "harness-knowledge-ingest/SKILL.md",
134
- "sha256": "58d3e33b4ad84bfbfd4076a41d70ee4b2000a095ab88178a73c7b629f4a7e2da"
134
+ "sha256": "618c53eb774a2dbdc5498a778cec90ec4c80a820ee73f93bc33085d2854b9623"
135
135
  },
136
136
  {
137
137
  "path": "harness-knowledge-query/SKILL.md",
138
- "sha256": "0cd059a03611231977e2c60eea0dc276d328859a2bb3380275dc7a3403d5486e"
138
+ "sha256": "ecd04aca60a8cec156b998e27ca52f93cbf4f3d6bacb15e1bc66dd85f9c1d6d5"
139
139
  },
140
140
  {
141
141
  "path": "harness-plan/checklist.md",
@@ -151,7 +151,7 @@
151
151
  },
152
152
  {
153
153
  "path": "harness-plan/SKILL.md",
154
- "sha256": "ea08579e63ab0a3ef5628b08855b074f7d5abecf91e3280f14cebf4ca3361816"
154
+ "sha256": "9f309e605432a0951188d9ddda9903da894b1263ebe5b685af6a9e6457a3fe26"
155
155
  },
156
156
  {
157
157
  "path": "harness-review/checklist.md",
@@ -167,7 +167,7 @@
167
167
  },
168
168
  {
169
169
  "path": "harness-review/SKILL.md",
170
- "sha256": "90981054382094ce3085e579871e8dc5b502d1f049d1725cab0dd29c0ee639f7"
170
+ "sha256": "f343c09c6199c598a1fb0333b2050b61961e8bddf397123f65e4585c422be02c"
171
171
  },
172
172
  {
173
173
  "path": "harness-run/checklist.md",
@@ -183,7 +183,7 @@
183
183
  },
184
184
  {
185
185
  "path": "harness-run/SKILL.md",
186
- "sha256": "daa7c768a74f0ee487da63de781acef819136a22ba4d0c24896dba4373627e0c"
186
+ "sha256": "26d6d09e94dfa1f974abd3cbb17a439a535362cadad12637ff46e9ed0fa70e72"
187
187
  },
188
188
  {
189
189
  "path": "harness-submit/checklist.md",
@@ -195,7 +195,7 @@
195
195
  },
196
196
  {
197
197
  "path": "harness-submit/SKILL.md",
198
- "sha256": "aa5fa2c49315097a4e8a228ce5142bc92e73b5bd9f3061d9c3a6381ff098c482"
198
+ "sha256": "a80b8331c582d1a6d5cfa864a2b31c9b3e575b9b170e18583e0739073819c731"
199
199
  },
200
200
  {
201
201
  "path": "harness-sync/reference.md",
@@ -203,11 +203,11 @@
203
203
  },
204
204
  {
205
205
  "path": "harness-sync/SKILL.md",
206
- "sha256": "553f96c639c07ef88d4acf90b5f0957f040ddb525c16bfc38102f6ee8052707d"
206
+ "sha256": "9142b15ee0f71d25094186f0b6b672b6807cfa4ff33e213bcd0803501403918e"
207
207
  },
208
208
  {
209
209
  "path": "harness-test/checklist.md",
210
- "sha256": "499bc792815fc364123452f81b00c4043211289538f6f7dd62d19355d60d2e9e"
210
+ "sha256": "f974457a7aa094e1fbdb7d3039b0e8f3cacb777638603366e63a0aaf9a514aad"
211
211
  },
212
212
  {
213
213
  "path": "harness-test/pitfalls-java.md",
@@ -219,7 +219,7 @@
219
219
  },
220
220
  {
221
221
  "path": "harness-test/reference.md",
222
- "sha256": "1b705db0a2f075d7c7aa48a9130719557daf1d5cddc0271ea68d4e75a3f827b2"
222
+ "sha256": "b7cbfc91cff9ed7fef7b9cbee79f81e8cc588ffd956b531570eabef98ad24125"
223
223
  },
224
224
  {
225
225
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -227,7 +227,7 @@
227
227
  },
228
228
  {
229
229
  "path": "harness-test/SKILL.md",
230
- "sha256": "fbd5c2d16c91cda0e990d102af8ff92a5af4c25e9a79a48bb5ddd0730b3d670e"
230
+ "sha256": "8c8156f492b2ba7de8db3d3bf0961bff084f9a7fbf1393c44296207f31a19806"
231
231
  },
232
232
  {
233
233
  "path": "protocols/archive-report-protocol.md",
@@ -365,9 +365,13 @@
365
365
  "path": "scripts/harness_test_guard.py",
366
366
  "sha256": "426fd0002f643fc4b473f04f0c1164330de8a0c622cde7e07aad78d6a5e64df5"
367
367
  },
368
+ {
369
+ "path": "scripts/harness_test_runner.py",
370
+ "sha256": "ba8b8b5628728593a1bcdab464b80b2a90536a909c0ce7df6a832f8ab16f08d1"
371
+ },
368
372
  {
369
373
  "path": "scripts/harness_workflow_policy.py",
370
- "sha256": "a01530d0992cd589129b847c15f1d038cb54992387f694748c09fa182a2de240"
374
+ "sha256": "3c05971bccef2422217f88bf0d0a2e346248e46964474f20d383b95acec185da"
371
375
  }
372
376
  ]
373
377
  }
@@ -2,12 +2,12 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "codebuddy",
5
- "bundle_version": "0.2.20",
5
+ "bundle_version": "0.2.21",
6
6
  "generator": "harness_deploy.py",
7
7
  "files": [
8
8
  {
9
9
  "path": ".harness-build.json",
10
- "sha256": "589141258ceffaca7974cc88787b16e4ec8f98f73dae284f186a21268e986094"
10
+ "sha256": "78da4d96c380e394b00d9273b471283611ea064cb33ebe0f5caa14f192d3a09c"
11
11
  },
12
12
  {
13
13
  "path": "agents/harness-evaluator.md",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  {
33
33
  "path": "contracts/workflow-policy.json",
34
- "sha256": "3f39160c6905338a527170c0f15d83715ad56ac9fb449f4f568a6714ccdd3c9a"
34
+ "sha256": "92574af8d7252527be8cd2871675fc02ab7c3df95a72dab93228f6f884844971"
35
35
  },
36
36
  {
37
37
  "path": "harness-archive/checklist.md",
@@ -47,7 +47,7 @@
47
47
  },
48
48
  {
49
49
  "path": "harness-archive/SKILL.md",
50
- "sha256": "349def83c53ed94fa0bc0788f66c12c2c594763f007878e2139094699700ffa7"
50
+ "sha256": "022e8b27aa408d6b060b47f8372f465a21a8e17f0ef81618da724923c434fecc"
51
51
  },
52
52
  {
53
53
  "path": "harness-archive/templates/render-summary.mjs",
@@ -67,7 +67,7 @@
67
67
  },
68
68
  {
69
69
  "path": "harness-codebase-map/SKILL.md",
70
- "sha256": "12fc24b7976df8c2388f85f6c340a1dd84b200598d67e935a55c8dbd430b488f"
70
+ "sha256": "77b13a710a7dd8000c3de3dff6338b0485d32c38c9e3520528f1b9cbd8ed80ef"
71
71
  },
72
72
  {
73
73
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -131,11 +131,11 @@
131
131
  },
132
132
  {
133
133
  "path": "harness-knowledge-ingest/SKILL.md",
134
- "sha256": "cc551e42b4b7d8bc931b2515619f441f75832875b2fa1b6178e44f8265ab513a"
134
+ "sha256": "35a1fd1cacedeb462e77df8d077d3084dbcfd115678220463e627b9f02770c70"
135
135
  },
136
136
  {
137
137
  "path": "harness-knowledge-query/SKILL.md",
138
- "sha256": "ac131f402c171a26d7d6658c8f0cede664a25ebcac305b6af46a35adb26505c3"
138
+ "sha256": "2b8c699f5f36cb94b67bf4355509defa467ac1e58019f9cabae801ab0e823640"
139
139
  },
140
140
  {
141
141
  "path": "harness-plan/checklist.md",
@@ -151,7 +151,7 @@
151
151
  },
152
152
  {
153
153
  "path": "harness-plan/SKILL.md",
154
- "sha256": "5d623e8e634f9df73bca710cfb68fc4482cc67d2c8c6f4eb539d9237326cd853"
154
+ "sha256": "4a74845d09bbd332f538a9ead5376d03ef7f9049af5f48bd5ee3b08ff8af90b3"
155
155
  },
156
156
  {
157
157
  "path": "harness-review/checklist.md",
@@ -167,7 +167,7 @@
167
167
  },
168
168
  {
169
169
  "path": "harness-review/SKILL.md",
170
- "sha256": "889361f257549b3e09e540ee9a6d3beed062b2d2096f62543348fca686f5b171"
170
+ "sha256": "23d72aa40b0a1fbd8cd9a05f04a3fb5f7d62d23aa71ec43ad0217812631b0cd9"
171
171
  },
172
172
  {
173
173
  "path": "harness-run/checklist.md",
@@ -183,7 +183,7 @@
183
183
  },
184
184
  {
185
185
  "path": "harness-run/SKILL.md",
186
- "sha256": "21934d0530070ab1c3da9823cab9311c7b3e7e2e5e9f92c1a6691e55b4dadef4"
186
+ "sha256": "08f7578c1786bb9876ea9f88168b487ad52b773b96f467aa671c699b4c42f642"
187
187
  },
188
188
  {
189
189
  "path": "harness-submit/checklist.md",
@@ -195,7 +195,7 @@
195
195
  },
196
196
  {
197
197
  "path": "harness-submit/SKILL.md",
198
- "sha256": "8675a2679440d3c2214a3127aed798576f09e6f265612d3b418b38edf05c161e"
198
+ "sha256": "06ccb60bda74d16ee2a8584772810c4e249ecf0532d9d68bf1f8099d4b6a8bff"
199
199
  },
200
200
  {
201
201
  "path": "harness-sync/reference.md",
@@ -203,11 +203,11 @@
203
203
  },
204
204
  {
205
205
  "path": "harness-sync/SKILL.md",
206
- "sha256": "accbe7d7a158b2f17ee058be631caaa9ffa799b88a0145b5e10e9411a90e29a8"
206
+ "sha256": "d4f467375125a2e83615b677f20d9b4a28fa7ff60ddc19157a6c4df1d54d11d0"
207
207
  },
208
208
  {
209
209
  "path": "harness-test/checklist.md",
210
- "sha256": "499bc792815fc364123452f81b00c4043211289538f6f7dd62d19355d60d2e9e"
210
+ "sha256": "f974457a7aa094e1fbdb7d3039b0e8f3cacb777638603366e63a0aaf9a514aad"
211
211
  },
212
212
  {
213
213
  "path": "harness-test/pitfalls-java.md",
@@ -219,7 +219,7 @@
219
219
  },
220
220
  {
221
221
  "path": "harness-test/reference.md",
222
- "sha256": "1b705db0a2f075d7c7aa48a9130719557daf1d5cddc0271ea68d4e75a3f827b2"
222
+ "sha256": "b7cbfc91cff9ed7fef7b9cbee79f81e8cc588ffd956b531570eabef98ad24125"
223
223
  },
224
224
  {
225
225
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -227,7 +227,7 @@
227
227
  },
228
228
  {
229
229
  "path": "harness-test/SKILL.md",
230
- "sha256": "bf0ca920374d60c2f8dd68d2465ac06688354b4c0f5c8a12ab41aed6645f2067"
230
+ "sha256": "d853dc1b2cf9c9254abc64eb5e94b6ce4936a5f787c5e9dac365ae2fccab6a33"
231
231
  },
232
232
  {
233
233
  "path": "protocols/archive-report-protocol.md",
@@ -365,9 +365,13 @@
365
365
  "path": "scripts/harness_test_guard.py",
366
366
  "sha256": "426fd0002f643fc4b473f04f0c1164330de8a0c622cde7e07aad78d6a5e64df5"
367
367
  },
368
+ {
369
+ "path": "scripts/harness_test_runner.py",
370
+ "sha256": "ba8b8b5628728593a1bcdab464b80b2a90536a909c0ce7df6a832f8ab16f08d1"
371
+ },
368
372
  {
369
373
  "path": "scripts/harness_workflow_policy.py",
370
- "sha256": "a01530d0992cd589129b847c15f1d038cb54992387f694748c09fa182a2de240"
374
+ "sha256": "3c05971bccef2422217f88bf0d0a2e346248e46964474f20d383b95acec185da"
371
375
  }
372
376
  ]
373
377
  }
@@ -2,12 +2,12 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "codex",
5
- "bundle_version": "0.2.20",
5
+ "bundle_version": "0.2.21",
6
6
  "generator": "harness_deploy.py",
7
7
  "files": [
8
8
  {
9
9
  "path": ".harness-build.json",
10
- "sha256": "28c9f541492a6ee41d1ec94182b7bfe58f43bc3aa86797108885a54790a9300a"
10
+ "sha256": "1d968792b476999f85660f85cddbfa8c63e38eddbd1747cfff43e4324d954e71"
11
11
  },
12
12
  {
13
13
  "path": "CONTEXT.md",
@@ -19,7 +19,7 @@
19
19
  },
20
20
  {
21
21
  "path": "contracts/workflow-policy.json",
22
- "sha256": "3f39160c6905338a527170c0f15d83715ad56ac9fb449f4f568a6714ccdd3c9a"
22
+ "sha256": "92574af8d7252527be8cd2871675fc02ab7c3df95a72dab93228f6f884844971"
23
23
  },
24
24
  {
25
25
  "path": "harness-archive/checklist.md",
@@ -35,7 +35,7 @@
35
35
  },
36
36
  {
37
37
  "path": "harness-archive/SKILL.md",
38
- "sha256": "e915daa5d82b48eafa12544a047089ccb428fc76066a15f31af45849cc3b8c85"
38
+ "sha256": "b2b3c432a63e29add45551a2dc315254bd4b29d506162732e289856c87ef9d2c"
39
39
  },
40
40
  {
41
41
  "path": "harness-archive/templates/render-summary.mjs",
@@ -55,7 +55,7 @@
55
55
  },
56
56
  {
57
57
  "path": "harness-codebase-map/SKILL.md",
58
- "sha256": "b04fb2f44915c73973323bcb5b28c8faf1a5b950be63b81eab45623a346ad807"
58
+ "sha256": "6c524e488ca8ea2e95585992ba5b99b84076d367839637252fcead8e0733ba3f"
59
59
  },
60
60
  {
61
61
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -119,11 +119,11 @@
119
119
  },
120
120
  {
121
121
  "path": "harness-knowledge-ingest/SKILL.md",
122
- "sha256": "858d36e5ee48647b6ef1d9677dfd47e522212c9ee940733ff7681234a4eb086a"
122
+ "sha256": "64694f9ea73af8cedf994e9cddd9cb5c0e4fe815d1329154cdc94621ddeb7dbd"
123
123
  },
124
124
  {
125
125
  "path": "harness-knowledge-query/SKILL.md",
126
- "sha256": "bc2aa9fc3861716b4b3c02e77f8251231f8b65cd5de62d44b224ad2c960ddc44"
126
+ "sha256": "e037be5c8163dad31cf09c6d75c6fb1f121d73670ed4f579d19685ceae0d55ce"
127
127
  },
128
128
  {
129
129
  "path": "harness-plan/checklist.md",
@@ -139,7 +139,7 @@
139
139
  },
140
140
  {
141
141
  "path": "harness-plan/SKILL.md",
142
- "sha256": "e143110834592b2180d0c08d3e1dbec87bf2c9350183854019622496ca59695d"
142
+ "sha256": "1c414d9abad09610600cce16b6c4f41696f34558c85f0c4c244b4ad8e5eeb11e"
143
143
  },
144
144
  {
145
145
  "path": "harness-review/checklist.md",
@@ -155,7 +155,7 @@
155
155
  },
156
156
  {
157
157
  "path": "harness-review/SKILL.md",
158
- "sha256": "c345e080f3ea8bb94aad89abd1f52ca9c6e8ece2c1f09e4434814dcdf534a85b"
158
+ "sha256": "ae885be70ce9e98427673fedf749f7e624e1b15f5e540a3d896969e198908041"
159
159
  },
160
160
  {
161
161
  "path": "harness-run/checklist.md",
@@ -171,7 +171,7 @@
171
171
  },
172
172
  {
173
173
  "path": "harness-run/SKILL.md",
174
- "sha256": "cd52720b011af257244e240771fd5154f6d9c32a675bab156663411ccaefc974"
174
+ "sha256": "f386ce2a07fc682fdd3f446601b5d385ddfe9788c3fdd09b9410f7ef2e52856c"
175
175
  },
176
176
  {
177
177
  "path": "harness-submit/checklist.md",
@@ -183,7 +183,7 @@
183
183
  },
184
184
  {
185
185
  "path": "harness-submit/SKILL.md",
186
- "sha256": "12481ed4c841f1d5d17d605cee6abe634d6726f952807df5fd04e296c0409c48"
186
+ "sha256": "6a0949ac49deb421681cb4268d0d4a1abdfcf6d67430c821553f1f7c1eec9424"
187
187
  },
188
188
  {
189
189
  "path": "harness-sync/reference.md",
@@ -191,11 +191,11 @@
191
191
  },
192
192
  {
193
193
  "path": "harness-sync/SKILL.md",
194
- "sha256": "f393bf3f62b2083d0b791aa68ee77f302b7c4a6737a357d57ef8d0c421b133ac"
194
+ "sha256": "01ab7f26ecf4b359e50e470156a068bc7f2c557eca7560d7d54616b206a3b3a5"
195
195
  },
196
196
  {
197
197
  "path": "harness-test/checklist.md",
198
- "sha256": "499bc792815fc364123452f81b00c4043211289538f6f7dd62d19355d60d2e9e"
198
+ "sha256": "f974457a7aa094e1fbdb7d3039b0e8f3cacb777638603366e63a0aaf9a514aad"
199
199
  },
200
200
  {
201
201
  "path": "harness-test/pitfalls-java.md",
@@ -207,7 +207,7 @@
207
207
  },
208
208
  {
209
209
  "path": "harness-test/reference.md",
210
- "sha256": "1b705db0a2f075d7c7aa48a9130719557daf1d5cddc0271ea68d4e75a3f827b2"
210
+ "sha256": "b7cbfc91cff9ed7fef7b9cbee79f81e8cc588ffd956b531570eabef98ad24125"
211
211
  },
212
212
  {
213
213
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -215,7 +215,7 @@
215
215
  },
216
216
  {
217
217
  "path": "harness-test/SKILL.md",
218
- "sha256": "857393d938f17be453e5aed7a7b712e4efcff6977b605464fdde2818f5c58e19"
218
+ "sha256": "1c4f4dfbb5212cad1bd13db73cc7508ae4bfa798ff48bfebe624eb21539b73f0"
219
219
  },
220
220
  {
221
221
  "path": "protocols/archive-report-protocol.md",
@@ -353,9 +353,13 @@
353
353
  "path": "scripts/harness_test_guard.py",
354
354
  "sha256": "426fd0002f643fc4b473f04f0c1164330de8a0c622cde7e07aad78d6a5e64df5"
355
355
  },
356
+ {
357
+ "path": "scripts/harness_test_runner.py",
358
+ "sha256": "ba8b8b5628728593a1bcdab464b80b2a90536a909c0ce7df6a832f8ab16f08d1"
359
+ },
356
360
  {
357
361
  "path": "scripts/harness_workflow_policy.py",
358
- "sha256": "a01530d0992cd589129b847c15f1d038cb54992387f694748c09fa182a2de240"
362
+ "sha256": "3c05971bccef2422217f88bf0d0a2e346248e46964474f20d383b95acec185da"
359
363
  }
360
364
  ]
361
365
  }
@@ -2,12 +2,12 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "cursor",
5
- "bundle_version": "0.2.20",
5
+ "bundle_version": "0.2.21",
6
6
  "generator": "harness_deploy.py",
7
7
  "files": [
8
8
  {
9
9
  "path": ".harness-build.json",
10
- "sha256": "a359bd6961315dcb8f806eeea514500a6e8e2c32e84b0d472f8f59667c6e56cc"
10
+ "sha256": "03f7c1d87174ba9ac801960bf8c873953d41b2ba4666a1c62149de29d3fec40b"
11
11
  },
12
12
  {
13
13
  "path": "CONTEXT.md",
@@ -19,7 +19,7 @@
19
19
  },
20
20
  {
21
21
  "path": "contracts/workflow-policy.json",
22
- "sha256": "3f39160c6905338a527170c0f15d83715ad56ac9fb449f4f568a6714ccdd3c9a"
22
+ "sha256": "92574af8d7252527be8cd2871675fc02ab7c3df95a72dab93228f6f884844971"
23
23
  },
24
24
  {
25
25
  "path": "harness-archive/checklist.md",
@@ -35,7 +35,7 @@
35
35
  },
36
36
  {
37
37
  "path": "harness-archive/SKILL.md",
38
- "sha256": "6c7afe3d42cc63130c032ec5dcd71e374f97fd746924905f7ca58d2f2578fa5d"
38
+ "sha256": "49c46d7d28b004b7666c0a718ab05f7631b0fc727d0957bab936428993435e16"
39
39
  },
40
40
  {
41
41
  "path": "harness-archive/templates/render-summary.mjs",
@@ -55,7 +55,7 @@
55
55
  },
56
56
  {
57
57
  "path": "harness-codebase-map/SKILL.md",
58
- "sha256": "2cc91fe769ad4434960a79e7ccbfba672b17e5542e9a6410df74ed71a9974fc5"
58
+ "sha256": "366120626dad7573485bb0c0ee281dcf60003430f84cb6a93858a6b58a14d230"
59
59
  },
60
60
  {
61
61
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -119,11 +119,11 @@
119
119
  },
120
120
  {
121
121
  "path": "harness-knowledge-ingest/SKILL.md",
122
- "sha256": "9ab5edbbeed4c4c3f0581d8b0336c5e7827920bf9758824a4234fa0b6bdb9220"
122
+ "sha256": "cfefe4419b0da08e05fd7397a22ecca0ce6b80f332e04c6ac70750e72fa5a8bd"
123
123
  },
124
124
  {
125
125
  "path": "harness-knowledge-query/SKILL.md",
126
- "sha256": "15230a3dc8fe0d3606849ec975f21ddd08286065158f4c99c2422ed8d9f6e425"
126
+ "sha256": "1acd7d7a75de561f234987f5dcaef518ff94615bcae90bdf8740de30c0ca7f50"
127
127
  },
128
128
  {
129
129
  "path": "harness-plan/checklist.md",
@@ -139,7 +139,7 @@
139
139
  },
140
140
  {
141
141
  "path": "harness-plan/SKILL.md",
142
- "sha256": "d586ab33d399983f95996d6d0ad91887826cc8b1adcccbea6ed5787b38b0a8e1"
142
+ "sha256": "bdc9de05df1ba14ed86bbf7c6796588cf356ed425cfd10b4a0489b2c152b4573"
143
143
  },
144
144
  {
145
145
  "path": "harness-review/checklist.md",
@@ -155,7 +155,7 @@
155
155
  },
156
156
  {
157
157
  "path": "harness-review/SKILL.md",
158
- "sha256": "02167dfc7f9799f0af1f91f9bb4b006c1cfac9f8114c8b55495a9367ccc29b93"
158
+ "sha256": "3c50f7ea07c3a4db8845ff117682b34dc9edda008dcccbb3a86a0db3dedf4a9d"
159
159
  },
160
160
  {
161
161
  "path": "harness-run/checklist.md",
@@ -171,7 +171,7 @@
171
171
  },
172
172
  {
173
173
  "path": "harness-run/SKILL.md",
174
- "sha256": "6f91e8c5f42f28a3d3b2c460b6c49d10442aa855ee976e365157ea61e3d9957f"
174
+ "sha256": "a3f0dbe45af197aa188159196afe40faaaf2dff1edd57f2bff242bbae4c2aeff"
175
175
  },
176
176
  {
177
177
  "path": "harness-submit/checklist.md",
@@ -183,7 +183,7 @@
183
183
  },
184
184
  {
185
185
  "path": "harness-submit/SKILL.md",
186
- "sha256": "35c522d94219ea9d449a6e4c7c1b4f2f82f6fb3016f2cce6d103abcdc3c971d0"
186
+ "sha256": "70dba54d6ded2404dae165c44c895fb36db59eca8e457df4f4bd5faf5320eb7b"
187
187
  },
188
188
  {
189
189
  "path": "harness-sync/reference.md",
@@ -191,11 +191,11 @@
191
191
  },
192
192
  {
193
193
  "path": "harness-sync/SKILL.md",
194
- "sha256": "096dd43819d82b4d9571a5aef195fa346204e51b37eb605608a82d8e6645d92e"
194
+ "sha256": "41601b2de5b582c900afd3fb3db429a51a5514ac8b7dbf30df415053d0306eeb"
195
195
  },
196
196
  {
197
197
  "path": "harness-test/checklist.md",
198
- "sha256": "499bc792815fc364123452f81b00c4043211289538f6f7dd62d19355d60d2e9e"
198
+ "sha256": "f974457a7aa094e1fbdb7d3039b0e8f3cacb777638603366e63a0aaf9a514aad"
199
199
  },
200
200
  {
201
201
  "path": "harness-test/pitfalls-java.md",
@@ -207,7 +207,7 @@
207
207
  },
208
208
  {
209
209
  "path": "harness-test/reference.md",
210
- "sha256": "1b705db0a2f075d7c7aa48a9130719557daf1d5cddc0271ea68d4e75a3f827b2"
210
+ "sha256": "b7cbfc91cff9ed7fef7b9cbee79f81e8cc588ffd956b531570eabef98ad24125"
211
211
  },
212
212
  {
213
213
  "path": "harness-test/scripts/runtime-helpers.mjs",
@@ -215,7 +215,7 @@
215
215
  },
216
216
  {
217
217
  "path": "harness-test/SKILL.md",
218
- "sha256": "b9062812467a6e2c0251537a1d0bad77214a2eae473994ec085dce29e01b89d7"
218
+ "sha256": "4fccced621bf0cf4b880d4c7ecf66c1532109d4dabee28e33a790bd7662f53cc"
219
219
  },
220
220
  {
221
221
  "path": "protocols/archive-report-protocol.md",
@@ -353,9 +353,13 @@
353
353
  "path": "scripts/harness_test_guard.py",
354
354
  "sha256": "426fd0002f643fc4b473f04f0c1164330de8a0c622cde7e07aad78d6a5e64df5"
355
355
  },
356
+ {
357
+ "path": "scripts/harness_test_runner.py",
358
+ "sha256": "ba8b8b5628728593a1bcdab464b80b2a90536a909c0ce7df6a832f8ab16f08d1"
359
+ },
356
360
  {
357
361
  "path": "scripts/harness_workflow_policy.py",
358
- "sha256": "a01530d0992cd589129b847c15f1d038cb54992387f694748c09fa182a2de240"
362
+ "sha256": "3c05971bccef2422217f88bf0d0a2e346248e46964474f20d383b95acec185da"
359
363
  }
360
364
  ]
361
365
  }