What a rollout record is
Each chat turn becomes a sequence of typed rollout lines (packages/rollout): user messages, assistant messages, tool calls, tool results, approvals, command records, validation records, artifact references, subagent events, and notifications. The rollout is the source of truth — chat UI is just a projection.
Developer endpoints
Local dev exposes:
/dev/euphony— the in-browser log explorer./dev/euphony/<threadId>— single-thread timeline./api/dev/euphony/<threadId>.harmony.jsonl— clean Harmony JSONL./api/dev/euphony/<threadId>.jsonl— raw Codex-session JSONL./api/dev/euphony/<threadId>?format=rollout— raw typed rollout records.
Compaction
Cold rollout segments compact into replay-safe summaries via the compact-cold-rollouts maintenance workflow. Replay remains possible from durable records; the summary keeps context windows bounded.
When to read the rollout
If chat UI behavior looks wrong — a typed part not rendering, an approval not firing, a subagent not returning — read the rollout. The chat transcript can lie by omission; the rollout cannot.