- Fix#2: _executeStatements fallback now batches transactions (150/batch)
and reorders upsert-before-delete to prevent data loss on payload overflow
- Fix#3: Read/write migratedToAuthority marker in chat_metadata to prevent
re-overwriting from legacy sources after Authority migration
- Fix#1: Add OPFS → Authority migration channel (exportOpfsSnapshotForChat,
maybeImportLegacyOpfsSnapshotToLocalStore) inserted before IndexedDB in
migration chain
- Fix#4: Mark runtimeVectorIndexState dirty with triviumRebuildRequired
and trigger submitAuthorityVectorRebuildJob after all three migration paths
- Fix#5: Dual-save safety snapshots to Authority blob; rollback can now
recover from blob when local IndexedDB snapshot is unavailable
- Fix#6: Add isEmptyCheck detail and console.warn for near-empty stores
to help diagnose residual vs real data in store-not-empty skips
- Fix#7: Add overflow warning logs and sessionStorage persistence for
Authority offline queue max-items/max-bytes exceeded events
- sync/bme-sync.js: conservatively clear backend hash mappings and mark
vectorIndexState dirty before importing remote snapshots via download,
merge, and cloud backup restore, preventing stale clean-looking state
after cross-device sync or restore
- vector/vector-index.js: mark backend vector state dirty on real backend
query failures (HTTP/network) instead of silently returning empty results
- regression: indexeddb-sync.mjs covers download/restore/merge import
dirty marking; p0-regressions.mjs covers backend query failure dirtying