pub enum Finding {
Chain {
run: RunId,
detail: String,
},
NotInLog {
run: RunId,
},
BadInclusion {
run: RunId,
},
LeafMismatch {
run: RunId,
},
SealClaim {
run: RunId,
},
NotAppendOnly {
old_size: u64,
},
WrongLog {
theirs: String,
ours: String,
},
Shrunk {
old_size: u64,
now: u64,
},
}Expand description
One thing wrong with a plane’s history.
Variants§
Chain
NotInLog
BadInclusion
LeafMismatch
The chain the store served is not the chain the log committed to.
The one that catches a truncated-but-internally-consistent record set: a prefix of a chain verifies on its own, and the leaf the log holds is the terminal hash of the whole run — so an audit that verified the records and then checked the store-supplied leaf against the tree, without ever holding the two to each other, was verifying two halves of two different claims.
SealClaim
The sealing record’s own claim disagrees with the chain it sits in.
RunSealed.chain_head is the head the conclusion was drawn over — by
construction, the record’s own prev_hash. A mismatch means the
conclusion was composed against a different history than the one it was
appended to, which no honest writer produces.
NotAppendOnly
The one that needs an outside artifact.
WrongLog
Shrunk
Trait Implementations§
impl Eq for Finding
Source§impl Error for Finding
impl Error for Finding
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
impl StructuralPartialEq for Finding
Auto Trait Implementations§
impl Freeze for Finding
impl RefUnwindSafe for Finding
impl Send for Finding
impl Sync for Finding
impl Unpin for Finding
impl UnsafeUnpin for Finding
impl UnwindSafe for Finding
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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