Docs/The record

The record

Native session files belong to their runtimes, in formats that are private and change between releases. The record is Constant's answer: at every carry, the distilled conversation is snapshotted as neutral IR before the native session is written.

~/.constant/snapshots/<conversation>/ch04-from-codex.json

Each snapshot — a volume — is written atomically, owner-only, after redaction. The trail ledger row for the carry references its volume. A failed record write never blocks a switch, but it is always announced.

The inversion this buys: the record is the durable copy of the conversation, and the runtimes' native sessions become reprintable projections of it. A deleted projection, a crashed switch, or a runtime format change can no longer be the end of a thread.

List the volumes

constant snapshots
constant snapshots --all

Lists the record volumes per conversation, from the ledger, with missing files marked.

Restore from any hop

constant restore ~/.constant/snapshots/<conversation>/ch04-from-codex.json
constant restore <snapshot-path-or-session-id> --to claude

restore reprints a fresh native session from a record volume. It always mints a new session and never overwrites anything — least of all the record. The default target is the runtime the volume came from; the restore is logged to the trail so lineage stays joined.

Resume falls back to the record

constant resume wakes a conversation's latest live projection. If every projection has been deleted, it reprints one from the latest record volume first, then resumes that. The conversation survives its projections.

Conversations cross machines

Because the record is neutral and self-contained, a conversation is portable:

# machine one
constant pack cobalt-37
# -> cobalt-37.constant-pack.json
 
# machine two
constant unpack cobalt-37.constant-pack.json
constant resume cobalt-37

pack bundles the conversation's ledger rows and every record volume into one file. unpack writes the volumes into the local vault (volumes are immutable — existing ones are kept, never overwritten), appends the ledger rows idempotently, and re-mints the handle only if the local registry already gave it to a different conversation. A pack carries the record, not native projections; sessions reprint on arrival.

What the record is not

It is not a backup of your original runtime sessions — those are never touched. It records what Constant carried: each volume is the distilled, redacted thread as it crossed a runtime boundary. Conversations that never switch are not in the record.

Next: The alembic cartridge.