Skip to content

fix(renovate): apply this organisation's policy to every repository, and tidy after an update - #9

Merged
tannevaled merged 1 commit into
mainfrom
renovate-policy-inherit
Sep 3, 2026
Merged

fix(renovate): apply this organisation's policy to every repository, and tidy after an update#9
tannevaled merged 1 commit into
mainfrom
renovate-policy-inherit

Conversation

@tannevaled

Copy link
Copy Markdown
Contributor

default.json is a preset — it reaches a repository only through an extends naming it. Measured 2026-09-03: 77 of 835 repositories across the 117 organisations that run Renovate carry no config at all, so no organisation policy applied to them, including the Go toolchain guard.

inheritConfig reads it before every repository regardless. inheritConfigStrict: true because the default, false, is silent when the file is missing — the same failure one level up.

postUpdateOptions carries both gomodTidy and gomodUpdateImportPaths: the first alone is inert, since artifacts.ts skips tidy when updateType is major and Renovate calls a 0.x minor bump a major. The second lifts that gate and rewrites nothing for 0.x.

Proven on go-macos first: 33 repositories read the inherited config, none missing; the container ran go mod tidy; go mod tidy on the branch it produced changes nothing.

…and tidy after an update

default.json is a PRESET. It reaches a repository only through an `extends`
naming it; sitting in the organisation applies it to nothing. With
onboarding:false and requireConfig:'optional', an uncovered repository runs on
Renovate's factory defaults and says so only at debug level:

    DEBUG: No renovate config file found (repository=...)

Measured 2026-09-03: 77 of the 835 repositories across the 117 organisations
that actually run Renovate carry no config at all. On every one of them the Go
toolchain guard -- written after go 1.27.0 auto-merged into seven repositories,
and because it miscompiles on loong64 (golang/go#81000) -- has never been in
force, and nothing reported it. The tell was in the branch names all along: an
uncovered repository gets renovate/<dep>-0.x, a covered one renovate/deps.

inheritConfig reads default.json before every repository regardless of what that
repository carries. inheritConfigStrict is not decoration: left at its default
of false, a missing file is silent, which is this same failure one level up.

postUpdateOptions carries BOTH gomodTidy and gomodUpdateImportPaths. gomodTidy
alone is inert here -- artifacts.ts skips tidy outright when updateType is
major, and Renovate calls a 0.x minor bump a major, which is nearly every
dependency in this fleet. gomodUpdateImportPaths lifts that gate and rewrites
nothing for a 0.x dependency: its commands are filtered to newMajor > 1.

Proven on go-macos before this landed anywhere else: 33 repositories read the
inherited config with none missing, the three that carried no config now receive
it, the container logged `go mod tidy command included` and ran it, and
`go mod tidy` on the branch Renovate then produced changes nothing.
@tannevaled
tannevaled merged commit fce4977 into main Sep 3, 2026
1 check passed
@tannevaled
tannevaled deleted the renovate-policy-inherit branch September 3, 2026 17:26
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