Skip to content

Pin the reference compose to the newest release, and check that it is - #54

Merged
andyroberts2 merged 2 commits into
mainfrom
andyroberts2-patch-1
Sep 5, 2026
Merged

Pin the reference compose to the newest release, and check that it is#54
andyroberts2 merged 2 commits into
mainfrom
andyroberts2-patch-1

Conversation

@andyroberts2

@andyroberts2 andyroberts2 commented Sep 5, 2026

Copy link
Copy Markdown
Owner

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, and TestTheReferenceComposeIsWhatItPromises refused 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 for v0.4.0 is 0.4, so that is what compose.yaml now says.

What was missing

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.

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.

What came with it

  • Seam 2 checks out the full history. The default shallow checkout carries no tags, and a check that read none of them would pass while measuring nothing. The helper refuses a shallow checkout rather than agree quietly.
  • The registry check stays a record rather than a gate. It can answer now, but it answers "the pipeline did not push that name" and "GHCR was unreachable" with the same red, and only the first is a fact about the change underneath the run (§12). The first is already gated by release_test.go's tag set and the pin check above.
  • docs/interface.md quoted 0.3 in 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 current 0.x line rather than a number that goes stale every release.

Verification

  • Pin 0.4 → pass. Pin 0.3the obsync service pins "0.3" and the newest release is v0.4.0, whose floating name is "0.4".
  • gofmt, go vet, and golangci-lint v2.13.1 clean.
  • Full suite run against this branch and against main in 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

andyroberts2 and others added 2 commits September 5, 2026 09:13
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
@andyroberts2 andyroberts2 changed the title Update obsync image version to 0.4.0 Pin the reference compose to the newest release, and check that it is Sep 5, 2026
@andyroberts2
andyroberts2 merged commit 87c9bc9 into main Sep 5, 2026
5 checks passed
@andyroberts2
andyroberts2 deleted the andyroberts2-patch-1 branch September 5, 2026 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant