chore: bump golangci-lint pin to v2.13.1 - #322
Open
AntiD2ta wants to merge 1 commit into
Open
Conversation
A custom-gcl built from the v2.8.0 pin cannot read the export data of a newer Go toolchain. On Go 1.27 it fails with export data version 4 is greater than maximum supported version 2 then reports a few (typecheck) import errors and stops. Every linter that needs type information analyses nothing. The run does not look broken, it looks quiet: 2 issues where a working gate finds 10. CI is unaffected today because golangci-lint.yml still pins Go 1.25. The reason to fix it now is update-go-version.yml, which rewrites go-version in every workflow file when a new Go ships and touches neither golangci-lint pin. The first time that bot moves the repo to 1.27, the gate goes quiet in CI the same way, and nothing in the output says so. The version is pinned twice and both pins have to move together: the version key that golangci-lint custom reads, and the go install line that installs the builder. .golangci.yml gains two disable entries. v2.13.1 ships exhaustruct_v5 beside exhaustruct, so default: all turns it on and the existing - exhaustruct line stops meaning what it says; 50 findings appear across api/ without it, and the config already handles this case for wsl and wsl_v5. v2.13.1 also deprecates gomodguard in favour of gomodguard_v2, which default: all already enables, so disabling the old one silences the warning and leaves the same 10 findings.
AntiD2ta
force-pushed
the
chore/bump-golangci-lint-pin
branch
from
August 28, 2026 10:07
5104e69 to
645458b
Compare
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.
Why
A
custom-gclbuilt from thev2.8.0pin cannot read the export data of a newer Go toolchain. On Go 1.27 it fails withthen reports a few
(typecheck)import errors and stops. Every linter that needs type information analyses nothing.The failure mode is what makes this worth fixing. The run does not look broken, it looks quiet. Two issues where a working gate finds ten, and both of those two are import complaints you would skim past on the way to the summary line.
CI is unaffected today, because
golangci-lint.ymlstill pins Go 1.25. The reason to fix it now isupdate-go-version.yml. That workflow rewritesgo-version:in every workflow file when a new Go ships, and it touches neither golangci-lint pin. The first time the bot moves this repo to 1.27, the gate goes quiet in CI exactly as it does locally, and nothing in the output says so.What changed
Four edits across three files.
The version is pinned twice, and both pins have to move together:
.custom-gcl.yml, theversion:key thatgolangci-lint customreads when it builds the binary..github/workflows/golangci-lint.yml, thego install ...@v2.8.0line that installs the builder.Both now say
v2.13.1..golangci.ymlgains twodisableentries, and neither is housekeeping I tacked on:exhaustruct_v5. v2.13.1 ships it besideexhaustruct, sodefault: allturns it on and the existing- exhaustructline stops meaning what it says. Without this entry, 50 findings appear acrossapi/. The config already handles this same rename forwslandwsl_v5, so I followed that.gomodguard. v2.13.1 deprecates it in favour ofgomodguard_v2, whichdefault: allalready enables. Disabling the old one silences the deprecation warning and leaves the same ten findings, which figures:gomodguardhas no settings block in this repo, so it had no module list to enforce.The workflow caches the binary under
hashFiles('.custom-gcl.yml'), so the bump invalidates the cache by itself and CI rebuilds on the first run.Verification
I built
custom-gclfrom the new config and ran it over the whole repo at this branch's base.Ten issues, all in code this PR does not touch: two
attgo_current_year, five unused//nolint:gosecdirectives inspec/bellatrix/, onerevivepackage-naming inhttp/, twostaticcheckSA1019 deprecations inhttp/. The bump introduces none of them, and the count is identical with and without thegomodguardentry.A low issue count is not evidence the gate works, though. That is the exact failure this PR fixes. So I planted an
nlreturnviolation inhttp/spec.goand confirmed the new gate flags it:The
v2.8.0binary says nothing about the same line. Probe reverted.No Go files change here, so
only-new-issues: truehas no changed lines to attach anything to.