Skip to content

renovate: enforce the soak (disable platformAutomerge) + kill the npm --before notice - #7

Merged
cewert merged 2 commits into
mainfrom
chore/renovate-lockfile-maintenance
Jun 12, 2026
Merged

renovate: enforce the soak (disable platformAutomerge) + kill the npm --before notice#7
cewert merged 2 commits into
mainfrom
chore/renovate-lockfile-maintenance

Conversation

@cewert

@cewert cewert commented Jun 12, 2026

Copy link
Copy Markdown
Member

Two related hardening fixes to the soak/automerge policy added in #6.

1. platformAutomerge: false — the important one

The soak was being bypassed. minimumReleaseAge enforces its wait via a non-required renovate/stability-days status check. With platformAutomerge: true (the Renovate default), GitHub's native auto-merge fires as soon as the required checks pass and ignores that non-required check — so a soaking PR merges anyway.

This already happened: jellyrock/jellyrock#657 (sharp 0.35.1, a minor) merged ~11 minutes after CI went green instead of after its 5-day soak.

platformAutomerge: false makes Renovate do the merge itself, which honours minimumReleaseAge. Keeping stability-days non-required is deliberate — a human can still merge a hotfix early, while Renovate's own automerge waits out the soak. (The alternative, making stability-days a required check, would enforce the soak but also block manual early-merge — not what we want.)

Trade-off: automerge now happens on Renovate's run cadence (minutes–hours) rather than GitHub's instant native queue. Fine.

2. lockFileMaintenance (automerge, monthly) — kills the --before notice

minimumReleaseAge makes Renovate pass npm install --before=<now − soak> to age-protect transitive deps. When the existing lockfile holds packages newer than that cutoff, npm errors, Renovate retries without --before, and logs a noisy "npm --before could not be enforced …" notice on the PR. There's no flag to suppress just the notice. Monthly lock-file maintenance regenerates the lockfile from scratch with --before, keeping it clean so the notice stops recurring.

README updated for both, with "don't revert this without …" guardrail notes.

cewert added 2 commits June 12, 2026 13:40
minimumReleaseAge makes Renovate pass 'npm install --before=<now-soak>' to
age-protect transitive deps. When the existing lockfile holds packages newer
than that cutoff (e.g. a freshly-pinned direct dep, or a recent npm install),
npm errors, Renovate retries without --before, and logs a noisy 'npm --before
could not be enforced' artifact notice on every affected dependency PR. There
is no flag to suppress just the notice (it's automatic in the npm post-update
manager).

The documented fix: lockFileMaintenance regenerates the lockfile from scratch
WITH --before on a schedule, keeping the base lockfile clean so the fallback
(and its notice) stops firing on regular dep PRs. Enabled with automerge +
monthly schedule = one quiet self-merging PR per repo per month.
CRITICAL: minimumReleaseAge's soak is a NON-required 'renovate/stability-days'
status check. With platformAutomerge:true (the Renovate default), GitHub's native
auto-merge fires as soon as the REQUIRED checks pass and ignores the non-required
stability check — so the soak is bypassed entirely. That's how the sharp 0.35.1
minor PR (jellyrock/jellyrock#657) merged ~11 min after CI instead of after its
5-day soak.

platformAutomerge:false makes Renovate perform the merge itself, which honours
minimumReleaseAge. Keeping stability-days NON-required is deliberate: a human can
still merge a hotfix early, while Renovate's own automerge waits out the soak.

(Same PR also enables lockFileMaintenance to stop the npm --before artifact
notice — see the other commit.)
@cewert cewert changed the title renovate: enable lockFileMaintenance to kill the npm --before notice renovate: enforce the soak (disable platformAutomerge) + kill the npm --before notice Jun 12, 2026
@cewert
cewert merged commit 3e178a5 into main Jun 12, 2026
1 check passed
@cewert
cewert deleted the chore/renovate-lockfile-maintenance branch June 12, 2026 18:08
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