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: Stringvpred_<16hex>, content-addressed.
claim_text: StringThe 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: StringRFC 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: StringUnambiguous 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: ExpectedOutcomeStructured expectation: affirmed / falsified / quantitative / categorical. The resolver checks this against the observed outcome at resolution time.
made_by: StringStable actor id of the predictor.
confidence: f64Predictor’s prior belief in the expected outcome, on [0, 1]. Drives Brier scoring at resolution time.
conditions: ConditionsConditions under which the prediction applies. Reuses the
Conditions shape so model relevance, scope, etc., flow
through.
expired_unresolved: boolv0.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
impl Prediction
Sourcepub fn content_address(
claim_text: &str,
made_by: &str,
predicted_at: &str,
resolution_criterion: &str,
expected_outcome: &ExpectedOutcome,
) -> String
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_”.
Sourcepub 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
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
impl Clone for Prediction
Source§fn clone(&self) -> Prediction
fn clone(&self) -> Prediction
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more