Skip to content

fix(build): raise the Go floor to 1.27.3 for GO-2026-6809 (crypto/x509) - #28

Open
antoinetoussaint-byte wants to merge 1 commit into
mainfrom
fix/go-1.27.3-go-2026-6809
Open

antoinetoussaint-byte wants to merge 1 commit into
mainfrom
fix/go-1.27.3-go-2026-6809

Conversation

@antoinetoussaint-byte

Copy link
Copy Markdown
Contributor

Do not merge — opened for review; the owner releases.

Why

Release archives of this agent are compiled by ghcr.io/goreleaser/goreleaser-cross:v1.27.1-1, i.e. go1.27.1, which carries GO-2026-6809 (crypto/x509), fixed in go1.27.3.

Go literals found (verified from source at 13cdb33)

Literal Where Class
go 1.27.0 go.mod:3 floor
goreleaser-cross:v1.27.1-1 .github/workflows/release.yml selector (the compiler that ships)
go-version-file: go.mod .github/workflows/ci.yml, .github/workflows/release.yml (test job) hygiene — already follows the floor, untouched

No golang: image, no GOTOOLCHAIN, no toolchain line, no go-version: literal anywhere. The templates/ Dockerfiles (where present) build generated services, not Go.

Mechanism

A go directive is a floor. goreleaser-cross sets no GOTOOLCHAIN, so its go1.27.1 auto-switches up to the directive when the directive is higher: the shipped compiler is max(directive, image go). Raising the directive to 1.27.3 is therefore the fix that ships on its own. The goreleaser-cross v1.27.3 tag exists (checked via the GitHub tags API today), so the image pin moves too as the belt to that brace — with both in place the image already runs the floor and no download happens at release time.

What changed

  • go.mod: go 1.27.0 → go 1.27.3 (go mod tidy: no other change, go.sum untouched)
  • .github/workflows/release.yml: goreleaser-cross:v1.27.1-1 → goreleaser-cross:v1.27.3

Local verification (host go1.27.3 darwin/arm64)

  • go build ./... exit 0, go vet ./... exit 0, go test ./... exit 0 (all packages ok)
  • go build -o agent . && go version -m agent first line: agent: go1.27.3

Classification

A fix at the place that owns the behaviour (the module floor and the release toolchain pin). Not a hack.

Deliberately not done

  • No toolchain line in go.mod (it would pin instead of floor).
  • No GOTOOLCHAIN=go1.27.3 in the workflow (a backwards selector that would have to be chased on every patch).
  • No change to go-version-file: go.mod steps — they already follow the floor.

Not verified

  • The released archive itself: it does not exist until the owner cuts a tag. The CI on this PR runs ci.yml only; the release job is tag-triggered.

🤖 Generated with Claude Code

Release archives were compiled by go1.27.1 (goreleaser-cross:v1.27.1-1),
which carries GO-2026-6809 in crypto/x509, fixed in go1.27.3.

The go directive is a floor: goreleaser-cross sets no GOTOOLCHAIN, so the
image's go auto-switches up to the directive when the directive is higher.
Raising go.mod to 1.27.3 is the fix that ships; moving the image pin to
goreleaser-cross:v1.27.3 is the belt to that brace. No toolchain line, no
GOTOOLCHAIN pin.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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