Pin the reference compose to the newest release, and check that it is - #54
Merged
Conversation
The pin was moved to `0.4.0`, which the suite refused: §12 pins the floating name, never a patch, because a patch never moves and leaves an unattended sidecar on a stale base. The floating name for v0.4.0 is `0.4`, so that is what the reference compose now says. The refusal was right and incomplete. `0.3` is as well-formed a floating pin as `0.4`, so the form check could not tell a current pin from a finished one — and the reference compose is normative (§11), so a pin left behind hands an operator older code with nothing to read about it. So the pin is now measured against the newest release tag in the checkout. That is where release.sh reads it too: it derives the floating names a release publishes from the tag it is cutting, so a pin measured against the same tags cannot disagree with what was pushed. One source, two readers, rather than a number in a file and a promise to remember it. The consequence is the point — the release that publishes 0.5 turns this red until the reference compose says 0.5. Seam 2 checks out the full history for it. The default shallow checkout carries no tags, and a check that read none of them would pass while measuring nothing, so the suite refuses a shallow checkout rather than agree quietly. The registry check stays a record rather than a gate. It can now answer, but it answers "the pipeline did not push that name" and "GHCR was unreachable" with the same red, and only one of those is a fact about the change underneath the run (§12). docs/interface.md quoted `0.3` in the three places it names the pin, and says what moves it now. release.sh's comment names the current `0.x` line rather than a number that goes stale every release. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01DaWRmDAmxiyfqzkQUBMyUZ
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.
Moves the reference stack to the current release, and makes the suite hold it there.
What was wrong
The pin was moved to
0.4.0, andTestTheReferenceComposeIsWhatItPromisesrefused it. It was right to: §12 pins the floating name, never a patch, because a patch never moves and leaves an unattended sidecar on a stale base image. The floating name forv0.4.0is0.4, so that is whatcompose.yamlnow says.What was missing
The refusal was right and incomplete.
0.3is as well-formed a floating pin as0.4, so the form check could not tell a current pin from a finished one — and the reference compose is normative (§11), so a pin left behind hands an operator older code with nothing to read about it.The pin is now measured against the newest release tag in the checkout. That is where
release.shreads it too: it derives the floating names a release publishes from the tag it is cutting, so a pin measured against the same tags cannot disagree with what was pushed. One source, two readers, rather than a number in a file and a promise to remember it.The consequence is the point — the release that publishes
0.5turns this red until the reference compose says0.5.What came with it
release_test.go's tag set and the pin check above.docs/interface.mdquoted0.3in the three places it names the pin, and now says what moves it. This moves the declared surface page, so the next release's tag message needs a non-empty Surface changes section.release.sh's comment names the current0.xline rather than a number that goes stale every release.Verification
0.4→ pass. Pin0.3→the obsync service pins "0.3" and the newest release is v0.4.0, whose floating name is "0.4".gofmt,go vet, andgolangci-lint v2.13.1clean.mainin the same container produces an identical failure set, so nothing here broke anything.No release needed.
🤖 Generated with Claude Code
https://claude.ai/code/session_01DaWRmDAmxiyfqzkQUBMyUZ