Skip to main content

QueueReport

Struct QueueReport 

Source
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: String

Final repository state after all merges.

§window_trace: Vec<usize>

Window size after each head decision (for observing TCP dynamics).

§ci_runs: usize

Total CI executions, including retests behind failures.

§merge_invocations: usize

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

Trait Implementations§

Source§

impl Debug for QueueReport

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.