astrbot
Identity
-
Names:
app.astrbot; short aliasastrbot. -
Native format:
astrbot-data-v4-sqlite, conversations with rewritten JSON content, provider statistics and platform message history. -
Session ID: Public UUID
conversations.conversation_id, no namespace.inner_conversation_idis a database key only. -
Notes:
role: _checkpointwithcontent.idis an internal marker stripped before replay, not a workspace checkpoint.token_usage > 0measures retained context; zero is unset/estimated on demand, not measured usage.provider_stats.conversation_idsupplies session ownership. Each stats row may aggregate several calls, so it is a usage summary. Serialize content, stats by native ID, then mutable settings. Platform/user/persona fields do not prove channel or human authorship.
Position basis
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
astrbot: native facts without a standard field
Links
-
Entity keys and links: Unique message
idormessage_idsupplies identity; otherwise use capture-scoped array position.tool_calls[].idjoins resulttool_call_idonly when unique. Content-array order is preserved. -
Lineage: No qualified parent, child, copy or root field.
platform_message_history.llm_checkpoint_idcan be shared/copied and does not prove session or message ownership.
Usage
Select one report per native accounting identity only when this entry establishes that identity. Keep unjoinable or overlapping reports as native evidence. Declare when semantic coverage is incomplete. 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["app.astrbot/unassigned"] with the common shape. A selection may keep these facts with any subset of sessions, including an empty subset, but must not imply that a session owns them. 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 atAstrBotDevs/AstrBot commit c4616578d610c237766a5d497f9db4b607d1c75b (database models, message types and _save_to_history). Native SQLModel/SQLite persistence probes; no chat-adapter or model runtime qualification. No package version is established.
Evidence applies only to the named formats and explicit mappings above. A real capture covers only the behavior that was exercised. A writer probe run without a model covers persistence only, not model or tool execution. Authored tests do not qualify an agent version. Unlisted formats and link mappings remain unqualified.