Skip to content

Commit b842291

Browse files
authored
feat(renovate): automerge and label lock file maintenance (#158)
lockFileMaintenance is a sixth updateType, and it matched none of the five classification rules. Its PRs therefore carried no version label, never automerged, and could not even be filtered for -- three sat open across the npm repos, the oldest three weeks. Automerging them is a deliberate exception, not the tidy-up it looks like. It cannot carry a soak: minimumReleaseAge does not apply to lockFileMaintenance at all, because Renovate delegates regeneration to the package manager and never sees the individual transitive versions it resolves. So the choice was automerge with no soak or leave them to a human, with no middle option, and CI is the gate that remains. What the exception costs is worth stating plainly. `rangeStrategy: "pin"` freezes every declared dependency, so one of these PRs is the only path by which a transitive dependency ever changes -- which makes it both the only transitive-update mechanism and the only point at which transitive drift could be inspected. Merging on green gives up that inspection. The judgement is that a queue nobody merges is the worse failure, because it means transitive dependencies never move at all. Adds `renovate-version-lockfile` and declares it in settings.yml in the same change: Renovate silently drops labels the consuming repo does not have, so the rule would otherwise be half-inert. It sits outside the traffic-light scheme on purpose, since a lock file refresh has no semver risk level. Only fires where a lockfile exists -- three npm repos today. The java and python repos have none and never see one. Signed-off-by: Jimisola Laursen <jimisola@jimisola.com>
1 parent 971a8d2 commit b842291

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

.github/renovate.json5

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,22 @@
170170
matchUpdateTypes: ["digest"],
171171
addLabels: ["renovate-version-digest"],
172172
},
173+
// The sixth updateType, and it matched none of the five above -- so these
174+
// PRs carried no label, never automerged, and could not be filtered for.
175+
//
176+
// Automerged on purpose, and it cannot carry a soak: minimumReleaseAge does
177+
// not apply to lockFileMaintenance at all, because Renovate delegates
178+
// regeneration to the package manager and never sees the transitive
179+
// versions it picks. CI is therefore the only gate, and since
180+
// `rangeStrategy: "pin"` freezes every declared dependency, one of these is
181+
// the only path by which a transitive dependency ever changes. The
182+
// alternative was a queue nobody merges, which is how three of them reached
183+
// three weeks old. Fires only where a lockfile exists -- three npm repos.
184+
{
185+
matchUpdateTypes: ["lockFileMaintenance"],
186+
addLabels: ["renovate-version-lockfile"],
187+
automerge: true,
188+
},
173189

174190
// =====================================================
175191
// Spring Boot — Maven

safe-settings/settings.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ labels:
149149
- name: renovate-version-digest
150150
color: "c5def5"
151151
description: "Digest/pin update"
152+
# Outside the traffic-light scheme on purpose: a lock file refresh carries no
153+
# semver risk level, it moves whatever the package manager resolves.
154+
- name: renovate-version-lockfile
155+
color: "6a737d"
156+
description: "Lock file refresh (transitive dependencies)"
152157

153158
exclude:
154159
- "^release"

0 commit comments

Comments
 (0)