shelley

Identity

  • Names: dev.exe.shelley; short alias shelley.
  • Native format: shelley-sqlite, conversations and immutable message rows.
  • Session ID: conversations.conversation_id, no namespace. A subagent has its own conversation ID.
  • Notes: llm_data and user_data are separate model/display representations. System rows supply instructions despite their User role. user_email is an actor address. Modelchange/gitinfo/error/warning notices are harness display messages; snapshots do not prove VCS actions. Current settings and derived parent announcements belong at the tail. Keep reasoning/provider fields not mapped to standard content.

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

shelley: native facts without a standard field

  • Entity keys and links: messages.message_id is a UUID. ToolUse ID joins ToolResult ToolUseID; ToolError records success/failure. Native role/content enums are capitalized Go JSON fields: User 0, Assistant 1; text 2, thinking 3, redacted thinking 4, tool use 5, result 6.
  • Lineage and copies: parent_conversation_id explicitly denotes a subagent parent. forked_from_message_id joins the original message row and supports copies of all its projections, including inference. CopyMessagesForFork is the sole writer of that column at the pin; resolved copies from one source conversation establish forkedFrom with native_structure. Missing or conflicting originals do not establish the source session or a prefix boundary. No root rule is qualified.

Usage

  • Tree and usage: sequence_id, generation, current_generation and excluded_from_context define order and replay paths. Excluded/UI rows are not context predecessors. usage_data on agent/slug rows and other_usage_data[] describe calls; derive IDs from message ID and response/other index. Default zero usage on other row kinds does not establish a call. Input and cache buckets are disjoint; retain explicit zero cost.

Lane and unassigned facts

Facts without established session ownership use manifest _meta["dev.exe.shelley/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 boldsoftware/shelley commit b66b0cf61b80b11df7e6754a628ad8241fe2b6f6 (database schema/queries, LLM types and conversation writer). Native migration/CreateMessage/ForkConversation/CreateSubagentConversation API probes with synthetic no-model content. No package version is established. 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.