pub enum RungId {
ScopeReach,
KeyParse,
RegistryDeclared,
OriginAlive,
PublisherDeclared,
StorageCoverage,
StoredValue,
SampleFreshness,
AdminAnswered,
WireHeard,
}Expand description
Every rung the why ladder can put, in ladder order.
The same promise as CheckId, for the same
reason: scripts key on these ids and the GUI renders them, so new rungs
append and nothing renames one. It carries its own question, because the
question is serialized beside the id — they are one fact, and keeping
them apart is what let a match on the id go stale silently (#347).
Variants§
ScopeReach
KeyParse
RegistryDeclared
OriginAlive
PublisherDeclared
StorageCoverage
StoredValue
SampleFreshness
AdminAnswered
WireHeard
Implementations§
Source§impl RungId
impl RungId
Sourcepub const ALL: [RungId; 10]
pub const ALL: [RungId; 10]
The ladder, in order. The why report emits exactly this, once each —
a property that used to rest on a debug_assert_eq!, which only ran
in debug builds.
Sourcepub fn question(self) -> &'static str
pub fn question(self) -> &'static str
The question this rung puts, as prose — carried on the wire beside the
id, which is why it lives on the type rather than in a match the
compiler could not check.
Sourcepub fn is_cause_when_unestablished(self) -> bool
pub fn is_cause_when_unestablished(self) -> bool
Whether a not-established answer on this rung explains the silence.
Policy, not rendering: both explorers and any script keying on the
ndjson must agree on what exit 0 meant. The five that do are the ones
whose failure is the reason nothing arrives. The five that do not,
and why: publisher-declared because publishers declare lazily
(RFC 08 §6.1), storage-coverage because uncovered volatile state is
a legitimate deployment (RFC 04 §3.5), stored-value and
wire-heard because an unanswered bounded ask is the very silence
under investigation, and admin-answered because an absent admin
space impairs the observation rather than explaining the key.
Trait Implementations§
impl Copy for RungId
Source§impl<'de> Deserialize<'de> for RungId
impl<'de> Deserialize<'de> for RungId
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for RungId
impl StructuralPartialEq for RungId
Auto Trait Implementations§
impl Freeze for RungId
impl RefUnwindSafe for RungId
impl Send for RungId
impl Sync for RungId
impl Unpin for RungId
impl UnsafeUnpin for RungId
impl UnwindSafe for RungId
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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