Cold sessions are compressed in place
A rollout starts as rollout-....jsonl and is later compressed to .jsonl.zst. The data is intact, and any reader needs zstd support to see it: on Node that means 22.15 or newer, and a reader without it fails on the file rather than on the session.
The layout moved to a thread inventory
Newer Codex keeps a state database of threads beside the rollout files, and codex migrate-rollouts exists to move legacy sessions into it. A session written under the old layout can be present on disk and absent from a picker reading the new one.
Archived is not deleted
Archive, unarchive and delete are three separate subcommands. An archived session leaves the picker and stays on disk, which looks exactly like a loss and is not one.