pub enum InconclusiveReason {
DataTooNoisy {
message: String,
guidance: String,
},
NotLearning {
message: String,
guidance: String,
},
WouldTakeTooLong {
estimated_time_secs: f64,
samples_needed: usize,
guidance: String,
},
TimeBudgetExceeded {
current_probability: f64,
samples_collected: usize,
},
SampleBudgetExceeded {
current_probability: f64,
samples_collected: usize,
},
ConditionsChanged {
message: String,
guidance: String,
},
ThresholdElevated {
theta_user: f64,
theta_eff: f64,
leak_probability_at_eff: f64,
meets_pass_criterion_at_eff: bool,
achievable_at_max: bool,
message: String,
guidance: String,
},
}Expand description
Reason why a timing test result is inconclusive.
See spec Section 4.1 (Result Types).
Variants§
DataTooNoisy
Data is too noisy to reach a conclusion.
The measurement noise is high enough that we cannot distinguish between “no leak” and “small leak” with the available samples.
Fields
NotLearning
Posterior is not converging toward either threshold.
After collecting samples, the leak probability remains in the inconclusive range and isn’t trending toward pass or fail.
WouldTakeTooLong
Reaching a conclusion would take too long.
Based on current convergence rate, reaching the pass or fail threshold would exceed the configured time budget.
Fields
TimeBudgetExceeded
Time budget exhausted.
The configured time limit was reached before the posterior converged to a conclusive result.
Fields
SampleBudgetExceeded
Sample budget exhausted.
The maximum number of samples was collected without reaching a conclusive result.
Fields
ConditionsChanged
Measurement conditions changed during the test.
Detected by comparing calibration statistics with post-test statistics. This can indicate environmental interference (CPU frequency scaling, concurrent processes, etc.) that invalidates the covariance estimate. See spec Section 2.6, Gate 6.
ThresholdElevated
Threshold was elevated and pass criterion was met at effective threshold.
The measurement floor exceeded the user’s requested threshold, so inference was performed at an elevated effective threshold. The posterior probability dropped below pass_threshold at θ_eff, but since θ_eff > θ_user + ε, we cannot guarantee the user’s original requirement is met.
This is NOT a quality gate failure - it’s a semantic constraint: Pass requires both P < pass_threshold AND θ_eff ≤ θ_user + ε.
See spec Section 3.5.3 (v5.5 Threshold Elevation Decision Rule).
Trait Implementations§
Source§impl Clone for InconclusiveReason
impl Clone for InconclusiveReason
Source§fn clone(&self) -> InconclusiveReason
fn clone(&self) -> InconclusiveReason
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for InconclusiveReason
impl Debug for InconclusiveReason
Source§impl<'de> Deserialize<'de> for InconclusiveReason
impl<'de> Deserialize<'de> for InconclusiveReason
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<InconclusiveReason, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<InconclusiveReason, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Display for InconclusiveReason
impl Display for InconclusiveReason
Source§impl PartialEq for InconclusiveReason
impl PartialEq for InconclusiveReason
Source§impl Serialize for InconclusiveReason
impl Serialize for InconclusiveReason
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for InconclusiveReason
Auto Trait Implementations§
impl Freeze for InconclusiveReason
impl RefUnwindSafe for InconclusiveReason
impl Send for InconclusiveReason
impl Sync for InconclusiveReason
impl Unpin for InconclusiveReason
impl UnwindSafe for InconclusiveReason
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.