Skip to main content

run_queue

Function run_queue 

Source
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.