Repository navigation
Sandbox Experiment Trials and Graders - #1231
Merged
Merged
Conversation
Preserve packet-only Grader sandboxes inside individual memory-capped scopes. Keep launcher-owned startup evidence, cleared Code Grader environments and cap-kill diagnostics; resolve the scope launcher before applying the sandbox PATH. Keep both sandbox and memory-cap documentation. Synchronize both fake Trials before warning in the zero-retry regression: unequal worker startup reproduced its assumption that both Trials had already started. Validation: cargo check, cargo fmt --check, cargo clippy --all-targets -- -D warnings, and scripts/affected-tests origin/issue-977. All 2553 Rust tests passed (58 skipped), as did all 44 site checks. Full affected validation took 1344.43 seconds; Nextest execution took 1289.404 seconds with a cached 0.32-second test build.
Trial sandbox preparation resolves socat before probing bwrap. Both new failure fixtures supplied only bwrap, so CI hosts without socat stopped at the relay dependency instead of reaching the asserted launcher failure. Provide a fixture-local executable relay stub; both launchers fail before it can run, and all Void Trial and diagnostic assertions remain intact. Reproduced both failures with socat excluded from PATH and verified both pass after the fix. Validation: scripts/affected-tests issue-977 (44 browser tests and 2553 Rust tests passed), cargo fmt --check, and cargo clippy --all-targets -- -D warnings.
This was referenced Oct 24, 2026
Merged
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
Graders cannot read Trial logs, Arm mappings or the Experiment's other files.
Unavailable Trial/Code Grader sandboxes produce Void Trials; an unavailable
Model Grader pauses grading so resume can reuse completed Trials.
Seams under test: the whole Experiment/Trial binary against fixture Harnesses,
and the existing bwrap launcher tests. Ordinary integration fixtures retain
the pass-through launcher; new isolation cases run real bwrap.
Closes #1014
Evidence
cargo test --test experiments a_sandboxed_model_grader_sees_only_its_packet -- --nocapturefailed because the Grader could access host paths.After: the same test passes with real bwrap.
After:
cargo test --test experiments code_graders_see_reports_and_repository_but_no_trial_logs_or_arm_paths -- --nocapturepasses.After:
cargo test --test trial a_bwrap_startup_failure_makes_a_trial_void -- --nocapturepasses withsandbox_unavailable.bwrap:diagnostic. Kept every failing regression.cargo test --test experiments sandbox:: -- --nocapturepasses all four named sandbox tests; the exact startup unit test and both pass-through Trial regressions pass.cargo check,cargo fmt --checkandcargo clippy --all-targets -- -D warningspass./usr/bin/time -p scripts/affected-tests 5536630954daf4934f6157522413b1420d331a4fpassed at4a714600: 2,535 Rust tests passed, 58 skipped; 43 site checks passed. Rust execution took 1,226.74 s; all affected checks took 1,339.87 s including compilation (50.50 s) and site checks.SKIPPEDwith bwrap absent from PATH; formatting passes.Unaddressed findings
Standards
None. Both findings addressed: shared toolchain setup and preserved startup I/O errors.
Spec
None. All four findings reproduced and addressed: Arm paths in mount metadata, launcher exec failures, pass-through startup classification and checks whose diagnostics mention bwrap.
Security
None unaddressed. Two introduced findings reproduced with failing tests and fixed: a Trial-planted
.gitsymlink redirecting the code Grader's origin-URL rewrite outside its snapshot (sandbox::tests::code_grader_git_rewrite_stays_inside_its_snapshot), and special files (sockets, FIFOs) in a Trial repository failing the Grader snapshot copy and aborting the whole Experiment (evals::experiment::grading::tests::grader_snapshot_skips_special_files). Both regression tests pass after the fix.Security review outcome
No unaddressed introduced findings.
Review coverage
Independent Standards and Spec reviews used
issue-977fixed at5536630954daf4934f6157522413b1420d331a4f. Both axes read all 18 changed files, including generatedsite/docs/index.html. Changed files left unread: none. Generated-output exclusions: none. Reports, combined files-read lists and verified dispositions are recorded beside the Session trace.Merge Danger
Door: two-way
Blast Radius: Experiments
Code checks receive report copies at neutral paths; raw Trial logs are no
longer available through
THIRDSHIFT_TRIAL_LOG. Model Graders require thesame bwrap, socat and login setup as Trials.
Built with codex · gpt-6.1-sol · xhigh