Replace the archive digest with the property it was there to show - #214
Merged
iderex merged 1 commit intoAug 29, 2026
Merged
Conversation
The bundle document pasted one digest twice as the evidence that packing a checkout twice produces the same archive. That paste no longer reproduces, and re-taking it would not help, which is what makes it different from the five figures repaired beside it yesterday. Found by re-running every command in the document at the mainline. Packing fa8c04f by the three commands the document quotes gives 3d51fd9a68f94a9603cfa8a004e3464ab988787d0107f5bc80a073df74501428, and the document carries c0c27bcd42ef373f774f0d907bd4a1787c192624ac5ead66dc770efba831442b. The bytes are not what moved: the same build output and the same archive digest come out at fa8c04f, 2a1e214, 21bc843 and 3db5bc8, and the built tree is identical to the one the working checkout produces. What decides the rest of the value is the compressor. One tar stream under three gzip levels gives three digests, and the default is a level rather than the absence of one, so a digest pasted in a document is a fact about the machine that packed it as well as about the bundle. No re-take makes that reproduce for a reader whose gzip differs. So the section that told a reader to compare against the pasted value now hands over the comparison itself, one digest across the two archives, and the section of bounds carries the measurement that says why. The failure this prevents is a reader reading a mismatch against a stale paste as a corrupted or substituted download. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
iderex
deleted the
documentation/the-archive-digest-is-a-property-rather-than-a-value
branch
August 29, 2026 09:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was wrong
docs/serving-the-bundle.mdpastes one digest twice as the evidence thatpacking a checkout twice produces the same archive. That paste does not
reproduce at the mainline. Packing
fa8c04fby the three commands the documentitself quotes:
against the
c0c27bcd42ef373f774f0d907bd4a1787c192624ac5ead66dc770efba831442bthe document carries. Run 2026-08-29, in a clone outside the working tree.
The bytes under the archive are not what moved. The same build output and the
same archive digest come out at four commits, so nothing between them explains
the difference:
and the built tree in that clone is byte for byte the one the working checkout
produces:
Both run 2026-08-29, with the local path of the clone elided.
What decides the rest of the value is the compressor, and that is the part that
matters more than the stale figure. One tar stream under three gzip levels
gives three digests, and the default is a level rather than the absence of one:
Run 2026-08-29. So an archive digest written into this document is a fact about
the machine that packed it as well as about the bundle, and no re-take makes it
reproduce for a reader whose
gzipdiffers. That is what separates this figurefrom the five re-taken beside it yesterday, which are all functions of the tree
and go stale only when the tree moves.
I did not establish where the
c0c27bcdreading came from, and I am notclaiming a cause for it. What is measured above is that it does not reproduce
here and that the tree does not explain it.
What this does
Two edits to
docs/serving-the-bundle.md, one topic.## Checking what you downloadedhands over the comparison instead of thevalue. The command now returns the property the paste was there to show, which
is that both archives carry one digest, and the paragraph tells an operator to
compare their own pack against their own download rather than against anything
written in the document.
## What is not measured herecarries the measurement above, so the reason thevalue is gone is readable at the place that already holds the bounds of this
document, and the paragraph listing what was repaired yesterday says that one of
those figures was not a number re-taking could fix.
The failure it prevents is an operator reading a mismatch against a stale paste
as a corrupted or substituted download, which is the one conclusion this section
exists to let them draw correctly.
Closes
Nothing. #54 stays open: two of its three clauses start from a published
archive, there is no release, and the version scheme and release workflow are
#53.
Run 2026-08-29. The release listing returns nothing. This is a repair to the
document behind the clause that is already met.
What was run
Both run 2026-08-29 at the commit being pushed.
needs-networkis the one legthe gate names as not asked for, and it is not asked for here: this change reads
no network and the harness reports on a public name rather than on this tree.
The block the document now pastes was run back out of the file rather than
typed beside it, so what is in the document is what a reader gets:
Run 2026-08-29.
No test was skipped. Nothing here needed a display or elevation.
The means
Markdown prose in
docs/, which is what the artefact already is, and the changeadds no language, no runtime and no dependency. It carries no rule a machine can
refuse and none is claimed: nothing in this tree holds this document to the
output it describes, which the document's own last section says, and this change
does not alter that. What it does buy is that the figure removed was the one
figure here that no re-take could keep true, so the surface that can go stale is
smaller than it was rather than merely freshly taken. Every claim above carries
the command that produced it, run at the commit being pushed in a clone outside
the working tree.
Who read it
Nobody but me. This change carries no second reader, and the ruleset on this
branch requires no approving review, so the merge is not evidence of one. The
commands above stand in place of a reader: every figure in the diff was run back
out of the file after it was written, and the readings that found the defect are
reproducible from the four commits they name.