with_writer/with_reader/blocking_read release their slot/pool connection only on the normal return — a panic inside the closure wedged the single writer slot forever (Writer::acquire waits on a condvar) and permanently shrank the reader pool (outstanding never decremented on abandonment). The seams now ride RAII drop-guards (ConnLease's idiom): the normal arm defuses and releases unchanged; the unwind arm drops the unknown-state connection and takes the established abandonment dispositions — Writer::replenish() (the tick's poisoned arm as a substrate method, the writer now holding its path) and Readers::abandon() (outstanding decrement + pool-locked notify). Three panic-injection tests pin the properties; no reachable panic path exists in production — this is the defense-in-depth armor the review scoped. Task: sqlite-fix-seam-panic-safety.
alkstore-sqlite
The SQLite engine of the alkstore family: the core contract implemented on rusqlite over the forked honker-core substrate carried in-tree.
let store = alkstore_sqlite::open("store.db", alkstore_sqlite::SqliteOpts::default())?;
Engine posture — single-host, file-backed. Cross-process on one
host is verified territory; a .db on network storage (NFS
two-writers) is not a supportable deployment posture. Durability
knobs, pool sizing, and the watcher cadence are engine-configuration
concerns on SqliteOpts — synchronous = NORMAL is hardwired at
connection bootstrap; there is no consumer surface to raise the sync
level.
See the family README for the interface and the deployment matrix, and the SQLite engine spec for the substrate's details. The substrate (forked third-party code) ships with its own bundled license notice in the crate tree — the root dual license files do not replace it.