build(deps): consolidate the Go toolchain pin on 1.27.0 - #48
Merged
Conversation
Move every Go toolchain dependency surface from 1.26.7 to 1.27.0 in one change so the module, CI automation, and the worker base image agree: GOTOOLCHAIN=local in the worker image refuses a toolchain lower than go.mod's, so a partial bump breaks worker leases. - go.mod: toolchain go1.27.0 (the `go 1.26.6` language directive is the compatibility contract and stays put). - mise.lock: regenerated with `mise lock`; mise reads the toolchain line from go.mod (idiomatic_version_file_enable_tools), so the Go entry now resolves 1.27.0 with upstream-matching checksums for all seven platforms. The golangci-lint 2.13.1 and actionlint 1.7.12 pins are unchanged; golangci-lint 2.13.1 is already built with Go 1.27.0, so `make lint-version-check` still passes. - release.yml / snapshot.yml: setup-go pin 1.27.0. - oci/Containerfile: both `fetch` and `base` stages move to golang:1.27.0-bookworm at its immutable multi-architecture manifest digest sha256:ded31c68586d2e49e760acc2e65a884b23d032e9bbbed0ae0c55abd3fcaf4452. The node:26-bookworm-slim digest and every fetched-binary checksum are untouched. - oci/baseline.json: base reference plus the go/gofmt entries. - docs/specs/oci-workers.md: the reader-facing base pin. - internal/worker/worker_test.go: the literal provisioning fixtures and their expected `go@` tool string. ADR-0012's historical record of the v0.1.1 image is left as written. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UigLsmd17TVDuaaSN4yfdU
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.
Summary
Moves every Go toolchain dependency surface in this repository from 1.26.7 to
1.27.0 in a single change. Resolves Snowcat item
efb7e1fc-2678-49ed-9b76-825fbafaaeee(dependencies-gap-fix).The surfaces have to move together: the worker base image sets
GOTOOLCHAIN=local, so ago.modtoolchain the image's Go cannot satisfyfails at the first
goinvocation inside a lease rather than downloading atoolchain.
go.mod—toolchain go1.27.0. Thego 1.26.6language/compatibilitydirective is deliberately unchanged; nothing here needs 1.27 language
semantics, and raising it would narrow who can build the module.
mise.lock— regenerated withmise lock.mise.tomlnever pins Go(
idiomatic_version_file_enable_tools = ["go"]), so mise reads the samego.modtoolchain line; the lock now resolves Go 1.27.0 across all sevenlocked platforms. Each checksum matches upstream
https://go.dev/dl/?mode=jsonfor
go1.27.0(verified linux-amd64/arm64, darwin-amd64/arm64, windows-amd64).golangci-lint2.13.1 andactionlint1.7.12 are untouched..github/workflows/release.yml,.github/workflows/snapshot.yml— thesetup-gopin.oci/Containerfile— both thefetchandbasestages move todocker.io/library/golang:1.27.0-bookwormat its immutablemulti-architecture manifest digest
sha256:ded31c68586d2e49e760acc2e65a884b23d032e9bbbed0ae0c55abd3fcaf4452(confirmed with
skopeo inspect; the index carries linux/amd64 andlinux/arm64). The
node:26-bookworm-slimdigest and every fetched-binarychecksum are unchanged.
oci/baseline.json—base,tools.go,tools.gofmt.docs/specs/oci-workers.md— the reader-facing base pin.internal/worker/worker_test.go— the literal provisioning fixtures and theexpected
go@<version>provisioning tool string.docs/adr/0012-…still says Go 1.26.7: that is its historical record of whatworker image
v0.1.1contained, and Accepted ADRs are immutable.golangci-lint2.13.1 is already built with Go 1.27.0, so the Makefile'slint-version-checkguard (golangci-lint must be built with a Go at least asnew as the toolchain) still passes without a lint bump.
Risk tier
Risk tier: Medium — a toolchain and base-image dependency bump that changes
what every worker image and CI job compiles with. It touches no credential
projection, worker authority, networking, or lifecycle code, but a wrong or
partial pin would break worker leases at their first
goinvocation, so it isnot docs-only risk. Every reference is verified against upstream (release
checksums, image manifest digest) and the built image was executed.
Boundary check
Docs housekeeping
TEMPLATE.md— n/a, no new docsdocs/README.md— n/a, no new docsmake docs-checkreports 32 docs, 315 links, 10 symlinks all greenVerification
make ci— passes end to end with the pinned tools installed(
mise install; Go 1.27.0, golangci-lint 2.13.1, actionlint 1.7.12):Workflow changes pass
actionlint— viamake workflow-lintin themake cirun above.Every action is SHA-pinned with a version comment and checkout disables
persisted credentials — unchanged in this PR; only the
go-versioninput strings moved.
mise outdated --bump→mise All tools are up to date(it previouslyreported the Go toolchain as behind at 1.26.7).
Worker image built and executed (
docker build --build-arg TARGETARCH=amd64 --file oci/Containerfile --target codex, exit 0), thenrun: