pub fn run_differential(
repo: &Path,
merge: &str,
runner: &Path,
command_file: &Path,
state_dir: &Path,
) -> Result<DifferentialOutcome, String>Expand description
Builds isolated worktrees for a speculative merge’s two parents and the
merge itself, then invokes the explicit choir-differential runner.
This is run_differential_in wrapped in a session of its own, so the
three worktrees are created and destroyed around this one observation and
the command sees a pristine tree. That is the right shape for a speculative
train, where each merge is checked once, and it is the escape hatch for an
operator re-checking a flagged interaction without the previous
observation’s build output present.
§Errors
As run_differential_in, plus a failure to clean the worktrees up.