check / check (push) Waiting to run
Restore and deep verify looked for a cancel only between blobs, and the file backend's reader ignores the context. A blob read stalled on a slow USB stick or network share outlasted the 30-second shutdown timeout, so the process exited before removing the decrypted snapshot database and blob cache from the temp directory. FetchBlob, through which both read every blob, now closes the storage reader as soon as the context is cancelled, ending a blocked read on any backend; Read then returns the context's error, not the closed reader's. Limitation: a read stuck in the kernel that closing cannot interrupt, such as one on an unresponsive hard NFS mount, still cannot be stopped. Model: opus-5-5