fabro/lib/foundation/fabro-db
Bryan Helmkamp 3ffe7e00ce
Implement Petri's run store over Fabro's SQLite database
`SqliteRunStore` implements Petri's `RunStore` and `RunLogs` on the pool
Fabro's other stores share. A run's existence and writer lease live in
`petri_runs`; every record of every log lives in `petri_records`, keyed by
(run, log, seq) with the record stored as JSON and read back unchanged;
blobs share the `blobs` table with `BlobStore`. The lease is taken
idempotently per owner, ends when the last handle drops or when an
operator releases it, and never by timeout; every write checks it inside
its own transaction. An append is one `BEGIN IMMEDIATE` transaction per
batch: a repeated record is accepted, a different record at a taken seq or
a seq past the head is a conflict that stores nothing.

Petri's store conformance suite passes against it, with the operator
release, lease exclusivity, a crash between appends, and blob
interoperation checked beside it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 19:30:30 -04:00
..
migrations Implement Petri's run store over Fabro's SQLite database 2026-09-17 19:30:30 -04:00
src Implement Petri's run store over Fabro's SQLite database 2026-09-17 19:30:30 -04:00
tests Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
build.rs Run plugin providers end to end and gate them in CI 2026-09-09 19:54:57 -06:00
Cargo.toml Harden SQLite blob activation safety 2026-08-24 14:02:35 -04:00