Skip to content

fix(benchmarking): make the SWE-Perf ActorTemplate deployable - #1889

Open
Haowei Cai (Roy) (roycaihw) wants to merge 1 commit into
agent-substrate:mainfrom
roycaihw:fix/sweperf-actortemplate-image-and-command
Open

Haowei Cai (Roy) (roycaihw) wants to merge 1 commit into
agent-substrate:mainfrom
roycaihw:fix/sweperf-actortemplate-image-and-command

Conversation

@roycaihw

Copy link
Copy Markdown

Related: #1694

The swebench-astropy-7336 ActorTemplate can't be deployed as shipped:

  1. image: "" must be hand-edited into a tracked file before every run.
  2. The command points at /opt/swebench/replay.py and
    /opt/swebench/astropy_trace.json, which the sweperf image generator never
    produces. It writes /replay.py and /trace.json at the image root (also
    the image's ENTRYPOINT), so the container exits immediately.

This PR:

  • takes the image from a SWEPERF_IMAGE env var, substituted by
    workloads/deploy.sh like the other template variables;
  • fixes both paths;
  • documents the minimum sweperf commit (c30c0d6), since older images have no
    HTTP server and fail on the first GET /status.

Usage:

SWEPERF_IMAGE=<registry>/sweperf-astropy@sha256:... \
WORKLOAD_TEMPLATES="swebench-astropy-7336" \
  benchmarking/workloads/deploy.sh --deploy ...

Verified on GKE with both gVisor and microVM worker pools: 30-minute sweperf
runs at 1 user, all 4 cycles, 0 failures.

  • Tests pass (bash -n; exercised end-to-end as above)
  • Appropriate changes to documentation are included in the PR (template comments)

The swebench-astropy-7336 ActorTemplate cannot be deployed as shipped.
Two independent problems:

1. `image: ""` — the field is empty with a comment saying to fill it in
   before deploying. There is no way to supply it without editing a
   tracked file, so every run dirties the tree (and the substrate version
   label derived from it).

2. The command points at `/opt/swebench/replay.py` and
   `/opt/swebench/astropy_trace.json`. Neither path exists. The image
   generator in https://github.com/gke-labs/sweperf writes the replay
   server to `/replay.py` and the trajectory to `/trace.json` at the
   image root — which is also the image's own ENTRYPOINT. Nothing in
   that repo produces `/opt/swebench/`, so the container exits
   immediately with "can't open file '/opt/swebench/replay.py'".

Supply the image through a SWEPERF_IMAGE environment variable,
substituted by workloads/deploy.sh alongside the existing template
variables, and correct the two paths.

Also documents the minimum sweperf commit (c30c0d6, 2026-09-21). The
async HTTP execution API this benchmark drives landed 2026-08-31 and
`execution_duration_ms` on 2026-09-21; images built earlier ship a
replay.py with no HTTP server and fail on the client's first
`GET /status`. Verified against a rebuilt image: a 21-step / 4-cycle
run completes with 0 failures.
@roycaihw

Copy link
Copy Markdown
Author

@Nishanth29

Copy link
Copy Markdown
Contributor

Thanks for putting this together, Haowei. I think #1848 already covers this in 42b892db (same command, digest-pinned images for all 5 templates).

@roycaihw

Copy link
Copy Markdown
Author

Thanks for putting this together, Haowei. I think #1848 already covers this in 42b892db (same command, digest-pinned images for all 5 templates).

SG! We can close this as duplicate if #1848 gets merged first. This is a focus fix to unblock the deployment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants