Skip to main content

Prediction

Struct Prediction 

Source
pub struct Prediction {
    pub id: String,
    pub claim_text: String,
    pub target_findings: Vec<String>,
    pub predicted_at: String,
    pub resolves_by: Option<String>,
    pub resolution_criterion: String,
    pub expected_outcome: ExpectedOutcome,
    pub made_by: String,
    pub confidence: f64,
    pub conditions: Conditions,
    pub expired_unresolved: bool,
}
Expand description

v0.34: Prediction as a first-class kernel object.

A Prediction is a falsifiable claim about a future observation, scoped to one or more existing findings, made by a registered actor at a known timestamp, with an explicit resolution criterion and (typically) a deadline. Resolutions arrive later as Resolution records that close out the prediction by recording what actually happened.

Predictions are the kernel’s epistemic accountability layer. Other parts of the substrate describe what is believed today; predictions describe what is expected and let the substrate score, over time, how well each actor’s beliefs track reality. Calibration records (Brier, log score, hit rate) are derived from the resolved subset.

vpred_<id> is content-addressed over claim_text + made_by + predicted_at + resolution_criterion. Two predictions with the same prose but different actors or different criteria are distinct kernel objects.

Fields§

§id: String

vpred_<16hex>, content-addressed.

§claim_text: String

The falsifiable prediction itself, in plain prose.

§target_findings: Vec<String>

Existing vf_* findings whose truth this prediction depends on. May be empty for predictions that don’t tie back to a specific frontier claim.

§predicted_at: String

RFC 3339 timestamp of when the prediction was made. Goes into the content-address preimage so re-asserting the same prose at a later date produces a distinct record.

§resolves_by: Option<String>

RFC 3339 deadline for resolution. None means open-ended; a concrete date is strongly preferred for calibration scoring.

§resolution_criterion: String

Unambiguous prose that says “we’ll know this resolved when X.” Goes into the content-address preimage so the same prose with a different criterion is a distinct record.

§expected_outcome: ExpectedOutcome

Structured expectation: affirmed / falsified / quantitative / categorical. The resolver checks this against the observed outcome at resolution time.

§made_by: String

Stable actor id of the predictor.

§confidence: f64

Predictor’s prior belief in the expected outcome, on [0, 1]. Drives Brier scoring at resolution time.

§conditions: Conditions

Conditions under which the prediction applies. Reuses the Conditions shape so model relevance, scope, etc., flow through.

§expired_unresolved: bool

v0.40.1: True once the calibration runtime has marked this prediction as expired without an explicit Resolution. Set by calibration::expire_overdue_predictions when resolves_by is in the past. Pre-v0.40.1 frontiers omit the field; loading is backward-compatible. An expired prediction does not become a resolved prediction — it is closed without contributing to Brier or log scoring (calibration tracks it as a separate n_expired count so the predictor still answers for the missing commitment).

Implementations§

Source§

impl Prediction

Source

pub fn content_address( claim_text: &str, made_by: &str, predicted_at: &str, resolution_criterion: &str, expected_outcome: &ExpectedOutcome, ) -> String

Compute the content-addressed ID per v0.34 spec: SHA-256(normalize(claim_text) | made_by | predicted_at | normalize(resolution_criterion) | expected_outcome.canonical()). Returns first 16 hex chars prefixed with “vpred_”.

Source

pub fn new( claim_text: impl Into<String>, target_findings: Vec<String>, predicted_at: Option<String>, resolves_by: Option<String>, resolution_criterion: impl Into<String>, expected_outcome: ExpectedOutcome, made_by: impl Into<String>, confidence: f64, conditions: Conditions, ) -> Self

Construct a new Prediction. predicted_at defaults to “now” in RFC 3339 if not supplied.

Trait Implementations§

Source§

impl Clone for Prediction

Source§

fn clone(&self) -> Prediction

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Prediction

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Prediction

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Prediction

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,