774e62bffd
The 3.x branch of sqlite_transaction() could never work: sqlite-utils 3.x table helpers commit as they go, and any COMMIT inside the shim's savepoint block destroyed the savepoint out from under it - 23 tests failed on 3.x with "no such savepoint". sqlite-utils 4's Database.atomic() suspends per-call commits inside the block, which is the behavior the message store's write paths actually need, so the floor moves to 4.0 and the shim is deleted in favor of calling db.atomic() directly. Also retires the remaining placebo `with db.conn:` blocks - a no-op under 3.x autocommit, and under 4 the sqlite3 exit commit could commit a caller's open transaction. Embedding batch writes and Collection.delete() now use db.atomic() and are genuinely atomic; m007's wrapper around the rename is dropped rather than replaced since a single statement gains nothing from a transaction. CI loses the sqlite-utils version matrix axis and its install step - every job now tests the 4.x floor - with the cog check re-homed to the ubuntu/3.14 cell. The Justfile no longer needs --with to force a 4.x cog run. Verified: 942 tests, black, mypy, ruff and cog --check all pass on sqlite-utils 4.1.1, and the transaction-heavy suites pass on 4.0 exactly. Refs https://github.com/simonw/llm/pull/1562 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01538ebAg81aDhe7Qb5qwZcU