Repository navigation
Keep persistent sandbox sessions responsive over HTTP - #528
abhishekraok wants to merge 15 commits into
Conversation
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 361fc566d5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Written by Claude Code session eval-metrics-handoff Cross-family review (Claude, of this Codex-written PR): ready. It has one cleanup bug, now fixed in 9db5e95.
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Written by Claude Code session 27c852a2-737f-40d7-a147-784d52aa3a9b Replies to the cross-family review's non-blocking notes:
Also merged the updated base ( |
# Conflicts: # README.md # src/olmo_eval/harness/sandbox/server_command.py
Codex · codex://threads/01a1326f-ed81-75e3-80e4-661392dbe4b5; updated by Claude Code session 27c852a2-737f-40d7-a147-784d52aa3a9b
SWE-ReX persistent shell calls block its HTTP loop while waiting for pexpect output. Run shell lifecycle/actions in serialized workers so health checks and file requests remain responsive while shell state persists. Cancellation, explicit interrupts, and closure stop the active reader before another operation reads the terminal; ignored interrupts escalate against that terminal's foreground process group. Serialize registry mutations to preserve domain errors during concurrent create/close operations.
Refs remaining sandbox HTTP paths (#483). Its parent, sandbox-http-responsive (#527), merged on 2026-11-12; this now targets main. No task specs, scores, dependencies, default images, or sandbox restart policy change. An interrupt of an active reader acknowledges its stop; the interrupted command retains its own captured output.
Validation:
uv run --no-sync ruff check src/ tests/,uv run --no-sync ruff format --check src/ tests/, anduv run --no-sync ty check src/pass.uv run --no-sync pytest tests/ --ignore=tests/integration -v --basetemp=/tmp/oe483sfinal: 5,085 passed, 41 skipped with bundled Git 2.53. macOS emits pexpect/forkpty threading warnings; a real Linux container also passed.The production executor supplies finite action timeouts. Active interruption sends SIGINT, allows 0.5 seconds of grace, then targets the terminal's foreground process group if needed. The verified scope is the executor's finite-timeout paths plus the specific ignored-SIGINT canary above.
Remaining robustness follow-ups under (#483): exotic unbounded actions with background processes holding the PTY, cleanup failures that complicate reader ownership, repeated shutdown cancellation, and active-interrupt/completion races. Keep the issue open for these cases.
Final independent review found no blocking defects. Earlier CI passed before the review correction; refreshed CI is running on the new head. No merge is requested. The updated head runs explicit CI, since automatic PR CI targets main.
Review correction (
a4be0e17): reader timeout during interrupt grace, both completion-boundary windows, overlapping cancellation, natural completion, and failed compound-action prompt drains now retain exclusive cleanup ownership. A reader timeout is handled before the grace timeout exception; prompt draining avoids another SIGINT to an idle shell. The latest correction passes 35 scoped session/command tests plus lint, formatting, and type checks; refreshed CI above verifies the new head.