Repository navigation
Closed
Labels
enhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Description
This was generated by AI during a grill-with-docs session.
Parent
What to build
End-to-end Custom runner Arm preparation and Trial execution on process Eval suites (#1468 Q1.1–Q1.3, Q1.5, Q1.7, Q2.1–Q2.3, Q2.5, Q3.2; ADR 0032).
- Symmetric CLI selection and validation:
evals prepare-armsandexperimentaccept--baseline-runner <name-or-file.toml>and--candidate-runner <name-or-file.toml>(resolved from~/.thirdshift/runners/<name>.tomlor an explicit.tomlpath). Whenever either Arm uses a Custom runner,--suiteis required and every named suite must be aprocesssuite;code-reviewsuites,spec-reviewsuites,--release, and combining--*-runnerwith a commit,--*-process,--*-harness,--*-model, or--*-efforton the same Arm are refused before dispatch. When--candidate-runneris set, the positional<candidate>commit is omitted; when Baseline is a thirdshift build and Candidate is a Custom runner,--baselinedefaults toHEAD; when both Arms are Custom runners, neither a thirdshift checkout nor a Cargo build is needed. - Manifest freezing and provenance:
prepare-armsfreezes the manifest (command = [...]argv with no shell splitting, mappedfiles, optionalrolesmap, and optionalgit_excludepatterns) and every file or folder infilesby SHA-256—placing each either in the frozen bundle (runner_dir) or at a validated relative path inside freshHOME(rejecting..and absolute targets). When a source path sits inside a Git worktree, record its repository origin/path,HEADcommit, anddirtyboolean as provenance without refusing uncommitted local edits. Verify every frozen file's SHA-256 before each Trial starts. Setupformat 13: makecommitandharnessnullable (nullon a Custom-runner Arm) and addrunnerandrunner_digesttoSetup, bumping the Experiment result format to 13 so Experiment identity, resume checks, and per-Arm cost history key accurately off the Custom runner.- Trial execution,
git_exclude, and grading: before launching the Custom runner in the prepared repository, appendgit_excludepatterns to.git/info/excludealongside.thirdshift-issue.md. Pass version-1request.json(version,repository,issue_file,issue_url,base,branch,runner_dir,output_dir,record_command). Run strictly unattended with no simulated user. Read committedHEADand version-1output_dir/result.json(delivered,stopped_to_ask,failed, orvoidrestricted tosession_unavailable,usage_limit,rate_limit; outer supervision keeps precedence). Record missing/unreadableresult.json, unexplained nonzero exit, claiming an outervoid_cause, or committing a path matchinggit_excludeonHEADas afailedTrial (with exit status and stderr incause) rather than aborting the Experiment. Ignore uncommitted working-tree files during grading (noting them in Trial diagnostics), gradeHEADthrough code Graders and Pair evidence, and countstopped_to_askas a failed Score tallied underoutcomes.stopped_to_ask.
Acceptance criteria
- If not already on the base branch,
GLOSSARY.mddefines Custom runner (and broadens Arm, Trial, Experiment, and Credentials) anddocs/adr/0032-custom-runners-run-inside-one-trial-sandbox.mdrecords the Custom runner boundary. - An Experiment can pit a thirdshift Process Arm against a Custom runner, a Custom runner against a thirdshift Process Arm, or two Custom runners against each other (with no thirdshift checkout or Cargo build when both Arms are Custom runners), grading committed
HEADwith code Graders and Pair evidence. -
code-reviewsuites,spec-reviewsuites,--release, missing--suite, and conflicting per-Arm flags/commit arguments with--*-runnerfail validation before dispatch. - Frozen bundle files and fresh-
HOMEmapped skill trees are verified by SHA-256 before every Trial (aborting if tampered), reject..and absolute target paths, and record Git repository/commit/dirtyprovenance without refusing dirty local worktrees. - Format-13
Setupstores nullablecommit/harnessplusrunnerandrunner_digest, preserving Experiment resume identity and per-Arm cost-estimate lookup across commits. -
git_excludekeeps runner scratch files out ofgit add ., and a Custom runner that force-commits agit_excludepath, exits nonzero without outer Void evidence, omitsresult.json, or claims an outervoid_causerecords that Trial asfailedwithout aborting the Experiment.
Blocked by
- None (can start immediately).
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Activity
JacobStephens2 commentedon Nov 14, 2026
Closed by #2194, merged into issue-1468 by a thirdshift Ticket run with Self-merge.