The moment of truth is after the bytes stop moving
Acquisition ends, storage begins — and the two moments have different failure modes. During transfer, failures are loud (interrupted connections, size mismatches). At rest, failures are silent: disks flip bits without ceremony, files get truncated by interrupted copies, filesystems mark blocks bad and quietly relocate. Nothing announces storage corruption; the file just sits there, wrong, until the day something loads it.
Verification after landing is therefore not a download concern — it is a storage discipline with three moments:
- Landing check (once). The full ritual from this track: size, then digest, then — for formats that support it — a structural parse (open the safetensors header, dump the GGUF metadata). The parse catches what a digest cannot describe: a file that is byte-perfect but structurally inconsistent with its claimed format.
- Migration check (every copy). Every time bytes move — disk to disk, machine to NAS, cloud to local — is a new chance for corruption. The digest record travels with the artifact precisely so every copy can re-earn its identity. A migration without a re-check is an unverified copy wearing a verified file's history.
- Rest check (periodically). A slow sweep of stored digests — monthly, quarterly, whatever matches your scale — catches bit rot and silent decay while recovery is still possible (that is what replication is for).
What each instrument sees
Use all three instruments because they see different things. Size catches truncation cheaply. Digest proves byte-identity with the recorded reference — the workhorse. Structural parse proves format sanity: the JSON header decodes, the offsets land inside the file, the tensor count matches the index. A file can fail any one of these while passing the others: truncated-but-lucky sizes, corrupted-but-parseable headers, intact files with wrong content. Cheap checks in order, expensive trust last — the review desk's rule, applied to your own storage.
Making it routine
The whole discipline compresses to a script you already wrote in this track's exercises: walk the archive, compare sizes and digests against SHA256SUMS, report a line per file. Schedule it, run it after every migration without exception, and treat any FAILED as a restore event — pull from replication, not optimism. The archive's health is not a state you achieve; it is a measurement you keep taking.