Skip to content

chore(ci): bump Go toolchain to 1.26 - #17

Merged
brentrager merged 1 commit into
mainfrom
chore/go-1.26
Aug 25, 2026
Merged

brentrager merged 1 commit into
mainfrom
chore/go-1.26

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Problem

The Go toolchain is pinned to 1.22, which is end-of-life — it no longer receives security or bug fixes. CI has been building and testing the go/ module on an unsupported toolchain.

Change

One line in mise.toml:

-go = "1.22"
+go = "1.26"

Since the mise migration, the Go version lives only in mise.toml — jdx/mise-action@v4 reads it in both pr-checks.yml and release.yml, and there is no actions/setup-go or go-version anywhere in .github/. So this single line is the whole change. mise resolves 1.26 to go1.26.7.

Deliberately NOT changing go.mod

go/go.mod still declares go 1.22.0, and that is intentional. That directive is the minimum language version required of consumers of the published github.com/SmooAI/audit/go module — raising it to 1.26 would be a breaking change for anyone importing us on an older Go. What we are bumping here is only the toolchain we build and test with. The two are independent, and building a go 1.22.0 module with a 1.26 toolchain is fully supported.

Worth noting: Go can silently append a toolchain directive to go.mod during a build. It did not here — the diff is verifiably one line.

Verification

Run locally against mise's go1.26.7 (mise exec, not the ambient Homebrew go), using the repo's own scripts — the same ones CI invokes:

Check Command Result
Format pnpm go:fmt:check (gofmt -l .) pass, no output
Vet pnpm go:lint (go vet ./...) pass
Build pnpm go:build (go build ./...) pass
Test pnpm go:test (go test -count=1 -v ./...) all pass, ok github.com/SmooAI/audit/go 0.298s
oxfmt oxfmt --check . pass — 43 files, incl. mise.toml

The full Go suite is green: the 8-scenario TestParityCorpus, TestComputeEventHashMatchesCorpus, the 11-case TestChainCorpus (tamper/reorder/truncation detection), and the emit/retry and trace-context tests.

Nothing broke on the 1.22 → 1.26 jump. That is a four-version leap, so genuine incompatibilities were plausible, but the go/ module is small and depends only on go.opentelemetry.io/otel/trace — no build, vet, or test regressions surfaced.

The oxfmt --check run is called out explicitly because a previous PR was reddened by oxfmt reformatting .toml files, mise.toml included. It is clean here — go = "1.26" is the same token shape as go = "1.22".

Go 1.22 is EOL. The toolchain version now lives only in mise.toml since
the mise migration, so this is a one-line change. Deliberately NOT
touching the `go` directive in go.mod — that declares the minimum
language version for consumers of the published module, and raising it
would be a breaking change for them.

Verified: go build/vet/test and gofmt all pass on 1.26.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: f45467c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@brentrager
brentrager merged commit 37c11f2 into main Aug 25, 2026
1 check passed
@brentrager
brentrager deleted the chore/go-1.26 branch August 25, 2026 00:45
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