Companion draft, separately versioned. Version: draft 0.1, for ASR format version 0.1 and Entire as documented in its sessions and checkpoints, external agent protocol and transcript format documents. Entire’s formats are versioned with its releases; details marked “unverified” have not been checked against a release. Not part of core conformance.Entire hooks into agents and Git and stores sessions beside commits as checkpoints. Each checkpoint keeps the agent’s native transcript (sanitized) and a normalized transcript. This companion defines how to import them.
What a checkpoint holds
A checkpoint is a Git tree (on a checkpoints branch, or under one ref per checkpoint). It contains a summary file,metadata.json, and a directory for each session. Each session directory contains:
metadata.json: the session ID, creation time and redaction counts per detection layer (never the redacted values);full.jsonl: the agent’s native transcript, sanitized and redacted, possibly split into chunks;transcript.jsonl: the session in the Entire Transcript Format (ETF) v1;prompt.txtandcontent_hash.txt;- subagent transcripts under
tasks/<tool use id>/.
Import
Prefer the native transcript
ETF drops thinking blocks and embeds tool results inside tool-use blocks; the native transcript keeps thinking blocks and separate tool results. An importer SHOULD convertfull.jsonl with the agent’s ASR converter, following the agent’s registry entry:
producer.methodandproducer.sourceare those of the agent’s converter (for exampleconverterandclaude-code-jsonl), with_meta["io.entire/checkpoint"]naming the checkpoint;contentLevelisredacted, because Entire redacted the transcript before storing it; the redaction counts go in_meta(there is no ASR source stream, so there is noderivedFrom);- chunks of
full.jsonlare concatenated in order before conversion; - subagent transcripts under
tasks/become their own streams withlineage.spawnedBynaming the tool use ID (evidence: native_structure).
seq and record IDs from positions in the native transcript, so that records from different checkpoints of the same session agree (ASR-015) and are written once.
Fallback: the Entire Transcript Format
When onlytranscript.jsonl is usable, the importer maps ETF v1 lines (producer.method: "import", producer.source.format: "entire-transcript", formatVersion: "1"):
Token mapping:
cache_read_tokens → cacheRead, cache_write_tokens → cacheWrite, reasoning_tokens → output.reasoning, output_tokens → output.total. ETF documents that input_tokens excludes cache on newer lines, while its meaning on older lines differed by agent. Use input.uncached only for lines from producer versions known to follow the newer rule; otherwise, use input.total with includesCache: null.
Declared losses: reasoning (thinking blocks are dropped), tool_result.content (ETF keeps the result’s output, not necessarily what reached the model), and timestamps for lines without ts.
Lifecycle events
Entire’s agent protocol reports seven lifecycle events. When importing from hook data rather than transcripts,SessionStart sets startedAt. TurnStart and TurnEnd become state running and idle; SessionEnd becomes state ended. SubagentStart and SubagentEnd become subagent records. previous_session_id becomes lineage.continues (reason: other, evidence: native_field). A Compaction event alone does not say what was replaced and is kept as an audit-only io.entire/compaction record; the compaction itself comes from the transcript.
Entire’s append-only format for transmitting records (message, append, result, usage, drop) maps to ASR as follows: message starts an entity, append is a chunk (ASR-511), result is a tool result, usage is per-call usage. The meaning of drop has not been verified; until it is, an importer keeps dropped records with a tombstone (reason: withdrawn) rather than deleting them.
Commit links
AnEntire-Checkpoint trailer names a checkpoint, not a session (see the integration companion). To resolve it, read the checkpoint, list its sessions, and map each to its session key. Entire links a commit to every session with pending files in the committing worktree, plus sessions matched by process ancestry; that is an association Entire reports, not an observed commit action. An importer that records the link writes a vcs record with action: commit, the full commit ID, and evidence: reported, with the checkpoint ID in _meta.