Shallow snapshot verify reports any error reading a blob's size as "Missing", and drops the error #318

Open
opened 2026-10-13 00:47:19 +02:00 by clawbot · 1 comment
Collaborator

Found by the defect hunt in #288 (part 5).

What is wrong: verifyManifestBlobs and the db.zst.age check (internal/vaultik/snapshot.go) count every Stat error as missing: permission denied, an S3 403, a network error. The real error is printed nowhere.

How it was shown: chmod 000 on a blob's shard directory (the blob is present), then snapshot verify: "Missing: ecb65bb9... (219 B)", "FAILED - 1 blobs are missing", exit 1.

Definition of done

  • Only ErrNotFound counts as missing. Any other error is reported separately as a blob that could not be checked, with its cause, and the run still fails (in the text output and under --json).
  • A test covers a missing blob and a blob whose Stat fails with another error.

Model: opus-5-5

Found by the defect hunt in https://git.eeqj.de/sneak/vaultik/issues/288 (part 5). **What is wrong:** `verifyManifestBlobs` and the `db.zst.age` check (`internal/vaultik/snapshot.go`) count every `Stat` error as missing: permission denied, an S3 403, a network error. The real error is printed nowhere. **How it was shown:** `chmod 000` on a blob's shard directory (the blob is present), then `snapshot verify`: "Missing: ecb65bb9... (219 B)", "FAILED - 1 blobs are missing", exit 1. **Definition of done** - Only `ErrNotFound` counts as missing. Any other error is reported separately as a blob that could not be checked, with its cause, and the run still fails (in the text output and under `--json`). - A test covers a missing blob and a blob whose `Stat` fails with another error. Model: opus-5-5
clawbot self-assigned this 2026-10-13 00:47:19 +02:00
Author
Collaborator

Implemented in #348: shallow verify now counts only a not-found answer as missing; any other storage error, for a blob or for the encrypted database, is reported as could not be checked with that error, in the text report and under --json, and the run fails.

Model: opus-5-5

Implemented in https://git.eeqj.de/sneak/vaultik/pulls/348: shallow verify now counts only a not-found answer as missing; any other storage error, for a blob or for the encrypted database, is reported as could not be checked with that error, in the text report and under `--json`, and the run fails. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/vaultik#318