From 9f4d455295ee4952f19b315a4a3c89c1679864ca Mon Sep 17 00:00:00 2001 From: mintaka Date: Wed, 2 Sep 2026 17:37:02 -0400 Subject: [PATCH 1/2] feat(renovate): couple go bump to go-overlay refresh (RIG-3100) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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.` against a stale overlay and reds CI (`attribute '""' 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 --- tools/renovate/bot-config.json5 | 15 +- tools/renovate/config.json5 | 57 ++++- tools/renovate/config.test.ts | 62 ++++- .../renovate/refresh-go-overlay.core.test.ts | 73 ++++++ tools/renovate/refresh-go-overlay.core.ts | 73 ++++++ tools/renovate/refresh-go-overlay.test.ts | 226 ++++++++++++++++++ tools/renovate/refresh-go-overlay.ts | 172 +++++++++++++ 7 files changed, 663 insertions(+), 15 deletions(-) create mode 100644 tools/renovate/refresh-go-overlay.core.test.ts create mode 100644 tools/renovate/refresh-go-overlay.core.ts create mode 100644 tools/renovate/refresh-go-overlay.test.ts create mode 100644 tools/renovate/refresh-go-overlay.ts diff --git a/tools/renovate/bot-config.json5 b/tools/renovate/bot-config.json5 index 80a259e0..4e951f74 100644 --- a/tools/renovate/bot-config.json5 +++ b/tools/renovate/bot-config.json5 @@ -56,7 +56,7 @@ // addon, so the workflow sets RENOVATE_X_IGNORE_RE2=true to take the RegExp path // quietly.) // - // Four entries, all load-bearing: + // Five entries, all load-bearing: // 1. the toolchain-hash refresh, which re-prefetches the vendored-binary // sha256 pins a tools/toolchain/versions/*.nix bump invalidates; // 2. the catalog lockfile regeneration. Renovate's custom.regex manager exports @@ -78,12 +78,21 @@ // both the top-level (branch mode) and catalog-rule (update mode) // postUpgradeTasks in config.json5 — one command string, so ONE allowlist // entry covers both sites. - // (1), (3), and (4) are `bun