check / check (push) Waiting to run
A move between two vaults unlocked them while holding the state directory lock, and unlocking can ask for a passphrase, so every other changing command waited at that prompt. moveSecretCrossVault now checks the move, unlocks both vaults, and only then takes the lock. Under the lock, copySecretAndRemoveSource checks again that the source and the destination vault still exist, then copies. A move within a vault takes the lock in moveSecretWithinVault, so MoveSecret takes none itself. The two tests of a source that cannot be removed now call copySecretAndRemoveSource, since the lock refuses their wrapped filesystems. Model: opus-5-5