You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(swe-bench-pro): make the default rk run work without per-spec workarounds
A default swe-bench-pro run (`rk run examples/specs/swe-bench-pro-spacedock-codex.yaml`,
default `--materialize bind`) hit two blockers before the solver ever ran:
1. Docker build failed: `failed to read dockerfile: no such file or directory`.
In bind/link mode the materializer symlinked the whole task tree, including
`environment/Dockerfile`. `docker compose build` uses the view's `environment/`
as its build context and BuildKit cannot read a Dockerfile that symlinks
outside the context — so every build-from-source benchmark broke under the
default mode. Fix: always materialize the `environment/` build context as real
files, even in link mode (mirrors the existing task.toml carve-out); bulk task
files still symlink, preserving bind's no-eager-duplication benefit.
2. Agent setup failed: `codex runtime adapter cannot honor ... 'max_turns'`.
The example spec set `max_turns: 400`, but the codex runtime only accepts the
default (200); any other value raises (intentional — claude honors max_turns,
codex does not). Fix: set the example spec to 200 with a comment, and make the
rejection message actionable (point users at the default + timeout budgeting).
Leakage hardening (from codex review): copying the build context follows symlinks
(shutil.copy2), and the name-based deny filter only sees a link's own path — so a
disguised symlink (`environment/leak.patch -> ../gold_patch.diff`) could embed a
denied answer artifact's bytes under an allowed view path. The materializer now
resolves any source symlink and re-applies the deny check + source containment,
dropping denied/out-of-tree targets in both copy and link modes.
Verified end-to-end: a default-settings N=1 smoke now builds, solves, and scores
(reward 1.0 on the ansible task). Unit tests cover all three (link-mode build
context stays real; max_turns rejection is actionable; disguised symlink to a
denied target is dropped, proven to fail pre-fix).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments