mixle.experimental.typed_runtime.replay module¶
Deterministic and tolerance replay for proposal/commit logs.
- class ReplayEntry(batch, expected_receipt, expected_state=None)[source]
Bases:
objectOne immutable batch, expected receipt, and optional resulting state.
- Parameters:
batch (ProposalBatch)
expected_receipt (CommitReceipt)
expected_state (Any)
- class ReplayLog(entries=())[source]
Bases:
objectAppend-only sequence of proposal batches and terminal commit receipts.
record()deep-copies its inputs so a later caller mutation cannot rewrite history – but the list holding them was public, solog.entries[0] = otherandlog.entries.clear()rewrote exactly the history the copying protects, andreplay_logwould then replay a sequence that no coordinator ever committed (MXR-080-1905).entriesis a detached tuple now; indexing into it (log.entries[0].batch) is unchanged.- Parameters:
entries (Sequence[ReplayEntry])
- property entries: tuple[ReplayEntry, ...]
The recorded replay entries, oldest first, as a detached tuple.
- class ReplayMode(*values)[source]
Bases:
StrEnumState comparison guarantee expected from a backend.
- class ReplayReport(mode, absolute_tolerance, relative_tolerance, steps)[source]
Bases:
objectWhole-log replay verdict with explicit numeric tolerance.
- Parameters:
- property status: ReplayStatus
Distinguish successful evidence from mismatch and absent evidence.
- property ran: bool
Whether at least one replay step was attempted.
- property matched: bool
Whether every recorded transaction replayed under the selected guarantee.
- class ReplayStatus(*values)[source]
Bases:
StrEnumWhole-log replay outcome; an empty log is explicitly not run.
- class ReplayStepReceipt(index, commit_id, matched, mismatches, actual_receipt=None)[source]
Bases:
objectComparison result for one replayed transaction.
- Parameters:
- replay_log(log, coordinator, *, mode=ReplayMode.BITWISE, state_probe=None, absolute_tolerance=0.0, relative_tolerance=0.0)[source]
Replay every batch and compare semantic receipts plus resulting state.