Skip to content

feat(renovate): gate Go toolchain minor-line bumps behind manual approval - #128

Merged
cplieger merged 1 commit into
mainfrom
feat/go-minor-approval-gate
Aug 3, 2026
Merged

feat(renovate): gate Go toolchain minor-line bumps behind manual approval#128
cplieger merged 1 commit into
mainfrom
feat/go-minor-approval-gate

Conversation

@cplieger

@cplieger cplieger commented Aug 3, 2026

Copy link
Copy Markdown
Owner

Go's version scheme is not semver. The leading 1 is frozen by the compatibility promise, so Go's minor is the real breaking axis, not a routine update: Go 1.27 alone moves Unicode 15 to 17, re-backs encoding/json on the v2 implementation, changes the DEFLATE encoder's output bytes, and permanently removes the asynctimerchan GODEBUG.

Without a gate, the Auto-merge routine update types rule at the top of this file treats that as an ordinary minor and merges it unattended in every repo the day the release reaches go.dev's stable list.

Scope is deliberately narrow:

  • minor only. Go PATCH updates are the stdlib-CVE stream the go-directive customManager exists to deliver, and they must keep flowing without a human. They also reach the FROM golang: two-component pins as a digest bump rather than a version bump, so neither path is touched here.
  • All four toolchain shapes in one rule, including both deps named golang (the golang-version ARG GO_VERSION pin and the docker builder image), so the whole golang toolchain group carries the gate and no member can drift ahead alone.
  • Placed after the blanket automerge rule so automerge: false wins the rule merge, and directly after the golang toolchain group it gates.

Labels match homelab's own critical-infra minor gate (requires-approval + minor-update). The per-release migration surface this protects is inventoried in .kiro/steering/go-stdlib-changelog.md.

Validated with renovate-config-validator (exit 0).

…oval

Go's version scheme is not semver: the leading 1 is frozen by the
compatibility promise, so Go's `minor` is the real breaking axis. Go 1.27
alone moves Unicode 15 to 17, re-backs encoding/json on the v2
implementation, changes the DEFLATE encoder's output bytes, and removes the
asynctimerchan GODEBUG.

Without this rule the blanket automerge-routine-update-types rule treats
that as an ordinary minor and merges it unattended in every repo the day it
reaches go.dev's stable list.

Scoped to `minor` only, so the stdlib-CVE patch stream the go-directive
manager delivers keeps flowing without a human. Covers all four toolchain
deps in one rule so no member of the golang toolchain group can drift ahead
alone.
@cplieger
cplieger merged commit 4a72e62 into main Aug 3, 2026
12 checks passed
@cplieger
cplieger deleted the feat/go-minor-approval-gate branch August 3, 2026 12:38
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.

1 participant