a4e6c609

By: Michael Lynch <git@mtlynch.io>

Guarantee the e2e seed database is a single file

import-from-tinybeans never closed its SQLite store, so the process
exited with an uncheckpointed write-ahead log and the seed database
landed on disk as three files: store.db, store.db-wal, and
store.db-shm. The e2e fixtures compensated by copying whichever
sidecar files existed.

Add Store.Close, which checkpoints the WAL into the main database file
and deletes the sidecars when the last connection closes, and call it
from the importer. A new test proves the close leaves a single file on
disk. The e2e fixtures now copy just the main file and fail hard if
the seed has a -wal sidecar, since copying the main file alone would
silently drop the writes still sitting in the WAL.

Verified with nix build .#e2e-tests: 19 passed (5.0s).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codeberg

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 2s 9s 9s 11s 2s
Eval 8s 1m35s 1m35s 1m44s 0s
Build 1m29s 4m21s - - 0s
Suite 2s 6m06s - - 16m12s