Skip to content

feat(renovate): couple go bump to go-overlay refresh (RIG-3100) - #841

Merged
mattwilkinsonn merged 2 commits into
mainfrom
dependencies/rig-3100-go-overlay-lockstep
Sep 3, 2026
Merged

feat(renovate): couple go bump to go-overlay refresh (RIG-3100)#841
mattwilkinsonn merged 2 commits into
mainfrom
dependencies/rig-3100-go-overlay-lockstep

Conversation

@rigel-mintaka

Copy link
Copy Markdown
Contributor

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

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>
@linear-code

linear-code Bot commented Sep 2, 2026

Copy link
Copy Markdown

RIG-3100

@trunk-io

trunk-io Bot commented Sep 2, 2026

Copy link
Copy Markdown

😎 This pull request was merged.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://dependencies-rig-3100-go-ove.compass-eng-docs.pages.dev

Deployed from dependencies/rig-3100-go-overlay-lockstep at 629ff86.

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>
@rigel-mintaka
rigel-mintaka marked this pull request as ready for review September 2, 2026 22:30
@mattwilkinsonn
mattwilkinsonn merged commit e327cbd into main Sep 3, 2026
14 checks passed
@mattwilkinsonn
mattwilkinsonn deleted the dependencies/rig-3100-go-overlay-lockstep branch September 3, 2026 02:27
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.

2 participants