Skip to main content

Verdict

Struct Verdict 

Source
#[non_exhaustive]
pub struct Verdict { pub gates: Vec<String>, pub trail: Vec<String>, pub notes: Option<(Mirror, Mirror)>, pub legacy_notes: Option<(Mirror, Mirror)>, pub verified_under: Vec<String>, pub loud: Vec<String>, pub warnings: Vec<String>, }
Expand description

What the verifier concluded, and how it got there.

The trail is not decoration. Fail-open’s worst property is silence: when a skip does not happen, nothing tells you whether the attestation was absent, stale, signed by another key, or minted on another platform. Carrying the reasons out of the same code path that made the decision is what keeps explain from becoming a second, drifting implementation of covered.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§gates: Vec<String>

Covered gate names, first-appearance order, no duplicates. Empty means nothing is covered.

§trail: Vec<String>§notes: Option<(Mirror, Mirror)>

What became of refs/notes/greengate-attest and …-inputs, in that order; None when the verifier stopped before reading any notes.

§legacy_notes: Option<(Mirror, Mirror)>

The same for refs/notes/amont-attest and …-inputs, the LEGACY names that are read until the census.

§verified_under: Vec<String>

The namespace of every name set a block verified under (greengate-attest, amont-attest), first-appearance order. Shown even without explain: it is the line the rollout counts.

§loud: Vec<String>

Lines that report a change to the repository’s refs. They are shown even without explain: data went away, and they say how to restore it.

§warnings: Vec<String>

Lines that say something committed is deprecated, also in the trail where they arose. Shown even without explain, so the repository hears it before the old form stops working.

Implementations§

Source§

impl Verdict

Source

pub fn nothing(reason: impl Into<String>) -> Self

Nothing covered, for one reason, before any notes were read: what a caller reports when it cannot even start (no signers file, say).

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.