check / check (push) Canceled after 0s
Vacuum, Analyze and Checkpoint now take the database lock the batch writes hold, so maintenance and batch writes wait for each other instead of meeting at SQLite's write lock, where whichever waited past the 5-second busy timeout failed with "database is locked". ANALYZE reads about 1000 rows of each index (PRAGMA analysis_limit), so it holds the lock briefly however large the tables grow; the analysis_limit=0 in Initialize, which set no limit, is gone. A maintenance call whose context ends while it waits returns the context's error once it gets the lock, and releases it at once. Model: opus-5-5