Skip to content

fix(#3482): exclude vulnerability PRs from grouped patch updates - #3485

Open
fullsend-ai-coder[bot] wants to merge 1 commit into
mainfrom
agent/3482-exclude-vuln-from-group
Open

fix(#3482): exclude vulnerability PRs from grouped patch updates#3485
fullsend-ai-coder[bot] wants to merge 1 commit into
mainfrom
agent/3482-exclude-vuln-from-group

Conversation

@fullsend-ai-coder

Copy link
Copy Markdown
Contributor

What:

Add a packageRules entry to renovate.json that excludes vulnerability/security PRs from being grouped with patch update bundles. Also add vulnerabilityAlerts configuration for proper labeling and scheduling.

Why:

Standalone security PRs (e.g., #3473-3475 for CVE-2026-71556 and CVE-2026-71557) have been repeatedly autoclosed by Renovate's deduplication logic because the same version bump exists in a grouped patch PR (#3019) that has been failing CI for months. This is a recurring pattern — the same thing happened with go-git v5.19.1 in April 2026 (#3250-3253 autoclosed, manual PR #3335 needed weeks later). The fix ensures security PRs remain standalone and can merge independently of stalled grouped PRs.

Tickets:

#3482


Closes #3482

Post-script verification

  • Branch is not main/master (agent/3482-exclude-vuln-from-group)
  • Secret scan passed (gitleaks — 61ed8a355ace58359e1255b0ea2ce01a9d378f50..HEAD)
  • PR body secret scan passed (gitleaks — no-git)

Add packageRules entry to renovate.json that sets groupName and
groupSlug to null for vulnerability alerts on gomod packages.
This prevents Renovate from deduplicating standalone security
PRs against grouped patch bundles that may have failing CI.

Also add vulnerabilityAlerts config with security/renovate labels
and unrestricted scheduling so security fixes are processed
immediately.

This addresses a recurring pattern where approved security PRs
(e.g., #3473-3475 for CVE-2026-71556/CVE-2026-71557, and earlier
#3250-3253 for go-git v5.19.1) were autoclosed by Renovate in
favor of months-stale grouped PRs with failing checks.

Note: pre-commit could not run in sandbox (network access
restricted). No Go code changes — config-only change.

Closes #3482
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 8, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 2:29 PM UTC · Completed 2:42 PM UTC

Commit: 87c4a29 · View workflow run →

@codecov

codecov Bot commented Aug 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Flag Coverage Δ
acceptance 54.40% <ø> (-0.01%) ⬇️
generative 16.36% <ø> (ø)
integration 27.58% <ø> (ø)
unit 71.97% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@fullsend-ai-review

Copy link
Copy Markdown

Review

Findings

Medium

  • [logic error] renovate.json:7 — The packageRules entry setting groupName: null and groupSlug: null for isVulnerabilityAlert: true is redundant. Renovate already internally forces groupName: null for vulnerability alerts via its built-in force block, which takes the highest configuration priority and cannot be overridden by user packageRules. This means the rule will never have a practical effect on ungrouping behavior. The actual problem described in issue Exclude Renovate vulnerability PRs from grouped patch updates to prevent security fixes stalling behind failing CI bundles #3482 (standalone security PRs being autoclosed in favor of a stalled grouped PR containing the same version bump) is caused by Renovate's update deduplication logic, not by grouping configuration. The deduplication occurs because the same dependency version bump (e.g., go-git v5.19.1 → v5.19.2) exists in both the standalone security branch and the grouped patch branch, causing Renovate to consider the standalone PR superseded. Setting groupName: null (which is already the default for vulnerability alerts) does not change how deduplication works.
    Remediation: Investigate whether the autoclosing is caused by Renovate's branch/update deduplication logic rather than grouping. Potential approaches: (1) file a Renovate issue about deduplication between vulnerability PRs and grouped PRs that have failing CI, (2) consider splitting the stalled grouped PR (Update go modules (main) (patch) #3019) or removing the go-git update from it so the deduplication trigger is eliminated, (3) if keeping this rule for documentation/intent purposes, add a JSON comment noting it is redundant with Renovate's built-in force behavior and does not address the deduplication root cause.

Low

  • [scope limitation] renovate.json:9 — The packageRules entry restricts the vulnerability ungrouping override to matchManagers: ["gomod"] only, while the parent preset groups dependencies across multiple managers (dockerfile, github-actions, npm). Since the entire packageRules entry is redundant (Renovate already forces groupName: null for all vulnerability alerts regardless of manager), this scope limitation is moot. However, if the team decides to keep the rule for documentation purposes, removing matchManagers would make the intent clearer for all dependency types.

Labels: PR modifies Renovate configuration for vulnerability alert handling

@fullsend-ai-review fullsend-ai-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

See the review comment for full details.

Comment thread renovate.json
"helpers:pinGitHubActionDigests"
]
],
"packageRules": [

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[medium] logic error

The packageRules entry setting groupName: null and groupSlug: null for isVulnerabilityAlert: true is redundant. Renovate already internally forces groupName: null for vulnerability alerts via its built-in force block. The actual problem (autoclosing of standalone security PRs) is caused by Renovate's update deduplication logic, not by grouping configuration. This rule will not prevent the autoclosing behavior described in issue #3482.

Suggested fix: Investigate whether the autoclosing is caused by Renovate's branch/update deduplication logic. Consider: (1) filing a Renovate issue about deduplication between vulnerability PRs and grouped PRs with failing CI, (2) splitting the stalled grouped PR (#3019), or (3) keeping this rule with documentation noting its redundancy.

Comment thread renovate.json
],
"packageRules": [
{
"description": "Keep vulnerability/security PRs standalone so they are not grouped with stalled patch bundles",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[low] scope limitation

The packageRules entry restricts the vulnerability ungrouping override to matchManagers: [gomod] only, while the parent preset groups dependencies across multiple managers. Since the entire packageRules entry is redundant, this scope limitation is moot.

@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment config renovate labels Aug 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Exclude Renovate vulnerability PRs from grouped patch updates to prevent security fixes stalling behind failing CI bundles

0 participants