pub struct StructureLedger { /* private fields */ }Expand description
The dictionary’s claim ledger: every structural claim the discovery
stack makes, each with its own e-process. Serializable — evidence
resumes across corpus shards (#973) by persisting the ledger, not by
refitting. Calling StructureLedger::certify at ANY data-dependent
stopping time yields a valid certificate; that is the entire point.
Implementations§
Source§impl StructureLedger
impl StructureLedger
pub fn new() -> Self
Sourcepub fn register(&mut self, kind: ClaimKind) -> usize
pub fn register(&mut self, kind: ClaimKind) -> usize
Register a claim and return its ledger index. Idempotent on the claim kind: re-registering an existing claim (a resumed shard loop re-announcing its claim surface) returns the existing index and PRESERVES its accumulated evidence — a fresh e-process here would silently discard the stream’s history.
Sourcepub fn absorb_log(&mut self, idx: usize, log_e_value: f64) -> Result<(), String>
pub fn absorb_log(&mut self, idx: usize, log_e_value: f64) -> Result<(), String>
Absorb one conditionally-valid log e-value for claim idx (a
universal-inference shard ratio, a frozen-prior log-BF — the
caller’s contract is per-source, documented on the producing gate).
pub fn claims(&self) -> &[StructuralClaim]
Sourcepub fn absorb_probe_outcome(
&mut self,
idx: usize,
log_lik_alt_on_outcome: f64,
log_lik_null_on_outcome: f64,
) -> Result<(), String>
pub fn absorb_probe_outcome( &mut self, idx: usize, log_lik_alt_on_outcome: f64, log_lik_null_on_outcome: f64, ) -> Result<(), String>
The likelihood half of the probe-design loop (work-plan step 4):
after running a planned probe (ProbePlan →
crate::inference::steering::steer_delta), evaluate the REALIZED
outcomes under both hypotheses’ predictive densities and absorb the
log-ratio into the contested claim’s e-process.
Validity contract: both predictive densities must be FROZEN before the
probe outcome is observed — which the design loop satisfies by
construction, since both hypotheses’ dictionaries were fitted before
the probe was even chosen. For a composite null, the null density must
be the honest constrained fit (the same rule as
split_likelihood_log_e_value, which this delegates to); for a
simple null the predictive density is the sup. Probe outcomes are new
data by construction (the model was steered to produce them), so they
compound validly with the claim’s prior shard evidence.
Sourcepub fn certify(&self, alpha: f64) -> StructureCertificate
pub fn certify(&self, alpha: f64) -> StructureCertificate
The dictionary certificate: e-BH over the ledger’s CURRENT e-values at level α. FDR ≤ α over the confirmed set under arbitrary dependence — atoms sharing every token is fine — and valid at any stopping time because each entry is an e-process. Claims not confirmed are CONTESTED, never rejected (demote-never-reject); they keep their evidence and are the inputs to the probe-design loop.
Trait Implementations§
Source§impl Clone for StructureLedger
impl Clone for StructureLedger
Source§fn clone(&self) -> StructureLedger
fn clone(&self) -> StructureLedger
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StructureLedger
impl Debug for StructureLedger
Source§impl Default for StructureLedger
impl Default for StructureLedger
Source§fn default() -> StructureLedger
fn default() -> StructureLedger
Source§impl<'de> Deserialize<'de> for StructureLedger
impl<'de> Deserialize<'de> for StructureLedger
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>,
Auto Trait Implementations§
impl Freeze for StructureLedger
impl RefUnwindSafe for StructureLedger
impl Send for StructureLedger
impl Sync for StructureLedger
impl Unpin for StructureLedger
impl UnsafeUnpin for StructureLedger
impl UnwindSafe for StructureLedger
Blanket Implementations§
impl<T> Allocation for T
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<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
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
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
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.