zed

Identity

  • Names: zed / dev.zed.agent.
  • Native format: zed-threads-sqlite, one rewritten JSON or zstd thread blob per threads.id.
  • Session ID: threads.id, no namespace. External agents using the Agent Client Protocol (ACP) store their own histories, which use those agents’ identities.
  • Entity keys: User.id (ClientUserMessageId) is native and stable. Agent and compaction array positions are capture-scoped. ToolUse.id joins the matching Agent.tool_results map key only when unique. Native content order is array order; no per-message timestamp is invented.
  • Notes: Compaction.Summary has unknown replaced extent. Compaction.ProviderNative retains opaque provider/items; Resume and unknown variants stay vendor data. cumulative_token_usage is session usage. The pinned TokenUsage serializer omits zero counters, so a counter missing from a present usage object means zero; this is documented behavior. request_token_usage keyed by ClientUserMessageId is a per-turn aggregate, not inference. initial_project_snapshot.worktree_snapshots supplies roots and recorded Git state. Settings belong at the tail. Earlier blob revisions are unavailable.

Position basis

Use only positions established by the stated format and mapping evidence. Current-state rows without transcript positions go at the end, as the snapshot tail. A protocol commit boundary takes precedence over physical EOF; uncommitted bytes are not a gap.

Destinations

zed: native facts without a standard field

  • Lineage: subagent_context.parent_thread_id, also written to SQL threads.parent_id, explicitly identifies a subagent parent. The child keeps its own thread ID. A parent-side announcement can be derived from that exact child row as a snapshot. No copy or root rule is qualified.

Usage

Select one report per native accounting identity only when this entry establishes that identity. Keep unjoinable or overlapping reports as native evidence. Declare incomplete semantic coverage. Schema defaults and placeholder zeros are not reported usage. Backend inclusion rules require evidence; do not infer them from a model name.

Lane and unassigned facts

Facts without established session ownership use manifest _meta["dev.zed.agent/unassigned"] with the common shape. Selection may retain these facts with any session subset, including an empty subset, but must not imply session ownership. State the selection policy in the export report.

Losses

Declare every applicable loss under ASR-157. Missing model rendering, accounting joins, lineage or exact context boundaries remain losses when this entry does not qualify them. Unknown ownership is not itself lost data. Omitted unassigned facts use a documented vendor loss or report, not a new core category.

Evidence

Basis: source-verified: zed-industries/zed commit eb5483528be607b497afdaad0a237bebeb191249; native desktop 1.17.2 at c8e44cfa7bda9b2e22c8d6934d78969352e7f61a. Both use DbThread::VERSION 0.3.0. Two no-model submissions verify persistence and User IDs; tool and compaction rules have source and authored evidence. Evidence applies only to the named formats and explicit mappings above. A real capture covers only exercised behavior. A no-model writer probe covers persistence, not model or tool execution. Authored tests do not qualify an agent version. Unlisted formats and link mappings remain unqualified.