pub struct QueueReport {
pub merged: Vec<u64>,
pub rejected: Vec<(u64, Rejection)>,
pub final_state: String,
pub window_trace: Vec<usize>,
pub ci_runs: usize,
pub merge_invocations: usize,
pub replayed: Vec<u64>,
pub provider_error: Option<String>,
pub unreported_checks: Vec<String>,
}Expand description
Outcome of draining a queue.
Fields§
§merged: Vec<u64>Changes merged, in merge order.
rejected: Vec<(u64, Rejection)>Changes rejected, with reasons.
final_state: StringFinal repository state after all merges.
window_trace: Vec<usize>Window size after each head decision (for observing TCP dynamics).
ci_runs: usizeTotal CI executions, including retests behind failures.
merge_invocations: usizeTotal strategy-pipeline invocations. A change resolved from
memory::ResolutionMemory does not invoke the pipeline, which
is what a test counts to prove a replay happened.
replayed: Vec<u64>Changes whose conflict was resolved from memory, in train order. Every one of them still ran CI: replay produces a candidate, never a landing.
provider_error: Option<String>Why the drain stopped early without blaming a change (D18).
Set when the executor produced no verdict, or an inconclusive
one: a provider that could not be reached, a batch whose
verdict count did not match its jobs, a job that errored or
timed out. Everything not landed is back in the queue, in
order, and nothing was rejected on account of it – which is the
distinction the old bool seam could not make.
unreported_checks: Vec<String>Check reports the sequencer refused, verbatim (D49).
Empty unless MergeQueue::set_check_reporter was called. A
refused report is not a landing decision – the merge already
happened or did not on the verdict itself – but silence about
it would leave the log missing checks with nothing saying so,
which is the shape of a bug nobody finds.