agent-hitch 0.2.15 → 0.2.17
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 +7 -28
- package/README.zh-CN.md +6 -26
- package/dist/scripts/benchmark-dataset-verification.js +118 -0
- package/dist/scripts/benchmark-dataset-verification.js.map +1 -0
- package/dist/scripts/canary-external-endpoint.js +56 -0
- package/dist/scripts/canary-external-endpoint.js.map +1 -0
- package/dist/scripts/canary-native-training.js +8 -6
- package/dist/scripts/canary-native-training.js.map +1 -1
- package/dist/scripts/canary-remote-training.js +8 -6
- package/dist/scripts/canary-remote-training.js.map +1 -1
- package/dist/scripts/check-architecture.js +1 -1
- package/dist/scripts/check-architecture.js.map +1 -1
- package/dist/src/adapters/providers/codex.js +5 -2
- package/dist/src/adapters/providers/codex.js.map +1 -1
- package/dist/src/adapters/providers/model-call.js +1 -2
- package/dist/src/adapters/providers/model-call.js.map +1 -1
- package/dist/src/adapters/providers/training-tool.js +2 -0
- package/dist/src/adapters/providers/training-tool.js.map +1 -1
- package/dist/src/backends/harbor/artifact-pins.js +42 -0
- package/dist/src/backends/harbor/artifact-pins.js.map +1 -0
- package/dist/src/backends/harbor/backend.js +16 -8
- package/dist/src/backends/harbor/backend.js.map +1 -1
- package/dist/src/backends/harbor/bound-credential-helper.js +24 -0
- package/dist/src/backends/harbor/bound-credential-helper.js.map +1 -0
- package/dist/src/backends/harbor/credential-snapshot.js +71 -0
- package/dist/src/backends/harbor/credential-snapshot.js.map +1 -0
- package/dist/src/backends/harbor/environment-config.js +25 -2
- package/dist/src/backends/harbor/environment-config.js.map +1 -1
- package/dist/src/backends/harbor/environment-files.js +143 -0
- package/dist/src/backends/harbor/environment-files.js.map +1 -0
- package/dist/src/backends/harbor/evaluation-binding.js +160 -0
- package/dist/src/backends/harbor/evaluation-binding.js.map +1 -0
- package/dist/src/backends/harbor/host-credential-helper.js +5 -0
- package/dist/src/backends/harbor/host-credential-helper.js.map +1 -1
- package/dist/src/backends/harbor/index.js +2 -0
- package/dist/src/backends/harbor/index.js.map +1 -1
- package/dist/src/backends/harbor/model-proxy-config.js +3 -18
- package/dist/src/backends/harbor/model-proxy-config.js.map +1 -1
- package/dist/src/backends/harbor/portable-regrade.js +15 -3
- package/dist/src/backends/harbor/portable-regrade.js.map +1 -1
- package/dist/src/backends/harbor/python-runtime.js +71 -0
- package/dist/src/backends/harbor/python-runtime.js.map +1 -0
- package/dist/src/backends/harbor/tools.js +6 -4
- package/dist/src/backends/harbor/tools.js.map +1 -1
- package/dist/src/backends/index.js +3 -0
- package/dist/src/backends/index.js.map +1 -1
- package/dist/src/cli/arguments.js +30 -30
- package/dist/src/cli/arguments.js.map +1 -1
- package/dist/src/cli/commands/capabilities.js +7 -3
- package/dist/src/cli/commands/capabilities.js.map +1 -1
- package/dist/src/cli/commands/daemon.js +0 -17
- package/dist/src/cli/commands/daemon.js.map +1 -1
- package/dist/src/cli/commands/eval-binding.js +32 -0
- package/dist/src/cli/commands/eval-binding.js.map +1 -0
- package/dist/src/cli/commands/eval.js +21 -15
- package/dist/src/cli/commands/eval.js.map +1 -1
- package/dist/src/cli/commands/models.js +32 -45
- package/dist/src/cli/commands/models.js.map +1 -1
- package/dist/src/cli/commands/run.js +0 -35
- package/dist/src/cli/commands/run.js.map +1 -1
- package/dist/src/cli/main.js +0 -4
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/output.js +5 -16
- package/dist/src/cli/output.js.map +1 -1
- package/dist/src/control-plane/eval-records.js +3 -1
- package/dist/src/control-plane/eval-records.js.map +1 -1
- package/dist/src/control-plane/eval-recovery.js +4 -1
- package/dist/src/control-plane/eval-recovery.js.map +1 -1
- package/dist/src/control-plane/eval-scheduler.js +16 -8
- package/dist/src/control-plane/eval-scheduler.js.map +1 -1
- package/dist/src/control-plane/index.js +0 -2
- package/dist/src/control-plane/index.js.map +1 -1
- package/dist/src/control-plane/model-capture-planning.js +3 -4
- package/dist/src/control-plane/model-capture-planning.js.map +1 -1
- package/dist/src/control-plane/remote-model-routes.js +4 -24
- package/dist/src/control-plane/remote-model-routes.js.map +1 -1
- package/dist/src/control-plane/remote-offer-contract.js +2 -2
- package/dist/src/control-plane/remote-offer-contract.js.map +1 -1
- package/dist/src/control-plane/remote-result-transport.js +7 -8
- package/dist/src/control-plane/remote-result-transport.js.map +1 -1
- package/dist/src/control-plane/remote-work-coordinator.js +2 -2
- package/dist/src/control-plane/remote-work-coordinator.js.map +1 -1
- package/dist/src/control-plane/remote-work-recovery.js +2 -2
- package/dist/src/control-plane/remote-work-recovery.js.map +1 -1
- package/dist/src/control-plane/remote-worker-protocol.js +1 -1
- package/dist/src/control-plane/remote-worker-protocol.js.map +1 -1
- package/dist/src/control-plane/remote-worker-runner.js +21 -6
- package/dist/src/control-plane/remote-worker-runner.js.map +1 -1
- package/dist/src/control-plane/remote-workers.js +2 -2
- package/dist/src/control-plane/remote-workers.js.map +1 -1
- package/dist/src/control-plane/rerun-recovery.js +1 -1
- package/dist/src/control-plane/rerun-recovery.js.map +1 -1
- package/dist/src/control-plane/rerun-scheduler.js +21 -14
- package/dist/src/control-plane/rerun-scheduler.js.map +1 -1
- package/dist/src/control-plane/rerun-source.js +5 -2
- package/dist/src/control-plane/rerun-source.js.map +1 -1
- package/dist/src/control-plane/rerun-submission.js +7 -5
- package/dist/src/control-plane/rerun-submission.js.map +1 -1
- package/dist/src/control-plane/synthetic-result.js +3 -2
- package/dist/src/control-plane/synthetic-result.js.map +1 -1
- package/dist/src/control-plane/worker-model-relay.js +1 -1
- package/dist/src/control-plane/worker-model-relay.js.map +1 -1
- package/dist/src/controller-runtime/hash.js +6 -0
- package/dist/src/controller-runtime/hash.js.map +1 -1
- package/dist/src/daemon/client.js +12 -35
- package/dist/src/daemon/client.js.map +1 -1
- package/dist/src/daemon/evaluation-binding.js +33 -0
- package/dist/src/daemon/evaluation-binding.js.map +1 -0
- package/dist/src/daemon/evaluation-submission.js +27 -0
- package/dist/src/daemon/evaluation-submission.js.map +1 -0
- package/dist/src/daemon/index.js +1 -0
- package/dist/src/daemon/index.js.map +1 -1
- package/dist/src/daemon/json-stream.js +98 -0
- package/dist/src/daemon/json-stream.js.map +1 -0
- package/dist/src/daemon/scheduler.js +1 -4
- package/dist/src/daemon/scheduler.js.map +1 -1
- package/dist/src/daemon/server.js +14 -54
- package/dist/src/daemon/server.js.map +1 -1
- package/dist/src/domain/endpoints.js +2 -0
- package/dist/src/domain/endpoints.js.map +1 -0
- package/dist/src/domain/evaluation-binding.js +5 -0
- package/dist/src/domain/evaluation-binding.js.map +1 -0
- package/dist/src/domain/index.js +2 -0
- package/dist/src/domain/index.js.map +1 -1
- package/dist/src/domain/runs.js.map +1 -1
- package/dist/src/evals/benchmark-adapter-manifest.js +95 -32
- package/dist/src/evals/benchmark-adapter-manifest.js.map +1 -1
- package/dist/src/evals/benchmark-verification.js +106 -0
- package/dist/src/evals/benchmark-verification.js.map +1 -0
- package/dist/src/evals/collect-only-rerun.js +3 -2
- package/dist/src/evals/collect-only-rerun.js.map +1 -1
- package/dist/src/evals/directory.js +9 -1
- package/dist/src/evals/directory.js.map +1 -1
- package/dist/src/evals/endpoint-attempts.js +112 -0
- package/dist/src/evals/endpoint-attempts.js.map +1 -0
- package/dist/src/evals/endpoint-usage.js +8 -0
- package/dist/src/evals/endpoint-usage.js.map +1 -0
- package/dist/src/evals/environment-binding.js +9 -0
- package/dist/src/evals/environment-binding.js.map +1 -0
- package/dist/src/evals/eval-artifact-planning.js +10 -1
- package/dist/src/evals/eval-artifact-planning.js.map +1 -1
- package/dist/src/evals/eval-finalization.js +2 -3
- package/dist/src/evals/eval-finalization.js.map +1 -1
- package/dist/src/evals/eval-logical-plan.js +2 -0
- package/dist/src/evals/eval-logical-plan.js.map +1 -1
- package/dist/src/evals/eval-result-builder.js +4 -0
- package/dist/src/evals/eval-result-builder.js.map +1 -1
- package/dist/src/evals/eval-state.js +22 -0
- package/dist/src/evals/eval-state.js.map +1 -0
- package/dist/src/evals/execution-plan.js +6 -2
- package/dist/src/evals/execution-plan.js.map +1 -1
- package/dist/src/evals/index.js +5 -1
- package/dist/src/evals/index.js.map +1 -1
- package/dist/src/evals/infrastructure-retry.js +2 -0
- package/dist/src/evals/infrastructure-retry.js.map +1 -1
- package/dist/src/evals/model-capture-runtime.js +9 -13
- package/dist/src/evals/model-capture-runtime.js.map +1 -1
- package/dist/src/evals/native-phase-evidence.js +8 -2
- package/dist/src/evals/native-phase-evidence.js.map +1 -1
- package/dist/src/evals/planned-execution.js +7 -2
- package/dist/src/evals/planned-execution.js.map +1 -1
- package/dist/src/evals/planned-progress-publisher.js +18 -5
- package/dist/src/evals/planned-progress-publisher.js.map +1 -1
- package/dist/src/evals/planned-retry-execution.js +1 -0
- package/dist/src/evals/planned-retry-execution.js.map +1 -1
- package/dist/src/evals/preparation-rerun.js +0 -1
- package/dist/src/evals/preparation-rerun.js.map +1 -1
- package/dist/src/evals/progress.js +92 -7
- package/dist/src/evals/progress.js.map +1 -1
- package/dist/src/evals/records.js +12 -2
- package/dist/src/evals/records.js.map +1 -1
- package/dist/src/evals/recovery.js +2 -0
- package/dist/src/evals/recovery.js.map +1 -1
- package/dist/src/evals/remote-rerun-execution.js +1 -3
- package/dist/src/evals/remote-rerun-execution.js.map +1 -1
- package/dist/src/evals/remote-verifier-rerun.js +1 -1
- package/dist/src/evals/remote-verifier-rerun.js.map +1 -1
- package/dist/src/evals/request.js +14 -45
- package/dist/src/evals/request.js.map +1 -1
- package/dist/src/evals/rerun-observation.js +31 -0
- package/dist/src/evals/rerun-observation.js.map +1 -0
- package/dist/src/evals/rerun.js +23 -28
- package/dist/src/evals/rerun.js.map +1 -1
- package/dist/src/evals/service.js +45 -42
- package/dist/src/evals/service.js.map +1 -1
- package/dist/src/evals/shared-runtime.js +125 -0
- package/dist/src/evals/shared-runtime.js.map +1 -0
- package/dist/src/evals/trial-import.js +10 -2
- package/dist/src/evals/trial-import.js.map +1 -1
- package/dist/src/evals/trial-publication-recovery.js +1 -1
- package/dist/src/evals/trial-publication-recovery.js.map +1 -1
- package/dist/src/evals/verifier-artifacts.js +1 -0
- package/dist/src/evals/verifier-artifacts.js.map +1 -1
- package/dist/src/evals/verifier-only-rerun.js +1 -1
- package/dist/src/evals/verifier-only-rerun.js.map +1 -1
- package/dist/src/evals/verifier-rerun-result.js +3 -2
- package/dist/src/evals/verifier-rerun-result.js.map +1 -1
- package/dist/src/evals/verifier-score-artifacts.js +9 -1
- package/dist/src/evals/verifier-score-artifacts.js.map +1 -1
- package/dist/src/foundation/config.js +0 -5
- package/dist/src/foundation/config.js.map +1 -1
- package/dist/src/inference/index.js +3 -22
- package/dist/src/inference/index.js.map +1 -1
- package/dist/src/inference/lock.js +44 -130
- package/dist/src/inference/lock.js.map +1 -1
- package/dist/src/model-access/endpoint-contract.js +127 -0
- package/dist/src/model-access/endpoint-contract.js.map +1 -0
- package/dist/src/model-access/endpoint-credentials.js +54 -0
- package/dist/src/model-access/endpoint-credentials.js.map +1 -0
- package/dist/src/model-access/endpoint-probe-stream.js +66 -0
- package/dist/src/model-access/endpoint-probe-stream.js.map +1 -0
- package/dist/src/model-access/endpoint-verification.js +76 -0
- package/dist/src/model-access/endpoint-verification.js.map +1 -0
- package/dist/src/model-access/endpoints.js +105 -0
- package/dist/src/model-access/endpoints.js.map +1 -0
- package/dist/src/model-access/index.js +5 -1
- package/dist/src/model-access/index.js.map +1 -1
- package/dist/src/model-access/proxy.js +57 -14
- package/dist/src/model-access/proxy.js.map +1 -1
- package/dist/src/model-access/remote-model.js +21 -29
- package/dist/src/model-access/remote-model.js.map +1 -1
- package/dist/src/model-access/usage.js +30 -0
- package/dist/src/model-access/usage.js.map +1 -0
- package/dist/src/runs/endpoint-runtime.js +40 -0
- package/dist/src/runs/endpoint-runtime.js.map +1 -0
- package/dist/src/runs/executor.js +28 -42
- package/dist/src/runs/executor.js.map +1 -1
- package/dist/src/runs/local-inference-environment.js +5 -53
- package/dist/src/runs/local-inference-environment.js.map +1 -1
- package/dist/src/runs/manifest.js +1 -0
- package/dist/src/runs/manifest.js.map +1 -1
- package/dist/src/runs/outcome.js +3 -10
- package/dist/src/runs/outcome.js.map +1 -1
- package/dist/src/runs/queued.js +3 -2
- package/dist/src/runs/queued.js.map +1 -1
- package/dist/src/runs/records.js +3 -0
- package/dist/src/runs/records.js.map +1 -1
- package/dist/src/runs/request.js +10 -38
- package/dist/src/runs/request.js.map +1 -1
- package/dist/src/workers/remote-harbor-work-spec.js +8 -10
- package/dist/src/workers/remote-harbor-work-spec.js.map +1 -1
- package/dist/src/workers/remote-harbor-worker.js +3 -0
- package/dist/src/workers/remote-harbor-worker.js.map +1 -1
- package/docs/evidence/eval-preparation-2026-10-09.json +393 -0
- package/docs/evidence/eval-preparation-2026-10-09.md +178 -0
- package/docs/local-model-inference-spec.zh-CN.md +4 -663
- package/docs/resource-storage.zh-CN.md +116 -0
- package/docs/schemas/endpoint-evaluation-attempt.schema.json +29 -0
- package/docs/schemas/eval-artifact-pin.schema.json +14 -0
- package/docs/schemas/eval-execution-plan.schema.json +486 -105
- package/docs/schemas/eval-progress.schema.json +1 -1
- package/docs/schemas/eval-request.schema.json +149 -18
- package/docs/schemas/eval-rerun-submission.schema.json +8 -1
- package/docs/schemas/eval-result.schema.json +310 -56
- package/docs/schemas/evaluation-binding.schema.json +15 -0
- package/docs/schemas/external-endpoint-binding.schema.json +153 -0
- package/docs/schemas/external-endpoint-config.schema.json +93 -0
- package/docs/schemas/inference-execution-evidence.schema.json +253 -3
- package/docs/schemas/inference-lock-v3.schema.json +6 -0
- package/docs/schemas/inference-lock.schema.json +842 -341
- package/docs/schemas/ordered-eval-control.schema.json +7 -1
- package/docs/schemas/ready-endpoint-binding.schema.json +201 -0
- package/docs/schemas/run-manifest.schema.json +6 -0
- package/docs/schemas/run-request.schema.json +122 -20
- package/examples/external-inference/.env.example +16 -0
- package/examples/external-inference/README.md +203 -0
- package/examples/external-inference/accept.mjs +297 -0
- package/examples/external-inference/compose.gateway.yaml +119 -0
- package/examples/external-inference/compose.single.yaml +64 -0
- package/examples/external-inference/compose.tp2.yaml +15 -0
- package/examples/external-inference/deployment.example.json +58 -0
- package/examples/external-inference/endpoint.chat-completions.example.json +13 -0
- package/examples/external-inference/endpoint.responses.example.json +13 -0
- package/integrations/harbor/hitch_build_inputs.py +213 -0
- package/integrations/harbor/hitch_build_process.py +126 -0
- package/integrations/harbor/hitch_compose_preparation.py +274 -0
- package/integrations/harbor/hitch_harbor_agent.py +25 -39
- package/integrations/harbor/hitch_harbor_environment.py +96 -3
- package/integrations/harbor/hitch_image_cache.py +357 -0
- package/integrations/harbor/hitch_python_runtime.py +303 -0
- package/integrations/harbor/hitch_shared_runtime.py +123 -0
- package/integrations/model-call/cli.js +11 -10
- package/integrations/training-tool/cli.js +56 -15
- package/node_modules/smol-toml/LICENSE +24 -0
- package/node_modules/smol-toml/README.md +418 -0
- package/node_modules/smol-toml/dist/date.d.ts +41 -0
- package/node_modules/smol-toml/dist/date.js +127 -0
- package/node_modules/smol-toml/dist/error.d.ts +38 -0
- package/node_modules/smol-toml/dist/error.js +63 -0
- package/node_modules/smol-toml/dist/extract.js +69 -0
- package/node_modules/smol-toml/dist/index.cjs +734 -0
- package/node_modules/smol-toml/dist/index.d.ts +43 -0
- package/node_modules/smol-toml/dist/index.js +33 -0
- package/node_modules/smol-toml/dist/parse.d.ts +36 -0
- package/node_modules/smol-toml/dist/parse.js +149 -0
- package/node_modules/smol-toml/dist/primitive.js +238 -0
- package/node_modules/smol-toml/dist/stringify.d.ts +31 -0
- package/node_modules/smol-toml/dist/stringify.js +181 -0
- package/node_modules/smol-toml/dist/struct.js +179 -0
- package/node_modules/smol-toml/dist/util.d.ts +38 -0
- package/node_modules/smol-toml/dist/util.js +89 -0
- package/node_modules/smol-toml/package.json +68 -0
- package/package.json +15 -4
- package/dist/src/cli/commands/local.js +0 -130
- package/dist/src/cli/commands/local.js.map +0 -1
- package/dist/src/cli/commands/model-node.js +0 -26
- package/dist/src/cli/commands/model-node.js.map +0 -1
- package/dist/src/control-plane/inference-manager.js +0 -357
- package/dist/src/control-plane/inference-manager.js.map +0 -1
- package/dist/src/control-plane/managed-gateway-receipt.js +0 -26
- package/dist/src/control-plane/managed-gateway-receipt.js.map +0 -1
- package/dist/src/control-plane/managed-service-recovery.js +0 -158
- package/dist/src/control-plane/managed-service-recovery.js.map +0 -1
- package/dist/src/daemon/inference-prepare.js +0 -47
- package/dist/src/daemon/inference-prepare.js.map +0 -1
- package/dist/src/inference/daemon-capacity.js +0 -41
- package/dist/src/inference/daemon-capacity.js.map +0 -1
- package/dist/src/inference/device-reservation.js +0 -58
- package/dist/src/inference/device-reservation.js.map +0 -1
- package/dist/src/inference/doctor.js +0 -95
- package/dist/src/inference/doctor.js.map +0 -1
- package/dist/src/inference/generation-recovery.js +0 -83
- package/dist/src/inference/generation-recovery.js.map +0 -1
- package/dist/src/inference/managed-launcher.js +0 -35
- package/dist/src/inference/managed-launcher.js.map +0 -1
- package/dist/src/inference/materialize.js +0 -66
- package/dist/src/inference/materialize.js.map +0 -1
- package/dist/src/inference/model-location.js +0 -34
- package/dist/src/inference/model-location.js.map +0 -1
- package/dist/src/inference/node-client.js +0 -167
- package/dist/src/inference/node-client.js.map +0 -1
- package/dist/src/inference/node-registry.js +0 -79
- package/dist/src/inference/node-registry.js.map +0 -1
- package/dist/src/inference/observation.js +0 -79
- package/dist/src/inference/observation.js.map +0 -1
- package/dist/src/inference/preflight.js +0 -132
- package/dist/src/inference/preflight.js.map +0 -1
- package/dist/src/inference/process-sglang.js +0 -169
- package/dist/src/inference/process-sglang.js.map +0 -1
- package/dist/src/inference/protocol-probe.js +0 -29
- package/dist/src/inference/protocol-probe.js.map +0 -1
- package/dist/src/inference/remote-model-store.js +0 -24
- package/dist/src/inference/remote-model-store.js.map +0 -1
- package/dist/src/inference/runtime-catalog.js +0 -41
- package/dist/src/inference/runtime-catalog.js.map +0 -1
- package/dist/src/inference/runtime-store.js +0 -93
- package/dist/src/inference/runtime-store.js.map +0 -1
- package/dist/src/inference/service-attachment.js +0 -46
- package/dist/src/inference/service-attachment.js.map +0 -1
- package/dist/src/inference/service-inspection.js +0 -38
- package/dist/src/inference/service-inspection.js.map +0 -1
- package/dist/src/inference/sglang.js +0 -279
- package/dist/src/inference/sglang.js.map +0 -1
- package/dist/src/inference/supervisor.js +0 -460
- package/dist/src/inference/supervisor.js.map +0 -1
- package/dist/src/model-access/local-gateway-request.js +0 -139
- package/dist/src/model-access/local-gateway-request.js.map +0 -1
- package/dist/src/model-access/local-gateway.js +0 -323
- package/dist/src/model-access/local-gateway.js.map +0 -1
- package/dist/src/runs/local-inference-run.js +0 -53
- package/dist/src/runs/local-inference-run.js.map +0 -1
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
{
|
|
2
|
+
"recorded_at": "2026-10-09",
|
|
3
|
+
"scope": "Historical measurements preceding the PR cancellation-cleanup hardening and transplant to dev; no claim that the final PR runtime was used in these measurements.",
|
|
4
|
+
"environment": {
|
|
5
|
+
"host": "Linux x86_64; Intel Xeon Platinum KVM guest; 16 logical CPUs; 65,923,194,880 bytes RAM",
|
|
6
|
+
"node": "22.22.1",
|
|
7
|
+
"docker": "29.1.3",
|
|
8
|
+
"harbor": "0.21.0",
|
|
9
|
+
"model": "GPT-6 Luna via subscription (provider snapshot unresolved)"
|
|
10
|
+
},
|
|
11
|
+
"provenance": [
|
|
12
|
+
{
|
|
13
|
+
"archive": "profiling-20/dataset-fix-replay.json",
|
|
14
|
+
"sha256": "208c288701c3ad2aad541fa08caf7a234436263ed50e02b75db8380e47180e06"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"archive": "profiling-runtime-sharing/setup-comparison.json",
|
|
18
|
+
"sha256": "076bee8f9a5c49d1fcad24103a4be1ba437f32b51b71aed8fbfca36e650d3bd9"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"archive": "image-preparation-optimization/results.json",
|
|
22
|
+
"sha256": "cde8c293e6caba11c385cec78ac53d58bd4731f46b1912e811493aff08246a64"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"archive": "image-preparation-optimization/verifier-replay/result.json",
|
|
26
|
+
"sha256": "fa0cfcc9ce93605c24781705c5ad3060b4a4750836e86ebfb34693f576486431"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"archive": "gear-one-round-optimized/repeat-baseline-100/three-way-comparison.json",
|
|
30
|
+
"sha256": "5303f428331d32c920fdc8fc809f3a7957eccc749a643a99f72d9eb64feff5a0"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"dataset_replay": {
|
|
34
|
+
"measured_at": "2026-10-08T15:35:35.503Z",
|
|
35
|
+
"model_calls": 0,
|
|
36
|
+
"note": "Sequential dataset-check replay, not end-to-end evaluation; bytes are logical reads, not physical disk I/O.",
|
|
37
|
+
"logical_byte_reduction": 0.9047557673677712,
|
|
38
|
+
"results": [
|
|
39
|
+
{
|
|
40
|
+
"mode": "optimized",
|
|
41
|
+
"tasks": 20,
|
|
42
|
+
"dataset_digest": "sha256:d66a830075362fc03124543c2f1ee4649e19b693a582d38feffc1a0a3f3ffd21",
|
|
43
|
+
"wall_ms": 31458.281092,
|
|
44
|
+
"collection_ms": 8200.212244000002,
|
|
45
|
+
"successful_dataset_reads": 93486,
|
|
46
|
+
"logical_dataset_bytes": 2786968032
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"mode": "baseline",
|
|
50
|
+
"tasks": 20,
|
|
51
|
+
"dataset_digest": "sha256:d66a830075362fc03124543c2f1ee4649e19b693a582d38feffc1a0a3f3ffd21",
|
|
52
|
+
"wall_ms": 403823.85438100004,
|
|
53
|
+
"collection_ms": 389990.11956300004,
|
|
54
|
+
"successful_dataset_reads": 981204,
|
|
55
|
+
"logical_dataset_bytes": 29261278662
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"mode": "optimized",
|
|
59
|
+
"tasks": 20,
|
|
60
|
+
"dataset_digest": "sha256:d66a830075362fc03124543c2f1ee4649e19b693a582d38feffc1a0a3f3ffd21",
|
|
61
|
+
"wall_ms": 48336.64004099998,
|
|
62
|
+
"collection_ms": 11848.485729999957,
|
|
63
|
+
"successful_dataset_reads": 93486,
|
|
64
|
+
"logical_dataset_bytes": 2786968032
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
"runtime_setup": {
|
|
69
|
+
"tasks_per_batch": 20,
|
|
70
|
+
"concurrency": 16,
|
|
71
|
+
"order": [
|
|
72
|
+
"upload",
|
|
73
|
+
"shared",
|
|
74
|
+
"shared",
|
|
75
|
+
"upload"
|
|
76
|
+
],
|
|
77
|
+
"successful_setups": 80,
|
|
78
|
+
"model_calls": 0,
|
|
79
|
+
"upload": {
|
|
80
|
+
"setup_seconds_per_task": 30.16,
|
|
81
|
+
"harness_upload_seconds_per_task": 18.31,
|
|
82
|
+
"controller_upload_seconds_per_task": 0.51,
|
|
83
|
+
"host_process_cpu_core_seconds_per_batch": 194.25,
|
|
84
|
+
"batch_wall_seconds": 111.76
|
|
85
|
+
},
|
|
86
|
+
"shared": {
|
|
87
|
+
"setup_seconds_per_task": 10.85,
|
|
88
|
+
"harness_upload_seconds_per_task": 0,
|
|
89
|
+
"controller_upload_seconds_per_task": 0,
|
|
90
|
+
"host_process_cpu_core_seconds_per_batch": 109.59,
|
|
91
|
+
"batch_wall_seconds": 40.84
|
|
92
|
+
},
|
|
93
|
+
"excluded_snapshot_seconds": [
|
|
94
|
+
10.259019555,
|
|
95
|
+
12.346748256
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"image_and_lifecycle": {
|
|
99
|
+
"scope": "Same frozen 20 tasks, C16, Luna subscription; harness prepared in advance. Baseline has warm dependency/build-layer caches; optimized full runs also reuse the prepared-image cache. Cold image preparation and harness warmup are measured separately. Whole-host and daemon resource counters include other host activity. Container and process totals can miss sub-second lifetimes.",
|
|
100
|
+
"baseline": {
|
|
101
|
+
"evalId": "eval_64cbf7280dfe4f598745928a5d2b5744",
|
|
102
|
+
"runtimeIds": [
|
|
103
|
+
"sha256:2658a4f4417eac3807a4d0c8d7fc1e5e901fd060f1ad363d7e478827eed1282b"
|
|
104
|
+
],
|
|
105
|
+
"wallSeconds": 514.1380000114441,
|
|
106
|
+
"phaseMeans": {
|
|
107
|
+
"slot_seconds": 285.1684499979019,
|
|
108
|
+
"environment_setup_seconds": 67.6658903837204,
|
|
109
|
+
"agent_setup_seconds": 17.371835076808928,
|
|
110
|
+
"agent_execution_seconds": 106.45874143838883,
|
|
111
|
+
"verifier_seconds": 65.41652805805207,
|
|
112
|
+
"native_other_seconds": 25.621624088287355,
|
|
113
|
+
"after_native_seconds": 1.5526309370994569,
|
|
114
|
+
"after_publish_seconds": 1.0812000155448913,
|
|
115
|
+
"verifier_body_seconds": 15.2249,
|
|
116
|
+
"verifier_lifecycle_seconds": 50.19162805805206
|
|
117
|
+
},
|
|
118
|
+
"preparationMean": {
|
|
119
|
+
"candidate": 39.5421057337,
|
|
120
|
+
"verifier": 20.7157033891
|
|
121
|
+
},
|
|
122
|
+
"stops": {
|
|
123
|
+
"candidate": {
|
|
124
|
+
"count": 20,
|
|
125
|
+
"sum": 213.26049423217773,
|
|
126
|
+
"mean": 10.663024711608887,
|
|
127
|
+
"median": 10.501216650009155,
|
|
128
|
+
"max": 11.307181596755981
|
|
129
|
+
},
|
|
130
|
+
"simulator": {
|
|
131
|
+
"count": 20,
|
|
132
|
+
"sum": 38.22067189216614,
|
|
133
|
+
"mean": 1.9110335946083068,
|
|
134
|
+
"median": 1.8672200441360474,
|
|
135
|
+
"max": 4.260472536087036
|
|
136
|
+
},
|
|
137
|
+
"verifier": {
|
|
138
|
+
"count": 20,
|
|
139
|
+
"sum": 210.8357436656952,
|
|
140
|
+
"mean": 10.54178718328476,
|
|
141
|
+
"median": 10.36497938632965,
|
|
142
|
+
"max": 11.635977268218994
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"valid": 20,
|
|
146
|
+
"passes": 2,
|
|
147
|
+
"dockerDaemonCpuSeconds": 1316.926889,
|
|
148
|
+
"diskWriteGiB": 19.91425323486328,
|
|
149
|
+
"agentAverage": 4.5173376614991865,
|
|
150
|
+
"modelAverage": 3.092310337033131,
|
|
151
|
+
"probeQuality": {
|
|
152
|
+
"unclosedPython": 0,
|
|
153
|
+
"unclosedHost": 0,
|
|
154
|
+
"missingPatches": [],
|
|
155
|
+
"containerCoverage": {
|
|
156
|
+
"dockerListFailures": 1,
|
|
157
|
+
"containerApiFailures": 0,
|
|
158
|
+
"supplementalSamples": 515,
|
|
159
|
+
"supplementedContainerSamples": 29,
|
|
160
|
+
"eventErrors": [],
|
|
161
|
+
"observerRestarts": []
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"warm_first": {
|
|
166
|
+
"evalId": "eval_9592b7d83bd64d84a0ef7322ac32617f",
|
|
167
|
+
"runtimeIds": [
|
|
168
|
+
"sha256:072b2230200ed16e5e27966342725e101e46023cb23f093b2fafa3c8b48849d9"
|
|
169
|
+
],
|
|
170
|
+
"wallSeconds": 399.9470000267029,
|
|
171
|
+
"phaseMeans": {
|
|
172
|
+
"slot_seconds": 207.14064998626708,
|
|
173
|
+
"environment_setup_seconds": 33.20775940418243,
|
|
174
|
+
"agent_setup_seconds": 17.37574373483658,
|
|
175
|
+
"agent_execution_seconds": 117.32188109159469,
|
|
176
|
+
"verifier_seconds": 22.65836421251297,
|
|
177
|
+
"native_other_seconds": 13.715027666091919,
|
|
178
|
+
"after_native_seconds": 1.7154239416122437,
|
|
179
|
+
"after_publish_seconds": 1.1464499354362487,
|
|
180
|
+
"verifier_body_seconds": 14.51355,
|
|
181
|
+
"verifier_lifecycle_seconds": 8.14481421251297
|
|
182
|
+
},
|
|
183
|
+
"preparationMean": {
|
|
184
|
+
"candidate": 3.6222376064999997,
|
|
185
|
+
"verifier": 1.4092942058
|
|
186
|
+
},
|
|
187
|
+
"stops": {
|
|
188
|
+
"candidate": {
|
|
189
|
+
"count": 20,
|
|
190
|
+
"sum": 5.032052278518677,
|
|
191
|
+
"mean": 0.25160261392593386,
|
|
192
|
+
"median": 0.21620488166809082,
|
|
193
|
+
"max": 0.6075403690338135
|
|
194
|
+
},
|
|
195
|
+
"simulator": {
|
|
196
|
+
"count": 20,
|
|
197
|
+
"sum": 29.80813455581665,
|
|
198
|
+
"mean": 1.4904067277908326,
|
|
199
|
+
"median": 1.4453762769699097,
|
|
200
|
+
"max": 2.123774766921997
|
|
201
|
+
},
|
|
202
|
+
"verifier": {
|
|
203
|
+
"count": 20,
|
|
204
|
+
"sum": 5.935137748718262,
|
|
205
|
+
"mean": 0.2967568874359131,
|
|
206
|
+
"median": 0.24156415462493896,
|
|
207
|
+
"max": 0.7315433025360107
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
"valid": 20,
|
|
211
|
+
"passes": 3,
|
|
212
|
+
"dockerDaemonCpuSeconds": 342.916441,
|
|
213
|
+
"diskWriteGiB": 4.655399322509766,
|
|
214
|
+
"agentAverage": 6.599403245108653,
|
|
215
|
+
"modelAverage": 4.016821683707523,
|
|
216
|
+
"probeQuality": {
|
|
217
|
+
"unclosedPython": 0,
|
|
218
|
+
"unclosedHost": 0,
|
|
219
|
+
"missingPatches": [],
|
|
220
|
+
"containerCoverage": {
|
|
221
|
+
"dockerListFailures": 0,
|
|
222
|
+
"containerApiFailures": 0,
|
|
223
|
+
"supplementalSamples": 401,
|
|
224
|
+
"supplementedContainerSamples": 0,
|
|
225
|
+
"eventErrors": [],
|
|
226
|
+
"observerRestarts": []
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"warm_final": {
|
|
231
|
+
"evalId": "eval_23be5bcafce94109aae85d32c7094f88",
|
|
232
|
+
"runtimeIds": [
|
|
233
|
+
"sha256:e6ecc646f98c5906aa44d863779941f6bf82f236d2ebfa7bc399c34bd087df2b"
|
|
234
|
+
],
|
|
235
|
+
"wallSeconds": 372.13700008392334,
|
|
236
|
+
"phaseMeans": {
|
|
237
|
+
"slot_seconds": 201.82434998750688,
|
|
238
|
+
"environment_setup_seconds": 29.518565595149994,
|
|
239
|
+
"agent_setup_seconds": 16.651894664764406,
|
|
240
|
+
"agent_execution_seconds": 120.01988308429718,
|
|
241
|
+
"verifier_seconds": 20.959102857112885,
|
|
242
|
+
"native_other_seconds": 12.259714829921723,
|
|
243
|
+
"after_native_seconds": 1.205488955974579,
|
|
244
|
+
"after_publish_seconds": 1.2097000002861023,
|
|
245
|
+
"verifier_body_seconds": 13.78495,
|
|
246
|
+
"verifier_lifecycle_seconds": 7.174152857112884
|
|
247
|
+
},
|
|
248
|
+
"preparationMean": {
|
|
249
|
+
"candidate": 3.1690642686,
|
|
250
|
+
"verifier": 1.23830467335
|
|
251
|
+
},
|
|
252
|
+
"stops": {
|
|
253
|
+
"candidate": {
|
|
254
|
+
"count": 20,
|
|
255
|
+
"sum": 4.894258499145508,
|
|
256
|
+
"mean": 0.2447129249572754,
|
|
257
|
+
"median": 0.22374379634857178,
|
|
258
|
+
"max": 0.6866343021392822
|
|
259
|
+
},
|
|
260
|
+
"simulator": {
|
|
261
|
+
"count": 20,
|
|
262
|
+
"sum": 27.246562242507935,
|
|
263
|
+
"mean": 1.3623281121253967,
|
|
264
|
+
"median": 1.336445689201355,
|
|
265
|
+
"max": 1.9595155715942383
|
|
266
|
+
},
|
|
267
|
+
"verifier": {
|
|
268
|
+
"count": 20,
|
|
269
|
+
"sum": 6.640327215194702,
|
|
270
|
+
"mean": 0.3320163607597351,
|
|
271
|
+
"median": 0.22688746452331543,
|
|
272
|
+
"max": 1.4987709522247314
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
"valid": 20,
|
|
276
|
+
"passes": 4,
|
|
277
|
+
"dockerDaemonCpuSeconds": 334.41200299999997,
|
|
278
|
+
"diskWriteGiB": 4.676868438720703,
|
|
279
|
+
"agentAverage": 7.2866287076979495,
|
|
280
|
+
"modelAverage": 4.82437277143521,
|
|
281
|
+
"probeQuality": {
|
|
282
|
+
"unclosedPython": 0,
|
|
283
|
+
"unclosedHost": 0,
|
|
284
|
+
"missingPatches": [],
|
|
285
|
+
"containerCoverage": {
|
|
286
|
+
"dockerListFailures": 0,
|
|
287
|
+
"containerApiFailures": 0,
|
|
288
|
+
"supplementalSamples": 373,
|
|
289
|
+
"supplementedContainerSamples": 0,
|
|
290
|
+
"eventErrors": [],
|
|
291
|
+
"observerRestarts": []
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"preparation": {
|
|
296
|
+
"prepare-cold-c16": {
|
|
297
|
+
"label": "prepare-cold-c16",
|
|
298
|
+
"wallSeconds": 140.38053471798776,
|
|
299
|
+
"tasks": 20,
|
|
300
|
+
"roles": 40,
|
|
301
|
+
"imagePreparations": 60,
|
|
302
|
+
"cacheHits": 0,
|
|
303
|
+
"uniqueKeys": 60,
|
|
304
|
+
"hostCpuSeconds": 18.738639999999997,
|
|
305
|
+
"childCliCpuSeconds": 189.417582,
|
|
306
|
+
"roleMeans": {
|
|
307
|
+
"candidate": 62.5674219975539,
|
|
308
|
+
"verifier": 27.406673145008973
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
"prepare-warm-c16-a": {
|
|
312
|
+
"label": "prepare-warm-c16-a",
|
|
313
|
+
"wallSeconds": 17.670493709039874,
|
|
314
|
+
"tasks": 20,
|
|
315
|
+
"roles": 40,
|
|
316
|
+
"imagePreparations": 60,
|
|
317
|
+
"cacheHits": 60,
|
|
318
|
+
"uniqueKeys": 60,
|
|
319
|
+
"hostCpuSeconds": 16.190249,
|
|
320
|
+
"childCliCpuSeconds": 15.900727,
|
|
321
|
+
"roleMeans": {
|
|
322
|
+
"candidate": 7.530257558551966,
|
|
323
|
+
"verifier": 3.9297443004033994
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
"prepare-warm-c16-b": {
|
|
327
|
+
"label": "prepare-warm-c16-b",
|
|
328
|
+
"wallSeconds": 17.613185116962995,
|
|
329
|
+
"tasks": 20,
|
|
330
|
+
"roles": 40,
|
|
331
|
+
"imagePreparations": 60,
|
|
332
|
+
"cacheHits": 60,
|
|
333
|
+
"uniqueKeys": 60,
|
|
334
|
+
"hostCpuSeconds": 16.228609000000002,
|
|
335
|
+
"childCliCpuSeconds": 16.086499,
|
|
336
|
+
"roleMeans": {
|
|
337
|
+
"candidate": 7.4858669871580785,
|
|
338
|
+
"verifier": 4.021057845893665
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"fixed_snapshot_verifier_replay": {
|
|
344
|
+
"tasks": 20,
|
|
345
|
+
"all_match": true,
|
|
346
|
+
"artifacts": [
|
|
347
|
+
"reward.json",
|
|
348
|
+
"assertions.json",
|
|
349
|
+
"process.json"
|
|
350
|
+
]
|
|
351
|
+
},
|
|
352
|
+
"full_100_task_comparison": {
|
|
353
|
+
"method": "Three matched baseline evaluations, one logical trial per task. Binary pass is reward == total_score == 1. Invalid slots are never scored as zero.",
|
|
354
|
+
"observedFullRuns": {
|
|
355
|
+
"old": {
|
|
356
|
+
"tasks": 100,
|
|
357
|
+
"passes": 13,
|
|
358
|
+
"passRate": 0.13,
|
|
359
|
+
"meanProcessScore": 0.5384416037179195,
|
|
360
|
+
"invalid": 0
|
|
361
|
+
},
|
|
362
|
+
"new1": {
|
|
363
|
+
"tasks": 100,
|
|
364
|
+
"passes": 18,
|
|
365
|
+
"passRate": 0.18,
|
|
366
|
+
"meanProcessScore": 0.5258498004546767,
|
|
367
|
+
"invalid": 0
|
|
368
|
+
},
|
|
369
|
+
"new2": {
|
|
370
|
+
"tasks": 100,
|
|
371
|
+
"passes": 15,
|
|
372
|
+
"passRate": 0.15,
|
|
373
|
+
"meanProcessScore": 0.49785881969119955,
|
|
374
|
+
"invalid": 0
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
"firstPassNew2": {
|
|
378
|
+
"tasks": 99,
|
|
379
|
+
"passes": 15,
|
|
380
|
+
"passRate": 0.15151515151515152,
|
|
381
|
+
"meanProcessScore": 0.4942296879997687,
|
|
382
|
+
"invalid": 1
|
|
383
|
+
},
|
|
384
|
+
"limitations": [
|
|
385
|
+
"Only one old and two new model runs; repeat variation cannot prove absence of a version effect.",
|
|
386
|
+
"Old concurrency was 8; both new runs use 16. Source harness and task/verifier identities match, but old packaged runtime differs.",
|
|
387
|
+
"The configured model is the same; identity_resolved=false, so a precise provider model snapshot is not pinned.",
|
|
388
|
+
"Same-version variability includes model sampling and execution/service timing; it is not an estimate of pure sampling noise.",
|
|
389
|
+
"The primary common-valid cohort excludes infrastructure-invalid first-pass tasks and may have survivorship bias; repaired results are separately labeled.",
|
|
390
|
+
"Pairwise exact McNemar p-values are exploratory, assume independent task pairs, and are not equivalence tests or evidence of causal attribution."
|
|
391
|
+
]
|
|
392
|
+
}
|
|
393
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Evaluation preparation measurements — 2026-10-09
|
|
2
|
+
|
|
3
|
+
Repeated local Harbor tasks spend substantial time preparing identical inputs.
|
|
4
|
+
The changes reduce dataset payload reads, share immutable runtime installations,
|
|
5
|
+
reuse prepared images, and shorten shutdown of Harbor's default keepalive.
|
|
6
|
+
They do not share mutable task state or change scoring formulas.
|
|
7
|
+
|
|
8
|
+
The [aggregate measurements](eval-preparation-2026-10-09.json) include exact
|
|
9
|
+
values, runtime identities, evaluation IDs, measurement limitations, and SHA-256
|
|
10
|
+
digests of the local source archives. Raw trajectories, task payloads, and
|
|
11
|
+
credentials are not included. These are measurements of the development
|
|
12
|
+
versions, before transplanting the changes onto `dev` and hardening cancellation
|
|
13
|
+
cleanup during PR review. They are not fresh performance certification of the
|
|
14
|
+
final PR runtime.
|
|
15
|
+
|
|
16
|
+
## Environment and comparison boundaries
|
|
17
|
+
|
|
18
|
+
Measurements used a Linux x86_64 KVM host with 16 logical Intel Xeon Platinum
|
|
19
|
+
CPUs and approximately 61.4 GiB RAM, Node 22.22.1, Docker 29.1.3, and Harbor
|
|
20
|
+
0.21.0. Live evaluations used the same frozen 20 AutomationBench Marketing tasks,
|
|
21
|
+
DSH harness, and GPT-6 Luna subscription configuration, with concurrency 16.
|
|
22
|
+
The precise provider model snapshot was unresolved. The implementation contains
|
|
23
|
+
no benchmark-specific rules; synthetic regressions cover independent layouts,
|
|
24
|
+
datasets, build contexts, and harness artifacts.
|
|
25
|
+
|
|
26
|
+
Each comparison isolates a different development stage. Their percentages must
|
|
27
|
+
not be added or multiplied into a claimed overall speedup. Model workload,
|
|
28
|
+
filesystem cache state, and other activity on the shared host can affect elapsed
|
|
29
|
+
times. Per-task phases overlap across tasks and cannot be summed into batch wall
|
|
30
|
+
time.
|
|
31
|
+
|
|
32
|
+
## Dataset verification
|
|
33
|
+
|
|
34
|
+
A model-free replay brackets the original implementation with two optimized
|
|
35
|
+
runs. It exercises admission checks, native-descriptor lookup, score collection
|
|
36
|
+
checks, and the new final dataset sweep. All three runs have the same dataset
|
|
37
|
+
digest and descriptor results.
|
|
38
|
+
|
|
39
|
+
| Metric, 20 tasks | Original | Optimized, first | Optimized, second |
|
|
40
|
+
| --- | ---: | ---: | ---: |
|
|
41
|
+
| Logical dataset bytes read | 29,261,278,662 | 2,786,968,032 | 2,786,968,032 |
|
|
42
|
+
| Successful dataset file reads | 981,204 | 93,486 | 93,486 |
|
|
43
|
+
| Full verification replay, seconds | 403.82 | 31.46 | 48.34 |
|
|
44
|
+
| Collection portion, seconds | 389.99 | 8.20 | 11.85 |
|
|
45
|
+
|
|
46
|
+
Logical bytes decrease by **90.48%**. This is not a physical disk I/O counter or
|
|
47
|
+
an end-to-end evaluation speedup. Shared-host load affected timings; the stable
|
|
48
|
+
read counts are the stronger evidence. Payload reads grow linearly for this v1
|
|
49
|
+
collection path, while manifest parsing and task-set metadata checks still occur
|
|
50
|
+
per collection. There is no pathname/mtime cache. Resource v2 closure validation
|
|
51
|
+
and standalone full verification remain in place.
|
|
52
|
+
|
|
53
|
+
Replay the current implementation with any standardized v1 dataset and a built
|
|
54
|
+
pre-optimization checkout. After integrating #46, scoped verification uses
|
|
55
|
+
identity-bound execution and trial receipts. The current script counts task
|
|
56
|
+
content reads only; the historical measurements above also include root
|
|
57
|
+
manifest metadata reads and are retained unchanged.
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
npm run build
|
|
61
|
+
node dist/scripts/benchmark-dataset-verification.js \
|
|
62
|
+
--dataset /absolute/v1-dataset \
|
|
63
|
+
--baseline /absolute/original-hitch \
|
|
64
|
+
--output /absolute/comparison.json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Shared immutable runtime and dependencies
|
|
68
|
+
|
|
69
|
+
Four controlled batches ran `upload → shared → shared → upload`, each with 20
|
|
70
|
+
real bridge setups at concurrency 16. All 80 setups succeeded. Controller and
|
|
71
|
+
harness content identities and the base image were fixed. This experiment
|
|
72
|
+
contains no model, simulator, or verifier execution.
|
|
73
|
+
|
|
74
|
+
| Metric | Upload | Read-only snapshots |
|
|
75
|
+
| --- | ---: | ---: |
|
|
76
|
+
| Mean setup, seconds/task | 30.16 | 10.85 |
|
|
77
|
+
| Harness upload, seconds/task | 18.31 | 0 |
|
|
78
|
+
| Controller upload, seconds/task | 0.51 | 0 |
|
|
79
|
+
| Host worker/CLI CPU, core-seconds/batch | 194.25 | 109.59 |
|
|
80
|
+
| Batch wall time including create/cleanup, seconds | 111.76 | 40.84 |
|
|
81
|
+
|
|
82
|
+
Mean setup decreases by **64.0%** and measured host process CPU by **43.6%**.
|
|
83
|
+
The batch and per-task times exclude **10.26–12.35 seconds** to create and verify
|
|
84
|
+
the one-time snapshots. Host process CPU excludes dockerd/containerd. Existing
|
|
85
|
+
artifact validation and per-task Node extraction remain; they were approximately
|
|
86
|
+
unchanged. An earlier full live evaluation at this stage was slower overall
|
|
87
|
+
(755.01 versus 723.52 seconds) because other phases dominated. Sharing alone did
|
|
88
|
+
not establish an end-to-end gain.
|
|
89
|
+
|
|
90
|
+
## Image preparation and verifier lifecycle
|
|
91
|
+
|
|
92
|
+
This baseline already includes dataset and shared-runtime optimizations. Both
|
|
93
|
+
sides have warm dependency and Docker build-layer caches; the optimized side
|
|
94
|
+
additionally reuses the new prepared-image cache and manages Harbor's default
|
|
95
|
+
keepalive. Harness preparation occurred in advance.
|
|
96
|
+
|
|
97
|
+
| Metric | Baseline | Optimized warm run 1 | Optimized warm run 2 |
|
|
98
|
+
| --- | ---: | ---: | ---: |
|
|
99
|
+
| Full evaluation wall time, seconds | 514.14 | 399.95 | 372.14 |
|
|
100
|
+
| Candidate + sidecar image preparation, seconds/task | 39.54 | 3.62 | 3.17 |
|
|
101
|
+
| Environment setup including readiness, seconds/task | 67.67 | 33.21 | 29.52 |
|
|
102
|
+
| Verifier image preparation, seconds/task | 20.72 | 1.41 | 1.24 |
|
|
103
|
+
| Complete verifier phase, seconds/task | 65.42 | 22.66 | 20.96 |
|
|
104
|
+
| Verifier lifecycle excluding scoring body, seconds/task | 50.19 | 8.14 | 7.17 |
|
|
105
|
+
| Scoring body, seconds/task | 15.22 | 14.51 | 13.78 |
|
|
106
|
+
| Candidate stop signal to exit, seconds/container | 10.66 | 0.25 | 0.24 |
|
|
107
|
+
| Verifier stop signal to exit, seconds/container | 10.54 | 0.30 | 0.33 |
|
|
108
|
+
| Dockerd + containerd CPU, core-seconds | 1,316.93 | 342.92 | 334.41 |
|
|
109
|
+
| Whole-host disk writes, GiB | 19.91 | 4.66 | 4.68 |
|
|
110
|
+
|
|
111
|
+
Both optimized runs produced 20/20 valid executions. Wall time decreased by
|
|
112
|
+
**22.2–27.6%** in these runs; the final run's candidate and verifier image
|
|
113
|
+
preparation decreased by **92.0%** and **94.0%**. Scoring execution remains in a
|
|
114
|
+
separate verifier container. Whole-host writes and daemon CPU include unrelated
|
|
115
|
+
activity and cannot be attributed exclusively to this evaluation. Process and
|
|
116
|
+
container sampling can miss very short lifetimes.
|
|
117
|
+
|
|
118
|
+
The cold preparation-only run took **140.38 seconds** for 60 image preparations.
|
|
119
|
+
Two warm repeats took **17.67** and **17.61 seconds**, with 60/60 hits. There were
|
|
120
|
+
**60 distinct complete build contexts**: observed gains here are primarily reuse
|
|
121
|
+
across rounds. This implementation does not deduplicate shared subsets of
|
|
122
|
+
different contexts. Full-context hashing intentionally invalidates on changes to
|
|
123
|
+
unused or ignored files as well.
|
|
124
|
+
|
|
125
|
+
The final live run's 60 executed image IDs matched their preparation receipts.
|
|
126
|
+
Candidate and verifier mounts were checked. Average active agents increased
|
|
127
|
+
from 4.52 to 7.29, and average simultaneous model requests from 3.09 to 4.82;
|
|
128
|
+
these averages do not guarantee throughput at higher configured concurrency.
|
|
129
|
+
|
|
130
|
+
## Correctness evidence and limits
|
|
131
|
+
|
|
132
|
+
Regrading the same 20 saved pre-optimization snapshots produced identical
|
|
133
|
+
`reward.json`, `assertions.json`, and `process.json` outputs for all 20 tasks.
|
|
134
|
+
This isolates verifier behavior from new model trajectories. Unit and real Docker
|
|
135
|
+
fixtures additionally cover immutable input identities, cross-process build
|
|
136
|
+
deduplication, invalidation, eviction, failures, cancellation, isolated writable
|
|
137
|
+
state, role separation, prebuilt-image precedence, and preserved custom commands.
|
|
138
|
+
|
|
139
|
+
A complete Gear round also finished with 140/140 valid executions: 100 baseline,
|
|
140
|
+
12 local, and 28 physical bridge trials. The candidate was rejected by the bridge
|
|
141
|
+
objective; successful execution does not imply promotion or task success.
|
|
142
|
+
|
|
143
|
+
The old 100-task baseline scored 13/100; two optimized baselines scored 18/100 and
|
|
144
|
+
15/100. The second optimized baseline initially had one model transport failure;
|
|
145
|
+
that invalid slot was repaired, retaining the other 99 trials. The old run used
|
|
146
|
+
concurrency 8 and the optimized runs used 16. Seven tasks passed only in the old
|
|
147
|
+
run and failed in both optimized runs. These limited, differently concurrent
|
|
148
|
+
live samples do **not** establish score equivalence or prove that every
|
|
149
|
+
difference is model randomness. Matched-concurrency repeated comparisons remain
|
|
150
|
+
necessary for that conclusion.
|
|
151
|
+
|
|
152
|
+
## Opt-in behavior and tradeoffs
|
|
153
|
+
|
|
154
|
+
See [the storage and preparation guide](../resource-storage.zh-CN.md) for current
|
|
155
|
+
configuration. Dataset verification changes apply to the admitted v1 evaluation
|
|
156
|
+
path; runtime sharing, image caching, and managed keepalive are opt-in. Upload
|
|
157
|
+
remains the default runtime transport. Read-only runtime sharing requires local
|
|
158
|
+
Linux Docker and harnesses that do not modify their installation directory.
|
|
159
|
+
|
|
160
|
+
Image caching uses private host-local state and conservative supported inputs.
|
|
161
|
+
Unsupported Compose/Dockerfile features and explicit force builds retain the
|
|
162
|
+
original build path. Prepared images and evaluation snapshots are retained;
|
|
163
|
+
there is no automatic cache garbage collector. Mutable workspaces, credentials,
|
|
164
|
+
Node extraction, and verifier instances remain private. Repeated cancellation
|
|
165
|
+
must finish Docker process-group cleanup before releasing build locks.
|
|
166
|
+
|
|
167
|
+
Review found and fixed a case where the Docker CLI had exited but a descendant
|
|
168
|
+
still held its pipes: cancellation previously skipped cleanup when the leader
|
|
169
|
+
already had a return code. The new real-process regression waits for leader exit,
|
|
170
|
+
cancels a stubborn descendant, and verifies pipe closure before returning.
|
|
171
|
+
Output draining stays active during cleanup to avoid pipe backpressure deadlocks.
|
|
172
|
+
|
|
173
|
+
Review also replaced role-marker/suffix matching with the exact candidate session
|
|
174
|
+
derived from `TrialPaths`. A truncated verifier session can lose its role marker,
|
|
175
|
+
and a verifier step named `env` can resemble a candidate suffix. Regression tests
|
|
176
|
+
cover both cases, long trial names, and legitimate candidate names containing
|
|
177
|
+
`__verifier__`; real Docker checks confirm that verifier image contents and
|
|
178
|
+
mounts stay independent.
|