harness-opt-bench: rename, explicit trial limits, archive, and documentation clean-up - #88
Merged
Merged
Conversation
…aper Directory move plus every path reference. Deliberately unchanged: the W&B project name (keeps rebuttal runs in the same project as the paper runs) and the S3 bucket and prefix names (existing remote objects). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
New build fields: optimizer_agent_timeout_seconds ([agent] timeout_sec, so a runaway optimizer is stopped and still scored), optimizer_sandbox_timeout_seconds and optimizer_sandbox_idle_timeout_seconds (forwarded as --ek to the outer Modal sandbox), optimizer_allow_internet, and optional cpus/memory_mb/storage_mb. Every benchmark now states 86400 / 3600 / 72000 / true; resources stay undeclared on purpose, which is Modal's default and what every August cell ran under. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… in the enterprise Modal environment README leads with the paper title, the arXiv badge (2608.06301), the architecture figure rendered from the paper, and a short statement of what the benchmark measures, then the layout of a benchmark and how to launch a cell. MODAL_ENVIRONMENT is declared among every build's secrets so the launcher and the sidecar both place their sandboxes in the environment the env file names; the env files set enterprise. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
swe-atlas-qna, tau3 and swe-bench-pro move to harness-opt-bench/archive/ with a README stating why each is out: a floor-effect reward, LLM-graded noise, and a config never normalized to the shared conventions. The top-level README, CONFIGURATION.md, the run-benchmark skill, task_data.py, the CI matrix and the config tests now describe the four paper benchmarks only. The archived configs still compile but nothing exercises them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…book usable outside our setup Five operator scripts (launch_cell.sh, cleanup_orphans.sh, wandb_progress.py, check_keys.py, pass_results.py) encoded one team's credential files, run layout, proxy headers and W&B project; they leave the repository for the untracked runs/ops/ directory. recover_producer_tokens.py, forensics for the 2026-07-28 metering bug, is deleted; its finding is recorded elsewhere. scripts/ keeps partition_dataset.py, task_data.py, rescore_candidate.py and per_trial_tokens.py, which define or reproduce the benchmarks. The run-benchmark skill and the README no longer reference the removed tooling or team-specific measurements; they describe what any user with a Modal account, a W&B account and an OpenAI-compatible endpoint needs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…al reader Plainer language and no deployment-specific terminology. CONFIGURATION.md now describes the protocol (partitions, selection, budgets, attempts, failure handling, reported measurements), the shared defaults, per-benchmark values for the four reported benchmarks including the optimizer's own wall-clock limits, and the rules for changing a benchmark. The GAIA row describes the reported shell-seed variant, whose baseline is a measured zero. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The optimizer trial's clocks, internet policy and resources sat on the Harbor-evaluation field group, so a build scoring candidates with a command could not declare them although its optimizer runs in the same kind of sandbox. They move to their own group, inherited by every build. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Nothing per-run is baked any more. The three scope tokens and the producer allow-list arrive by environment (VERO_PRODUCER_TOKEN, VERO_EVALUATION_TOKEN, VERO_FINALIZATION_TOKEN, VERO_PRODUCER_SCOPE): vero harbor run mints or chooses them per launch, task.toml passes them to compose like secrets, and the gateway and sidecar read them once at container start, so a later change to the launcher's environment cannot move a running gateway's allowances. The baseline commit is stamped with a fixed date so its hash depends on the seed alone. Two compiles of one config are now byte-identical. vero harbor build --manifest writes a SHA-256 manifest (one hash each for the task-data and vero-source subtrees); --check recompiles and fails on drift. A compiled.manifest.json is committed for every baseline that compiles. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
New build field vero_requirement (an exact pin such as scaleapi-vero==0.6.0). When set, the compiler skips the source copy and both images install that requirement with the extras each needs; the compiled task then holds no vero and is small enough to commit (GAIA shell: 1.5 MB against 6.4 MB). The pin must equal the vero doing the compiling, since the images read the configs it wrote; a mismatch is refused at compile time. Unset everywhere for now: 0.5.0 on PyPI predates this branch's gateway and outer-limit changes, so a task compiled against it would not start. The GAIA yamls carry the line commented out with that explanation. Manifests are regenerated after the rebase onto the renamed package. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Harbor hands the Modal SDK no environment name, so sandboxes went to the workspace default (main), where every cell before 2026-09 ran. Declaring MODAL_ENVIRONMENT among each build's secrets carries it to the launcher and the sidecar alike; the env files set it to enterprise. Manifests regenerated for the extra task.toml line. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
build.shell.e2e.yaml is build.shell.yaml with partitions-e2e (2/3/3 cases), six-run budgets, rescore_top_k 1, and optimizer_agent_timeout_seconds 1500, so a trial reaches finalization inside an hour. It exercises compile, tokens, evaluations, the agent clock handing over to the verifier, and the session archive after a vero change. Its score is never reported. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…2e yaml comment A plain-language section covering deterministic compiles, the committed manifests and --check, per-run inputs arriving through the environment, and the vero_requirement pin. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Build files, READMEs and the runbook are rewritten in plain language. The evaluation environment is a required parameter (inner_env), target models are named without a provider prefix and mapped to a deployment through the evaluation scope's model_aliases (target_model_route), and the Terminal-Bench variant becomes build.routed.yaml with the route as a parameter. Kept as they were: the harbor extra the evaluation environment needs (now overridable), the secrets list and optional telemetry block, and the sandbox options that group and reclaim evaluation sandboxes. rescore_candidate.py learns the required-parameter placeholder and applies the same target routing. Manifests regenerated with inner_env=modal. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The seven build files repeated the same twenty comment lines. Their meaning now lives in a Deployment settings section, and each build file keeps a pointer plus the notes specific to its benchmark. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
vero_requirement accepts only an exact pin of the VeRO distribution, and the compiler refuses a pin it cannot check against the installed version. rescore_candidate.py resolves build parameters from --param and then the environment, as the build loader does. The archived builds get back the sandbox options the rewrite dropped, including the keepalive the SWE-Atlas images need. One generic comment left in the GAIA builds is removed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Reproducible compiled tasks, target-model routing, and benchmark documentation clean-up
They hashed the copied vero source tree, so every change to vero moved all four and they were regenerated five times in a day. `--manifest` and `--check` stay as a way to prove two checkouts compile the same task; nothing is committed for them to drift against. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Collaborator
Author
|
@greptile review |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepares
harness-opt-benchfor the next round of experiments and makes it easier to read.harness-engineering-bench→harness-opt-bench, matching the paper. All path references follow. The W&B project name and S3 locations are unchanged on purpose.swe-atlas-qna,tau3,swe-bench-pro) underharness-opt-bench/archive/, with a README stating why each is out. Docs, CI matrix and config tests describe the four reported benchmarks.scripts/keeps only what defines or reproduces the benchmarks: split generation, task-data status, baseline re-scoring, per-trial token attribution. Team-specific operator scripts leave the repository;recover_producer_tokens.py(forensics for a fixed metering bug) is deleted.CONFIGURATION.mdrewritten around the evaluation protocol, shared defaults, per-benchmark values and change rules; therun-benchmarkrunbook rewritten for a general reader.MODAL_ENVIRONMENTis declared among each build's secrets so the launcher and sidecar place sandboxes in the same environment.Verification
tests/test_v05_benchmark_configs.py,tests/test_v05_harbor_build.py,tests/test_v05_cli.pypass.Also included, via #89
Merged into this branch so the two land together; #89 has its own review record.
vero harbor runsets per launch, read once at service start. The baseline commit carries a fixed date, so two compiles of one config are byte-identical.vero harbor build --manifestrecords a checksum manifest and--checkfails on drift; one manifest is committed per reported benchmark.vero_requirementlets a build pin a publishedscaleapi-vero==<version>so the images install it instead of copying the source tree. Unset for now.model_aliaseson the evaluation scope (--param target_model_route=). The Terminal-Bench variant becomesbuild.routed.yaml.inner_envis required;rescore_candidate.pyunderstands required parameters and applies the same target routing.CONFIGURATION.mdinstead of repeated in every build file.build.shell.e2e.yaml) exercises the whole trial in under an hour; its score is not a result. It ran live end to end: optimizer stopped by its clock, verifier scored the submitted candidate, error block empty, both session archives present.Review findings from Greptile on both PRs are addressed in the final commits.
🤖 Generated with Claude Code
The PR appears safe to merge; no new changes or outstanding review findings remain.
Summary
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart LR B[Benchmark build.yaml] --> C[vero harbor build] P[Partitions and seed target] --> C C --> T[Deterministic compiled Harbor task] R[Runtime environment variables] --> L[vero harbor run] T --> L L --> O[Outer optimizer trial] O --> E[Nested benchmark evaluations] E --> F[Trusted final scoring] F --> A[Result and session archives]Reviews (6) · Last reviewed commit: "Drop the committed compile manifests"