self-bench 0.3.5 → 0.3.6

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 (198) hide show
  1. package/README.md +16 -14
  2. package/biome.json +7 -1
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +7 -7
  5. package/dist/api.js.map +1 -1
  6. package/dist/build-metadata.js +1 -1
  7. package/dist/cli.js +75 -15
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config.js +1 -1
  10. package/dist/contracts.d.ts +1 -0
  11. package/dist/contracts.d.ts.map +1 -1
  12. package/dist/contracts.js +6 -5
  13. package/dist/contracts.js.map +1 -1
  14. package/dist/extensions/discovery.d.ts.map +1 -1
  15. package/dist/extensions/discovery.js +12 -5
  16. package/dist/extensions/discovery.js.map +1 -1
  17. package/dist/harbor-task.d.ts.map +1 -1
  18. package/dist/harbor-task.js +3 -1
  19. package/dist/harbor-task.js.map +1 -1
  20. package/dist/project-paths.d.ts +2 -0
  21. package/dist/project-paths.d.ts.map +1 -0
  22. package/dist/project-paths.js +15 -0
  23. package/dist/project-paths.js.map +1 -0
  24. package/dist/provenance-associations.d.ts +49 -0
  25. package/dist/provenance-associations.d.ts.map +1 -0
  26. package/dist/provenance-associations.js +220 -0
  27. package/dist/provenance-associations.js.map +1 -0
  28. package/dist/provenance.d.ts +34 -13
  29. package/dist/provenance.d.ts.map +1 -1
  30. package/dist/provenance.js +81 -9
  31. package/dist/provenance.js.map +1 -1
  32. package/dist/reaudit-main.js +3 -3
  33. package/dist/reaudit-main.js.map +1 -1
  34. package/dist/repair-main.js +4 -4
  35. package/dist/repair-main.js.map +1 -1
  36. package/dist/{sandbox.d.ts → sandbox/contracts.d.ts} +5 -3
  37. package/dist/sandbox/contracts.d.ts.map +1 -0
  38. package/dist/sandbox/contracts.js +9 -0
  39. package/dist/sandbox/contracts.js.map +1 -0
  40. package/dist/sandbox/index.d.ts +5 -0
  41. package/dist/sandbox/index.d.ts.map +1 -0
  42. package/dist/{sandbox.js → sandbox/index.js} +6 -5
  43. package/dist/sandbox/index.js.map +1 -0
  44. package/dist/sandbox/programs/author.d.ts +3 -0
  45. package/dist/sandbox/programs/author.d.ts.map +1 -0
  46. package/dist/{sandbox-author.js → sandbox/programs/author.js} +2 -2
  47. package/dist/sandbox/programs/author.js.map +1 -0
  48. package/dist/sandbox/programs/prepare-repair.d.ts +7 -0
  49. package/dist/sandbox/programs/prepare-repair.d.ts.map +1 -0
  50. package/dist/sandbox/programs/prepare-repair.js +30 -0
  51. package/dist/sandbox/programs/prepare-repair.js.map +1 -0
  52. package/dist/sandbox/programs/repair.d.ts +3 -0
  53. package/dist/sandbox/programs/repair.d.ts.map +1 -0
  54. package/dist/{sandbox-repair.js → sandbox/programs/repair.js} +7 -28
  55. package/dist/sandbox/programs/repair.js.map +1 -0
  56. package/dist/sandbox/programs/review.d.ts +2 -0
  57. package/dist/sandbox/programs/review.d.ts.map +1 -0
  58. package/dist/{sandbox-review.js → sandbox/programs/review.js} +2 -2
  59. package/dist/sandbox/programs/review.js.map +1 -0
  60. package/dist/sandbox/programs/validation-repair.d.ts +3 -0
  61. package/dist/sandbox/programs/validation-repair.d.ts.map +1 -0
  62. package/dist/{sandbox-validation-repair.js → sandbox/programs/validation-repair.js} +7 -28
  63. package/dist/sandbox/programs/validation-repair.js.map +1 -0
  64. package/dist/{docker-executor.d.ts → sandbox/providers/docker/executor.d.ts} +3 -3
  65. package/dist/sandbox/providers/docker/executor.d.ts.map +1 -0
  66. package/dist/{docker-executor.js → sandbox/providers/docker/executor.js} +2 -2
  67. package/dist/sandbox/providers/docker/executor.js.map +1 -0
  68. package/dist/{modal-executor.d.ts → sandbox/providers/modal/executor.d.ts} +3 -3
  69. package/dist/sandbox/providers/modal/executor.d.ts.map +1 -0
  70. package/dist/{modal-executor.js → sandbox/providers/modal/executor.js} +50 -19
  71. package/dist/sandbox/providers/modal/executor.js.map +1 -0
  72. package/dist/{vercel-command.d.ts → sandbox/providers/vercel/command.d.ts} +3 -3
  73. package/dist/sandbox/providers/vercel/command.d.ts.map +1 -0
  74. package/dist/{vercel-command.js → sandbox/providers/vercel/command.js} +3 -3
  75. package/dist/sandbox/providers/vercel/command.js.map +1 -0
  76. package/dist/{vercel-executor.d.ts → sandbox/providers/vercel/executor.d.ts} +3 -3
  77. package/dist/sandbox/providers/vercel/executor.d.ts.map +1 -0
  78. package/dist/{vercel-executor.js → sandbox/providers/vercel/executor.js} +5 -5
  79. package/dist/sandbox/providers/vercel/executor.js.map +1 -0
  80. package/dist/{vercel-fetch.d.ts → sandbox/providers/vercel/fetch.d.ts} +1 -1
  81. package/dist/sandbox/providers/vercel/fetch.d.ts.map +1 -0
  82. package/dist/{vercel-fetch.js → sandbox/providers/vercel/fetch.js} +1 -1
  83. package/dist/sandbox/providers/vercel/fetch.js.map +1 -0
  84. package/dist/{sandbox-timeout.d.ts → sandbox/timeout.d.ts} +2 -2
  85. package/dist/sandbox/timeout.d.ts.map +1 -0
  86. package/dist/{sandbox-timeout.js → sandbox/timeout.js} +1 -1
  87. package/dist/sandbox/timeout.js.map +1 -0
  88. package/dist/sandbox-author.bundle.js +11 -8
  89. package/dist/sandbox-repair.bundle.js +43 -35
  90. package/dist/sandbox-review.bundle.js +2 -2
  91. package/dist/sandbox-validation-repair.bundle.js +50 -41
  92. package/dist/{vercel-cli.d.ts → setup/vercel/cli.d.ts} +2 -2
  93. package/dist/setup/vercel/cli.d.ts.map +1 -0
  94. package/dist/{vercel-cli.js → setup/vercel/cli.js} +2 -2
  95. package/dist/setup/vercel/cli.js.map +1 -0
  96. package/dist/setup/vercel/index.d.ts +4 -0
  97. package/dist/setup/vercel/index.d.ts.map +1 -0
  98. package/dist/setup/vercel/index.js +3 -0
  99. package/dist/setup/vercel/index.js.map +1 -0
  100. package/dist/{vercel-setup-probe.d.ts → setup/vercel/probe.d.ts} +2 -2
  101. package/dist/setup/vercel/probe.d.ts.map +1 -0
  102. package/dist/{vercel-setup-probe.js → setup/vercel/probe.js} +2 -2
  103. package/dist/setup/vercel/probe.js.map +1 -0
  104. package/dist/{vercel-profile.d.ts → setup/vercel/profile.d.ts} +1 -1
  105. package/dist/setup/vercel/profile.d.ts.map +1 -0
  106. package/dist/{vercel-profile.js → setup/vercel/profile.js} +2 -2
  107. package/dist/setup/vercel/profile.js.map +1 -0
  108. package/dist/{vercel-runtime-image.d.ts → setup/vercel/runtime-image.d.ts} +5 -5
  109. package/dist/setup/vercel/runtime-image.d.ts.map +1 -0
  110. package/dist/{vercel-runtime-image.js → setup/vercel/runtime-image.js} +2 -2
  111. package/dist/setup/vercel/runtime-image.js.map +1 -0
  112. package/dist/{vercel-setup.d.ts → setup/vercel/setup.d.ts} +8 -8
  113. package/dist/setup/vercel/setup.d.ts.map +1 -0
  114. package/dist/{vercel-setup.js → setup/vercel/setup.js} +8 -8
  115. package/dist/setup/vercel/setup.js.map +1 -0
  116. package/dist/temporal/activities.d.ts +12 -0
  117. package/dist/temporal/activities.d.ts.map +1 -1
  118. package/dist/temporal/activities.js +80 -33
  119. package/dist/temporal/activities.js.map +1 -1
  120. package/dist/temporal/workflow.d.ts +1 -1
  121. package/dist/temporal/workflow.d.ts.map +1 -1
  122. package/dist/temporal/workflow.js +90 -65
  123. package/dist/temporal/workflow.js.map +1 -1
  124. package/docs/operations.md +39 -5
  125. package/docs/task-construction.md +3 -1
  126. package/package.json +5 -5
  127. package/scripts/build-sandbox-programs.ts +22 -0
  128. package/scripts/verify-package.ts +25 -4
  129. package/scripts/write-build-metadata.ts +1 -1
  130. package/src/api.ts +7 -6
  131. package/src/cli.ts +99 -15
  132. package/src/config.ts +1 -1
  133. package/src/contracts.ts +7 -5
  134. package/src/extensions/discovery.ts +14 -5
  135. package/src/harbor-task.ts +6 -1
  136. package/src/project-paths.ts +15 -0
  137. package/src/provenance-associations.ts +311 -0
  138. package/src/provenance.ts +132 -28
  139. package/src/reaudit-main.ts +3 -3
  140. package/src/repair-main.ts +4 -4
  141. package/src/{sandbox.ts → sandbox/contracts.ts} +11 -20
  142. package/src/sandbox/index.ts +23 -0
  143. package/src/{sandbox-author.ts → sandbox/programs/author.ts} +1 -1
  144. package/src/sandbox/programs/prepare-repair.ts +44 -0
  145. package/src/{sandbox-repair.ts → sandbox/programs/repair.ts} +7 -31
  146. package/src/{sandbox-review.ts → sandbox/programs/review.ts} +1 -1
  147. package/src/{sandbox-validation-repair.ts → sandbox/programs/validation-repair.ts} +6 -30
  148. package/src/{docker-executor.ts → sandbox/providers/docker/executor.ts} +3 -3
  149. package/src/{modal-executor.ts → sandbox/providers/modal/executor.ts} +66 -25
  150. package/src/{vercel-command.ts → sandbox/providers/vercel/command.ts} +3 -3
  151. package/src/{vercel-executor.ts → sandbox/providers/vercel/executor.ts} +5 -5
  152. package/src/{sandbox-timeout.ts → sandbox/timeout.ts} +1 -1
  153. package/src/{vercel-cli.ts → setup/vercel/cli.ts} +1 -1
  154. package/src/setup/vercel/index.ts +3 -0
  155. package/src/{vercel-setup-probe.ts → setup/vercel/probe.ts} +5 -2
  156. package/src/{vercel-profile.ts → setup/vercel/profile.ts} +4 -1
  157. package/src/{vercel-runtime-image.ts → setup/vercel/runtime-image.ts} +5 -5
  158. package/src/{vercel-setup.ts → setup/vercel/setup.ts} +8 -8
  159. package/src/temporal/activities.ts +164 -63
  160. package/src/temporal/workflow.ts +120 -71
  161. package/tsconfig.json +1 -1
  162. package/dist/docker-executor.d.ts.map +0 -1
  163. package/dist/docker-executor.js.map +0 -1
  164. package/dist/modal-executor.d.ts.map +0 -1
  165. package/dist/modal-executor.js.map +0 -1
  166. package/dist/sandbox-author.d.ts +0 -3
  167. package/dist/sandbox-author.d.ts.map +0 -1
  168. package/dist/sandbox-author.js.map +0 -1
  169. package/dist/sandbox-repair.d.ts +0 -3
  170. package/dist/sandbox-repair.d.ts.map +0 -1
  171. package/dist/sandbox-repair.js.map +0 -1
  172. package/dist/sandbox-review.d.ts +0 -2
  173. package/dist/sandbox-review.d.ts.map +0 -1
  174. package/dist/sandbox-review.js.map +0 -1
  175. package/dist/sandbox-timeout.d.ts.map +0 -1
  176. package/dist/sandbox-timeout.js.map +0 -1
  177. package/dist/sandbox-validation-repair.d.ts +0 -3
  178. package/dist/sandbox-validation-repair.d.ts.map +0 -1
  179. package/dist/sandbox-validation-repair.js.map +0 -1
  180. package/dist/sandbox.d.ts.map +0 -1
  181. package/dist/sandbox.js.map +0 -1
  182. package/dist/vercel-cli.d.ts.map +0 -1
  183. package/dist/vercel-cli.js.map +0 -1
  184. package/dist/vercel-command.d.ts.map +0 -1
  185. package/dist/vercel-command.js.map +0 -1
  186. package/dist/vercel-executor.d.ts.map +0 -1
  187. package/dist/vercel-executor.js.map +0 -1
  188. package/dist/vercel-fetch.d.ts.map +0 -1
  189. package/dist/vercel-fetch.js.map +0 -1
  190. package/dist/vercel-profile.d.ts.map +0 -1
  191. package/dist/vercel-profile.js.map +0 -1
  192. package/dist/vercel-runtime-image.d.ts.map +0 -1
  193. package/dist/vercel-runtime-image.js.map +0 -1
  194. package/dist/vercel-setup-probe.d.ts.map +0 -1
  195. package/dist/vercel-setup-probe.js.map +0 -1
  196. package/dist/vercel-setup.d.ts.map +0 -1
  197. package/dist/vercel-setup.js.map +0 -1
  198. /package/src/{vercel-fetch.ts → sandbox/providers/vercel/fetch.ts} +0 -0
@@ -1,4 +1,7 @@
1
+ import { RetryState } from "@temporalio/common";
1
2
  import { ActivityFailure, ApplicationFailure, defineQuery, isCancellation, proxyActivities, setHandler, } from "@temporalio/workflow";
3
+ import { MAX_CANDIDATES_PER_RUN } from "../contracts.js";
4
+ import { parallelMap } from "../parallel.js";
2
5
  export const statusQuery = defineQuery("status");
3
6
  const taskActivities = proxyActivities({
4
7
  startToCloseTimeout: "7 hours",
@@ -17,6 +20,17 @@ const validationRepairActivity = proxyActivities({
17
20
  cancellationType: "WAIT_CANCELLATION_COMPLETED",
18
21
  retry: { maximumAttempts: 1 },
19
22
  });
23
+ const provenanceActivities = proxyActivities({
24
+ startToCloseTimeout: "5 minutes",
25
+ heartbeatTimeout: "3 minutes",
26
+ cancellationType: "WAIT_CANCELLATION_COMPLETED",
27
+ retry: {
28
+ initialInterval: "5 seconds",
29
+ backoffCoefficient: 2,
30
+ maximumInterval: "1 minute",
31
+ maximumAttempts: 3,
32
+ },
33
+ });
20
34
  const discoveryActivities = proxyActivities({
21
35
  startToCloseTimeout: "1 hour",
22
36
  heartbeatTimeout: "10 minutes",
@@ -29,6 +43,7 @@ const discoveryActivities = proxyActivities({
29
43
  },
30
44
  });
31
45
  const activities = {
46
+ collectRunProvenance: provenanceActivities.collectRunProvenance,
32
47
  discoverCandidateShard: discoveryActivities.discoverCandidateShard,
33
48
  authorCandidate: taskActivities.authorCandidate,
34
49
  validateTask: taskActivities.validateTask,
@@ -41,7 +56,8 @@ const activities = {
41
56
  const DISCOVERY_SHARD_COUNT = 8;
42
57
  const DISCOVERY_SHARD_OVERFETCH = 3;
43
58
  const MAX_CANDIDATES_PER_TIER_PER_SHARD = 8;
44
- const MAX_DISCOVERED_CANDIDATES = 300;
59
+ const MAX_DISCOVERED_CANDIDATES = MAX_CANDIDATES_PER_RUN * 3;
60
+ const MAX_CONCURRENT_CANDIDATES = 100;
45
61
  export async function selfBenchRunWorkflow(input) {
46
62
  return await executeRun(input, activities, (status) => setHandler(statusQuery, () => status()));
47
63
  }
@@ -78,6 +94,8 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
78
94
  };
79
95
  try {
80
96
  setPhase("discovering");
97
+ const provenance = await activitySet.collectRunProvenance(input);
98
+ const run = { ...input, provenance };
81
99
  const updateDiscovery = (progress) => {
82
100
  status = { ...status, discovery: progress };
83
101
  };
@@ -94,7 +112,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
94
112
  setPhase("blocked");
95
113
  throw candidatePoolExhausted(selected, input.candidateCounts);
96
114
  }
97
- const additions = await discoverWave(activitySet, input, {
115
+ const additions = await discoverWave(activitySet, run, {
98
116
  wave: discoveryWave,
99
117
  targetCounts: missing,
100
118
  excludedSourcePrs: candidates.map((candidate) => candidate.sourcePr),
@@ -130,7 +148,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
130
148
  setTasks(taskProgress);
131
149
  try {
132
150
  const authored = await activitySet.authorCandidate({
133
- run: input,
151
+ run,
134
152
  candidate,
135
153
  });
136
154
  if (authored.kind === "rejected") {
@@ -146,7 +164,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
146
164
  progress.taskId = task.taskId;
147
165
  progress.status = "auditing";
148
166
  setTasks(taskProgress);
149
- const audit = await activitySet.auditTask({ run: input, task });
167
+ const audit = await activitySet.auditTask({ run, task });
150
168
  if (!audit.accepted) {
151
169
  rejectProgress(progress, audit.reason ?? "audit rejected task");
152
170
  return;
@@ -154,7 +172,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
154
172
  progress.status = "validating";
155
173
  setTasks(taskProgress);
156
174
  let validation = await activitySet.validateTask({
157
- run: input,
175
+ run,
158
176
  task,
159
177
  });
160
178
  if (!validation.accepted) {
@@ -163,13 +181,13 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
163
181
  let repaired;
164
182
  try {
165
183
  repaired = await activitySet.repairValidationTask({
166
- run: input,
184
+ run,
167
185
  task,
168
186
  validation,
169
187
  });
170
188
  }
171
189
  catch (error) {
172
- if (isCancellation(error)) {
190
+ if (isCancellation(error) || !isExhaustedActivityFailure(error)) {
173
191
  throw error;
174
192
  }
175
193
  rejectProgress(progress, "validation repair failed after its single activity attempt");
@@ -183,7 +201,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
183
201
  progress.status = "auditing";
184
202
  setTasks(taskProgress);
185
203
  const repairAudit = await activitySet.auditTask({
186
- run: input,
204
+ run,
187
205
  task,
188
206
  });
189
207
  if (!repairAudit.accepted) {
@@ -193,7 +211,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
193
211
  progress.status = "validating";
194
212
  setTasks(taskProgress);
195
213
  validation = await activitySet.validateTask({
196
- run: input,
214
+ run,
197
215
  task,
198
216
  });
199
217
  if (!validation.accepted) {
@@ -203,20 +221,20 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
203
221
  }
204
222
  progress.status = "reviewing";
205
223
  setTasks(taskProgress);
206
- let review = await activitySet.reviewTask({ run: input, task });
224
+ let review = await activitySet.reviewTask({ run, task });
207
225
  if (!review.accepted) {
208
226
  progress.status = "repairing";
209
227
  setTasks(taskProgress);
210
228
  let repaired;
211
229
  try {
212
230
  repaired = await activitySet.repairTask({
213
- run: input,
231
+ run,
214
232
  task,
215
233
  review: review.report,
216
234
  });
217
235
  }
218
236
  catch (error) {
219
- if (isCancellation(error)) {
237
+ if (isCancellation(error) || !isExhaustedActivityFailure(error)) {
220
238
  throw error;
221
239
  }
222
240
  rejectProgress(progress, "test repair failed after activity retries");
@@ -230,7 +248,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
230
248
  progress.status = "auditing";
231
249
  setTasks(taskProgress);
232
250
  const repairAudit = await activitySet.auditTask({
233
- run: input,
251
+ run,
234
252
  task,
235
253
  });
236
254
  if (!repairAudit.accepted) {
@@ -240,7 +258,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
240
258
  progress.status = "validating";
241
259
  setTasks(taskProgress);
242
260
  const repairValidation = await activitySet.validateTask({
243
- run: input,
261
+ run,
244
262
  task,
245
263
  });
246
264
  if (!repairValidation.accepted) {
@@ -249,7 +267,7 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
249
267
  }
250
268
  progress.status = "reviewing";
251
269
  setTasks(taskProgress);
252
- review = await activitySet.reviewTask({ run: input, task });
270
+ review = await activitySet.reviewTask({ run, task });
253
271
  if (!review.accepted) {
254
272
  rejectProgress(progress, review.reason ?? "review rejected repaired task");
255
273
  return;
@@ -260,7 +278,10 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
260
278
  setTasks(taskProgress);
261
279
  }
262
280
  catch (error) {
263
- if (!isHarborInfrastructureFailure(error)) {
281
+ if (isCancellation(error)) {
282
+ throw error;
283
+ }
284
+ if (!isExhaustedActivityFailure(error) && !isHarborInfrastructureFailure(error)) {
264
285
  throw error;
265
286
  }
266
287
  progress.status = "infrastructure_failed";
@@ -269,10 +290,10 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
269
290
  }
270
291
  };
271
292
  setPhase("authoring");
272
- await Promise.all(selectedCandidates.map(processCandidate));
293
+ await parallelMap(selectedCandidates, MAX_CONCURRENT_CANDIDATES, processCandidate);
273
294
  setPhase("exporting");
274
295
  const exportRef = await activitySet.buildExport({
275
- run: input,
296
+ run,
276
297
  tasks: acceptedTasks,
277
298
  });
278
299
  status = { ...status, phase: "complete", export: exportRef };
@@ -297,54 +318,68 @@ export async function executeRun(input, activitySet, installStatusQuery = () =>
297
318
  }
298
319
  }
299
320
  async function discoverWave(activitySet, run, options) {
300
- const targetCounts = Object.fromEntries(["easy", "medium", "hard"].map((difficulty) => [
321
+ const targetCounts = discoveryShardTargets(options.targetCounts);
322
+ const progress = discoveryProgress(options);
323
+ progress.report();
324
+ const shards = await Promise.all(Array.from({ length: DISCOVERY_SHARD_COUNT }, (_unused, shardIndex) => discoverShard(activitySet, run, options, targetCounts, shardIndex, progress)));
325
+ return uniqueCandidates(interleave(shards.map((shard) => shard.candidates)));
326
+ }
327
+ function discoveryShardTargets(targetCounts) {
328
+ return Object.fromEntries(["easy", "medium", "hard"].map((difficulty) => [
301
329
  difficulty,
302
- options.targetCounts[difficulty] === 0
330
+ targetCounts[difficulty] === 0
303
331
  ? 0
304
- : Math.min(MAX_CANDIDATES_PER_TIER_PER_SHARD, Math.ceil(options.targetCounts[difficulty] / DISCOVERY_SHARD_COUNT) +
305
- DISCOVERY_SHARD_OVERFETCH),
332
+ : Math.min(MAX_CANDIDATES_PER_TIER_PER_SHARD, Math.ceil(targetCounts[difficulty] / DISCOVERY_SHARD_COUNT) + DISCOVERY_SHARD_OVERFETCH),
306
333
  ]));
334
+ }
335
+ function discoveryProgress(options) {
307
336
  let completedShards = 0;
308
337
  let failedShards = 0;
309
- let candidateCount = 0;
310
- const reportProgress = () => options.onProgress({
338
+ let candidates = 0;
339
+ const report = () => options.onProgress({
311
340
  wave: options.wave,
312
341
  totalShards: DISCOVERY_SHARD_COUNT,
313
342
  completedShards,
314
343
  failedShards,
315
- candidates: candidateCount,
344
+ candidates,
316
345
  });
317
- reportProgress();
318
- const shards = await Promise.all(Array.from({ length: DISCOVERY_SHARD_COUNT }, async (_unused, shardIndex) => {
319
- try {
320
- const result = await activitySet.discoverCandidateShard({
321
- run,
322
- wave: options.wave,
323
- shardIndex,
324
- shardCount: DISCOVERY_SHARD_COUNT,
325
- targetCounts,
326
- excludedSourcePrs: options.excludedSourcePrs,
327
- });
346
+ return {
347
+ report,
348
+ complete(candidateCount) {
328
349
  completedShards += 1;
329
- candidateCount += result.candidates.length;
330
- reportProgress();
331
- return result;
332
- }
333
- catch (error) {
334
- if (isCancellation(error)) {
335
- throw error;
336
- }
337
- if (isNonRetryableActivityFailure(error)) {
338
- throw error;
339
- }
350
+ candidates += candidateCount;
351
+ report();
352
+ },
353
+ fail() {
340
354
  failedShards += 1;
341
- reportProgress();
342
- return { candidates: [], report: undefined };
355
+ report();
356
+ },
357
+ };
358
+ }
359
+ async function discoverShard(activitySet, run, options, targetCounts, shardIndex, progress) {
360
+ try {
361
+ const result = await activitySet.discoverCandidateShard({
362
+ run,
363
+ wave: options.wave,
364
+ shardIndex,
365
+ shardCount: DISCOVERY_SHARD_COUNT,
366
+ targetCounts,
367
+ excludedSourcePrs: options.excludedSourcePrs,
368
+ });
369
+ progress.complete(result.candidates.length);
370
+ return result;
371
+ }
372
+ catch (error) {
373
+ if (isCancellation(error) || !isExhaustedActivityFailure(error)) {
374
+ throw error;
343
375
  }
344
- }));
345
- const ranked = interleave(shards.map((shard) => shard.candidates));
376
+ progress.fail();
377
+ return { candidates: [] };
378
+ }
379
+ }
380
+ function uniqueCandidates(candidates) {
346
381
  const seenPrs = new Set();
347
- return ranked.filter((candidate) => {
382
+ return candidates.filter((candidate) => {
348
383
  if (seenPrs.has(candidate.sourcePr)) {
349
384
  return false;
350
385
  }
@@ -377,6 +412,9 @@ function candidatePoolExhausted(selected, requested) {
377
412
  const missing = missingCandidateCounts(selected, requested);
378
413
  return ApplicationFailure.nonRetryable(`candidate pool exhausted; missing easy=${missing.easy}, medium=${missing.medium}, hard=${missing.hard}`, "CandidatePoolExhausted");
379
414
  }
415
+ function isExhaustedActivityFailure(error) {
416
+ return (error instanceof ActivityFailure && error.retryState === RetryState.MAXIMUM_ATTEMPTS_REACHED);
417
+ }
380
418
  function infrastructureFailureMessage(error) {
381
419
  let cause = error;
382
420
  let message = error instanceof Error ? error.message : String(error);
@@ -399,19 +437,6 @@ function isHarborInfrastructureFailure(error) {
399
437
  }
400
438
  return false;
401
439
  }
402
- function isNonRetryableActivityFailure(error) {
403
- if (!(error instanceof ActivityFailure)) {
404
- return false;
405
- }
406
- let cause = error.cause;
407
- while (cause instanceof Error) {
408
- if (cause instanceof ApplicationFailure) {
409
- return cause.nonRetryable === true;
410
- }
411
- cause = cause.cause;
412
- }
413
- return false;
414
- }
415
440
  function interleave(groups) {
416
441
  const output = [];
417
442
  const maxLength = Math.max(0, ...groups.map((group) => group.length));
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/temporal/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/temporal/workflow.ts"],"names":[],"mappings":"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"}
@@ -158,12 +158,46 @@ Common failures:
158
158
 
159
159
  `self-bench run` requires an absolute or relative path to a Git checkout whose `origin` is an HTTPS or SSH GitHub URL. It pins `HEAD`; uncommitted content is excluded.
160
160
 
161
- The CLI collects two types of provenance:
161
+ The CLI collects sanitized user messages from Pi, Claude Code, and Codex sessions associated with the checkout or its worktrees, then uploads that local corpus with the run request. The workflow starts by running a Temporal activity on the worker that fetches exact titles and bodies from up to 500 recent merged pull requests by non-bot authors that clear coarse tier-appropriate size thresholds. It stores the combined local and GitHub corpus as a run artifact before discovery begins.
162
162
 
163
- 1. sanitized user messages from Pi, Claude Code, and Codex sessions associated with the checkout or its worktrees;
164
- 2. exact titles and bodies from up to 500 recent merged pull requests by non-bot authors that clear coarse tier-appropriate size thresholds.
163
+ GitHub records remain labeled `github-pull-request` and are bound to their own repository, PR number, and canonical URL. Local requests are preferred when they clearly describe the same change. A run can proceed with only local or only GitHub provenance, but fails when the combined corpus is empty. Common credential forms and injected harness context are removed, but this is not a general secret scanner.
165
164
 
166
- GitHub records remain labeled `github-pull-request` and are bound to their own repository, PR number, and canonical URL. Local requests are preferred when they clearly describe the same change. Common credential forms and injected harness context are removed, but this is not a general secret scanner.
165
+ ### Explicit local-session association
166
+
167
+ Use an optional local association manifest when you know which coding session produced a merged PR and do not want remote discovery to infer that correspondence. First list the sanitized sessions found for the repository and all of its worktrees:
168
+
169
+ ```bash
170
+ self-bench associate --repo /absolute/path/to/repository --list-sessions
171
+ ```
172
+
173
+ The newest sessions appear first. The listing contains source type, session ID, retained user-message count, the local session file path (with the home directory abbreviated as `~`), and its filesystem modification timestamp. These fields stay in terminal output only: they are not written to the association manifest or uploaded. Request text is never printed. Treat paths and timestamps as private metadata, and redirect the listing only to a protected file if it must be saved. Select one or more complete sessions and bind them to one merged PR:
174
+
175
+ ```bash
176
+ self-bench associate \
177
+ --repo /absolute/path/to/repository \
178
+ --pr 123 \
179
+ --session pi:01a03611-1df5-7f46-a88e-e24f4987b745 \
180
+ --session claude-code:9dd842c0-59d8-4838-8f29-cff97820f4e8 \
181
+ --output ./pr-123-sessions.json
182
+ ```
183
+
184
+ `associate` calls `gh pr view` to verify that the PR is merged and belongs to the repository. It then writes the output with create-only semantics and owner-only permissions. The manifest is deterministic and text-free: it contains the repository, canonical PR identity, each selected local message identity, and a SHA-256 of the exact sanitized and whitespace-normalized content SelfBench retains. It does **not** contain request text, upload anything, mutate the repository, or start a run. Keep it private anyway because session identifiers and PR associations can be sensitive.
185
+
186
+ Pass one or more manifests explicitly when starting a run:
187
+
188
+ ```bash
189
+ self-bench run \
190
+ --repo /absolute/path/to/repository \
191
+ --association ./pr-123-sessions.json \
192
+ --easy-count 5 \
193
+ --medium-count 10 \
194
+ --hard-count 5 \
195
+ --output ./self-bench-tasks.tar.gz
196
+ ```
197
+
198
+ The run command re-collects, whitespace-normalizes, and sanitizes local sessions, validates the manifest's repository and the complete selected-session snapshot, then annotates the exact retained messages before the existing provenance upload. Changed, added, or missing messages, cross-repository manifests, duplicate bindings, and one message associated more than once fail locally before upload. Unassociated local messages retain the existing discovery behavior only for PRs without explicit associations. On the worker, an explicit local association suppresses the GitHub title/body fallback for that PR, and materialization rejects any attempt to pair that PR with an unbound local message. The API, run request, and artifact reference contracts do not change; the existing sanitized provenance NDJSON is how the worker consumes the optional binding.
199
+
200
+ Association is deliberately a user assertion, not an LLM decision. Only the local CLI can see the local session stores. An LLM would make the binding nondeterministic, expose more request text, and could invent a correspondence. Remote model discovery can still rank candidates, but materialization resolves an exact retained message and enforces the explicit PR binding.
167
201
 
168
202
  ```bash
169
203
  self-bench run \
@@ -175,7 +209,7 @@ self-bench run \
175
209
  --output ./self-bench-tasks.tar.gz
176
210
  ```
177
211
 
178
- The three tier counts total 1–100. Each is a fixed candidate authoring budget, not an accepted-task target: rejected candidates are not replaced. Discovery expands only until it fills each requested tier budget, then accepted tasks are exported.
212
+ The three tier counts total 1–10,000. Each is a fixed candidate authoring budget, not an accepted-task target: rejected candidates are not replaced. Discovery expands only until it fills each requested tier budget, then accepted tasks are exported.
179
213
 
180
214
  `--output` implies `--wait`. It reports phase changes, requires a successful Temporal terminal state, downloads with create-only filesystem semantics, and verifies the API-provided SHA-256.
181
215
 
@@ -17,7 +17,9 @@ SelfBench creates easy, medium, and hard Harbor evaluations from completed pull
17
17
 
18
18
  Each task is grounded in one retained human request. SelfBench prefers exact user messages from local Pi, Claude Code, or Codex sessions associated with the repository or its worktrees. For third-party repositories, an exact GitHub pull-request title and optional body from a non-bot author is also valid.
19
19
 
20
- GitHub records are stored with a distinct `github-pull-request` source type, canonical URL, and PR number. Discovery cannot pair the request from one PR with another PR. A model-authored benchmark instruction may restate the retained request but may not add behavior inferred only from the implementation or tests.
20
+ GitHub records are stored with a distinct `github-pull-request` source type, canonical URL, and PR number. Discovery cannot pair the request from one PR with another PR. A local message may also carry an explicit PR binding supplied through `self-bench associate`; materialization must then reject every unbound local message for that PR, as well as omitting the GitHub title/body fallback. Association manifests contain only message identities and hashes of SelfBench's sanitized, whitespace-normalized content, while the existing provenance artifact retains that exact normalized text for the task. No model creates associations or request text.
21
+
22
+ A model-authored benchmark instruction may restate the retained request but may not add behavior inferred only from the implementation or tests.
21
23
 
22
24
  ## Difficulty gates
23
25
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "self-bench",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "description": "Turn completed repository changes into durable, private Harbor evaluations",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -43,20 +43,20 @@
43
43
  "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
44
44
  "cli": "bun run src/cli.ts",
45
45
  "build:review": "vite build --config review/vite.config.ts",
46
- "build:server": "tsc -p tsconfig.build.json && bun build src/sandbox-author.ts --target=node --outfile=dist/sandbox-author.bundle.js && bun build src/sandbox-review.ts --target=node --outfile=dist/sandbox-review.bundle.js && bun build src/sandbox-repair.ts --target=node --outfile=dist/sandbox-repair.bundle.js && bun build src/sandbox-validation-repair.ts --target=node --outfile=dist/sandbox-validation-repair.bundle.js && bun run build:metadata",
46
+ "build:server": "tsc -p tsconfig.build.json && bun scripts/build-sandbox-programs.ts && bun run build:metadata",
47
47
  "build:metadata": "bun scripts/write-build-metadata.ts",
48
48
  "prepack": "bun run build",
49
49
  "prepublishOnly": "bun run validate",
50
50
  "verify:package": "bun scripts/verify-package.ts",
51
51
  "verify:package:docker": "bun scripts/verify-package.ts --docker-build",
52
52
  "check": "biome check . && tsc --noEmit -p tsconfig.json && bun run typecheck:review",
53
- "dev:api": "tsx src/api-main.ts",
53
+ "dev:api": "bun run build:review && tsx src/api-main.ts",
54
54
  "dev:review": "vite --config review/vite.config.ts",
55
- "dev:worker": "tsx src/temporal/worker-main.ts",
55
+ "dev:worker": "bun run build:server && tsx src/temporal/worker-main.ts",
56
56
  "format": "biome format --write .",
57
57
  "start:api": "node dist/api-main.js",
58
58
  "start:worker": "node dist/temporal/worker-main.js",
59
- "test": "bun test tests review/src",
59
+ "test": "bun test tests review/src src",
60
60
  "typecheck:review": "tsc --noEmit -p review/tsconfig.json",
61
61
  "validate": "bun run check && bun run test && bun run build && bun run verify:package"
62
62
  },
@@ -0,0 +1,22 @@
1
+ import { mkdir } from "node:fs/promises";
2
+ import { join, resolve } from "node:path";
3
+
4
+ const root = resolve(import.meta.dir, "..");
5
+ const outputDirectory = join(root, "dist");
6
+
7
+ const programs = ["author", "review", "repair", "validation-repair"] as const;
8
+
9
+ await mkdir(outputDirectory, { recursive: true });
10
+ await Promise.all(
11
+ programs.map(async (program) => {
12
+ const result = await Bun.build({
13
+ entrypoints: [join(root, "src/sandbox/programs", `${program}.ts`)],
14
+ outdir: outputDirectory,
15
+ naming: `sandbox-${program}.bundle.js`,
16
+ target: "node",
17
+ });
18
+ if (!result.success) {
19
+ throw new AggregateError(result.logs, `failed to bundle sandbox ${program} program`);
20
+ }
21
+ }),
22
+ );
@@ -32,12 +32,15 @@ try {
32
32
  const tarballs = (await Array.fromAsync(new Bun.Glob("*.tgz").scan({ cwd: temporary }))).map(
33
33
  (name) => join(temporary, name),
34
34
  );
35
- const tarball = tarballs[0] ?? (() => {
36
- throw new Error("bun pm pack did not create a tarball");
37
- })();
35
+ const tarball =
36
+ tarballs[0] ??
37
+ (() => {
38
+ throw new Error("bun pm pack did not create a tarball");
39
+ })();
38
40
  const packageJson = JSON.parse(await readFile(join(root, "package.json"), "utf8")) as {
39
41
  name: string;
40
42
  version: string;
43
+ bin: Record<string, string>;
41
44
  };
42
45
  const installRoot = join(temporary, "install");
43
46
  await run("mkdir", ["-p", installRoot]);
@@ -49,6 +52,21 @@ try {
49
52
  throw new Error("installed self-bench did not print the expected CLI help");
50
53
  }
51
54
  const installedRoot = join(installRoot, "node_modules", packageJson.name);
55
+ for (const [name, target] of Object.entries(packageJson.bin)) {
56
+ await readFile(join(installedRoot, target));
57
+ await readFile(join(installRoot, "node_modules", ".bin", name));
58
+ }
59
+ for (const asset of [
60
+ "dist/api-main.js",
61
+ "dist/temporal/worker-main.js",
62
+ "dist/sandbox-author.bundle.js",
63
+ "dist/sandbox-review.bundle.js",
64
+ "dist/sandbox-repair.bundle.js",
65
+ "dist/sandbox-validation-repair.bundle.js",
66
+ "dist/review/index.html",
67
+ ]) {
68
+ await readFile(join(installedRoot, asset));
69
+ }
52
70
  for (const asset of [
53
71
  ".dockerignore",
54
72
  "compose.yaml",
@@ -65,7 +83,10 @@ try {
65
83
  const installedPackage = JSON.parse(
66
84
  await readFile(join(installedRoot, "package.json"), "utf8"),
67
85
  ) as { name: string; version: string };
68
- if (installedPackage.name !== packageJson.name || installedPackage.version !== packageJson.version) {
86
+ if (
87
+ installedPackage.name !== packageJson.name ||
88
+ installedPackage.version !== packageJson.version
89
+ ) {
69
90
  throw new Error("installed package metadata does not match the workspace package");
70
91
  }
71
92
  if (dockerBuild) {
@@ -1,5 +1,5 @@
1
- import { mkdir, writeFile } from "node:fs/promises";
2
1
  import { execFile } from "node:child_process";
2
+ import { mkdir, writeFile } from "node:fs/promises";
3
3
  import { promisify } from "node:util";
4
4
 
5
5
  const execFileAsync = promisify(execFile);
package/src/api.ts CHANGED
@@ -1,21 +1,22 @@
1
1
  import { timingSafeEqual } from "node:crypto";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { createServer, type IncomingMessage, type ServerResponse } from "node:http";
4
- import { dirname, join } from "node:path";
4
+ import { join } from "node:path";
5
5
  import { pipeline } from "node:stream/promises";
6
- import { fileURLToPath } from "node:url";
7
6
  import { Client } from "@temporalio/client";
8
7
  import { z } from "zod";
9
8
  import { createArtifactStore } from "./artifacts.js";
10
9
  import type { SelfBenchConfig } from "./config.js";
11
10
  import {
12
11
  artifactRefSchema,
12
+ MAX_CANDIDATES_PER_RUN,
13
13
  type RunPhase,
14
14
  type RunRequest,
15
15
  type RunStatus,
16
16
  repositoryRefSchema,
17
17
  runRequestSchema,
18
18
  } from "./contracts.js";
19
+ import { projectRoot } from "./project-paths.js";
19
20
  import { connectTemporalClient } from "./temporal/connection.js";
20
21
  import { selfBenchRunWorkflow, statusQuery } from "./temporal/workflow.js";
21
22
 
@@ -24,9 +25,9 @@ const submissionSchema = z.object({
24
25
  repository: repositoryRefSchema,
25
26
  provenance: artifactRefSchema,
26
27
  candidateCounts: z.object({
27
- easy: z.number().int().min(0).max(100),
28
- medium: z.number().int().min(0).max(100),
29
- hard: z.number().int().min(0).max(100),
28
+ easy: z.number().int().min(0).max(MAX_CANDIDATES_PER_RUN),
29
+ medium: z.number().int().min(0).max(MAX_CANDIDATES_PER_RUN),
30
+ hard: z.number().int().min(0).max(MAX_CANDIDATES_PER_RUN),
30
31
  }),
31
32
  authoringModel: z.string().min(1).default("gpt-5.6-sol"),
32
33
  selfbenchCommit: z.string().regex(/^[0-9a-f]{40}$/i),
@@ -254,7 +255,7 @@ function authorized(request: IncomingMessage, token: string | undefined): boolea
254
255
 
255
256
  async function sendReviewAsset(response: ServerResponse, pathname: string): Promise<void> {
256
257
  const relativePath = pathname === "/" ? "index.html" : pathname.slice(1);
257
- const root = join(dirname(fileURLToPath(import.meta.url)), "review");
258
+ const root = join(projectRoot(import.meta.url), "dist/review");
258
259
  const path = join(root, relativePath);
259
260
  if (!path.startsWith(`${root}/`)) {
260
261
  sendJson(response, 400, { error: "invalid asset path" });