formatVersion.
The first four entries are the priority tools that the 0.1 draft is fitted to: Claude Code, T3 Code, Codex and OpenClaw. Each has a table of native facts without a standard field.
Evidence labels. Labels attach to individual formats and mappings, not whole agents:
source@rev: the named source revision of the native writer.docs: pinned vendor documentation where available.observed: observed storage structure, with its stated version and limits.capture@version: a sanitized real session; only exercised behavior qualifies.probe@version: synthetic input passed through the native writer; persistence only.third-party@rev: a reader or parser, not the native writer.authored: converter tests only.unverified: no established evidence.
Summary
The last column counts structured format and destination claims without source or capture evidence. It does not count unspecified behavior. Source evidence alone does not qualify an agent version under ASR-652.
Entry fields
Each entry below covers, where known:- Native format: the
producer.source.formatname and where the agent stores sessions. - Session ID: which native value is
sessionId, and when a namespace is needed. - Entity keys: native sources of
messageId,callId,inferenceIdandturnId. - Lineage: subagents, forks, continuations, copies, and when
rootmay be claimed. - Tree: for sources that store records in a tree, the native parent, response key, active leaf and injected records used by the mechanical-sibling rule.
- Notes: compaction, usage, retention and known losses.
- Native facts without a standard field: each fact the source records that no standard field or record holds, with its native name and its destination: a
_metakey on the nearest record (or object), or a vendor record type.
Destinations for native facts
A destination table has three columns: the fact, the native name, and where it goes._meta keys use the agent’s reverse-DNS name (ASR-600). Values are the native values, verbatim, unless the table says otherwise. A destination on an object inside a record (a participant identity, a review) is that object’s _meta.
For a row with several native names and one destination, the value is an object keyed by those exact native names, unless the row specifies another shape. When a row lists the same number of native names as output keys, they map in the order listed. A single native name maps verbatim. Dotted names are literal keys in grouped objects. A wildcard such as guardian_* expands to the actual native member names present; it is never a literal output key. Pull one entity’s entry out of a native map only where a row says so; when it is unclear which entry belongs to the record, do not pick one. Every other transformation below states its output shape.
Unsafe numbers follow the single core rule in ASR-035. Each agent reserves jsonText for that rule. Whole native rows use native.record or native.blob. Oversized safe metadata may use an application/json BlobRef at its destination. Native payloads may contain members that are not listed.
Explicit destinations take precedence. Every unlisted native field goes in <reverse-DNS>/remainingFields, an object keyed by exact native field name. Every entry reserves this key with that one shape. Grouped payloads retain their own fields and are not recursively flattened.
Evidence for links
ASR-052 and ASR-618 apply to every mapping here. A mapping that creates a link requires an exact native field or a documented, testable structural contract at a pinned source version. Each entry’s rules apply only to its stated source version or fixture revision; separately pinned supplements state their own scope. The test fixtures that qualify a mapping record the version, the native input and the expected link. Proximity, matching text, reused IDs and an adapter’s strength label never establish a link. When the evidence below is absent, retain the native fields in_meta, leave the normalized link absent, and declare the applicable lineage, copies, call_ids, branches or vendor loss. A matching native ID must be unique in the same scope and have documented correspondence. Source versions without such evidence are not qualified by this registry.
Unlisted native fields go in <agent-namespace>/remainingFields, keyed by exact native name. This avoids collisions with reserved destinations. Whole native rows that are not mapped to standard ASR records use vendor records with native.record or native.blob. Redaction and secret exclusions apply to every destination.
Other source families and link qualification
The entries below distinguish source review, native persistence captures and authored fixtures. A source pin applies only to the native fields and structural contracts described for that revision. A fixture-only rule describes the tested dialect at the stated fixture revision; it does not establish a vendor release contract. A structural link without a pinned native contract remains unqualified, even when an adapter emits it. Preserve the evidence and declare the relevant loss. The entries make no version-level conformance claim for proprietary harnesses. More generally, a source pin, a passing validator run or a persistence probe that makes no model calls does not by itself satisfy ASR-650 to ASR-652. A claim needs a sanitized native fixture for the claimed version and coverage of every applicable requirement. Do not substitute the converter’s version for a missing package version. Names in section headings identify providers for navigation. Where the Names field says no short name is assigned, producers use the reverse-DNS name. Existing short-name aliases stay unchanged.Shared mapping limits
- Preserve native entity IDs. Derived IDs use native keys, positions and projection slots under ASR-068/069. Stable keys remain stable across independent captures; positions that the source rewrites use
idScope: capture. A hash may encode an allowed tuple, but never supply session identity from content or a path. - Preserve each store’s native order. Document deterministic order between stores and declare
order; do not merge by timestamps. Mutable current-state records use snapshot assembly at the tail. New source positions after a snapshot tail require a new capture. Do not fabricate revisions from differences between captures. - A tool result joins only a unique native invocation under the entry’s named field or contract. Reused call IDs stay on every call; an ambiguous result omits
callIdand retains the literal ID at its destination. Missing results and unknown outcomes stay missing or unknown. A selected model is not proof of a served model, and aggregate usage is not one inference. - A parent pointer whose meaning is unknown supports at most
relatedUnknown, and only after its field, identity scope and source contract are qualified. No entry below authorizes a root claim from absent lineage. Child-only evidence does not identify a delegating call. Copies need the named native copy contract, including on usage and other projections of copied entries. - Preserve unknown enum values in native evidence. Do not manufacture vendor enums by adding
_. The few vendor operations named below are explicit mappings. File snippets do not prove whole-file contents, add versus overwrite, or successful application. - Whole native objects in destination tables are grouped values. Keep their native member names; do not move those members into separate keys outside the object. If a structured SQL BLOB cell is retained in such an object, use
{encoding: "base64", data: <base64>}unless the entry specifies another encoding. Converter-only helpers, counts and locators do not replace native values. - All entries use the existing
jsonTextcontract for unsafe numbers. AjsonTextmember is a string, never a BlobRef or an object containing a string. An oversized native payload can usenative.blob; an oversized metadata value can be anapplication/jsonBlobRef at its documented destination when the row permits it. Raw results usecapture.raw. No fixed metadata-size threshold is required by the registry. - An unknown native row uses the default vendor-record rule. If its type is not a legal vendor type suffix, use
<reverse-DNS>/recordand keep the original type innative.record. Exclude secrets and apply redaction before producing any normalized records, native records, metadata or blobs. Retained metadata does not imply complete normalized coverage or safe sharing.
claude-code
claude-codeClaude Code link contracts
Claude Code link contractsClaude Code: native facts without a standard field
Claude Code: native facts without a standard fieldt3-code
t3-codeT3 Code link contracts
T3 Code link contractsT3 Code: native facts without a standard field
T3 Code: native facts without a standard fieldcodex
codexCodex link contracts
Codex link contractsCodex: native facts without a standard field
Codex: native facts without a standard fieldopenclaw
openclawOpenClaw link contracts
OpenClaw link contractsOpenClaw: native facts without a standard field
OpenClaw: native facts without a standard fieldOpenClaw SQLite converter supplement
OpenClaw SQLite converter supplementOpenClaw supplement: native facts without a standard field
OpenClaw supplement: native facts without a standard fieldcursor
cursorcursor: native facts without a standard field
cursor: native facts without a standard fieldcopilot-cli
copilot-clicopilot-cli: native facts without a standard field
copilot-cli: native facts without a standard fieldgemini-cli
gemini-cligemini-cli: native facts without a standard field
gemini-cli: native facts without a standard fieldopencode
opencodeopencode: native facts without a standard field
opencode: native facts without a standard fieldpi
pipi: native facts without a standard field
pi: native facts without a standard fielddroid
droiddroid: native facts without a standard field
droid: native facts without a standard fieldgoose
goosegoose: native facts without a standard field
goose: native facts without a standard fieldopenhands
openhandsopenhands: native facts without a standard field
openhands: native facts without a standard fieldcline
clinecline: native facts without a standard field
cline: native facts without a standard fieldroo-code
roo-coderoo-code: native facts without a standard field
roo-code: native facts without a standard fieldkilo
kilokilo: native facts without a standard field
kilo: native facts without a standard fieldzed
zedzed: native facts without a standard field
zed: native facts without a standard fieldwarp
warpwarp: native facts without a standard field
warp: native facts without a standard fieldkiro
kirokiro: native facts without a standard field
kiro: native facts without a standard fieldqwen-code
qwen-codeqwen-code: native facts without a standard field
qwen-code: native facts without a standard fieldcrush
crushcrush: native facts without a standard field
crush: native facts without a standard fieldgrok-build
grok-buildgrok-build: native facts without a standard field
grok-build: native facts without a standard fieldantigravity
antigravityantigravity: native facts without a standard field
antigravity: native facts without a standard fieldjunie
juniejunie: native facts without a standard field
junie: native facts without a standard fieldauggie
auggieauggie: native facts without a standard field
auggie: native facts without a standard fieldamp
ampastrbot
astrbotastrbot: native facts without a standard field
astrbot: native facts without a standard fieldcodebuddy
codebuddycodebuddy: native facts without a standard field
codebuddy: native facts without a standard fieldcontinue
continuecontinue: native facts without a standard field
continue: native facts without a standard fielddeepagents
deepagentsdeepagents: native facts without a standard field
deepagents: native facts without a standard fielddeepseek-harness
deepseek-harnessdeepseek-harness: native facts without a standard field
deepseek-harness: native facts without a standard fielddevin
devindevin: native facts without a standard field
devin: native facts without a standard fieldfirebender
firebenderfirebender: native facts without a standard field
firebender: native facts without a standard fieldforgecode
forgecodeforgecode: native facts without a standard field
forgecode: native facts without a standard fieldfx
fxfx: native facts without a standard field
fx: native facts without a standard fieldhermes
hermeshermes: native facts without a standard field
hermes: native facts without a standard fieldkimi-code
kimi-codekimi-code: native facts without a standard field
kimi-code: native facts without a standard fieldlingma
lingmalingma: native facts without a standard field
lingma: native facts without a standard fieldmimocode
mimocodemimocode: native facts without a standard field
mimocode: native facts without a standard fieldmistral-vibe
mistral-vibemistral-vibe: native facts without a standard field
mistral-vibe: native facts without a standard fieldmux
muxmux: native facts without a standard field
mux: native facts without a standard fieldnanoclaw
nanoclawnanoclaw: native facts without a standard field
nanoclaw: native facts without a standard fieldqoder
qoderqoder: native facts without a standard field
qoder: native facts without a standard fieldrovodev
rovodevrovodev: native facts without a standard field
rovodev: native facts without a standard fieldshelley
shelleyshelley: native facts without a standard field
shelley: native facts without a standard fieldtabnine
tabninetabnine: native facts without a standard field
tabnine: native facts without a standard fieldUnassigned facts
The one manifest destination is_meta["<agent-namespace>/unassigned"]. Its value is an array. Each member has source: {table?, key?}, optional namespace and lane, and exactly one of record or blob. record preserves the whole native value; blob is an application/json BlobRef for that value. namespace is the source installation or container scope, not an inferred owner. lane is the verbatim native lane ID. No member assigns a session owner. ASR-035 can route an affected value using the exact JSON Pointer to the value’s original location.
Include these facts independently of session selection and describe the policy in the export report. Do not repeat the same fact on every selected session. Unknown ownership alone is not a loss. There is no core unassigned, unattributed or unassigned_facts member or loss in v3.2.
Nested containers
A single native container ID is the namespace verbatim. If installation scope is also required, encode the ordered tuple as compact JSON text[installation, container]; deeper containers append a component. JSON escaping is the only transformation of each native value. Percent-encode that entire namespace when constructing a SessionRef. Parent references use the parent’s own identity scope. A lane alone never qualifies as a distinct conversation.
Shared mapping guidance
The OpenCode entry defines the shared store mechanics used by Kilo and MiMoCode. The Cline entry describes the shared task-array mechanics used by Roo Code. The Gemini entry describes the transcript mechanics also used by Qwen Code. Each agent retains its own identity, source pins, differences and qualification limits. Family membership supplies no evidence.Deferred mappings
OpenCode part-addressed reverts and Devin context splices remain native evidence with declaredbranches loss when needed. Ordered context snapshots, external context entries and cross-capture positional references remain deferred. Unassigned lane facts use the registry destination; there is no core unassigned or unattributed manifest container.
Registry data
Theregistry-data block alongside each entry is the authoritative machine-readable source. tools/validator/scripts/build-registry.mjs generates the committed registry.json; never edit generated JSON. Family guidance is referenced and never transfers evidence between agents. Optional mappings entries name the native field, destination, scope and evidence indexes for mappings into core fields or native envelopes. The destinations member defines reserved metadata shapes.
ASR-620 Registry data MUST have unique canonical names and aliases, valid entry and evidence references, and consistent destination shapes. CI MUST reject any difference between the regenerated registry and the committed file. Validators MUST read the generated registry, reject unknown reserved destination keys and incorrect shapes, and allow unknown members inside native payloads. Unlisted native fields use remainingFields. Shared reserved destinations have the same shape for every agent.