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.
- package/README.md +16 -14
- package/biome.json +7 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +7 -7
- package/dist/api.js.map +1 -1
- package/dist/build-metadata.js +1 -1
- package/dist/cli.js +75 -15
- package/dist/cli.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/contracts.d.ts +1 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +6 -5
- package/dist/contracts.js.map +1 -1
- package/dist/extensions/discovery.d.ts.map +1 -1
- package/dist/extensions/discovery.js +12 -5
- package/dist/extensions/discovery.js.map +1 -1
- package/dist/harbor-task.d.ts.map +1 -1
- package/dist/harbor-task.js +3 -1
- package/dist/harbor-task.js.map +1 -1
- package/dist/project-paths.d.ts +2 -0
- package/dist/project-paths.d.ts.map +1 -0
- package/dist/project-paths.js +15 -0
- package/dist/project-paths.js.map +1 -0
- package/dist/provenance-associations.d.ts +49 -0
- package/dist/provenance-associations.d.ts.map +1 -0
- package/dist/provenance-associations.js +220 -0
- package/dist/provenance-associations.js.map +1 -0
- package/dist/provenance.d.ts +34 -13
- package/dist/provenance.d.ts.map +1 -1
- package/dist/provenance.js +81 -9
- package/dist/provenance.js.map +1 -1
- package/dist/reaudit-main.js +3 -3
- package/dist/reaudit-main.js.map +1 -1
- package/dist/repair-main.js +4 -4
- package/dist/repair-main.js.map +1 -1
- package/dist/{sandbox.d.ts → sandbox/contracts.d.ts} +5 -3
- package/dist/sandbox/contracts.d.ts.map +1 -0
- package/dist/sandbox/contracts.js +9 -0
- package/dist/sandbox/contracts.js.map +1 -0
- package/dist/sandbox/index.d.ts +5 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/{sandbox.js → sandbox/index.js} +6 -5
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/programs/author.d.ts +3 -0
- package/dist/sandbox/programs/author.d.ts.map +1 -0
- package/dist/{sandbox-author.js → sandbox/programs/author.js} +2 -2
- package/dist/sandbox/programs/author.js.map +1 -0
- package/dist/sandbox/programs/prepare-repair.d.ts +7 -0
- package/dist/sandbox/programs/prepare-repair.d.ts.map +1 -0
- package/dist/sandbox/programs/prepare-repair.js +30 -0
- package/dist/sandbox/programs/prepare-repair.js.map +1 -0
- package/dist/sandbox/programs/repair.d.ts +3 -0
- package/dist/sandbox/programs/repair.d.ts.map +1 -0
- package/dist/{sandbox-repair.js → sandbox/programs/repair.js} +7 -28
- package/dist/sandbox/programs/repair.js.map +1 -0
- package/dist/sandbox/programs/review.d.ts +2 -0
- package/dist/sandbox/programs/review.d.ts.map +1 -0
- package/dist/{sandbox-review.js → sandbox/programs/review.js} +2 -2
- package/dist/sandbox/programs/review.js.map +1 -0
- package/dist/sandbox/programs/validation-repair.d.ts +3 -0
- package/dist/sandbox/programs/validation-repair.d.ts.map +1 -0
- package/dist/{sandbox-validation-repair.js → sandbox/programs/validation-repair.js} +7 -28
- package/dist/sandbox/programs/validation-repair.js.map +1 -0
- package/dist/{docker-executor.d.ts → sandbox/providers/docker/executor.d.ts} +3 -3
- package/dist/sandbox/providers/docker/executor.d.ts.map +1 -0
- package/dist/{docker-executor.js → sandbox/providers/docker/executor.js} +2 -2
- package/dist/sandbox/providers/docker/executor.js.map +1 -0
- package/dist/{modal-executor.d.ts → sandbox/providers/modal/executor.d.ts} +3 -3
- package/dist/sandbox/providers/modal/executor.d.ts.map +1 -0
- package/dist/{modal-executor.js → sandbox/providers/modal/executor.js} +50 -19
- package/dist/sandbox/providers/modal/executor.js.map +1 -0
- package/dist/{vercel-command.d.ts → sandbox/providers/vercel/command.d.ts} +3 -3
- package/dist/sandbox/providers/vercel/command.d.ts.map +1 -0
- package/dist/{vercel-command.js → sandbox/providers/vercel/command.js} +3 -3
- package/dist/sandbox/providers/vercel/command.js.map +1 -0
- package/dist/{vercel-executor.d.ts → sandbox/providers/vercel/executor.d.ts} +3 -3
- package/dist/sandbox/providers/vercel/executor.d.ts.map +1 -0
- package/dist/{vercel-executor.js → sandbox/providers/vercel/executor.js} +5 -5
- package/dist/sandbox/providers/vercel/executor.js.map +1 -0
- package/dist/{vercel-fetch.d.ts → sandbox/providers/vercel/fetch.d.ts} +1 -1
- package/dist/sandbox/providers/vercel/fetch.d.ts.map +1 -0
- package/dist/{vercel-fetch.js → sandbox/providers/vercel/fetch.js} +1 -1
- package/dist/sandbox/providers/vercel/fetch.js.map +1 -0
- package/dist/{sandbox-timeout.d.ts → sandbox/timeout.d.ts} +2 -2
- package/dist/sandbox/timeout.d.ts.map +1 -0
- package/dist/{sandbox-timeout.js → sandbox/timeout.js} +1 -1
- package/dist/sandbox/timeout.js.map +1 -0
- package/dist/sandbox-author.bundle.js +11 -8
- package/dist/sandbox-repair.bundle.js +43 -35
- package/dist/sandbox-review.bundle.js +2 -2
- package/dist/sandbox-validation-repair.bundle.js +50 -41
- package/dist/{vercel-cli.d.ts → setup/vercel/cli.d.ts} +2 -2
- package/dist/setup/vercel/cli.d.ts.map +1 -0
- package/dist/{vercel-cli.js → setup/vercel/cli.js} +2 -2
- package/dist/setup/vercel/cli.js.map +1 -0
- package/dist/setup/vercel/index.d.ts +4 -0
- package/dist/setup/vercel/index.d.ts.map +1 -0
- package/dist/setup/vercel/index.js +3 -0
- package/dist/setup/vercel/index.js.map +1 -0
- package/dist/{vercel-setup-probe.d.ts → setup/vercel/probe.d.ts} +2 -2
- package/dist/setup/vercel/probe.d.ts.map +1 -0
- package/dist/{vercel-setup-probe.js → setup/vercel/probe.js} +2 -2
- package/dist/setup/vercel/probe.js.map +1 -0
- package/dist/{vercel-profile.d.ts → setup/vercel/profile.d.ts} +1 -1
- package/dist/setup/vercel/profile.d.ts.map +1 -0
- package/dist/{vercel-profile.js → setup/vercel/profile.js} +2 -2
- package/dist/setup/vercel/profile.js.map +1 -0
- package/dist/{vercel-runtime-image.d.ts → setup/vercel/runtime-image.d.ts} +5 -5
- package/dist/setup/vercel/runtime-image.d.ts.map +1 -0
- package/dist/{vercel-runtime-image.js → setup/vercel/runtime-image.js} +2 -2
- package/dist/setup/vercel/runtime-image.js.map +1 -0
- package/dist/{vercel-setup.d.ts → setup/vercel/setup.d.ts} +8 -8
- package/dist/setup/vercel/setup.d.ts.map +1 -0
- package/dist/{vercel-setup.js → setup/vercel/setup.js} +8 -8
- package/dist/setup/vercel/setup.js.map +1 -0
- package/dist/temporal/activities.d.ts +12 -0
- package/dist/temporal/activities.d.ts.map +1 -1
- package/dist/temporal/activities.js +80 -33
- package/dist/temporal/activities.js.map +1 -1
- package/dist/temporal/workflow.d.ts +1 -1
- package/dist/temporal/workflow.d.ts.map +1 -1
- package/dist/temporal/workflow.js +90 -65
- package/dist/temporal/workflow.js.map +1 -1
- package/docs/operations.md +39 -5
- package/docs/task-construction.md +3 -1
- package/package.json +5 -5
- package/scripts/build-sandbox-programs.ts +22 -0
- package/scripts/verify-package.ts +25 -4
- package/scripts/write-build-metadata.ts +1 -1
- package/src/api.ts +7 -6
- package/src/cli.ts +99 -15
- package/src/config.ts +1 -1
- package/src/contracts.ts +7 -5
- package/src/extensions/discovery.ts +14 -5
- package/src/harbor-task.ts +6 -1
- package/src/project-paths.ts +15 -0
- package/src/provenance-associations.ts +311 -0
- package/src/provenance.ts +132 -28
- package/src/reaudit-main.ts +3 -3
- package/src/repair-main.ts +4 -4
- package/src/{sandbox.ts → sandbox/contracts.ts} +11 -20
- package/src/sandbox/index.ts +23 -0
- package/src/{sandbox-author.ts → sandbox/programs/author.ts} +1 -1
- package/src/sandbox/programs/prepare-repair.ts +44 -0
- package/src/{sandbox-repair.ts → sandbox/programs/repair.ts} +7 -31
- package/src/{sandbox-review.ts → sandbox/programs/review.ts} +1 -1
- package/src/{sandbox-validation-repair.ts → sandbox/programs/validation-repair.ts} +6 -30
- package/src/{docker-executor.ts → sandbox/providers/docker/executor.ts} +3 -3
- package/src/{modal-executor.ts → sandbox/providers/modal/executor.ts} +66 -25
- package/src/{vercel-command.ts → sandbox/providers/vercel/command.ts} +3 -3
- package/src/{vercel-executor.ts → sandbox/providers/vercel/executor.ts} +5 -5
- package/src/{sandbox-timeout.ts → sandbox/timeout.ts} +1 -1
- package/src/{vercel-cli.ts → setup/vercel/cli.ts} +1 -1
- package/src/setup/vercel/index.ts +3 -0
- package/src/{vercel-setup-probe.ts → setup/vercel/probe.ts} +5 -2
- package/src/{vercel-profile.ts → setup/vercel/profile.ts} +4 -1
- package/src/{vercel-runtime-image.ts → setup/vercel/runtime-image.ts} +5 -5
- package/src/{vercel-setup.ts → setup/vercel/setup.ts} +8 -8
- package/src/temporal/activities.ts +164 -63
- package/src/temporal/workflow.ts +120 -71
- package/tsconfig.json +1 -1
- package/dist/docker-executor.d.ts.map +0 -1
- package/dist/docker-executor.js.map +0 -1
- package/dist/modal-executor.d.ts.map +0 -1
- package/dist/modal-executor.js.map +0 -1
- package/dist/sandbox-author.d.ts +0 -3
- package/dist/sandbox-author.d.ts.map +0 -1
- package/dist/sandbox-author.js.map +0 -1
- package/dist/sandbox-repair.d.ts +0 -3
- package/dist/sandbox-repair.d.ts.map +0 -1
- package/dist/sandbox-repair.js.map +0 -1
- package/dist/sandbox-review.d.ts +0 -2
- package/dist/sandbox-review.d.ts.map +0 -1
- package/dist/sandbox-review.js.map +0 -1
- package/dist/sandbox-timeout.d.ts.map +0 -1
- package/dist/sandbox-timeout.js.map +0 -1
- package/dist/sandbox-validation-repair.d.ts +0 -3
- package/dist/sandbox-validation-repair.d.ts.map +0 -1
- package/dist/sandbox-validation-repair.js.map +0 -1
- package/dist/sandbox.d.ts.map +0 -1
- package/dist/sandbox.js.map +0 -1
- package/dist/vercel-cli.d.ts.map +0 -1
- package/dist/vercel-cli.js.map +0 -1
- package/dist/vercel-command.d.ts.map +0 -1
- package/dist/vercel-command.js.map +0 -1
- package/dist/vercel-executor.d.ts.map +0 -1
- package/dist/vercel-executor.js.map +0 -1
- package/dist/vercel-fetch.d.ts.map +0 -1
- package/dist/vercel-fetch.js.map +0 -1
- package/dist/vercel-profile.d.ts.map +0 -1
- package/dist/vercel-profile.js.map +0 -1
- package/dist/vercel-runtime-image.d.ts.map +0 -1
- package/dist/vercel-runtime-image.js.map +0 -1
- package/dist/vercel-setup-probe.d.ts.map +0 -1
- package/dist/vercel-setup-probe.js.map +0 -1
- package/dist/vercel-setup.d.ts.map +0 -1
- package/dist/vercel-setup.js.map +0 -1
- /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 =
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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
|
|
293
|
+
await parallelMap(selectedCandidates, MAX_CONCURRENT_CANDIDATES, processCandidate);
|
|
273
294
|
setPhase("exporting");
|
|
274
295
|
const exportRef = await activitySet.buildExport({
|
|
275
|
-
run
|
|
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 =
|
|
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
|
-
|
|
330
|
+
targetCounts[difficulty] === 0
|
|
303
331
|
? 0
|
|
304
|
-
: Math.min(MAX_CANDIDATES_PER_TIER_PER_SHARD, Math.ceil(
|
|
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
|
|
310
|
-
const
|
|
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
|
|
344
|
+
candidates,
|
|
316
345
|
});
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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
|
-
|
|
330
|
-
|
|
331
|
-
|
|
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
|
-
|
|
342
|
-
|
|
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
|
-
|
|
376
|
+
progress.fail();
|
|
377
|
+
return { candidates: [] };
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
function uniqueCandidates(candidates) {
|
|
346
381
|
const seenPrs = new Set();
|
|
347
|
-
return
|
|
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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"}
|
package/docs/operations.md
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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–
|
|
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
|
|
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.
|
|
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
|
|
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 =
|
|
36
|
-
|
|
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 (
|
|
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) {
|
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 {
|
|
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(
|
|
28
|
-
medium: z.number().int().min(0).max(
|
|
29
|
-
hard: z.number().int().min(0).max(
|
|
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(
|
|
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" });
|