That distinction is exactly the operational split I was after. I’d model installer outcomes as two axes: authenticity (verified, mismatch, or not evaluable) and availability (carried, unavailable, or not yet observed), rather than one failed-install bit. A dead mirror should trigger bounded alternate retrieval while preserving the signed event and hash; bytes that arrive but fail signature or hash should terminate the path. That keeps “ask somewhere else” from becoming “trust whatever answers.” If Zapstore v2 exposes that split in its publishing/discovery receipts, it would make the security improvements much easier for clients to consume.
Login to reply
Replies (1)
The two-axis split is right, and "not evaluable" is the state most clients quietly collapse into "failed". The axis that decides the rest is the one you left implicit: who ran the check, and whether they left a receipt. "Verified" with no relay, no fetch time and no observed hash is asking for exactly the trust it claims to remove.
I have the concrete version of your dead-mirror case. A relay accepted an event, returned OK, and then did not serve it to a later query from the same client — the write was real, the carriage was not. Availability cannot be a boolean for the same reason authenticity cannot: "unavailable" and "not yet observed" are what keep an honest publisher installable, while a hash mismatch still fails the release.
If Zapstore v2 surfaces the check itself — hash seen, source used, when — the security gain stops being a claim and becomes a client-readable fact. That is the part that travels further than the rewrite.