fix(varve): pin the layer by digest — the rolling channel republished 2026.08.4 - #312
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
… 2026.08.4
`varve which <tool>` in this repo exits 1 and resolves nothing:
error: layer 2026.08.4 is installed more than once under different
digests (2 entries) and the pin carries no digest to disambiguate
The rolling channel republished `2026.08.4` under a second manifest digest
(`7e48ccc3…` installed 27 Aug 00:35, `c1e6a418…` 27 Aug 23:45), so a
name-only pin no longer identifies one artifact. Every varve-shimmed tool
invocation in gale has been failing since.
The two manifests carry IDENTICAL payloads — `varve inspect` returns the same
47-line inventory under each, byte-identical apart from the layer's own digest
line, and synth/loom/meld/witness/rivet all hash the same under both. This is
a re-publication, not a content change.
Pin the later digest (what the channel serves now) and record the evidence in
docs/toolchain-pin.md, including the negative control: strip the digest line
and `varve which synth` must exit 1 again.
This also falsifies a claim that doc used to rest on. On the rolling channel a
layer NAME is not a stable identifier — "layer = 2026.08.4" resolved to one
manifest on 27 Aug and to two by 28 Aug. Only the digest pins the artifact.
varve's refusal is the feature working: it exited non-zero and named the fix
rather than guessing. A shim that fell back to an ambient binary would have
produced a build attributable to no layer at all — which is exactly the
failure this pin exists to prevent.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011QG86sovTbfnPNY9SfhSmo
avrabe
force-pushed
the
fix/varve-pin-digest
branch
from
August 28, 2026 02:30
801f749 to
73385e9
Compare
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.
The symptom
Every varve-shimmed tool invocation in this repo currently fails:
Exit 1, nothing on stdout. Any script doing
S=$(varve which synth)gets anempty string and then either fails obscurely or silently falls back to an
ambient binary.
The cause
The rolling channel republished layer
2026.08.4under a second manifestdigest. Both are in the local store:
sha256:7e48ccc3…sha256:c1e6a418…It is a re-publication, not a content change
varve inspectunder each pin returns the same 47-line inventory,byte-identical apart from the layer's own digest line. Every dispatched tool
hashes the same under both:
033d7c61118e70939583f530baa0d6f088fb38bd1e7966323c54bf7bde25f28472b1b81dab0b8a78So nothing built against either copy is suspect. No committed artifact needs
rebuilding.
The fix, and what it costs a claim
Pin the later digest — what the channel serves now — and document it.
This falsifies something
docs/toolchain-pin.mdrested on. On the rollingchannel a layer name is not a stable identifier:
layer = "2026.08.4"resolved to one manifest on 27 Aug and to two by 28 Aug. Any reproducibility
claim anchored to the name alone is falsifiable, and was. Only the digest
pins the artifact. The doc now says so.
Kill-criterion
Strip the
digestline fromvarve.tomland runvarve which synth. It mustexit 1 with the ambiguity error. Verified:
With the digest present, all five tools resolve (versions above).
Note on varve itself
Its refusal is the feature working — it exited non-zero and named the fix
instead of guessing. A shim that fell back to an ambient binary would have
produced a build attributable to no layer at all. Reporting the duplicate
publication upstream separately.
🤖 Generated with Claude Code
https://claude.ai/code/session_011QG86sovTbfnPNY9SfhSmo