cline

Identity

  • Names: cline / bot.cline.
  • Native format: cline-task: whole task arrays api_conversation_history.json (legacy fallback claude_messages.json), ui_messages.json, and task metadata documents. New Cline SDK persistence is a separate unqualified format.
  • Session ID: Native task-directory basename, checked against history_item.id when present. Require a stable installation/profile namespace, including for Roo UUIDv7 tasks that share the legacy format. Relocation preserves both values.
  • Notes: Preserve content block order, reasoning signatures and media. UI-only rows use displayContent with explicit absent model content/role. api_req_started reports a request and supports a derived inference keyed by the UI row; retain recorded tokens and cost without fabricating a model. Approval and follow-up asks record requests, not inferred decisions. lastCheckpointHash supplies a shadow-Git checkpoint ref. history_item.task supplies title; native token totals are cumulative session usage. Context-history and condensation annotations do not establish exact active-context replacement ranges.

Position basis

  • Entity keys and order: Unique API id and UI ts identify rows. The pinned UI writer looks up and updates by ts, preserving it on partial completion. This is a native key contract, not a timestamp join. Duplicate keys remain distinct capture-scoped rows. Read API array, UI array, then metadata in fixed order. Every current snapshot projection uses snapshot assembly.
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

cline: native facts without a standard field

  • Links and lineage: tool_use.id joins tool_result.tool_use_id only for a unique invocation. UI and API rows have no qualified identity join. Do not infer SDK parents, delegation, forks, copies, root or checkpoint cause from this task format.

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["bot.cline/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 at version 4.1.10, commit eed78103a4643711c311f05ee24ba57c3c3445ac, apps/vscode/src/core/storage/disk.ts and apps/vscode/src/sdk/message-translator.ts. Existing task fixtures and authored semantic tests do not qualify a new extension runtime release. 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.

Observations from 2026-10-27

observed, version 3.0.74: Two headless CLI runs at 3.0.74 stored SDK session/message JSON. This is separate from the extension task arrays above. The converter discovered no streams; the SDK format has no qualified ASR mapping. The ctx conversion produced 0 streams and 0 records, with 0 errors, 0 notices, 0 gaps and 0 unidentified inputs under validator-v0.1.2. These counts describe the selected output; an empty bundle qualifies no source format. No sanitized native fixture was retained for this observation. Whole native records use native.record or native.blob, with JSON text columns preserved as strings. The exporter’s own bookkeeping for serialization, partitioning and message keys belongs in the exporter namespace (rs.ctx for ctx), not in a provider metadata destination. These runs add no evidence for unexercised approvals, lineage links, compaction boundaries or exact request context.