pub struct Replication {
pub id: String,
pub target_finding: String,
pub attempted_by: String,
pub outcome: String,
pub evidence: Evidence,
pub conditions: Conditions,
pub provenance: Provenance,
pub notes: String,
pub created: String,
pub previous_attempt: Option<String>,
}Expand description
v0.32: Replication as a first-class kernel object.
Before v0.32, replication was encoded as Evidence.replicated: bool
Evidence.replication_count: u32— a scalar property on the finding. The kernel could not represent “lab A replicated this in human iPSC; lab B failed to replicate in mouse OPCs” — those are distinct epistemic facts, not a single count.
Each Replication is content-addressed (vrep_<16hex>) over its
target finding, the actor that attempted it, the canonical
conditions, and the outcome. This mirrors the vf_<id> pattern and
makes replication chains queryable, citeable, and propagable through
the link graph.
The legacy Evidence.replicated and Evidence.replication_count
fields are preserved for backward compatibility; v0.32+ frontiers
derive them from the structured collection on load.
Fields§
§id: Stringvrep_<16hex>, content-addressed; see Replication::content_address.
target_finding: Stringvf_<id> of the finding being replicated.
attempted_by: StringStable actor id of the lab / curator / agent that attempted the
replication. Same shape as FindingBundle.actor references.
outcome: StringOne of replicated, failed, partial, inconclusive.
Stored as a string for forward-compat with future outcome
taxonomies; validated against VALID_REPLICATION_OUTCOMES.
evidence: EvidenceEvidence collected from the replication attempt. Reuses the
existing Evidence shape so confidence math stays consistent.
conditions: ConditionsConditions under which the replication was attempted (model system, species, in_vivo/vitro, etc.). The conditions field is what makes “replicated in mouse but failed in human” a representable fact.
provenance: ProvenanceProvenance of the replicating paper / preprint / lab notebook.
notes: StringFree-text reviewer note. Often the most important field for partial / inconclusive outcomes.
created: StringOriginal creation timestamp (RFC 3339).
previous_attempt: Option<String>If this attempt extends or refines a previous one, the
vrep_<id> of that earlier attempt. Allows replication chains
(lab A → lab B refines → lab C generalizes).
Implementations§
Source§impl Replication
impl Replication
Sourcepub fn content_address(
target_finding: &str,
attempted_by: &str,
conditions: &Conditions,
outcome: &str,
) -> String
pub fn content_address( target_finding: &str, attempted_by: &str, conditions: &Conditions, outcome: &str, ) -> String
Compute the content-addressed ID per v0.32 spec:
SHA-256(target_finding | attempted_by | normalize(conditions.text) | outcome).
Returns first 16 hex chars prefixed with “vrep_”.
conditions.text is normalized by the same lower/whitespace/punct
rules as FindingBundle::normalize_text so two replications with
trivially-different condition prose produce the same id only when
the substantive conditions match.
Sourcepub fn new(
target_finding: impl Into<String>,
attempted_by: impl Into<String>,
outcome: impl Into<String>,
evidence: Evidence,
conditions: Conditions,
provenance: Provenance,
notes: impl Into<String>,
) -> Self
pub fn new( target_finding: impl Into<String>, attempted_by: impl Into<String>, outcome: impl Into<String>, evidence: Evidence, conditions: Conditions, provenance: Provenance, notes: impl Into<String>, ) -> Self
Construct a new Replication with a freshly-derived id and
created timestamp set to now.
Trait Implementations§
Source§impl Clone for Replication
impl Clone for Replication
Source§fn clone(&self) -> Replication
fn clone(&self) -> Replication
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more