Skip to content

chore(renovate): add stabilization delay, weekly schedule, and PR cap#12638

Merged
mekarpeles merged 3 commits into
masterfrom
deps/renovate-stabilization
May 12, 2026
Merged

chore(renovate): add stabilization delay, weekly schedule, and PR cap#12638
mekarpeles merged 3 commits into
masterfrom
deps/renovate-stabilization

Conversation

@mekarpeles
Copy link
Copy Markdown
Member

@mekarpeles mekarpeles commented May 6, 2026

Problem

Renovate currently opens PRs the moment a new version publishes, with no concurrency limit and no grouping. This causes:

  • PRs for packages that get immediately yanked or have regressions
  • A constant trickle of individual PRs (one per package) throughout the week
  • Impossible to keep up with manually — we've seen 40+ Renovate PRs open in a single week

Changes

Top-level settings:

Setting Value Effect
minimumReleaseAge "7 days" Won't open a PR until a version has been live ≥7 days. Catches yanked packages and immediate regressions.
schedule "before 9am on Monday" All non-security updates batched to Monday morning. One review session per week.
prConcurrentLimit 10 Caps open Renovate PRs at 10. Prevents queue flooding.

New grouping rules (the big change):

Instead of one PR per package, Renovate will now open at most two PRs per week:

  • "Python dependencies (non-major)" — all pip patch/minor updates in one PR
  • "JS dependencies (non-major)" — all npm patch/minor updates in one PR

Major version bumps still get individual PRs (they need dedicated review).

Security updates bypass all limitsminimumReleaseAge: "0 days", schedule: "at any time", and prConcurrentLimit: 0 so CVE patches still land immediately, ungrouped, and are never blocked by the 10-PR cap.

What this does NOT change

  • automerge remains false everywhere
  • All existing named grouping rules (eslint, jest/sinon/stylelint, mypy/ruff/pytest, actions) are preserved unchanged
  • Submodule and pip_requirements manager configs unchanged

Note: Two new grouping rules are added (Python non-major and JS non-major) — the above refers to pre-existing rules only.

Expected outcome

  • Before: ~10–40 individual Renovate PRs opened throughout the week
  • After: 2 PRs opened Monday morning (Python non-major + JS non-major), plus immediate security PRs as needed

- minimumReleaseAge: 7 days — wait for packages to stabilize before opening PRs;
  prevents chasing yanked releases and bleeding-edge versions that may break things
- schedule: Monday morning only — batches all updates into one weekly window
  instead of PRs trickling in throughout the week
- prConcurrentLimit: 10 — caps open Renovate PRs so the queue stays manageable
- Security updates bypass both limits (minimumReleaseAge: 0, schedule: any time)
  so CVE patches still land immediately
Copilot AI review requested due to automatic review settings May 6, 2026 00:12
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts Renovate’s dependency-update workflow in renovate.json by adding global throttling/batching settings and a security-specific exception, and it also introduces new grouping rules for non-major Python and npm updates.

Changes:

  • Add global Renovate controls: minimumReleaseAge, weekly schedule, and prConcurrentLimit.
  • Add a security-targeted package rule intended to bypass the delay/schedule.
  • Add new grouping rules for non-major pip_requirements and npm updates.

Comment thread renovate.json Outdated
Comment thread renovate.json Outdated
Comment thread renovate.json
Comment thread renovate.json Outdated
Copy link
Copy Markdown
Collaborator

@RayBB RayBB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot makes some good points. Can you please respond or resolve them and then we can take a look?

@RayBB RayBB added the Needs: Submitter Input Waiting on input from the creator of the issue/pr [managed] label May 7, 2026
@mekarpeles
Copy link
Copy Markdown
Member Author

uv and npm config should have minimum release age of 7 days.

@mekarpeles mekarpeles added the Priority: 1 Do this week, receiving emails, time sensitive, . [managed] label May 11, 2026
@mekarpeles mekarpeles assigned cdrini and unassigned RayBB May 11, 2026
@mekarpeles mekarpeles added Priority: 0 Fix now: Issue prevents users from using the site or active data corruption. [managed] and removed Priority: 1 Do this week, receiving emails, time sensitive, . [managed] labels May 11, 2026
…nimumReleaseAge on grouped rules

- Add prConcurrentLimit: 0 to security packageRule so CVE patches are
  never blocked by the global 10-PR cap
- Add explicit minimumReleaseAge: "7 days" to the Python and JS grouping
  rules for clarity (global default already applies, but explicit is safer)
@github-actions github-actions Bot removed the Needs: Submitter Input Waiting on input from the creator of the issue/pr [managed] label May 12, 2026
@mekarpeles
Copy link
Copy Markdown
Member Author

Addressed all Copilot threads and your comment @RayBB:

Real bug fixed (Copilot thread on security rule): Added "prConcurrentLimit": 0 to the security packageRule. Without it, CVE patches could be queued behind the global 10-PR cap on a busy week — security updates now truly bypass all limits.

Explicit minimumReleaseAge on grouping rules (your comment): Added "minimumReleaseAge": "7 days" explicitly to both the Python and JS non-major grouping rules. The global default already applies, but this makes the intent visible at the rule level.

PR description clarified (Copilot threads on grouping rules): Updated the "What this does NOT change" section to be explicit that the two new grouping rules are new additions — the existing named groups (eslint, jest, mypy, actions) are unchanged.

All 3 Copilot threads resolved.

RayBB
RayBB previously requested changes May 12, 2026
Copy link
Copy Markdown
Collaborator

@RayBB RayBB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mekarpeles do you want to make it so we consolidate PRs instead of having one PR for each dependency?

you can configure renovate to consolidate PRs for minor bumps like this, if you find that desirable.

https://stackoverflow.com/questions/66471226/renovate-combine-all-updates-to-one-branch-pr

Comment is from: #12713

@github-project-automation github-project-automation Bot moved this from Waiting Review/Merge from Staff to Someone else is working on it in Ray's Project May 12, 2026
@mekarpeles
Copy link
Copy Markdown
Member Author

@RayBB for now, maybe easier to land this and test PRs individually, though a followup PR for minor bumps may be beneficial.

@mekarpeles mekarpeles assigned RayBB and unassigned cdrini May 12, 2026
@mekarpeles mekarpeles dismissed RayBB’s stale review May 12, 2026 20:19

responded to review feedback

@mekarpeles mekarpeles merged commit 27a9d55 into master May 12, 2026
9 checks passed
@mekarpeles mekarpeles deleted the deps/renovate-stabilization branch May 12, 2026 20:19
@github-project-automation github-project-automation Bot moved this from Someone else is working on it to Done in Ray's Project May 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Priority: 0 Fix now: Issue prevents users from using the site or active data corruption. [managed]

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants