Upgrade to 1.0.0-rc831

Concerns: pushword/search

The exported search/loupe.db was empty

Loupe indexes in WAL mode: right after a write the documents sit in loupe.db-wal and the main file still holds none of them. The static export copied loupe.db on its own, so with static_mode: endpoint (or both) every build shipped a valid but empty index — the endpoint returned no results for any query. The export now folds the log back in before copying.

Nothing broke visibly until now because search.json is built from the documents in memory, so the client-side fallback always worked; only the PHP endpoint was affected.

Run pw:static once to publish a real index. Sites on static_mode: json were never affected.

An unreadable index resets itself instead of failing for good

Loupe runs SQLite with synchronous = OFF — a search index is rebuildable, so it trades durability for write speed. The cost is that a writer killed mid-checkpoint (power loss, OOM kill, an interrupted deploy) leaves loupe.db unreadable, and every later open then failed with SQLSTATE[HY000] ... 26 file is not a database. Because the index is built on post-generate, that took the whole pw:static build down, long after whatever caused the damage, and nothing short of deleting the file by hand brought it back.

Such an index is now dropped and recreated on open, with a warning in the log. Recovery is automatic but the index comes back empty: run pw:search:index to repopulate it if the warning appears outside a build (a pw:static run refills it on its own).