A chunk whose stored bytes disagree with its stored digest.
Typed rather than a bare Error because bytesWritten decides what the CALLER owes. A refusal on
the first chunk leaves the heap untouched and costs one boot from the pack; a refusal at chunk N
has already applied N chunks, so the live heap is now the right LENGTH and the wrong BYTES and
must be thrown away rather than booted. A boolean-free Error cannot tell those apart, and the
boot path was treating both as the cheap case.
A chunk whose stored bytes disagree with its stored digest.
Typed rather than a bare
ErrorbecausebytesWrittendecides what the CALLER owes. A refusal on the first chunk leaves the heap untouched and costs one boot from the pack; a refusal at chunk N has already applied N chunks, so the live heap is now the right LENGTH and the wrong BYTES and must be thrown away rather than booted. A boolean-freeErrorcannot tell those apart, and the boot path was treating both as the cheap case.