chore(deps): update dependency go to v1.27.1 - #650
Merged
Conversation
rigelbuild-renovate
Bot
requested a review
from mattwilkinsonn
as a code owner
August 26, 2026 06:46
rigelbuild-renovate
Bot
force-pushed
the
renovate/go-1.x
branch
6 times, most recently
from
September 2, 2026 10:24
545ed44 to
8ee1a4a
Compare
mattwilkinsonn
added a commit
that referenced
this pull request
Sep 3, 2026
* feat(renovate): couple go bump to go-overlay refresh (RIG-3100) A Renovate `go` toolchain bump rewrites only the version string in tools/toolchain/versions/go.nix; the per-platform hashes come from the go-overlay flake input, whose rev is pinned in devenv.lock. go-overlay's `versions` set only carries go releases at or before that rev, so a bump to a newer go than the pinned overlay provides evals `go-bin.versions.<new>` against a stale overlay and reds CI (`attribute '"<ver>"' missing` / `gate-tools.nix langs produced no store paths`). Couple the two: a rule-level postUpgradeTask on the go pin's solo branch runs a new refresh-go-overlay.ts that advances the go-overlay input (`devenv update go-overlay`) and validates the bumped version resolves through gate-tools.nix's `langs.go` — the same build-free eval path CI uses — so a go bump lands in one green PR instead of a red one needing a manual overlay follow-up. - refresh-go-overlay.ts: self-gate on go.nix vs base → advance overlay → validate `langs.go.version` === go.nix pin (fail loud on mismatch/missing). - refresh-go-overlay.core.ts: pure devenv.lock/go.nix parsing (unit-tested). - config.json5: matchDepNames ["go"] on custom.regex, branch-mode task over devenv.lock alone; stale "no refresh leg" comment on the go manager rewritten. - bot-config.json5: allowlist the command (5th entry). - config.test.ts: command-count/set guards 4→5 + solo-branch grouping invariant. Mirrors the refresh-devenv-nixpkgs.ts (RIG-2432) pattern. Fixes the compass #650 (go v1.27) red class. Co-authored-by: Matt Wilkinson <matt@rigel.build> * test(renovate): harden go-overlay coupling tests (RIG-3100 review) Address the review's two low findings on the go↔go-overlay lockstep: - refresh-go-overlay.test.ts: model the PRIMARY RIG-3100 failure (a too-old overlay makes go-bin.versions.<new> a MISSING attr, so the CI-path eval exits non-zero) via a new `.force-eval-fail` stub sentinel + a fail-loud test; assert the shipped eval hits the REAL CI target (gate-tools.nix langs.go.version) by recording the stub's args, so a typo'd file/attr can't pass green against an arg-agnostic stub. - config.test.ts: extend the solo-branch grouping guard to cover a `major` go bump as well as `minor` (test.each), documenting that a major bump also un-groups to its own branch and gets the overlay refresh. Co-authored-by: Matt Wilkinson <matt@rigel.build> --------- Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigelbuild-renovate
Bot
force-pushed
the
renovate/go-1.x
branch
from
September 3, 2026 10:38
8ee1a4a to
a7018ea
Compare
|
Compass engineering docs preview: https://renovate-go-1-x.compass-eng-docs.pages.dev Deployed from |
rigelbuild-renovate
Bot
force-pushed
the
renovate/go-1.x
branch
from
September 4, 2026 10:27
a7018ea to
e448873
Compare
rigelbuild-renovate
Bot
force-pushed
the
renovate/go-1.x
branch
from
September 5, 2026 09:56
e448873 to
9a03e63
Compare
mattwilkinsonn
approved these changes
Sep 5, 2026
|
😎 Merged successfully - details. |
This was referenced Sep 5, 2026
trunk-sudo Bot
pushed a commit
that referenced
this pull request
Sep 5, 2026
…in (RIG-3303) (#904) * fix(toolchain): build the Go analysis battery with the go1.27 toolchain (RIG-3303) Renovate #650 bumped the go compiler to 1.27.1, but the Go analysis battery (golangci-lint, govulncheck, go-licenses, nilaway) came from the bare nixpkgs attributes, built with go1.26. A go1.26-built analyzer cannot parse the go1.27 stdlib and fails every run with `file requires newer Go version go1.27 (application built with go1.26)`. nilaway runs first in the `compass-go:ci` aggregate and failed fast, so only its skew showed on main — but golangci-lint and govulncheck are the same class. This reddened `moon (go)` -> `rollup` (the required check) and gated the whole merge queue since 2026-09-05T17:27Z. This is the fix-forward Matt ruled: keep go 1.27.1 and fix the skewed side, so the compiler and every analyzer stay on one Go version. ## What changed - `tools/toolchain/versions/go-analysis.nix` — new pins for the battery. Two need a release past the nixpkgs pin to understand go1.27, not just a rebuild: nilaway (nixpkgs ships x/tools v0.31.0, which cannot parse go1.27; pinned to an upstream rev carrying v0.45.0) and golangci-lint (nixpkgs ships 2.12.2, whose bundled staticcheck panics on the go1.27 IR; 2.13.0 added go1.27 support, pinned to 2.13.2). - `tools/toolchain/go-analysis.nix` — new shared builder: rebuilds all four with the go-overlay toolchain the code compiles against (each package.nix takes a different buildGo*Module arg — buildGoModule / buildGo126Module / buildGoLatestModule — so the override names them per tool). Both the dev shell and the CI parity gate import this one module and pass the same `goToolchain`, so they resolve one store path per tool. - `devenv.nix` / `tools/toolchain/gate-tools.nix` — the four tools move out of the parsed `with pkgs` `packages` literal (no longer bare nixpkgs attrs) into the appended toolchain list and the store-path-checked `langs` set, exactly as `goToolchain` is handled. The parity gate now verifies CI's battery is byte-identical to the dev shell's. - `go/internal/runner/host.go` — the newer nilaway (struct-init-v2) re-flags the `Resolve()`-receiver cluster in `agent.go` that the old build guarded. All 15 findings trace to one unguarded callsite (host.go:320); a `handle == nil` guard there clears them, matching the existing pattern at :593/:706/:840/:947. - `go/.golangci.yml` — golangci-lint 2.13 renamed `exhaustruct` -> `exhaustruct_v5` (deprecating the old name); disable both so the idiom-fighting linter stays off under `default: all`, mirroring the existing `wsl`/`wsl_v5` pair. - `go/server/service.go` — drop a `//nolint:unparam` on `forward` that 2.13's nolintlint reports as unused (the newer unparam no longer flags it). ## Verification - `moon run compass-go:ci` — the full aggregate (fmt/vet/lint/nilaway/test/build/vuln/licenses/sqlc-drift) — passes on the go1.27 tree. This is the exact aggregate red on main. - The toolchain parity gate passes: all 71 pinned tools match the dev shell; each battery tool store-path-verified as its go1.27.1 build. - `compass-go:lint` reports 0 issues; `compass-go:nilaway` clean. Spec-impact: none. Refs RIG-3303. Refs #650. Co-authored-by: Matt Wilkinson <matt@rigel.build> * fix(toolchain): de-skew go-licenses GOROOT + review follow-ups (RIG-3303) Review of #904 found go-licenses was not actually de-skewed: it wraps its binary with `--set GOROOT '${go}/share/go'` using its own top-level `go` arg, which the earlier fix left at nixpkgs' go1.26.5 while rebuilding the binary itself with go1.27. So go-licenses classified a go1.27 build's stdlib against a go1.26 GOROOT — the exact skew this PR removes for the other three tools. - **go-analysis.nix**: thread the go1.27 toolchain through a rebuilt tool's own `go` arg via a new `passGo` flag, set on go-licenses. Verified: its wrapper GOROOT now points at go-1.27.1 and its closure carries zero go-1.26 refs (was one). Also add an `assert` that a `pin` carries `hash` + (`tag`|`rev`). - **versions/go-analysis.nix**: correct the comment that claimed go-licenses needs "only the compiler rebuild", and flag the file as manually maintained (not yet Renovate-managed — follow-up tracked). - **ci.yml / build-and-ci.md**: the phase-two nixpkgs-attrs step and the docs both listed the Go analysis battery among the tools it installs; it is not — the battery is rebuilt against the go toolchain and rides phase one via gate-tools.nix `langs`. Corrected both. - **parity-core.test.ts**: extend the devenv fixture's appended `++ [ … ]` list with `goAnalysis.*` refs and assert the parser never yields them, covering the real block's shape. Verified: `moon run compass-go:ci` green on go1.27 (all 10 tasks incl. licenses + vuln); parity 71/71; parity-core unit tests 23 pass. Spec-impact: none. Refs RIG-3303 Co-authored-by: Matt Wilkinson <matt@rigel.build> --------- Co-authored-by: Matt Wilkinson <matt@rigel.build>
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.
This PR contains the following updates:
1.26.6→1.27.1Configuration
📅 Schedule: (in timezone America/New_York)
* 0-3 * * *)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.