pub struct ReleaseBumpStats {
pub merged: usize,
pub recorded: usize,
pub pr_opened: usize,
pub automerge_enabled: usize,
pub merged_directly: usize,
pub needs_attention: usize,
}Expand description
What the post-merge release-bump step did, across every merged run.
merged is the denominator for Self::coverage_rate: a repository
that never uses the release-bump step (no auto-tag.yml, see
kata:agents:rust:*) should read as “0 of N merged runs recorded a
bump”, not vanish from the report the way it would if recorded were the
denominator instead — silently excluding those runs would hide the
coverage gap itself.
Fields§
§merged: usizeMerged runs, the denominator for Self::coverage_rate.
recorded: usizeMerged runs that carry a crate::run::ReleaseBump record at all.
pr_opened: usizeRecorded bumps that opened a release pull request.
automerge_enabled: usizeRecorded bumps whose automerge_enabled is true at the point the
bump step finished. This is the final state, not “was automerge
enabled at some point” — bump::surface_problem flips it back to
false when GitHub later rejects automerge, so a bump that briefly
enabled it and then had it rejected counts here as not enabled.
merged_directly: usizeRecorded bumps magi merged directly because GitHub refused automerge
on an already-green pull request. Counted apart from
automerge_enabled on purpose: a merged_directly bump needed no
human even though automerge itself never took, so folding it into
(or leaving it out of) the automerge count would misstate either
number.
needs_attention: usizeRecorded bumps that ended with crate::run::RunState::needs_attention
true — a human has something to do.
Implementations§
Source§impl ReleaseBumpStats
impl ReleaseBumpStats
Sourcepub fn coverage_rate(&self) -> f64
pub fn coverage_rate(&self) -> f64
Share of merged runs that recorded a release bump at all.
Sourcepub fn automerge_rate(&self) -> f64
pub fn automerge_rate(&self) -> f64
Share of opened release PRs that ended with automerge enabled.
Sourcepub fn attention_rate(&self) -> f64
pub fn attention_rate(&self) -> f64
Share of recorded bumps that needed a human.
Sourcepub fn clean(&self) -> usize
pub fn clean(&self) -> usize
Recorded bumps that finished with nothing for a human to do.
Deliberately the difference recorded - needs_attention, not a
separate counter kept in step with automerge_enabled: a bump that
GitHub refused automerge on but that magi merged directly
(merged_directly) is clean — nobody had to act — even though
automerge_enabled is false for it. Counting clean bumps as
automerge_enabled alone would leave merged_directly cases in
neither the clean nor the attention bucket, and the two would stop
summing to recorded.
Trait Implementations§
Source§impl Clone for ReleaseBumpStats
impl Clone for ReleaseBumpStats
Source§impl Debug for ReleaseBumpStats
impl Debug for ReleaseBumpStats
Auto Trait Implementations§
impl Freeze for ReleaseBumpStats
impl RefUnwindSafe for ReleaseBumpStats
impl Send for ReleaseBumpStats
impl Sync for ReleaseBumpStats
impl Unpin for ReleaseBumpStats
impl UnsafeUnpin for ReleaseBumpStats
impl UnwindSafe for ReleaseBumpStats
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more