Skip to content

chore(renovate): batch updates monthly and age releases 7 days - #30

Merged
kirangadhave merged 1 commit into
mainfrom
kg/renovate-noise-reduction
Jul 30, 2026
Merged

chore(renovate): batch updates monthly and age releases 7 days#30
kirangadhave merged 1 commit into
mainfrom
kg/renovate-noise-reduction

Conversation

@kirangadhave

Copy link
Copy Markdown
Member

Reduces Renovate PR volume and adds supply-chain protection against package poisoning.

What changes

  • schedule:monthly — updates arrive in one predictable batch instead of a continuous stream. Same cadence marimo/marimo uses.
  • minimumReleaseAge: "7 days" — Renovate will not propose a version published within the last week. A compromised npm release is usually yanked within hours, so this filters most package-poisoning attacks without needing a human to spot them.
  • Automerge for pin/digest/patch/minor on green CI. Majors still require review.
  • prConcurrentLimit: 3 — caps how much can be open at once.
  • abandonmentThreshold: null — drops the dashboard's "Abandoned Dependencies" section. It flagged clsx, class-variance-authority and lz-string, which are stable rather than unmaintained.
  • vulnerabilityAlerts opts out of both the schedule and the age floor, so a real CVE fix is not delayed by a week.

Why PRs were piling up

The shared marimo-team/.github:renovate-config sets no schedule, no release-age floor and no automerge. Separately, the default-branch ruleset requires 1 approving review with an empty bypass_actors list, so Renovate could never merge anything — five PRs sat green and BLOCKED. Automerge here only works once Renovate is added to that bypass list.

Follow-up: pnpm-level floor

The stronger version of this protection is minimumReleaseAge in pnpm-workspace.yaml, which blocks installing anything too new — including transitive deps and manual pnpm add, neither of which Renovate covers.

It cannot land yet. Four package.json floors point at releases younger than 7 days, so a fresh resolution fails:

[ERR_PNPM_NO_MATURE_MATCHING_VERSION] 349 versions do not meet the minimumReleaseAge constraint
  oxfmt@0.61.0         published 2026-07-27
  shadcn@4.16.0        published 2026-07-27
  lucide-react@1.27.0  published 2026-07-25
  radix-ui@1.6.7       published 2026-07-24

Regenerating the lockfile does not help — no older version satisfies those caret ranges. They mature on 2026-08-03, after which this becomes a one-line follow-up. Once Renovate refuses to propose anything under 7 days, package.json floors can no longer outrun the pnpm policy.

Verification

The shared marimo-team config sets no schedule, no release-age floor, and no automerge, so Renovate fired continuously and every major opened its own PR. Combined with an empty bypass_actors list on the default branch ruleset, nothing could ever merge itself and PRs only accumulated.

A monthly schedule plus a 7-day minimumReleaseAge is the same posture marimo/marimo already runs. The age floor is the point: a compromised npm release is usually yanked within hours, so refusing anything younger than a week filters most package-poisoning attacks without human review. Vulnerability alerts opt out of both the schedule and the floor so a real CVE fix is not delayed a week.

Pin, digest, patch and minor updates automerge on green CI; majors still need a review since they can break the build. abandonmentThreshold is disabled because the packages it flagged (clsx, lz-string) are stable rather than unmaintained, and the dashboard section was pure noise.

The equivalent pnpm-level minimumReleaseAge is deliberately not set yet. Four package.json floors currently point at releases younger than seven days, so pnpm resolution fails with NO_MATURE_MATCHING_VERSION until they age out on 2026-08-03.
@kirangadhave
kirangadhave merged commit 864dd04 into main Jul 30, 2026
3 checks passed
@kirangadhave
kirangadhave deleted the kg/renovate-noise-reduction branch July 30, 2026 19:49
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