Skip to content

The Go pin is held behind upstream by the linter pin it must move with #32

Description

@jakewan

Context

Surfaced while moving the Go pin off 1.26.5 to clear the standard-library advisories that were failing the vulnerability scan. That bump landed in #33 at 1.26.7 rather than at the current release, for the reason below.

Problem

The Go pin cannot advance to the current release. Go 1.27.0 is out, but the pinned golangci-lint is built against Go 1.26 and refuses a 1.27 target:

can't load config: the Go language version (go1.26) used to build golangci-lint
is lower than the targeted Go version (1.27.0)

golangci-lint 2.13.0 and 2.13.1 both add go1.27 support, so the fix exists upstream — but mise's built-in minimum_release_age guard hides both, and the pinned toolchain therefore cannot install either yet. Nothing in this repository sets that guard; it is a mise default.

Advancing only the CI half is not available. .claude/rules/toolchain-ci-parity.md binds the golangci-lint pin in mise.toml and the golangci-lint-action version: input in .github/workflows/ci.yml as one atomic value, and nothing detects a mismatch between them — so a CI-only bump would trade a visible red report for silent local/CI drift.

While this holds, the Toolchain currency workflow fails every week. It compares each pin against the latest release rather than against the latest patch of the pinned minor, so it reports go 1.26.7 -> 1.27.0 and exits non-zero.

Evidence

  • mise outdated --bump --local reports go 1.26.7 -> 1.27.0.
  • Upstream golangci/golangci-lint#6643 ("go1.27 support") closed 2026-08-19; released in v2.13.0 (2026-08-19) and v2.13.1 (2026-08-20).
  • mise ls-remote golangci-lint@2.13 returns nothing, with WARN 2 newer golangci-lint releases hidden by minimum_release_age.
  • Pinned at Go 1.27.0 locally, every gate passed except just lintjust vuln, just test-race, just tidy-check, just build, and just release-check were all green, and mise outdated returned empty, confirming 1.27.0 would clear the currency report.

Suggested approaches

Once mise's release-age window clears 2.13.x, move both pins in one change: mise.toml, go.mod, mise.lock, and the version: input in .github/workflows/ci.yml. Verify with the full local gate — just lint is the check that actually exercises the compatibility, and it is the one that failed here.

If the window turns out to be long enough to matter, minimum_release_age_excludes can scope an exception per tool. That trades a supply-chain control for a report that is red for a known and accepted reason, which is worth weighing rather than assuming: v2.13.0 needed a fast-follow inside a day.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions