Expand description
The single-writer SQLite store: RunLog append path, same-transaction checkpoint materialization, and the content-addressed evidence area.
§Durability & consistency rules (07 §3.3, verbatim discipline)
- actionIntent WAL:
Store::write_action_intentappends in its own transaction; underjournal_mode=WAL+synchronous=FULLa returned commit is the fsync — callers MUST call it (and see it return) beforeprovider.executedispatch. - Same-transaction materialization:
Store::append_eventupdates thecheckpointrow in the same transaction as therun_loginsert; a read checkpoint is always consistent with an exactlog_seq. - file-before-row-before-log:
Store::put_evidencewrites and fsyncs the evidence bytes before inserting theevidencerow; the RunLog event referencing the evidence is appended by the caller afterwards. A crash leaves at most an orphan file (GC-able), never a log that references missing evidence. - Append-only: there is no API that UPDATEs or DELETEs
run_logrows — the guarantee is structural, not procedural.
§Single writer
Store owns its rusqlite::Connection (which is !Sync); exactly one
Store instance must perform writes for a given store directory. WAL
mode lets concurrently opened read-only inspectors (e.g.
pointlock inspect) read without blocking the writer.
Structs§
- Evidence
Meta - One resolved evidence entry (
Store::evidence_meta). - Evidence
Put - Result of
Store::put_evidence. - Intent
Dispatch - The dispatch identity of an
actionIntent(2026-07-18 incorporation, item ②): 1-based chain position plus the bound attempt’s channel and native action name, verbatim. - NewRun
- Parameters of
Store::begin_run. TherunStartedevent is not written here — the caller appends it (07 §3.1: the log is the truth;begin_runonly creates the run row the fold takes asRunMeta). - RunList
Entry - One row of
Store::list_runs— the run-index projection source. - Store
- The single-writer store handle (see the module docs for the durability rules and the single-writer discipline).