Journal · · 4 min
What a replay is not
A replay is a fold over a log. It is not a screen recording, not a load test, and not a promise about anything we did not record.
Product
Every few weeks somebody asks whether Fenwright will replay their outage including the card network’s response. The honest answer is no, and it is worth writing down why, because the boundary is the product.
A replay is a fold
The recorder writes the events your services emit. A replay takes those events in order and folds them into state: start at the first event in the window, apply each one, stop at the offset you asked for. That is the whole mechanic.
The same offset in the same window always gives the same state, because a fold does not depend on the direction you arrived from. Dragging the scrubber backwards is not an undo. It refolds the window from its first event.
The less comfortable consequence: a replay can only reconstruct what the fold was given. Sample the log and the state at an offset is arithmetic with nine tenths of the terms missing.
What it is not
It is not a session recording. Nothing watches a screen. If your service did not emit an event, no amount of retention will invent one.
It is not a load test. The hosted replay does not re-run your code against your database. It reads what happened. To test a fix against the hour, pull the window and run it locally — see the quickstart.
It is not a promise about somebody else’s system. A third-party response inside your incident is re-fetched at replay time and marked on screen, beside the number. It is the only value that can differ between two replays of the same window.