kilo

Identity

  • Names: kilo / ai.kilocode.
  • Native format: opencode-sqlite. Read session/message/part tables and available sequenced session_message or session_entry tables in one transaction, including WAL. Keep alternate migration representations as vendor records. Only layouts verified at this entry’s pin are covered.
  • Session ID: Native session.id or session_v2.id, with no namespace for the pinned CLI format. A table name or path is not part of identity. Older Kilo editor tasks use cline-task with the task ID and a stable installation namespace; that separate family remains unverified here.
Use the OpenCode entity and folding rules only where the source revision pinned by this entry establishes the same contract. The OpenCode context rules apply to this store family. Preserve unsupported boundaries and declare the applicable loss.

Position basis

See the OpenCode family mapping for shared storage guidance. This entry’s own pinned evidence controls qualification; family membership does not transfer identity or semantic claims. Shared order and capture rules are in OpenCode. These shared rules do not make evidence for one agent apply to another. Use only positions established by the stated format and mapping evidence. Current-state rows without transcript positions form the snapshot tail. A protocol commit boundary takes precedence over physical EOF; uncommitted bytes are not a gap.

Destinations

kilo: native facts without a standard field

  • Lineage: session.parent_id supplies only relatedUnknown; fork_session_id supplies forkedFrom where that exact field exists at the pinned revision. A task tool’s metadata.sessionId names its child. It does not identify the inverse delegating call in a child header. No copies, root or copied-prefix length follow from matching IDs.

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["ai.kilocode/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: Kilo 7.4.22, commit 91a337e31cd7675d680aeb13c92870b8f81bdf36. A native no-model import capture verifies persistence and WAL acquisition. Tool transitions and inference have authored evidence only. Evidence applies only to the named formats and explicit mappings above. A real capture covers only exercised behavior. A writer probe run without a model 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 7.8.18: Kilo 7.8.18 retained edit, shell-test, resume, fork and child sessions. This evidence belongs to Kilo, independently of OpenCode. When parts are folded into a message, preserve every contributing native part row separately in native.record or native.blob. The ctx conversion produced 3 streams and 110 records, with 0 errors, 3 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.