pub struct BetaCounters {
pub alpha: u32,
pub beta: u32,
}Expand description
A detector’s running Beta posterior counters. Always ≥1 each (Beta(1,1) uniform prior baseline) to avoid posterior_mean undefined when a detector has had no observations yet.
Fields§
§alpha: u32§beta: u32Implementations§
Source§impl BetaCounters
impl BetaCounters
Sourcepub fn posterior_mean(&self) -> f64
pub fn posterior_mean(&self) -> f64
Posterior mean: α / (α + β). Falls in [0, 1]; the higher, the more reliable the detector is historically.
This is the single canonical implementation. The scanner
confidence pipeline and the keyhog calibrate --show UI both call
this method rather than re-deriving the arithmetic, so the three
crates can never drift apart.
Sourcepub fn observations(&self) -> u32
pub fn observations(&self) -> u32
Number of observations (excluding the prior) the posterior is built on. Useful for “trust the recent history” UI gates.
kimi-confidence audit: the previous form was
alpha.saturating_sub(1) + beta.saturating_sub(1) - the +
was a plain add and would panic in debug / wrap to 0 in release
once both counters reached ~u32::MAX / 2. Use saturating_add
so the result clamps at u32::MAX instead of wrapping. That’s
still a frozen counter at saturation, but the posterior mean
stays correct and no detector silently gets disabled.
Public for the same single-source-of-truth reason as
BetaCounters::posterior_mean: the scanner observation gate and
the CLI --show table share this one implementation.
Trait Implementations§
Source§impl Clone for BetaCounters
impl Clone for BetaCounters
Source§fn clone(&self) -> BetaCounters
fn clone(&self) -> BetaCounters
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BetaCounters
Source§impl Debug for BetaCounters
impl Debug for BetaCounters
Source§impl Default for BetaCounters
impl Default for BetaCounters
Source§impl<'de> Deserialize<'de> for BetaCounters
impl<'de> Deserialize<'de> for BetaCounters
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 BetaCounters
Source§impl PartialEq for BetaCounters
impl PartialEq for BetaCounters
Source§impl Serialize for BetaCounters
impl Serialize for BetaCounters
impl StructuralPartialEq for BetaCounters
Auto Trait Implementations§
impl Freeze for BetaCounters
impl RefUnwindSafe for BetaCounters
impl Send for BetaCounters
impl Sync for BetaCounters
impl Unpin for BetaCounters
impl UnsafeUnpin for BetaCounters
impl UnwindSafe for BetaCounters
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,
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§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