THE QUEUE IS NOT THE FINISH LINE
The event vanished.
The ticket did not.
Test the gap between approving an order and carrying out its delivery. Keep the receiver’s receipt, even when the supporting chain changes.
Loading the recorded database run…
COMPARISON CONSUMER
Check only at enqueue
Confirms the event before queueing; skips revalidation when sending. This intentionally limited comparison is not a production indexer.
Durable outbox
Independent receiver ledger
FORKLINE WORKER
Recheck, then reconcile
Rechecks the observed head before sending. A missing acknowledgement pauses work until the receiver’s outcome is reconciled.
Durable outbox
Independent receiver ledger
WHAT THIS STEP ESTABLISHES
A recorded run is not a live mainnet guarantee.
RUN IT AGAINST REAL LOCAL STORAGE
One command to reproduce.
Then break your assumptions.
The local lab uses the same page with active controls, a SQLite outbox, a loopback HTTP receiver and a second SQLite ledger. The hosted page steps through those executed records. It does not secretly call a delivery service.
npm ci
npm run evm
npm run outbox:record
npm run lab
# open the printed local URL with ?live=1Boundaries that matter
A reorg after dispatch can still orphan a ticket. The worker retains its receipt and pauses; it cannot take the ticket back. Idempotency is provided by this receiver, not by every external API.
The lab trusts block-hash-pinned local-EVM observations. Confirmation waits are not consensus finality. It is a single-worker test adapter, not a production security review or multi-worker queue.
Raw SQLite files and a separate Python ledger check are included in the executed evidence. Synthetic orders only; no measured user or financial outcome.