pub struct ForkOrigin {
pub run_id: RunId,
pub through_seq: SequenceNumber,
pub from_node: String,
pub graph_hash: String,
pub acknowledged_writes: Vec<u64>,
}Expand description
The recorded link from a forked run back to the run it forked from.
A fork is a new run, never a mutation of the origin: its log opens with the
origin’s prefix (every event with seq below the fork boundary) rewritten
under the fork’s own run id, and ForkOrigin rides on the fork’s
Event::GraphRunStarted at seq 0 as the durable fact of that descent. The
origin is immutable and never points forward at its forks; “forks of this
run” is a derived server-side index over this field, not something the
origin records.
Carries no floats, so it derives Eq (unlike Budget); every field is
plain recorded data.
Fields§
§run_id: RunIdThe run this fork descends from.
through_seq: SequenceNumberThe boundary the prefix was taken through: the fork’s log carries the
origin’s events with seq below the Event::NodeEntered that the
fork restarts from. A genuine log position, so it rides as a
SequenceNumber.
from_node: StringThe id of the node the fork restarts execution from.
graph_hash: StringThe origin’s graph hash, which the fork must reuse unchanged. A fork may
not edit the graph: a different document could route the shared prefix
differently, turning a clean refusal into an arbitrary mid-replay
divergence. Opaque here, exactly like Event::GraphRunStarted::graph_hash.
acknowledged_writes: Vec<u64>The origin log positions of the Effect::Write intents the operator
acknowledged when forking past them. Raw u64 positions, not
SequenceNumbers: this is an operator acknowledgement list recorded
as evidence, not a set of correlation keys this crate dereferences. An
empty vector means the fork boundary sat before any write intent, so
nothing needed acknowledging.
Trait Implementations§
Source§impl Clone for ForkOrigin
impl Clone for ForkOrigin
Source§fn clone(&self) -> ForkOrigin
fn clone(&self) -> ForkOrigin
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more