Skip to content

chore(deps): update dependency go to v1.27.1 - #650

Merged
trunk-io[bot] merged 1 commit into
mainfrom
renovate/go-1.x
Sep 5, 2026
Merged

chore(deps): update dependency go to v1.27.1#650
trunk-io[bot] merged 1 commit into
mainfrom
renovate/go-1.x

Conversation

@rigelbuild-renovate

@rigelbuild-renovate rigelbuild-renovate Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change
go (source) toolchain minor 1.26.61.27.1

Configuration

📅 Schedule: (in timezone America/New_York)

  • Branch creation
    • Between 12:00 AM and 03:59 AM (* 0-3 * * *)
  • Automerge
    • At any time (no schedule defined)

🚦 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.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

@rigelbuild-renovate rigelbuild-renovate Bot added the dependencies Pull requests that update a dependency file label Aug 26, 2026
@rigelbuild-renovate
rigelbuild-renovate Bot force-pushed the renovate/go-1.x branch 6 times, most recently from 545ed44 to 8ee1a4a Compare September 2, 2026 10:24
@rigelbuild-renovate rigelbuild-renovate Bot changed the title chore(deps): update dependency go to v1.27.0 chore(deps): update dependency go to v1.27.1 Sep 2, 2026
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>
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://renovate-go-1-x.compass-eng-docs.pages.dev

Deployed from renovate/go-1.x at 9a03e63.

@trunk-io

trunk-io Bot commented Sep 5, 2026

Copy link
Copy Markdown

😎 Merged successfully - details.

@trunk-io
trunk-io Bot merged commit dfa2ece into main Sep 5, 2026
15 checks passed
@trunk-io
trunk-io Bot deleted the renovate/go-1.x branch September 5, 2026 17:27
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant