Trevor PaughSystems engineer
Trevor PaughProject Chronicles

Chronicles / Claudeboard

Replay, history, and forgetting

Milestone

Three slices past version one, all on 15 October under the owner's standing order. Replay scrubs through any past day: the collector records the graph it serves as frames, because the event log alone cannot rebuild it, and the board plays them back at up to three hundred times speed with the live feed held aside. History is a searchable table of every session the machine has seen, metadata only, with a detail panel that links to replaying its day. And a retention setting lets the owner forget old frames, with pruned days still replayable from the log and marked fainter on the calendar.

Version one closed on 15 October with replay already under way. By the end of the same day replay, history, and retention were all merged, each through a builder in its own worktree and a separate reviewer, with the manager merging on green.

Why replay needed recording

The plan had assumed a past day could be rebuilt from the event log. It cannot. Tool calls, prompts, and answers are not events; whether a session was working or idle comes from timing over process files; service and subagent nodes are not events at all. So the collector now records what it serves into an append-only table of frames: a full key at start, after a pause, and every six hours; a delta for each meaningful change; a beat every five minutes otherwise. Compressed, metadata only.

On the board, the strip at the bottom of the desktop layout expands into a date picker, play and pause, four speeds, and a twenty-four-hour scrubber with working and waiting areas, markers for handoffs, usage resets, deploys, and the observer stopping, and a draggable playhead. While replaying, the live feed is kept aside with its socket open, the layout frozen, and the canvas read-only; Back to live puts the latest graph back. Time before the first frame is rebuilt best effort from the events and flagged partial. A busy day thins its flows evenly and says that some tool calls are not shown.

History

The History page lists every session with search on title and project, filters, a sortable table, and a detail panel showing the subtree, the services called, and per-hour counts, with a link to replay that day. Archived sessions are hidden by default here too. The collector keeps the index in memory from rows and events changed since the last request, reading only metadata; a client that is not on the machine itself gets no user or machine identifiers. A large backlog is read in the background, and the page says it is indexing rather than erroring while the collector warms.

Forgetting

Replay frames grow without bound, so the setup page gained a keep-days setting, default keep everything. When set, frames older than the window are removed in small batches after the history warm-up and hourly, aligned to keyframes so a day never loses the frame it starts from. A pruned day leaves the list of frame days but still replays from the event log, fainter on the calendar and labelled as having its frames removed. A benchmark on a million rows showed the prune never stalls the event loop for more than a tenth of a second, so the batch size stayed.