Offline Tooling — Golden Replay¶
Docs-site note: Describes the offline-replay mechanism at a conceptual level — how it's invoked and what guarantees it gives, not a specific incident's slot numbers or internal paths. Grounded in
vex-fd's own environment-variable handling; the methodology and its cited proof numbers come from Why Byte-Faithful and the Parity & Fidelity Audit.
Vexor's core byte-fidelity discipline is an offline golden replay: re-run a range of already-rooted slots with
no network connection, from a local snapshot, and confirm the resulting bank hashes match the cluster's exactly.
Every consensus-path change is gated behind this before it ships. This page covers the mechanism vex-fd itself
provides for driving that replay — not a separate binary, but the same vex-fd executable run in a distinct,
network-silent mode.
Why offline, not live¶
Testing a consensus change live risks the one thing a validator can't take back: a wrong vote. Offline replay lets a change be checked against real, cluster-produced blocks — with the real answer (the cluster's bank hash) known in advance — without the validator ever touching the network, submitting a vote, or being observable by any peer. It's the same idea as a reference-implementation differential test, run against the validator's own past history instead of a synthetic vector set.
The methodology's proven result: an offline golden replay spanning 1992 canonical slots across an epoch boundary, bank hashes byte-identical to the live cluster's, is the standing gate every consensus change passes before deploy. See Why Byte-Faithful for the full rationale and Parity & Fidelity Audit for the audited record.
How it's invoked¶
Offline replay is driven entirely by environment variables on the normal vex-fd binary — there is no separate
replay tool to install.
| Env | Role |
|---|---|
VEX_LEDGER_REPLAY=<start>:<count> |
Requests a replay starting at slot <start> for <count> slots, reading from local ledger/snapshot data rather than the network. |
VEX_SNAPSHOT_OFFLINE |
Boots from a local snapshot directory (paired with --snapshots <dir>) instead of fetching one from the network. |
VEX_LEDGER_REPLAY_CANON=<file> |
Optional canonical-chain filter — points at a file listing the canonical slot sequence to replay, disambiguating which fork to walk when local ledger data covers more than one. |
Setting either VEX_LEDGER_REPLAY or VEX_SNAPSHOT_OFFLINE puts the binary into offline mode, which changes its
behavior in two load-bearing ways:
- The runtime config self-bake is skipped entirely. Vexor's normal boot path fills in a table of proven production environment defaults; offline mode skips that step by design, so a replay run reflects exactly the environment it was given — "offline stays lean."
- The metrics reporter refuses to start. No telemetry, no network calls — offline replay is network-silent by construction, not by operator discipline. See Observability: the never-crash contract.
A generic invocation shape (illustrative — substitute your own slot range and snapshot directory):
VEX_SNAPSHOT_OFFLINE=1 VEX_LEDGER_REPLAY=<start_slot>:<slot_count> \
vex-fd run --testnet --snapshots <local-snapshot-dir> --ledger <local-ledger-dir>
What a pass/fail looks like¶
A replay run reprocesses each requested slot and compares the resulting bank hash against the one already recorded for that slot (from the original live run or from the cluster). Byte-identical bank hashes across the whole requested range is a pass; any divergence identifies the first slot where behavior parted ways with the canonical result — which is exactly the signal a consensus-path change is checked against before it's allowed to deploy.
See also¶
- Why Byte-Faithful — the full golden-replay methodology and why an offline gate is the right discipline for a validator.
- Parity & Fidelity Audit — the audited, cited replay results.
- vex-fd Commands — the rest of the CLI surface, including the
xdp-selftestdiagnostic. - Observability — the offline guard that keeps replay network-silent.