feat(renovate): couple go bump to go-overlay refresh (RIG-3100) - #841
Merged
Conversation
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>
|
😎 This pull request was merged. |
|
Compass engineering docs preview: https://dependencies-rig-3100-go-ove.compass-eng-docs.pages.dev Deployed from |
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
marked this pull request as ready for review
September 2, 2026 22:30
mattwilkinsonn
approved these changes
Sep 3, 2026
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.
A Renovate
gotoolchain bump rewrites only the version string intools/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
versionsset only carries go releases at or before that rev, so a bump to anewer go than the pinned overlay provides evals
go-bin.versions.<new>againsta 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 throughgate-tools.nix's
langs.go— the same build-free eval path CI uses — so a gobump lands in one green PR instead of a red one needing a manual overlay
follow-up.
validate
langs.go.version=== go.nix pin (fail loud on mismatch/missing).devenv.lock alone; stale "no refresh leg" comment on the go manager rewritten.
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