nanoclaw
Identity
-
Names:
dev.nanoclaw; short aliasnanoclaw. -
Native format:
nanoclaw-session-sqlite, centraldata/v2.dbanddata/v2-sessions/<agent_group_id>/<id>/{inbound.db,outbound.db}. Host and container own different IO stores. -
Session ID:
sessions.id, no namespace. Group directories are locators, not session or subagent identities. - Notes: Inbound/outbound roles are display roles, not model authorship or proof of a prompt. Keep model content absent. Source-session fields can identify agent-origin messages; scheduled task kinds identify harness injection. Operation/edit/reaction payloads do not prove successful execution. These stores lack model/tool/usage/cost evidence. Questions identify association, not consumption; remove marked secret answers from every projection. Missing stores and unavailable backing transcripts need declared losses.
Position basis
- Entity keys and order:
messages_in.idandmessages_out.ididentify messages. Serialize inbound then outbound, each byseq,id, then catalog/state snapshots. Even/odd allocation prevents collisions but does not establish common chronology. All mutable IO projections use snapshot assembly; the first outbound context predecessor is unknown.
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
nanoclaw: native facts without a standard field
Links
-
Links:
messages_in.source_session_idsupplies an originating session. Channel-scopedcontent.senderIdorcontent.author.userIdcan identify participants. Catalogmessaging_group_idjoinsmessaging_groups.idonly when routechannel_type/platform_idmatches. Only chat-SDKcontent.idsupplies platform message identity.delivered.message_out_idjoinsmessages_out.id;platform_message_idsupplies the delivery ID. Outgoingask_question.questionIdjoins inboundcontent.questionIdonly when unambiguous. -
Backing sessions and lineage:
session_statekeycontinuation:claudeorcontinuation:codexnames the backing native session/thread forexecutedBy. Legacysdk_session_idalone does not identify its provider. Neither binding proves whole-stream mirror authority. No parent, child, copy or root follows from group membership.
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. Rules for what a backend includes in its usage counts require evidence; do not infer them from a model name.Lane and unassigned facts
Facts without established session ownership use manifest_meta["dev.nanoclaw/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. For omitted unassigned facts, use a documented vendor loss or report; do not create a new core category.Evidence
Basis: source-verified:nanocoai/nanoclaw 2.2.0, commit f0d35831d38c6c566295d07505809b7c37337e56. Native catalog, migration and IO probes use synthetic content and make no model calls. Container writers used an in-memory substitute for testing; disk locking and mounts are not qualified.
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.