roo-code
Identity
-
Names:
roo-code/com.roocode. -
Native format:
cline-task: whole task arraysapi_conversation_history.json(legacy fallbackclaude_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.idwhen 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
displayContentwith explicit absent model content/role.api_req_startedreports 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.lastCheckpointHashsupplies a shadow-Git checkpoint ref.history_item.tasksupplies title; native token totals are cumulative session usage. Context-history and condensation annotations do not establish exact active-context replacement ranges.
Position basis
See Cline task arrays for the shared format. Roo has its own writer evidence; Cline’s qualification does not carry over to Roo.- Entity keys and order: Unique API
idand UItsidentify rows. The pinned UI writer looks up and updates byts, 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
roo-code: native facts without a standard field
Links
- Links and lineage:
tool_use.idjoinstool_result.tool_use_idonly 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["com.roocode/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 version3.53.0, commit b867ec9145750d0ae1ff7f02d35406e9bf2a0b16, src/core/task/Task.ts and src/core/task-persistence/apiMessages.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.