@jinn-network/client 0.1.6 → 0.1.7-canary.205587f0
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/CHANGELOG.md +33 -0
- package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +23 -4
- package/deployments/deployment-jinn-mvi-l1-sepolia.json +23 -4
- package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +5 -4
- package/dist/adapters/mech/adapter.d.ts +38 -1
- package/dist/adapters/mech/adapter.js +241 -54
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +17 -4
- package/dist/adapters/mech/contracts.js +8 -2
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/safe-revert.d.ts +20 -0
- package/dist/adapters/mech/safe-revert.js +12 -4
- package/dist/adapters/mech/safe-revert.js.map +1 -1
- package/dist/adapters/mech/safe.d.ts +5 -1
- package/dist/adapters/mech/safe.js +27 -8
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/verdict-code.d.ts +1 -0
- package/dist/adapters/mech/verdict-code.js +18 -0
- package/dist/adapters/mech/verdict-code.js.map +1 -1
- package/dist/api/admin-endpoint.d.ts +15 -3
- package/dist/api/admin-endpoint.js +24 -2
- package/dist/api/admin-endpoint.js.map +1 -1
- package/dist/api/bootstrap-endpoint.js +49 -0
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/codex-doctor-endpoint.d.ts +73 -0
- package/dist/api/codex-doctor-endpoint.js +177 -0
- package/dist/api/codex-doctor-endpoint.js.map +1 -0
- package/dist/api/discovery-endpoint.d.ts +1 -0
- package/dist/api/discovery-endpoint.js +26 -0
- package/dist/api/discovery-endpoint.js.map +1 -1
- package/dist/api/fleet-build.d.ts +1 -0
- package/dist/api/fleet-build.js +2 -1
- package/dist/api/fleet-build.js.map +1 -1
- package/dist/api/gather-status.d.ts +11 -0
- package/dist/api/gather-status.js +467 -4
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/hermes-doctor-endpoint.d.ts +117 -0
- package/dist/api/hermes-doctor-endpoint.js +229 -23
- package/dist/api/hermes-doctor-endpoint.js.map +1 -1
- package/dist/api/launcher-status.d.ts +21 -16
- package/dist/api/launcher-status.js +2 -1
- package/dist/api/launcher-status.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +10 -0
- package/dist/api/portfolio-v0-build.js +24 -5
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +10 -0
- package/dist/api/prediction-v1-build.js +7 -1
- package/dist/api/prediction-v1-build.js.map +1 -1
- package/dist/api/server.d.ts +31 -1
- package/dist/api/server.js +68 -1
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +16 -0
- package/dist/api/setup-endpoints.js +78 -4
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/setup-retry-endpoint.d.ts +19 -0
- package/dist/api/setup-retry-endpoint.js +32 -0
- package/dist/api/setup-retry-endpoint.js.map +1 -0
- package/dist/api/solvernets-endpoints.d.ts +8 -0
- package/dist/api/solvernets-endpoints.js +71 -43
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +78 -0
- package/dist/api/status-build.js +74 -18
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/task-run-routing.d.ts +7 -0
- package/dist/api/task-run-routing.js +12 -0
- package/dist/api/task-run-routing.js.map +1 -0
- package/dist/api/task-runs-build.d.ts +21 -0
- package/dist/api/task-runs-build.js +14 -1
- package/dist/api/task-runs-build.js.map +1 -1
- package/dist/build-info.json +4 -4
- package/dist/build-meta.json +1 -1
- package/dist/chain-read-errors.d.ts +10 -0
- package/dist/chain-read-errors.js +15 -0
- package/dist/chain-read-errors.js.map +1 -1
- package/dist/cli/commands/auth.js +1 -1
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/create.js +3 -2
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.js +2 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/rewards.js +11 -7
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/solver-nets.js +24 -9
- package/dist/cli/commands/solver-nets.js.map +1 -1
- package/dist/cli/commands/status.js +1 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/tasks.js +86 -9
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/update.d.ts +10 -0
- package/dist/cli/commands/update.js +36 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/introspection-context.js +5 -0
- package/dist/cli/introspection-context.js.map +1 -1
- package/dist/cli/task-native-readiness.d.ts +3 -1
- package/dist/cli/task-native-readiness.js +28 -6
- package/dist/cli/task-native-readiness.js.map +1 -1
- package/dist/config.d.ts +118 -5
- package/dist/config.js +132 -18
- package/dist/config.js.map +1 -1
- package/dist/daemon/checkpoint-loop.d.ts +48 -0
- package/dist/daemon/checkpoint-loop.js +76 -0
- package/dist/daemon/checkpoint-loop.js.map +1 -0
- package/dist/daemon/creator.d.ts +1 -1
- package/dist/daemon/creator.js +7 -3
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +19 -0
- package/dist/daemon/daemon.js +68 -1
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/eviction-loop.d.ts +40 -0
- package/dist/daemon/eviction-loop.js +67 -0
- package/dist/daemon/eviction-loop.js.map +1 -0
- package/dist/daemon/jinn-claim-loop-wiring.d.ts +33 -0
- package/dist/daemon/jinn-claim-loop-wiring.js +40 -0
- package/dist/daemon/jinn-claim-loop-wiring.js.map +1 -0
- package/dist/daemon/jinn-claim-loop.d.ts +24 -17
- package/dist/daemon/jinn-claim-loop.js +77 -23
- package/dist/daemon/jinn-claim-loop.js.map +1 -1
- package/dist/daemon/skip-log-dedup.d.ts +69 -0
- package/dist/daemon/skip-log-dedup.js +106 -0
- package/dist/daemon/skip-log-dedup.js.map +1 -0
- package/dist/dashboard/assets/index-DMm7Y4f7.css +32 -0
- package/dist/dashboard/assets/index-Dt1RV0Ee.js +330 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/factory.d.ts +17 -5
- package/dist/discovery/factory.js +46 -18
- package/dist/discovery/factory.js.map +1 -1
- package/dist/discovery/http.js +142 -3
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.d.ts +5 -0
- package/dist/discovery/onchain.js +407 -15
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +45 -1
- package/dist/discovery/types.js +8 -10
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.d.ts +7 -0
- package/dist/discovery/with-fallback.js +10 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap.d.ts +92 -1
- package/dist/earning/bootstrap.js +203 -63
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +14 -0
- package/dist/earning/contracts.js +17 -5
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/funding-plan.js +27 -18
- package/dist/earning/funding-plan.js.map +1 -1
- package/dist/earning/jinn-rewards.d.ts +46 -0
- package/dist/earning/jinn-rewards.js +32 -0
- package/dist/earning/jinn-rewards.js.map +1 -1
- package/dist/earning/safe-adapter.d.ts +2 -0
- package/dist/earning/safe-adapter.js +26 -12
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/store.d.ts +8 -0
- package/dist/earning/store.js.map +1 -1
- package/dist/earning/testnet-setup-migration.d.ts +12 -0
- package/dist/earning/testnet-setup-migration.js +27 -1
- package/dist/earning/testnet-setup-migration.js.map +1 -1
- package/dist/earning/types.d.ts +15 -0
- package/dist/erc8004/reputation.d.ts +8 -0
- package/dist/erc8004/reputation.js +22 -3
- package/dist/erc8004/reputation.js.map +1 -1
- package/dist/harnesses/cost-estimates.d.ts +145 -0
- package/dist/harnesses/cost-estimates.js +297 -0
- package/dist/harnesses/cost-estimates.js.map +1 -0
- package/dist/harnesses/engine/engine.d.ts +72 -0
- package/dist/harnesses/engine/engine.js +105 -8
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/engine/persistence.d.ts +51 -1
- package/dist/harnesses/engine/persistence.js +118 -5
- package/dist/harnesses/engine/persistence.js.map +1 -1
- package/dist/harnesses/engine/work-dir-reaper.d.ts +65 -0
- package/dist/harnesses/engine/work-dir-reaper.js +100 -0
- package/dist/harnesses/engine/work-dir-reaper.js.map +1 -0
- package/dist/harnesses/impls/hermes-agent/adapter.js +40 -0
- package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +20 -0
- package/dist/harnesses/impls/hermes-agent/bootstrap.js +40 -6
- package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/harness.d.ts +59 -1
- package/dist/harnesses/impls/hermes-agent/harness.js +104 -0
- package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
- package/dist/harnesses/impls/index.d.ts +9 -0
- package/dist/harnesses/impls/index.js +19 -1
- package/dist/harnesses/impls/index.js.map +1 -1
- package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +3 -0
- package/dist/harnesses/impls/learner/adapters/codex-code.js +49 -0
- package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
- package/dist/harnesses/impls/learner/harness.d.ts +41 -4
- package/dist/harnesses/impls/learner/harness.js +114 -2
- package/dist/harnesses/impls/learner/harness.js.map +1 -1
- package/dist/harnesses/impls/learner/plugin-path.d.ts +0 -13
- package/dist/harnesses/impls/learner/plugin-path.js +35 -15
- package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
- package/dist/harnesses/impls/learner/types.d.ts +15 -0
- package/dist/harnesses/impls/stub.d.ts +58 -0
- package/dist/harnesses/impls/stub.js +89 -0
- package/dist/harnesses/impls/stub.js.map +1 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +69 -50
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +178 -93
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +12 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +121 -7
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +15 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +54 -4
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +6 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
- package/dist/harnesses/readiness-registry.js +9 -1
- package/dist/harnesses/readiness-registry.js.map +1 -1
- package/dist/main.js +373 -82
- package/dist/main.js.map +1 -1
- package/dist/observability/emit-event.d.ts +1 -1
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/operator-errors.d.ts +7 -0
- package/dist/operator-errors.js +13 -1
- package/dist/operator-errors.js.map +1 -1
- package/dist/plugins/learner/.claude-plugin/plugin.json +9 -0
- package/dist/plugins/learner/.codex-plugin/plugin.json +39 -0
- package/dist/plugins/learner/AGENTS.md +40 -0
- package/dist/plugins/learner/CLAUDE.md +33 -0
- package/dist/plugins/learner/README.md +59 -0
- package/dist/plugins/learner/hooks/hooks.json +16 -0
- package/dist/plugins/learner/hooks/session-start +38 -0
- package/dist/plugins/learner/skills/learn/SKILL.md +412 -0
- package/dist/plugins/learner/skills/learn/analyst-prompt.md +68 -0
- package/dist/plugins/learner/skills/learn/consolidator-prompt.md +94 -0
- package/dist/plugins/learner/skills/learn/explorer-prompt.md +53 -0
- package/dist/plugins/learner/skills/learn/planner-prompt.md +87 -0
- package/dist/plugins/learner/skills/learn/promoter-prompt.md +113 -0
- package/dist/plugins/learner/skills/learn/step-worker-prompt.md +47 -0
- package/dist/plugins/learner/skills/learn/strategist-prompt.md +85 -0
- package/dist/restart-daemon.d.ts +90 -0
- package/dist/restart-daemon.js +95 -0
- package/dist/restart-daemon.js.map +1 -0
- package/dist/setup/halt-mode.d.ts +14 -0
- package/dist/setup/halt-mode.js +17 -0
- package/dist/setup/halt-mode.js.map +1 -0
- package/dist/solver-nets/prediction-operator-ux.js +43 -3
- package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
- package/dist/solver-nets/registry.d.ts +1 -0
- package/dist/solver-nets/registry.js +1 -1
- package/dist/solver-nets/registry.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-pool-cache.d.ts +58 -0
- package/dist/solver-types/_swe-rebench-v2-pool-cache.js +87 -0
- package/dist/solver-types/_swe-rebench-v2-pool-cache.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-substrate.d.ts +1 -0
- package/dist/solver-types/_swe-rebench-v2-substrate.js +10 -0
- package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +65 -0
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +243 -26
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2-auto.d.ts +22 -7
- package/dist/solver-types/swe-rebench-v2-auto.js +45 -20
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2.d.ts +13 -2
- package/dist/solver-types/swe-rebench-v2.js +233 -94
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/daemon-init.d.ts +10 -2
- package/dist/solvernets/daemon-init.js +22 -2
- package/dist/solvernets/daemon-init.js.map +1 -1
- package/dist/solvernets/launched-record-dispatcher.js +35 -7
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
- package/dist/solvernets/store.d.ts +5 -0
- package/dist/solvernets/store.js +1 -0
- package/dist/solvernets/store.js.map +1 -1
- package/dist/store/store.d.ts +15 -0
- package/dist/store/store.js +118 -3
- package/dist/store/store.js.map +1 -1
- package/dist/tasks/sources.d.ts +18 -1
- package/dist/tasks/sources.js +33 -5
- package/dist/tasks/sources.js.map +1 -1
- package/dist/tx-retry.d.ts +151 -19
- package/dist/tx-retry.js +286 -32
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/payloads/prediction-apy-v0.d.ts +5 -5
- package/dist/types/payloads/prediction-v0.d.ts +5 -5
- package/dist/types/task-document.d.ts +392 -0
- package/dist/types/task-document.js +10 -0
- package/dist/types/task-document.js.map +1 -1
- package/dist/types/task.d.ts +28 -0
- package/dist/util/extract-tx-hash.d.ts +14 -0
- package/dist/util/extract-tx-hash.js +19 -0
- package/dist/util/extract-tx-hash.js.map +1 -0
- package/dist/vendor/@jinn-network/sdk/dist/contracts.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +3 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -0
- package/package.json +29 -12
- package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
- package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
|
@@ -26,9 +26,10 @@
|
|
|
26
26
|
* re-raises as `SkippableError` (no signed verdict).
|
|
27
27
|
*/
|
|
28
28
|
import { spawn } from 'node:child_process';
|
|
29
|
-
import { mkdtemp, writeFile, readFile, rm } from 'node:fs/promises';
|
|
29
|
+
import { mkdtemp, writeFile, readFile, rm, statfs } from 'node:fs/promises';
|
|
30
30
|
import { tmpdir } from 'node:os';
|
|
31
31
|
import { isAbsolute, join } from 'node:path';
|
|
32
|
+
import { defaultCommandRunner, resolveImageDigest as resolveSubstrateImageDigest, } from '../../../solver-types/_swe-rebench-v2-substrate.js';
|
|
32
33
|
/**
|
|
33
34
|
* Thrown when the eval could not actually grade the solution. There is no
|
|
34
35
|
* signal about the solver here, only about the operator's environment — the
|
|
@@ -46,62 +47,102 @@ export class EvalCouldNotGradeError extends Error {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
|
|
50
|
+
* Thrown by `runEval` when the disk cannot be brought above the eval
|
|
51
|
+
* disk-floor even after a broad prune. A clean abort — the caller stops
|
|
52
|
+
* gracefully; no instance is graded, nothing is marked. Distinct from
|
|
53
|
+
* `EvalCouldNotGradeError`: this is operator-environment, retryable, and must
|
|
54
|
+
* never be turned into a `scorable: false` admission (#476).
|
|
55
|
+
*/
|
|
56
|
+
export class InsufficientDiskError extends Error {
|
|
57
|
+
freeBytes;
|
|
58
|
+
floorBytes;
|
|
59
|
+
constructor(freeBytes, floorBytes) {
|
|
60
|
+
const gb = (n) => (n / 1_000_000_000).toFixed(1);
|
|
61
|
+
super(`insufficient disk for swe-rebench eval: ${gb(freeBytes)} GB free, ` +
|
|
62
|
+
`need ≥ ${gb(floorBytes)} GB`);
|
|
63
|
+
this.name = 'InsufficientDiskError';
|
|
64
|
+
this.freeBytes = freeBytes;
|
|
65
|
+
this.floorBytes = floorBytes;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Default free-disk floor required before an eval round: 20 GB. A single
|
|
70
|
+
* SWE-rebench eval image was observed to peak transiently at ~12.6 GB, so the
|
|
71
|
+
* floor clears the worst observed instance with real margin. Override with
|
|
72
|
+
* `JINN_EVAL_DISK_FLOOR_GB` on constrained hosts.
|
|
55
73
|
*/
|
|
56
|
-
export const
|
|
57
|
-
|
|
74
|
+
export const DEFAULT_EVAL_DISK_FLOOR_BYTES = 20_000_000_000;
|
|
75
|
+
/** Resolve the disk floor: explicit option > `JINN_EVAL_DISK_FLOOR_GB` env > default. */
|
|
76
|
+
export function resolveDiskFloorBytes(opt) {
|
|
58
77
|
if (typeof opt === 'number' && Number.isFinite(opt) && opt > 0)
|
|
59
78
|
return Math.floor(opt);
|
|
60
|
-
const envRaw = process.env['
|
|
79
|
+
const envRaw = process.env['JINN_EVAL_DISK_FLOOR_GB'];
|
|
61
80
|
if (envRaw !== undefined) {
|
|
62
|
-
// `Number()` returns 0 for `""` / whitespace and NaN for strings with
|
|
63
|
-
// non-numeric content (e.g. `"garbage"`, `"1e3oops"`) — unlike `parseInt`,
|
|
64
|
-
// which would silently accept `parseInt("1e3oops") === 1`. Either way we
|
|
65
|
-
// reject anything that isn't a positive integer.
|
|
66
81
|
const parsed = Number(envRaw);
|
|
67
|
-
if (Number.isFinite(parsed) &&
|
|
68
|
-
return parsed;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
console.warn(`[swe-rebench-v2] JINN_EVAL_IMAGE_CACHE_MAX=${JSON.stringify(envRaw)} is not a positive integer — using default ${DEFAULT_EVAL_IMAGE_CACHE_MAX}`);
|
|
82
|
+
if (Number.isFinite(parsed) && parsed > 0)
|
|
83
|
+
return Math.floor(parsed * 1_000_000_000);
|
|
84
|
+
console.warn(`[swe-rebench-v2] JINN_EVAL_DISK_FLOOR_GB=${JSON.stringify(envRaw)} is not a positive ` +
|
|
85
|
+
`number — using default ${DEFAULT_EVAL_DISK_FLOOR_BYTES / 1_000_000_000} GB`);
|
|
72
86
|
}
|
|
73
|
-
return
|
|
87
|
+
return DEFAULT_EVAL_DISK_FLOOR_BYTES;
|
|
74
88
|
}
|
|
75
89
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* daemon (or a permission slip) becomes visible before disks fill. Silent
|
|
81
|
-
* leaks were the original failure mode `jinn-mono-uy6v.11` exists to fix.
|
|
82
|
-
*
|
|
83
|
-
* We listen on `'exit'` rather than `'close'` and route stdio to `'ignore'`
|
|
84
|
-
* so the resolve path doesn't depend on parent-side stream draining (which
|
|
85
|
-
* can fail to fire `'close'` cleanly when piped without backpressure on the
|
|
86
|
-
* right tick). The image tag + exit code is sufficient signal; operators can
|
|
87
|
-
* grep the docker daemon log for the underlying reason.
|
|
90
|
+
* Default wall-clock limit for one upstream eval.py invocation: 2 hours. Some
|
|
91
|
+
* linux/amd64 SWE-rebench images can wedge indefinitely under Apple Silicon
|
|
92
|
+
* emulation after a native crash, so the subprocess gets a hard guardrail.
|
|
93
|
+
* Override with `JINN_SWE_REBENCH_EVAL_TIMEOUT_MS`; set `0` to disable.
|
|
88
94
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
95
|
+
export const DEFAULT_EVAL_TIMEOUT_MS = 2 * 60 * 60 * 1000;
|
|
96
|
+
/** Resolve the eval timeout: explicit option > env > default. */
|
|
97
|
+
export function resolveEvalTimeoutMs(opt) {
|
|
98
|
+
if (typeof opt === 'number' && Number.isFinite(opt) && opt >= 0)
|
|
99
|
+
return Math.floor(opt);
|
|
100
|
+
const envRaw = process.env['JINN_SWE_REBENCH_EVAL_TIMEOUT_MS'];
|
|
101
|
+
if (envRaw !== undefined) {
|
|
102
|
+
const parsed = Number(envRaw);
|
|
103
|
+
if (Number.isFinite(parsed) && parsed >= 0)
|
|
104
|
+
return Math.floor(parsed);
|
|
105
|
+
console.warn(`[swe-rebench-v2] JINN_SWE_REBENCH_EVAL_TIMEOUT_MS=${JSON.stringify(envRaw)} is not a ` +
|
|
106
|
+
`non-negative number — using default ${DEFAULT_EVAL_TIMEOUT_MS} ms`);
|
|
107
|
+
}
|
|
108
|
+
return DEFAULT_EVAL_TIMEOUT_MS;
|
|
109
|
+
}
|
|
110
|
+
/** Production disk probe: free bytes on the filesystem backing the temp dir. */
|
|
111
|
+
async function defaultFreeDiskBytes() {
|
|
112
|
+
const s = await statfs(tmpdir());
|
|
113
|
+
return s.bavail * s.bsize;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Spawn `docker <args>`, resolving regardless of outcome — a failed cleanup
|
|
117
|
+
* command is logged, never thrown (#476: cleanup must not break the eval loop).
|
|
118
|
+
*/
|
|
119
|
+
function runDocker(args) {
|
|
120
|
+
return defaultCommandRunner('docker', args)
|
|
121
|
+
.then((res) => {
|
|
122
|
+
if (res.exitCode !== 0) {
|
|
123
|
+
const detail = (res.stderr || res.stdout).trim();
|
|
124
|
+
console.warn(`[swe-rebench-v2] docker ${args.join(' ')} exited ${res.exitCode}` +
|
|
125
|
+
`${detail ? `: ${detail.slice(-500)}` : ''}`);
|
|
126
|
+
}
|
|
127
|
+
})
|
|
128
|
+
.catch((err) => {
|
|
129
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
130
|
+
console.warn(`[swe-rebench-v2] docker ${args.join(' ')} failed to spawn: ${reason}`);
|
|
103
131
|
});
|
|
104
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Production `pruneRound`: remove the round's image, then prune stopped
|
|
135
|
+
* containers and build cache. Each step is best-effort.
|
|
136
|
+
*/
|
|
137
|
+
async function defaultPruneRound(image) {
|
|
138
|
+
if (image)
|
|
139
|
+
await runDocker(['rmi', '-f', image]);
|
|
140
|
+
await runDocker(['container', 'prune', '-f']);
|
|
141
|
+
await runDocker(['builder', 'prune', '-f']);
|
|
142
|
+
}
|
|
143
|
+
async function defaultResolveImageDigest(imageName) {
|
|
144
|
+
return resolveSubstrateImageDigest(imageName, defaultCommandRunner);
|
|
145
|
+
}
|
|
105
146
|
/**
|
|
106
147
|
* Container-output signatures that mean the eval aborted before producing a
|
|
107
148
|
* usable result — i.e. the operator's environment is the problem, not the
|
|
@@ -120,6 +161,7 @@ const INFRA_SIGNATURES = [
|
|
|
120
161
|
{ rx: /Failed building editable|Failed to build installable wheels/i, reason: 'install_build_failed' },
|
|
121
162
|
{ rx: /No virtual environment found/i, reason: 'venv_missing' },
|
|
122
163
|
{ rx: /exec format error|the requested image's platform .* does not match/i, reason: 'image_arch_mismatch' },
|
|
164
|
+
{ rx: /Fatal Python error:\s*Illegal instruction|Illegal instruction(?:\s+\(core dumped\))?/i, reason: 'image_arch_mismatch' },
|
|
123
165
|
// 2026-05-14 triage (jinn-mono-fufn) — failure fingerprints from real verdicts:
|
|
124
166
|
{ rx: /A virtual environment already exists at \S+\.venv\b/i, reason: 'venv_collision' },
|
|
125
167
|
{ rx: /No module named pytest\b/i, reason: 'pytest_missing' },
|
|
@@ -178,64 +220,62 @@ function buildTestCommands(args) {
|
|
|
178
220
|
}
|
|
179
221
|
export class PythonEvalRunner {
|
|
180
222
|
opts;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
imageLru = new Set();
|
|
188
|
-
imageCacheMax;
|
|
189
|
-
cleanupImage;
|
|
223
|
+
pruneRound;
|
|
224
|
+
diskFloorBytes;
|
|
225
|
+
freeDiskBytes;
|
|
226
|
+
systemPrune;
|
|
227
|
+
resolveImageDigest;
|
|
228
|
+
evalTimeoutMs;
|
|
190
229
|
constructor(opts) {
|
|
191
230
|
this.opts = opts;
|
|
192
|
-
this.
|
|
193
|
-
this.
|
|
231
|
+
this.pruneRound = opts.pruneRound ?? defaultPruneRound;
|
|
232
|
+
this.diskFloorBytes = resolveDiskFloorBytes(opts.diskFloorBytes);
|
|
233
|
+
this.freeDiskBytes = opts.freeDiskBytes ?? defaultFreeDiskBytes;
|
|
234
|
+
this.systemPrune = opts.systemPrune ?? (() => runDocker(['system', 'prune', '-f']));
|
|
235
|
+
this.resolveImageDigest = opts.resolveImageDigest ?? defaultResolveImageDigest;
|
|
236
|
+
this.evalTimeoutMs = resolveEvalTimeoutMs(opts.evalTimeoutMs);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Ensure enough free disk for an eval round. Below the floor → broad prune →
|
|
240
|
+
* re-probe; still below → `InsufficientDiskError` (clean abort). (#476)
|
|
241
|
+
*/
|
|
242
|
+
async ensureDiskHeadroom() {
|
|
243
|
+
const free = await this.freeDiskBytes();
|
|
244
|
+
if (free >= this.diskFloorBytes)
|
|
245
|
+
return;
|
|
246
|
+
console.warn(`[swe-rebench-v2] low disk (${(free / 1e9).toFixed(1)} GB) — running docker system prune`);
|
|
247
|
+
await this.systemPrune();
|
|
248
|
+
const afterPrune = await this.freeDiskBytes();
|
|
249
|
+
if (afterPrune < this.diskFloorBytes) {
|
|
250
|
+
throw new InsufficientDiskError(afterPrune, this.diskFloorBytes);
|
|
251
|
+
}
|
|
194
252
|
}
|
|
195
253
|
async runEval(args) {
|
|
254
|
+
await this.ensureDiskHeadroom();
|
|
196
255
|
try {
|
|
197
|
-
|
|
256
|
+
const result = await this.runEvalImpl(args);
|
|
257
|
+
let imageDigest = null;
|
|
258
|
+
try {
|
|
259
|
+
imageDigest = await this.resolveImageDigest(args.image);
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
263
|
+
console.warn(`[swe-rebench-v2] resolveImageDigest failed for ${args.image}: ${reason}`);
|
|
264
|
+
}
|
|
265
|
+
return {
|
|
266
|
+
...result,
|
|
267
|
+
...(imageDigest ? { imageDigest } : {}),
|
|
268
|
+
};
|
|
198
269
|
}
|
|
199
270
|
finally {
|
|
200
|
-
//
|
|
201
|
-
// pull-and-crash
|
|
202
|
-
// patch_corrupt, eval_no_report) still left an image on disk; we must
|
|
203
|
-
// count it toward the cache cap so the failure path can't leak the LRU.
|
|
204
|
-
await this.recordImageUsage(args.image);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Move `image` to the most-recently-used slot of the in-process LRU; if the
|
|
209
|
-
* set now exceeds {@link imageCacheMax}, evict the oldest entries via
|
|
210
|
-
* {@link cleanupImage}. Eviction failures are swallowed so a flaky
|
|
211
|
-
* `docker rmi` cannot escape `runEval`.
|
|
212
|
-
*
|
|
213
|
-
* The cap is enforced after the just-used image is inserted: the
|
|
214
|
-
* just-evaluated image is the *most* recent, so repeat-evals of recently
|
|
215
|
-
* used instances never re-pull. Only when more than N distinct images have
|
|
216
|
-
* been used does the oldest get rmi'd.
|
|
217
|
-
*/
|
|
218
|
-
async recordImageUsage(image) {
|
|
219
|
-
if (!image)
|
|
220
|
-
return;
|
|
221
|
-
// Refresh recency: delete-then-add reinserts at the tail of the set.
|
|
222
|
-
this.imageLru.delete(image);
|
|
223
|
-
this.imageLru.add(image);
|
|
224
|
-
while (this.imageLru.size > this.imageCacheMax) {
|
|
225
|
-
const oldest = this.imageLru.values().next().value;
|
|
226
|
-
if (!oldest)
|
|
227
|
-
break;
|
|
228
|
-
this.imageLru.delete(oldest);
|
|
271
|
+
// Prune this round's full Docker footprint — even when the eval threw,
|
|
272
|
+
// a pull-and-crash still left an image on disk (#476).
|
|
229
273
|
try {
|
|
230
|
-
await this.
|
|
274
|
+
await this.pruneRound(args.image);
|
|
231
275
|
}
|
|
232
276
|
catch (err) {
|
|
233
|
-
// Best-effort GC: a failed rmi leaves the image on disk but mustn't
|
|
234
|
-
// break the loop. Warn so a flaky `docker` (or a permission slip)
|
|
235
|
-
// becomes visible before disks fill — silent leaks were the whole
|
|
236
|
-
// problem this bead exists to fix.
|
|
237
277
|
const reason = err instanceof Error ? err.message : String(err);
|
|
238
|
-
console.warn(`[swe-rebench-v2]
|
|
278
|
+
console.warn(`[swe-rebench-v2] pruneRound failed for ${args.image}: ${reason}`);
|
|
239
279
|
}
|
|
240
280
|
}
|
|
241
281
|
}
|
|
@@ -280,6 +320,7 @@ export class PythonEvalRunner {
|
|
|
280
320
|
const child = spawn(this.opts.pythonBin ?? 'python3', pyArgs, {
|
|
281
321
|
cwd: this.opts.upstreamRepoDir,
|
|
282
322
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
323
|
+
detached: process.platform !== 'win32',
|
|
283
324
|
// SWE-rebench eval images are published for linux/amd64. Pin the platform
|
|
284
325
|
// so the upstream `docker run` is consistent on amd64 hosts and does not
|
|
285
326
|
// silently crash under arm64 emulation on dev machines.
|
|
@@ -289,10 +330,54 @@ export class PythonEvalRunner {
|
|
|
289
330
|
child.stderr.on('data', (d) => { stderr += d.toString(); });
|
|
290
331
|
let stdout = '';
|
|
291
332
|
child.stdout.on('data', (d) => { stdout += d.toString(); });
|
|
333
|
+
let timedOut = false;
|
|
334
|
+
let closed = false;
|
|
335
|
+
let killTimer;
|
|
336
|
+
const killChild = (signal) => {
|
|
337
|
+
const pid = child.pid;
|
|
338
|
+
if (!pid)
|
|
339
|
+
return;
|
|
340
|
+
try {
|
|
341
|
+
if (process.platform === 'win32') {
|
|
342
|
+
child.kill(signal);
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
process.kill(-pid, signal);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
try {
|
|
350
|
+
child.kill(signal);
|
|
351
|
+
}
|
|
352
|
+
catch { }
|
|
353
|
+
}
|
|
354
|
+
};
|
|
355
|
+
const timeoutTimer = this.evalTimeoutMs > 0
|
|
356
|
+
? setTimeout(() => {
|
|
357
|
+
timedOut = true;
|
|
358
|
+
killChild('SIGTERM');
|
|
359
|
+
killTimer = setTimeout(() => {
|
|
360
|
+
if (!closed)
|
|
361
|
+
killChild('SIGKILL');
|
|
362
|
+
}, 10_000);
|
|
363
|
+
killTimer.unref?.();
|
|
364
|
+
}, this.evalTimeoutMs)
|
|
365
|
+
: undefined;
|
|
366
|
+
timeoutTimer?.unref?.();
|
|
292
367
|
const exitCode = await new Promise((resolve, reject) => {
|
|
293
368
|
child.on('close', (code) => resolve(code ?? 1));
|
|
294
369
|
child.on('error', reject);
|
|
370
|
+
}).finally(() => {
|
|
371
|
+
closed = true;
|
|
372
|
+
if (timeoutTimer)
|
|
373
|
+
clearTimeout(timeoutTimer);
|
|
374
|
+
if (killTimer)
|
|
375
|
+
clearTimeout(killTimer);
|
|
295
376
|
});
|
|
377
|
+
if (timedOut) {
|
|
378
|
+
await rm(tmp, { recursive: true, force: true });
|
|
379
|
+
throw new EvalCouldNotGradeError('eval_timeout', `python eval timed out after ${this.evalTimeoutMs}ms; ${(stderr || stdout).slice(-800)}`);
|
|
380
|
+
}
|
|
296
381
|
let report;
|
|
297
382
|
try {
|
|
298
383
|
report = JSON.parse(await readFile(reportPath, 'utf8'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval-runner.js","sourceRoot":"","sources":["../../../../src/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eval-runner.js","sourceRoot":"","sources":["../../../../src/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import { type SpawnOptions } from 'node:child_process';
|
|
19
19
|
import type { EnableResult, Harness, HarnessContext, HarnessEnableContext, HarnessEnableMetadata, ReadyStatus, Solution } from '../../types.js';
|
|
20
20
|
import type { Task } from '../../../types/task.js';
|
|
21
|
-
import { uploadToIpfs } from '../../../adapters/mech/ipfs.js';
|
|
21
|
+
import { fetchFromIpfs, uploadToIpfs } from '../../../adapters/mech/ipfs.js';
|
|
22
22
|
import { type EvalRunner, type HfFetcher } from './index.js';
|
|
23
23
|
import { type PythonEvalRunnerOptions } from './eval-runner.js';
|
|
24
24
|
import { type CommandResult } from '../../../solver-types/_swe-rebench-v2-substrate.js';
|
|
@@ -40,6 +40,8 @@ export interface SweRebenchV2EvaluatorHarnessOptions {
|
|
|
40
40
|
implStateDir?: string;
|
|
41
41
|
/** IPFS registry URL used to pin test logs. Defaults to Autonolas gateway. */
|
|
42
42
|
ipfsRegistryUrl?: string;
|
|
43
|
+
/** IPFS gateway URL used to fetch launcher-published vetted pool artifacts. */
|
|
44
|
+
ipfsGatewayUrl?: string;
|
|
43
45
|
/**
|
|
44
46
|
* Test-only injection points. Production runs use Node's child_process
|
|
45
47
|
* + node:fs + the bundled HFFetcher / PythonEvalRunner.
|
|
@@ -63,6 +65,7 @@ export interface SweRebenchV2EvaluatorHarnessOptions {
|
|
|
63
65
|
*/
|
|
64
66
|
makeRunner?: (opts: PythonEvalRunnerOptions) => EvalRunner;
|
|
65
67
|
uploadToIpfs?: typeof uploadToIpfs;
|
|
68
|
+
fetchFromIpfs?: typeof fetchFromIpfs;
|
|
66
69
|
/**
|
|
67
70
|
* Override the state directory used for the {@link ValidatedPoolStore}
|
|
68
71
|
* substrate-recheck. Defaults to `JINN_SWE_REBENCH_V2_STATE_DIR` env
|
|
@@ -83,6 +86,7 @@ export declare class SweRebenchV2EvaluatorHarness implements Harness {
|
|
|
83
86
|
private readonly stub;
|
|
84
87
|
private readonly implStateDir;
|
|
85
88
|
private readonly ipfsRegistryUrl;
|
|
89
|
+
private readonly ipfsGatewayUrl;
|
|
86
90
|
private readonly deps;
|
|
87
91
|
/** The engine's claim-eligibility check calls `isReady()` per candidate
|
|
88
92
|
* task per tick (~17 Hz potential). Cache the live `docker info` result
|
|
@@ -98,6 +102,9 @@ export declare class SweRebenchV2EvaluatorHarness implements Harness {
|
|
|
98
102
|
* call and the disk-budget bead (jinn-mono-uy6v.11) is a no-op.
|
|
99
103
|
*/
|
|
100
104
|
private cachedRunner;
|
|
105
|
+
private cachedFetcher;
|
|
106
|
+
private cachedPool;
|
|
107
|
+
private readonly publishedPoolArtifactCache;
|
|
101
108
|
constructor(opts?: SweRebenchV2EvaluatorHarnessOptions);
|
|
102
109
|
/**
|
|
103
110
|
* Resolve the {@link EvalRunner} used for a `run()` invocation. The
|
|
@@ -107,6 +114,9 @@ export declare class SweRebenchV2EvaluatorHarness implements Harness {
|
|
|
107
114
|
* tests that want a fresh mock per call.
|
|
108
115
|
*/
|
|
109
116
|
private getRunner;
|
|
117
|
+
private getFetcher;
|
|
118
|
+
private loadPoolForRecheck;
|
|
119
|
+
private loadPublishedPoolArtifact;
|
|
110
120
|
private isDockerReachable;
|
|
111
121
|
supports(ctx: {
|
|
112
122
|
solverType: string;
|
|
@@ -131,6 +141,7 @@ export declare class SweRebenchV2EvaluatorHarness implements Harness {
|
|
|
131
141
|
* Throws {@link SkippableError} on any mismatch — never fails open.
|
|
132
142
|
*/
|
|
133
143
|
private recheckSubstrate;
|
|
144
|
+
private loadPublishedPoolRow;
|
|
134
145
|
run(ctx: HarnessContext): Promise<Solution>;
|
|
135
146
|
}
|
|
136
147
|
declare function runCommand(bin: string, args: string[], opts?: SpawnOptions): Promise<CommandResult>;
|
|
@@ -23,14 +23,16 @@ import { join } from 'node:path';
|
|
|
23
23
|
import { SweRebenchV2TaskSchema, SweRebenchV2SolutionPayloadSchema, } from '../../../vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js';
|
|
24
24
|
import { REQUIRES_LIVE_DAEMON_READINESS, SkippableError } from '../../types.js';
|
|
25
25
|
import { SignedEnvelopeSchema, normalizeEnvelopeRole } from '../../../types/envelope.js';
|
|
26
|
-
import { uploadToIpfs } from '../../../adapters/mech/ipfs.js';
|
|
26
|
+
import { fetchFromIpfs, uploadToIpfs } from '../../../adapters/mech/ipfs.js';
|
|
27
27
|
import { SweRebenchV2Evaluator } from './index.js';
|
|
28
28
|
import { PythonEvalRunner, EvalCouldNotGradeError, } from './eval-runner.js';
|
|
29
29
|
import { HttpHfFetcher } from './hf-fetcher.js';
|
|
30
|
-
import { ValidatedPoolStore, EVAL_SEMANTICS_VERSION, } from '../../../solver-types/_swe-rebench-v2-validated-pool.js';
|
|
30
|
+
import { ValidatedPoolStore, EVAL_SEMANTICS_VERSION, hashVettedPoolArtifact, loadVettedPoolArtifactScorableEntries, parseVettedPoolArtifact, vettedPoolArtifactRefFromEligibility, } from '../../../solver-types/_swe-rebench-v2-validated-pool.js';
|
|
31
31
|
import { computeRowHash, resolveImageDigest, } from '../../../solver-types/_swe-rebench-v2-substrate.js';
|
|
32
32
|
import { defaultStateDir as defaultSolverTypeStateDir, loadSweRebenchV2Pool, } from '../../../solver-types/swe-rebench-v2.js';
|
|
33
|
+
import { PoolCacheStore, loadPoolWithCacheFallback, } from '../../../solver-types/_swe-rebench-v2-pool-cache.js';
|
|
33
34
|
const DEFAULT_IPFS_REGISTRY_URL = 'https://registry.autonolas.tech';
|
|
35
|
+
const DEFAULT_IPFS_GATEWAY_URL = 'https://gateway.autonolas.tech';
|
|
34
36
|
const UPSTREAM_REPO_URL = 'https://github.com/SWE-rebench/SWE-rebench-V2.git';
|
|
35
37
|
const STATE_FILE = 'state.json';
|
|
36
38
|
const ENABLE_CLI = 'jinn harnesses enable swe-rebench-v2-evaluator';
|
|
@@ -40,6 +42,7 @@ export class SweRebenchV2EvaluatorHarness {
|
|
|
40
42
|
stub;
|
|
41
43
|
implStateDir;
|
|
42
44
|
ipfsRegistryUrl;
|
|
45
|
+
ipfsGatewayUrl;
|
|
43
46
|
deps;
|
|
44
47
|
/** The engine's claim-eligibility check calls `isReady()` per candidate
|
|
45
48
|
* task per tick (~17 Hz potential). Cache the live `docker info` result
|
|
@@ -55,10 +58,14 @@ export class SweRebenchV2EvaluatorHarness {
|
|
|
55
58
|
* call and the disk-budget bead (jinn-mono-uy6v.11) is a no-op.
|
|
56
59
|
*/
|
|
57
60
|
cachedRunner;
|
|
61
|
+
cachedFetcher;
|
|
62
|
+
cachedPool;
|
|
63
|
+
publishedPoolArtifactCache = new Map();
|
|
58
64
|
constructor(opts = {}) {
|
|
59
65
|
this.stub = opts.stub ?? false;
|
|
60
66
|
this.implStateDir = opts.implStateDir;
|
|
61
67
|
this.ipfsRegistryUrl = opts.ipfsRegistryUrl ?? DEFAULT_IPFS_REGISTRY_URL;
|
|
68
|
+
this.ipfsGatewayUrl = opts.ipfsGatewayUrl ?? process.env['JINN_IPFS_GATEWAY_URL'] ?? DEFAULT_IPFS_GATEWAY_URL;
|
|
62
69
|
this.deps = opts._testDeps ?? {};
|
|
63
70
|
}
|
|
64
71
|
/**
|
|
@@ -78,6 +85,72 @@ export class SweRebenchV2EvaluatorHarness {
|
|
|
78
85
|
}
|
|
79
86
|
return this.cachedRunner;
|
|
80
87
|
}
|
|
88
|
+
getFetcher() {
|
|
89
|
+
if (this.deps.fetcher)
|
|
90
|
+
return this.deps.fetcher;
|
|
91
|
+
if (!this.cachedFetcher) {
|
|
92
|
+
this.cachedFetcher = new HttpHfFetcher();
|
|
93
|
+
}
|
|
94
|
+
return this.cachedFetcher;
|
|
95
|
+
}
|
|
96
|
+
loadPoolForRecheck(stateDir) {
|
|
97
|
+
if (!this.cachedPool || this.cachedPool.stateDir !== stateDir) {
|
|
98
|
+
const loadPool = this.deps.loadPool ?? loadSweRebenchV2Pool;
|
|
99
|
+
const promise = loadPoolWithCacheFallback({
|
|
100
|
+
loadPool,
|
|
101
|
+
cache: new PoolCacheStore({ stateDir }),
|
|
102
|
+
currentPool: [],
|
|
103
|
+
}).then((result) => {
|
|
104
|
+
if (result.pool.length > 0)
|
|
105
|
+
return result.pool;
|
|
106
|
+
if (result.error) {
|
|
107
|
+
throw new Error(result.error.message);
|
|
108
|
+
}
|
|
109
|
+
return result.pool;
|
|
110
|
+
});
|
|
111
|
+
this.cachedPool = { stateDir, promise };
|
|
112
|
+
}
|
|
113
|
+
const cached = this.cachedPool;
|
|
114
|
+
return cached.promise.catch((err) => {
|
|
115
|
+
if (this.cachedPool === cached) {
|
|
116
|
+
this.cachedPool = undefined;
|
|
117
|
+
}
|
|
118
|
+
throw err;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
loadPublishedPoolArtifact(artifactCid) {
|
|
122
|
+
const cached = this.publishedPoolArtifactCache.get(artifactCid);
|
|
123
|
+
if (cached)
|
|
124
|
+
return cached;
|
|
125
|
+
const fetchArtifact = this.deps.fetchFromIpfs ?? fetchFromIpfs;
|
|
126
|
+
const promise = (async () => {
|
|
127
|
+
let rawArtifact;
|
|
128
|
+
try {
|
|
129
|
+
rawArtifact = await fetchArtifact(this.ipfsGatewayUrl, artifactCid);
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
throw new SkippableError('vetted_pool_fetch_failed', `cannot fetch vetted pool artifact ${artifactCid}: ${err instanceof Error ? err.message : String(err)}`);
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const artifact = parseVettedPoolArtifact(rawArtifact);
|
|
136
|
+
return {
|
|
137
|
+
evalSemanticsVersion: artifact.evalSemanticsVersion,
|
|
138
|
+
artifactHash: hashVettedPoolArtifact(artifact),
|
|
139
|
+
entries: loadVettedPoolArtifactScorableEntries(artifact),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
throw new SkippableError('vetted_pool_artifact_invalid', `invalid vetted pool artifact ${artifactCid}: ${err instanceof Error ? err.message : String(err)}`);
|
|
144
|
+
}
|
|
145
|
+
})();
|
|
146
|
+
this.publishedPoolArtifactCache.set(artifactCid, promise);
|
|
147
|
+
promise.catch(() => {
|
|
148
|
+
if (this.publishedPoolArtifactCache.get(artifactCid) === promise) {
|
|
149
|
+
this.publishedPoolArtifactCache.delete(artifactCid);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
return promise;
|
|
153
|
+
}
|
|
81
154
|
async isDockerReachable(now = Date.now()) {
|
|
82
155
|
const cached = this.dockerCheckCache;
|
|
83
156
|
if (cached && now - cached.at < SweRebenchV2EvaluatorHarness.DOCKER_CHECK_TTL_MS) {
|
|
@@ -318,6 +391,48 @@ export class SweRebenchV2EvaluatorHarness {
|
|
|
318
391
|
}
|
|
319
392
|
return recheckRow;
|
|
320
393
|
}
|
|
394
|
+
async loadPublishedPoolRow(task, runtimeTask, fetcher) {
|
|
395
|
+
let ref;
|
|
396
|
+
try {
|
|
397
|
+
ref = vettedPoolArtifactRefFromEligibility(runtimeTask.eligibility);
|
|
398
|
+
}
|
|
399
|
+
catch (err) {
|
|
400
|
+
throw new SkippableError('vetted_pool_ref_invalid', `invalid vetted pool ref: ${err instanceof Error ? err.message : String(err)}`);
|
|
401
|
+
}
|
|
402
|
+
if (!ref)
|
|
403
|
+
return null;
|
|
404
|
+
if (runtimeTask.solverNetManifestCid && ref.manifestCid !== runtimeTask.solverNetManifestCid) {
|
|
405
|
+
throw new SkippableError('vetted_pool_manifest_mismatch', `vetted pool ref manifestCid ${ref.manifestCid} does not match task manifestCid ${runtimeTask.solverNetManifestCid}`);
|
|
406
|
+
}
|
|
407
|
+
if (ref.evalSemanticsVersion !== EVAL_SEMANTICS_VERSION) {
|
|
408
|
+
throw new SkippableError('vetted_pool_semantics_mismatch', `vetted pool ref semanticsVersion=${ref.evalSemanticsVersion} does not match evaluator semanticsVersion=${EVAL_SEMANTICS_VERSION}`);
|
|
409
|
+
}
|
|
410
|
+
const artifact = await this.loadPublishedPoolArtifact(ref.artifactCid);
|
|
411
|
+
try {
|
|
412
|
+
if (artifact.evalSemanticsVersion !== ref.evalSemanticsVersion) {
|
|
413
|
+
throw new Error(`artifact semanticsVersion=${artifact.evalSemanticsVersion} does not match ref=${ref.evalSemanticsVersion}`);
|
|
414
|
+
}
|
|
415
|
+
if (artifact.artifactHash !== ref.artifactHash) {
|
|
416
|
+
throw new Error(`artifact hash ${artifact.artifactHash} does not match ref ${ref.artifactHash}`);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
catch (err) {
|
|
420
|
+
throw new SkippableError('vetted_pool_artifact_invalid', `invalid vetted pool artifact ${ref.artifactCid}: ${err instanceof Error ? err.message : String(err)}`);
|
|
421
|
+
}
|
|
422
|
+
if (!artifact.entries.byId.has(task.instance_id)) {
|
|
423
|
+
throw new SkippableError('vetted_pool_instance_missing_or_unscorable', `${task.instance_id} is not present as scorable in vetted pool artifact ${ref.artifactCid}`);
|
|
424
|
+
}
|
|
425
|
+
try {
|
|
426
|
+
return await fetcher.fetchTaskRow({
|
|
427
|
+
hf_dataset: task.hf_dataset,
|
|
428
|
+
hf_split: task.hf_split,
|
|
429
|
+
instance_id: task.instance_id,
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
catch (err) {
|
|
433
|
+
throw new SkippableError('hf_fetch_failed', `cannot load grading row after vetted-pool admission: ${err instanceof Error ? err.message : String(err)}`);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
321
436
|
async run(ctx) {
|
|
322
437
|
if (this.stub) {
|
|
323
438
|
throw new Error('swe-rebench-v2-evaluator: stub registry cannot run evaluation (requires live daemon)');
|
|
@@ -346,16 +461,15 @@ export class SweRebenchV2EvaluatorHarness {
|
|
|
346
461
|
const stateDir = this.deps.stateDir ??
|
|
347
462
|
process.env['JINN_SWE_REBENCH_V2_STATE_DIR'] ??
|
|
348
463
|
defaultSolverTypeStateDir();
|
|
349
|
-
const
|
|
350
|
-
const
|
|
351
|
-
const recheckRow = await this.recheckSubstrate(task,
|
|
464
|
+
const fetcher = this.getFetcher();
|
|
465
|
+
const publishedPoolRow = await this.loadPublishedPoolRow(task, ctx.task, fetcher);
|
|
466
|
+
const recheckRow = publishedPoolRow ?? await this.recheckSubstrate(task, fetcher, () => this.loadPoolForRecheck(stateDir), stateDir);
|
|
352
467
|
// ── End substrate recheck ─────────────────────────────────────────────────
|
|
353
|
-
const fetcher = this.deps.fetcher ?? new HttpHfFetcher();
|
|
354
468
|
const runner = this.getRunner(state.upstreamRepoDir);
|
|
355
469
|
const evaluator = new SweRebenchV2Evaluator({ fetcher, runner });
|
|
356
470
|
let graded;
|
|
357
471
|
try {
|
|
358
|
-
graded = await evaluator.grade({ task, solutionPayload });
|
|
472
|
+
graded = await evaluator.grade({ task, solutionPayload, row: recheckRow });
|
|
359
473
|
}
|
|
360
474
|
catch (err) {
|
|
361
475
|
if (err instanceof EvalCouldNotGradeError) {
|