Changes touching this path
- a Lock or sign-out in a tab loaded before a deploy that raised the device database version now wipes the vault: wipeVault asked for its own version, which a browser refuses with VersionError once a newer tab has upgraded the database, and lock() stopped before its broadcast, so the seed, the grant cache and the object cache stayed on disk for the next load to unwrap. the wipe now opens the database at whatever version it is, which asks for no version change, the thing an open connection in another tab blocks, rather than deleting it, which such a connection blocks; a lock whose wipe fails still drops the identity, tells the other tabs and publishes the lock carrying the failure, which the gate shows, then throws; each connection vault.ts opens closes on versionchange, and a tab that learns its build is older than the database, by a versionchange past its version or a VersionError, drops the identity and reloads, once for each database version its build knows, so a rolled-back deploy does not reload it forever. pinned in vitest over the in-memory IndexedDB, which now models versions, versionchange and blocked: a wipe of a database a version above the build clears the seed, the grants, the objects and a store the build never named; a lock whose wipe fails drops the identity, broadcasts, publishes the failure and throws; a newer upgrade closes a held connection without being blocked; a stale tab drops its identity and reloads, and a reload that brought back a build of the same version does not reload again. red under named mutations, each restored: the wipe at the build version (1 failed and 4 passed), lock stopping at the failed wipe (1 and 4), the broadcast only on a clean wipe (1 and 4), versionchange leaving the connection open (2 and 3), versionchange not marking the build stale (1 and 4), a VersionError not marking it (1 and 4), the reload without its once guard (1 and 4), and a stale tab keeping its identity (2 and 3). cargo test green, 4886 passed over 144 test result lines with 15 ignored, and the site gate green at 939 passed. CONTEXT.md and ADR 0096 say so. a tab already running a build from before this still runs the old wipe. owes a site deploy (qnkolyzz)
087f3d77 · dbf3dbe6…
Renames are not followed. loot's tree maps a path to an address, so a rename is a delete and an add. This list is the history of the name, not of the bytes.