Exempt pin/pinDigest/digest from minimumReleaseAge#18
Merged
Conversation
mikewalters-truffle
approved these changes
Jun 16, 2026
The 3-day release-age cooldown is meant for new upstream version releases (the Axios/golang-jwt supply-chain threat model). Applying it to pin, pinDigest, and digest updates is both unnecessary and broken: - pin / pinDigest introduce no new code (locking an already-allowed version / capturing a tag's current digest -- a hardening action). - digest re-pins have no reliable release timestamp for Renovate to age, so renovate/stability-days gets stuck pending indefinitely (e.g. ldap-verify #9, forager #818 -- both blocked on stale checks despite all deps being weeks/months old). Real version upgrades (major/minor/patch) keep the 3-day delay, and security updates continue to bypass it via vulnerabilityAlerts. Co-authored-by: Cursor <cursoragent@cursor.com>
10bedb9 to
922f65b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a packageRule to the base
renovate-configpreset that setsminimumReleaseAge: nullforpin,pinDigest, anddigestupdate types.The org-wide 3-day release-age cooldown exists to defend against newly-published malicious version releases (Axios/golang-jwt-style supply-chain attacks). Applying it to pins and digest re-pins is both unnecessary and currently broken:
pin/pinDigestintroduce no new code — a pin locks a version the existing range already allows (and, with a lockfile, already resolves to); a digest pin captures a tag's current SHA, which is a hardening action.digestre-pins have no reliable release timestamp for Renovate to age, sorenovate/stability-daysgets stuckpendingindefinitely.Observed impact (Jun 15 cycle)
actions/checkoutdigest → v6.0.3 from Jun 2,golangci-lint→ v2.12.2 from May 6). Both updates are weeks/months old, yet the freshly-recomputed check still reports "Updates have not met minimum release age requirement" — a rebase did not clear it.pinPR (TS/@types/node/etc., all old releases)BLOCKEDon the same stale check (forager requires the status).What does NOT change
major/minor/patchversion upgrades keep the full 3-dayminimumReleaseAge.vulnerabilityAlerts.minimumReleaseAge: null.Residual risk
The only place this loses protection is a repo with a
package.jsonthat has no lockfile, where pinning could freeze in a freshly-published in-range version with no cooldown. Across the 16 tracked repos this is onlytrove(sub-packagesadmin/,gateway/,iap-probe/,pkg/hono-shared/,workspace/), which is low-risk and automerges. Recommended follow-up: add lockfiles to those packages (reproducible installs + constrains Renovate). Tracked in the Jira subtask.Rollout
renovate-config-low-risk→ base, untagged) pick this up immediately on merge.#v1.0.2→#v1.0.3.Test plan
renovate/stability-daysclears after next run (low-risk/untagged repos) and after high-risk bump for pinned reposMade with Cursor