Skip to content

Own code Grader execution in one lifecycle - #1286

Merged
JacobStephens2 merged 1 commit into
mainfrom
issue-1285
Oct 25, 2026
Merged

JacobStephens2 merged 1 commit into
mainfrom
issue-1285

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 24, 2026 •

Copy link
Copy Markdown
Owner

Summary

Code Graders own packet preparation, snapshotting, supervised checks and failure classification through one operation returning completed Check records.

Experiment scoring
  sandbox::code_grader::execute
    neutral packet + one repository snapshot
    ordered checks: launch → supervise → classify
    process cleanup → packet cleanup
Trial Reports::read_and_blind → code and model Graders

Closes #1285

Evidence

Seams under test: the Experiment CLI (saved private Scores, interruption/resume, repository/report confinement and cleanup), the Trial CLI (shared Reports), and the existing Model Grader Experiment regressions (redaction).

  • Before: scoring coordinated packet copying, launch commands, scopes and a later startup-status check. The ordered-check characterization test passed against that implementation.
    After: one code_grader::execute(repository, reports, checks, timeout, caps) operation returns completed Check records. Its private implementation retains the packet and launcher evidence through supervised process cleanup. The ordered-check test and new timeout, interruption/resume, special-file and Git confinement regressions pass through the Experiment command.
  • cargo test --test experiments --test trial -- --nocapture: 78 Experiment tests and 25 Trial tests passed; two fixture subprocess entry points intentionally ignored.
  • cargo check --all-targets, cargo fmt --check, and cargo clippy --all-targets -- -D warnings: passed.
  • Real bwrap startup, diagnostic, Arm metadata, report/repository confinement and Git rewrite checks passed. Four focused checks explicitly skipped for the missing systemd user manager: Trial cap isolation, a cap-killed Trial tool, sandboxed Grader caps/startup, and scoped-hog journal evidence. Their environment gates remain intact.
  • /usr/bin/time -p scripts/affected-tests main: passed against main at f298420d30f7535cd04fd1af5031751514f8271d; selected cargo nextest run, with 2,818 passed, 60 skipped and zero failures across 63 binaries. Wall time: 1,628.96 seconds (27m09s), including 1m54s compilation; test execution: 1,512.926 seconds. Eight existing integration/recovery tests were reported slow. Timings include this host's load and cache state.
  • CI passed for reviewed head 88cfe834: Linux tests, macOS gate, site and Console tests, both platform artifact builds and the release-smoke gate. Conditional full macOS/release-publishing jobs were skipped by CI policy.

Merge Danger

Door: two-way

Blast Radius: Graders

Retained Check, Reports and Score formats stay compatible.

Unaddressed findings

Standards

None. Independent review returned zero findings.

Spec

None. Independent review returned zero findings.

Both reviewers read all ten changed files, including supporting code and standards. Unread changed files: none. Generated-output exclusions: none. Full reports with each axis's final files-read list are retained in the Session artifacts at .thirdshift-review-q5jPbt/standards.md and .thirdshift-review-q5jPbt/spec.md.

Security

None unaddressed. Focused security review of the f298420d30f7535cd04fd1af5031751514f8271d...HEAD diff (guidance mode, no findings fixed, no code changed by this review).

  • The change is a mechanical extraction: copy_repository moved byte-identical from src/evals/experiment/grading.rs to src/sandbox/code_grader.rs; report blind moved identical (visibility only) from src/evals/experiment/model_grader.rs to src/trial/reports.rs; sandbox launch, confined Git origin rewrite, --clearenv environment, launcher-owned startup-status check, and the interruption → OOM → startup → ordinary-check classification order are unchanged. The only production caller already passed caps, so requiring &Caps drops only the standalone-test None path.
  • Confinement evidence, all passing: sandbox::code_grader_git_rewrite_stays_inside_its_snapshot (now covers both .git-directory and .git/config symlinks through the Experiment command), sandbox::code_graders_cannot_read_arm_labels_from_mountinfo, sandbox::code_graders_see_reports_and_repository_but_no_trial_logs_or_arm_paths, sandbox::code_grader_exec_failure_voids_trial, code_graders::snapshot_preserves_files_directories_and_symlinks_but_skips_special_files, plus timeout/interruption cleanup and 12 model-grader blinding regressions and 25 Trial tests.
  • No repository SECURITY.md or threat model found; reviewed against the skill's resource/file-handling, access-control, data-isolation, and chained-trust-boundary classes. No introduced finding had a failing proof-of-concept, so nothing was fixed here.

Built with codex · gpt-6.1-sol · xhigh

Security review outcome

No unaddressed introduced findings.

@JacobStephens2
JacobStephens2 merged commit ed00d8d into main Oct 25, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1285 branch October 25, 2026 00:05
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.

Deepen code Grader execution into one owned lifecycle

1 participant