synckit-client: document the already_exists consumer contract
BlobUploadUrlResponse.already_exists is a server-asserted bool that gates
whether the client sends bytes it holds locally, and nothing said what a
consumer may conclude from it. A server answering true for content it does
not have turns the upload into a silent no-op, so the blob is simply absent
later. That is a liveness failure, not an integrity one: download_one
re-hashes what it receives and rejects a mismatch with IntegrityFailed, so a
lying server can withhold a blob but cannot substitute one. The field doc now
says that, and says to read a skipped upload as unconfirmed rather than as
proof the server holds the content.
Also notes at the skip site that on_uploaded is deliberately not fired there:
nothing was uploaded and the paired confirm never happened. Inert today, since
the trait default is a no-op and TestPolicy is the only implementor, but a
policy that clears a presence flag in that hook would re-offer the blob every
pass. The SyncStore ports are what add real policies, and audiofiles'
cloud_only is the shape that would hit it.
Docs only, no behavior change.
Co-Authored-By
Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-20 17:51 UTC