Skip to content

fix(security): build with a patched Go toolchain - #115

Merged
felixgeelhaar merged 4 commits into
mainfrom
fix/patched-toolchain
Aug 25, 2026
Merged

felixgeelhaar merged 4 commits into
mainfrom
fix/patched-toolchain

Conversation

@felixgeelhaar

Copy link
Copy Markdown
Collaborator

Part of a fleet-wide sweep: 40 of 43 Go repositories build on a Go toolchain behind on security patches.

Why

setup-go resolves the toolchain from go.mod and reads the go directive as an exact version, not a floor. So every build here used that exact patch release, and govulncheck reports reachable call paths from this module into its standard library.

The findings were invisible because the failing step's log is not retrievable — they appear only in the check run's annotations.

The change

toolchain go1.25.14

The go directive is untouched, so nothing importing this module has its floor raised, and the Go command honours the toolchain everywhere — CI, releases, and a developer's laptop.

Verification

Built and scanned with the resolution CI performs. govulncheck exits 0.

Analysis and the fleet survey: klarlabs-studio/.github#73. Already merged: klarlabs-studio/kiln#48, klarlabs-studio/warden#242.

https://claude.ai/code/session_01N9cWx4ZEypDzzhvnnTiHdy

setup-go resolves the toolchain from go.mod and reads the go directive
as an exact version, not a floor — so every build here used that exact
patch release. govulncheck reports reachable call paths from this
module into its standard library.

Pinned to go1.25.14, the current patch for this minor. The go directive is
untouched, so nothing importing this module has its floor raised, and
the Go command honours it everywhere: CI, releases, and a laptop.

Verified with the resolution CI performs: the build downloads go1.25.14
and govulncheck exits 0.

Part of a fleet sweep — 40 of 43 Go repositories were affected.
Refs klarlabs-studio/.github#73

Claude-Session: https://claude.ai/code/session_01N9cWx4ZEypDzzhvnnTiHdy
This repository's required checks move from GitHub Actions contexts to
warden/gate, because Actions cannot run here — spending is capped, and
the jobs are refused before they start (conclusion: failure, steps: 0).

The gate keeps everything Actions was enforcing except one thing: the
govulncheck job. That job is what surfaced the fleet-wide finding this
branch fixes — every build used the exact patch release named in the go
directive, fourteen releases behind in some repos. Switching without
carrying it across would delete the check in the same change that ships
its fix.

Refs klarlabs-studio/.github#73

Claude-Session: https://claude.ai/code/session_01N9cWx4ZEypDzzhvnnTiHdy
Branch protection here now requires warden/gate instead of the GitHub
Actions contexts, because Actions cannot run while the spending limit
holds — every job reports failure with zero steps executed.

Requiring a status is not the same as producing one. warden ran the gate
and attested the commit, but published nothing, so the pull request
stayed blocked on a check nothing emitted. This enables the publish.

Claude-Session: https://claude.ai/code/session_01N9cWx4ZEypDzzhvnnTiHdy
isReady took the machine's current state and never read it. The readiness
check asks interp.Matches(s), which is the right question — it matches
hierarchical states, where comparing a raw StateID against a configured
ready state would only ever match an exact leaf. The parameter is a
leftover from the implementation that predated Matches.

Found by golangci-lint's unparam. It is on main too: lint has been in this
repository's pre_push all along, but the spending limit stopped Actions
from running anything, so nothing has actually looked at this gate since
the code landed.
@felixgeelhaar
felixgeelhaar merged commit e4ee6c3 into main Aug 25, 2026
1 check passed
@felixgeelhaar
felixgeelhaar deleted the fix/patched-toolchain branch August 25, 2026 11:48
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