pub fn run_queue(
repo: &Path,
base: &str,
prs: &[(u64, String)],
spec: &CommandSpec,
ci: &mut dyn CiExecutor,
) -> Result<QueuedRound, String>Expand description
Runs one speculative round through the D5 merge queue.
This is build_train’s successor and differs from it in what a
verdict is about. build_train merges everything and asks CI once,
so one red change makes every PR in the train red. The queue tests
each change against the state produced by everything ahead of it,
which is the “exactly as if they had been tested one at a time”
property D5 exists for: the green prefix lands, the failure is
blamed on the change that failed, and the window narrows.
Nothing speculative leaves the machine and no ref is moved here. The
caller decides whether to land QueuedRound::tip.
§Errors
The base or a pull request head does not resolve, or the executor speaks a protocol this build does not.