pub struct MutationReport {
pub faults: Vec<MutationFault>,
pub applied_topics: Vec<String>,
pub deduped_topics: Vec<String>,
pub landed_predecessors: Vec<(String, String)>,
pub walk_could_not_run: Option<WalkCouldNotRun>,
pub landed_walks_could_not_run: Vec<WalkCouldNotRun>,
}Expand description
What Phase 3 actually landed for a submit — the durability report.
applied_topics are the topics whose EVERY write (and lookup-service
notification) succeeded and were therefore recorded in
applied_transactions. A topic with any fault is deliberately NOT
recorded: the dedup in Phase 1 would otherwise turn a replay into a
no-op and make the loss permanent (the ordering was already
write-then-record; the record is now conditional on the writes).
Fields§
§faults: Vec<MutationFault>§applied_topics: Vec<String>§deduped_topics: Vec<String>Topics this (txid, topic) pair had ALREADY been applied under — the Phase-1 dedup skipped them, so their STEAK entry is an empty default that means “nothing new”, never “judged another tx” (loop-3 client belt re-presents read the empty STEAK as index-pending).
landed_predecessors: Vec<(String, String)>The predecessors the door LANDED first from this submit’s BEEF, as
(txid, topic), ancestors first (Engine::land_carried; the E1D
delta fold, L2). Each is an admission write of its own that no
caller asked for: a caller that guards its admission writes (the
worker’s eviction ledger, bsv-low #513) guards these too.
walk_could_not_run: Option<WalkCouldNotRun>The submit’s own script walk could not run within the engine’s
budget (bsv-low #592) and the submit went on as under
HistoricalTxNoSpv (WalkBreachPolicy::NetworkAccepted only; under
NotNow a breach is EngineError::WalkCouldNotRun). None when it
ran (or the mode does not walk). A caller counts it; it never makes a
report undurable.
landed_walks_could_not_run: Vec<WalkCouldNotRun>The walks of the carried predecessors this submit tried to land
(Engine::land_carried) that could not run within the budget (the
E592 lens fold, L3): under NotNow each one’s landing did not happen
(the successor waits), under NetworkAccepted each went on. Counted
by the caller beside walk_could_not_run.
Implementations§
Source§impl MutationReport
impl MutationReport
Sourcepub fn is_durable(&self) -> bool
pub fn is_durable(&self) -> bool
True when every mutation this submit needed landed (nothing to replay). A dupe-only submit is durable (there was nothing to write).