Skip to content

Commit 4edfe12

Browse files
committed
swe-atlas-qna: keep Modal sandboxes alive under the images' ENTRYPOINT
Root cause of every swe-atlas trial dying at setup: the task images set ENTRYPOINT ["/bin/bash"], Modal prepends it to the sandbox command, so harbor's default keepalive ["sh","-c","sleep infinity"] ran as 'bash sh -c ...' - bash interprets the sh binary as a script and exits 126, killing the sandbox before the first exec. Pass bash's own args via the JSON-decoded keepalive env kwarg instead. Validated end-to-end on Modal (3 dev trials, 379-602s wall). CONFIGURATION.md records the empirical probe timings behind the provisional case timeouts.
1 parent 8fcdcb6 commit 4edfe12

2 files changed

Lines changed: 11 additions & 6 deletions

File tree

harness-engineering-bench/CONFIGURATION.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ benchmark can be checked against the others at a glance.
5454
| verifier_timeout_seconds | 7200 | 14400 | 28800 | 28800 |
5555
| harness_user | harness | harness | null ‡ | null ‡ |
5656
| task_services_use_upstream | false | false | true (rubric judge) | true (user-sim + grader) |
57-
| task-specific extras || `--no-force-build` (prebuilt corpus image) | | `TAU2_*` model pins |
57+
| task-specific extras || `--no-force-build` (prebuilt corpus image) | `keepalive` --ek (ENTRYPOINT images) | `TAU2_*` model pins |
5858

5959
## Conventions
6060

@@ -67,9 +67,10 @@ benchmark can be checked against the others at a glance.
6767
candidate and the baseline test evaluations.
6868
- **Case budgets** are 4× the partition size, i.e. four full passes.
6969

70-
† Provisional. These enforced budgets were set without empirical data;
71-
revisit them against the `wall_seconds` / `mean_case_wall_seconds` metrics
72-
once runs have produced distributions.
70+
† Sized from stock-agent probes (codex on the target model, 3 development
71+
tasks each, full declared timeouts): tau3 trials took 202-211s (900s budget
72+
≈ 4x headroom) and swe-atlas trials 379-602s (1800s ≈ 3x headroom over the
73+
slowest). Revisit against `wall_seconds` distributions from real runs.
7374

7475
‡ Exception to the harness-isolation default: these tasks run LLM services
7576
(rubric judge, user-simulator/grader) inside their task containers, which

harness-engineering-bench/swe-atlas-qna/baseline/build.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,12 @@ rescore_attempts: 1
4747

4848
model: openai/gpt-5.4-mini-2026-03-17
4949
environment_name: ${inner_env:-modal}
50-
# inner eval sandboxes share a dedicated Modal app instead of the __harbor__ default
51-
extra_harbor_args: ["--ek", "app_name=harness-engineering-bench", "--ek", "sandbox_idle_timeout_secs=3600"]
50+
# inner eval sandboxes share a dedicated Modal app instead of the __harbor__ default.
51+
# keepalive: these images set ENTRYPOINT ["/bin/bash"], which Modal prepends to the
52+
# sandbox command; harbor's default keepalive ["sh","-c","sleep infinity"] then dies
53+
# instantly (bash interprets the sh binary as a script) and every trial fails with
54+
# "Sandbox already shut down". Passing bash's own args keeps the sandbox alive.
55+
extra_harbor_args: ["--ek", "app_name=harness-engineering-bench", "--ek", "sandbox_idle_timeout_secs=3600", "--ek", 'keepalive=["-c","sleep infinity"]']
5256
harbor_python_version: "3.12"
5357
n_attempts: 1
5458
max_retries: 1

0 commit comments

Comments
 (0)