Skip to content

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

Merged
cuipinghuo merged 1 commit into
mainfrom
agent/3482-exclude-vuln-from-group
Oct 6, 2026
Merged

cuipinghuo merged 1 commit into
mainfrom
agent/3482-exclude-vuln-from-group

Conversation

@fullsend-ai-coder

@fullsend-ai-coder fullsend-ai-coder Bot commented Aug 8, 2026 •

Copy link
Copy Markdown
Contributor

What:

Add a vulnerabilityAlerts block to renovate.json that labels Renovate security/vulnerability update PRs with security (and renovate) so CVE-fix PRs are easy to spot and route.

No packageRules ungrouping rule and no schedule override are added — both would be no-ops. Renovate already keeps vulnerability fixes as standalone PRs and creates them immediately, because its built-in force block forces groupName: null and ignores the daily schedule for vulnerability alerts, outranking user config. A comment in the file documents this.

Why:

Security update PRs should be clearly labeled so they can be spotted and routed quickly. Renovate's defaults already handle ungrouping and immediate creation; labeling is the remaining gap this closes.

Note: the recurring autoclose of standalone security PRs stems from Renovate's update deduplication against a long-stalled grouped patch PR carrying the same bump — a separate root cause not addressed by grouping config, tracked separately.

Tickets:

#3482


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.

❗ There is a different number of reports uploaded between BASE (9fa866d) and HEAD (bf784a2). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (9fa866d) HEAD (bf784a2)
acceptance 1 0
Flag Coverage Δ
acceptance ?
generative 12.25% <ø> (ø)
integration 23.56% <ø> (ø)
unit 72.24% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 54 files with indirect coverage changes

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

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 8, 2026 •

Copy link
Copy Markdown

Review

Config-only re-review: the renovate.json content is byte-identical to the prior-review SHA — only the PR title/body text changed. All six review dimensions (correctness, security, intent-coherence, style-conventions, docs-currency, risk-assessment) completed; no findings at or above the configured severity threshold (high). One sub-threshold observation (PR title and fix( conventional-commit prefix still describe the originally proposed ungrouping remedy rather than the labels-only change that actually shipped) was suppressed per threshold policy.

Previous run

Review

Findings

Medium


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (2)

Review

Config-only change (12 lines in renovate.json). Verified against Renovate source:

  • renovate.json is parsed through stripJsonComments before validation, so the added // line comments do not break config loading (though strict external tooling / IDE schemas may still warn).
  • The PR body's force-block justification is accurate: lib/workers/repository/process/vulnerabilities.ts sets force: { ...packageFileConfig.vulnerabilityAlerts }, and the built-in vulnerabilityAlerts default includes groupName: null, so an explicit user packageRules ungrouping entry would in fact be a no-op.
  • labels and schedule are valid keys under the vulnerabilityAlerts object (type: 'object', mergeable: true).

Security scan of the diff for injection / Unicode steganography / bidi overrides / permission-manifest changes found nothing — the only non-ASCII byte is a U+2014 em dash in the human-written comment. Net posture is a small improvement (faster surfacing + clear routing labels for CVE fixes).

Remaining concerns are about PR-tracking hygiene rather than the diff itself, and should be addressed before merge.

Prior-review provenance validation failed (PRIOR_REVIEW_PROVENANCE=unverifiable-wrong-app); this run is treated as a first review — no severity anchoring from any prior comment was applied.

Findings

Low

  • [intent-mismatch] renovate.json — The PR body uses Closes #3482, but explicitly acknowledges that the observed symptom that gave the issue its title — recurring autoclose of standalone security PRs (go-git v5.19.1→v5.19.2, CVE-2026-71556 / 71557) — is caused by Renovate's update deduplication and is not fixed here. Merging with Closes will close a security-labeled bug while its CVE-exposure root cause remains live and unaddressed.
    Remediation: change Closes #3482 to Refs #3482 / Part of #3482 in the PR body, or file (and reference) the follow-up issue for the deduplication root cause the PR body claims is "tracked separately".
  • [missing-followup] renovate.json — The PR body says the deduplication root cause is "tracked separately," but no follow-up issue link is present. Sibling issue Renovate grouping rule causes security update PRs to be autoclosed without merging #3483 ("Renovate grouping rule causes security update PRs to be autoclosed without merging") is still open and covers the same symptom; it is not referenced here either, so the audit trail from CVE symptom to eventual fix is lost.
    Remediation: reference Renovate grouping rule causes security update PRs to be autoclosed without merging #3483 (or a dedicated deduplication follow-up issue) in the PR body wherever "tracked separately" is claimed.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (3)

Review

Findings

Critical

  • [logic-error] renovate.json:10 — isVulnerabilityAlert is not a valid packageRules matcher in Renovate. Renovate's registered matchers are the match*-prefixed ones (plus matchConfidence); isVulnerabilityAlert is only ever set internally by Renovate itself (in lib/workers/repository/init/vulnerability.ts) on the alert-generated rule, and it is listed in ignoredNodes in lib/config/validation.ts so validators will not warn. Inside this packageRule it is treated as a config value, not a match constraint. Net effect: the rule matches every gomod update (only matchManagers: ["gomod"] actually filters), so groupName: null / groupSlug: null disables grouping for the entire Go ecosystem — the opposite of the stated "keep vulnerability/security PRs standalone" intent — and every gomod update also gets tagged with isVulnerabilityAlert: true.
    Remediation: Remove the packageRule and put the grouping overrides inside the top-level vulnerabilityAlerts object, which Renovate applies as force overrides on the alert-generated rule. For example:
    "vulnerabilityAlerts": {
      "labels": ["security", "renovate"],
      "groupName": null,
      "groupSlug": null
    }

Medium

  • [ineffective-configuration] renovate.json:16 — vulnerabilityAlerts.schedule is silently ignored. The Renovate docs (configuration-options.md, vulnerabilityAlerts section) state: "Renovate always ignores commitHourlyLimit, prHourlyLimit, prCommitsPerRunLimit and schedule for vulnerability alerts, you can not override this." So "schedule": ["at any time"] has no runtime effect (vulnerability PRs already bypass schedules by default); it is misleading to future readers.
    Remediation: Drop the schedule key from vulnerabilityAlerts. Retain only supported keys (labels, assignees, automerge, prConcurrentLimit, branchConcurrentLimit, enabled, vulnerabilityFixStrategy, and — per the finding above — groupName/groupSlug).

Low

Info

  • [provenance-warning] — Prior review context was discarded: provenance validation failed (PRIOR_REVIEW_PROVENANCE=unverifiable-wrong-app). Severity anchoring was skipped for this run; all findings are first-time assessments.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (4)

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[bot]

This comment was marked as outdated.

@coderabbitai

coderabbitai Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3e8b6d96-1fd3-43e5-9f85-070d296ca10e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

cuipinghuo
cuipinghuo previously approved these changes Sep 15, 2026

@cuipinghuo cuipinghuo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed and adopting for EC-2084. Resolved the merge conflict against current main by keeping only the intended EC-2084 additions (packageRules vulnerability-ungroup rule + vulnerabilityAlerts labels/schedule); dropped the re-added helpers:pinGitHubActionDigests extends line since main removed it in 520e13c (EC-2080) as the org-wide config already provides it. Net diff vs main is exactly the two intended blocks.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 1:50 PM UTC · Completed 1:59 PM UTC

Commit: cd01138 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-7 · Effort: high · Cost: $4.32

@fullsend-ai-review fullsend-ai-review Bot added the risk/low PR risk: low label Sep 15, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Risk Assessment: low (1/5)

Details

Config-only PR to non-protected renovate.json by a bot with low churn and small blast radius; partial issue resolution modestly elevates Tier 3 but Tier 1 dominates, preserving prior low score.

Previous run

Risk Assessment: low (1/5)

Details

Config-only PR touching a single non-protected, non-security-sensitive file (11 changed lines) authored by a bot — Tier 1 sub-scores are all 1. Linked issue slightly elevates Tier 3 (2.5) because the PR admits it does not satisfy the issue’s stated validation criterion, but Tier 1 dominates the weighted average.

Previous run (2)

Risk Assessment: low (1/5)

Details

Tiny additive renovate config change from a bot, fully scoped to a recent well-defined issue, on a low-churn config file that is trivially revertible.

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review fullsend-ai-review Bot removed the requires-manual-review Review requires human judgment label Sep 15, 2026
@cuipinghuo
cuipinghuo force-pushed the agent/3482-exclude-vuln-from-group branch from 203f75c to 04b2664 Compare September 15, 2026 14:14
cuipinghuo
cuipinghuo previously approved these changes Sep 15, 2026

@cuipinghuo cuipinghuo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Re-approving after amending the Sep-15 merge commit: conflict resolved against current main, and per review the redundant vulnerability-ungroup packageRule was dropped (Renovate already forces groupName: null for vulnerability alerts) with a documenting comment. Kept the useful vulnerabilityAlerts block (security label + immediate creation). Net diff vs main is just those changes.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 2:15 PM UTC · Completed 2:23 PM UTC

Commit: cd01138 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-7 · Effort: high · Cost: $3.90

@fullsend-ai-review fullsend-ai-review Bot removed the risk/low PR risk: low label Sep 15, 2026
fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 3:31 AM UTC · Completed 3:38 AM UTC

Commit: e8f0a9f · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-7 · Effort: high · Cost: $3.05

@fullsend-ai-review fullsend-ai-review Bot added the risk/low PR risk: low label Sep 16, 2026
fullsend-ai-review[bot]

This comment was marked as outdated.

@cuipinghuo cuipinghuo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Re-approving after the schedule-override drop (6c9b2b9). Final change is just the vulnerabilityAlerts labels block plus a documenting comment; the ungrouping packageRule and schedule override were correctly removed as no-ops (Renovate's built-in force block already handles both for vulnerability alerts).

@cuipinghuo
cuipinghuo force-pushed the agent/3482-exclude-vuln-from-group branch from 6c9b2b9 to b06a133 Compare October 1, 2026 03:06

@cuipinghuo cuipinghuo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Re-approving after rebase onto latest main (single clean commit). Final change is just the vulnerabilityAlerts labels block + documenting comment. Rebase also re-triggers the previously-failing ec-main-enterprise-contract integration test (unrelated to this config-only change).

@fullsend-ai-review
fullsend-ai-review Bot dismissed stale reviews from themself October 1, 2026 03:15

Superseded by updated review

@fullsend-ai-review fullsend-ai-review Bot added the requires-manual-review Review requires human judgment label Oct 1, 2026
@cuipinghuo

Copy link
Copy Markdown
Contributor

Review

Config-only re-review: the renovate.json content is byte-identical to the prior-review SHA — only the PR title/body text changed. All six review dimensions (correctness, security, intent-coherence, style-conventions, docs-currency, risk-assessment) completed; no findings at or above the configured severity threshold (high). One sub-threshold observation (PR title and fix( conventional-commit prefix still describe the originally proposed ungrouping remedy rather than the labels-only change that actually shipped) was suppressed per threshold policy.

Previous run

Review

Findings

Medium

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

Previous run (2)

Review

Config-only change (12 lines in renovate.json). Verified against Renovate source:

  • renovate.json is parsed through stripJsonComments before validation, so the added // line comments do not break config loading (though strict external tooling / IDE schemas may still warn).
  • The PR body's force-block justification is accurate: lib/workers/repository/process/vulnerabilities.ts sets force: { ...packageFileConfig.vulnerabilityAlerts }, and the built-in vulnerabilityAlerts default includes groupName: null, so an explicit user packageRules ungrouping entry would in fact be a no-op.
  • labels and schedule are valid keys under the vulnerabilityAlerts object (type: 'object', mergeable: true).

Security scan of the diff for injection / Unicode steganography / bidi overrides / permission-manifest changes found nothing — the only non-ASCII byte is a U+2014 em dash in the human-written comment. Net posture is a small improvement (faster surfacing + clear routing labels for CVE fixes).

Remaining concerns are about PR-tracking hygiene rather than the diff itself, and should be addressed before merge.

Prior-review provenance validation failed (PRIOR_REVIEW_PROVENANCE=unverifiable-wrong-app); this run is treated as a first review — no severity anchoring from any prior comment was applied.

Findings

Low

  • [intent-mismatch] renovate.json — The PR body uses Closes #3482, but explicitly acknowledges that the observed symptom that gave the issue its title — recurring autoclose of standalone security PRs (go-git v5.19.1→v5.19.2, CVE-2026-71556 / 71557) — is caused by Renovate's update deduplication and is not fixed here. Merging with Closes will close a security-labeled bug while its CVE-exposure root cause remains live and unaddressed.
    Remediation: change Closes #3482 to Refs #3482 / Part of #3482 in the PR body, or file (and reference) the follow-up issue for the deduplication root cause the PR body claims is "tracked separately".
  • [missing-followup] renovate.json — The PR body says the deduplication root cause is "tracked separately," but no follow-up issue link is present. Sibling issue Renovate grouping rule causes security update PRs to be autoclosed without merging #3483 ("Renovate grouping rule causes security update PRs to be autoclosed without merging") is still open and covers the same symptom; it is not referenced here either, so the audit trail from CVE symptom to eventual fix is lost.
    Remediation: reference Renovate grouping rule causes security update PRs to be autoclosed without merging #3483 (or a dedicated deduplication follow-up issue) in the PR body wherever "tracked separately" is claimed.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

Previous run (3)

Review

Findings

Critical

  • [logic-error] renovate.json:10 — isVulnerabilityAlert is not a valid packageRules matcher in Renovate. Renovate's registered matchers are the match*-prefixed ones (plus matchConfidence); isVulnerabilityAlert is only ever set internally by Renovate itself (in lib/workers/repository/init/vulnerability.ts) on the alert-generated rule, and it is listed in ignoredNodes in lib/config/validation.ts so validators will not warn. Inside this packageRule it is treated as a config value, not a match constraint. Net effect: the rule matches every gomod update (only matchManagers: ["gomod"] actually filters), so groupName: null / groupSlug: null disables grouping for the entire Go ecosystem — the opposite of the stated "keep vulnerability/security PRs standalone" intent — and every gomod update also gets tagged with isVulnerabilityAlert: true.
    Remediation: Remove the packageRule and put the grouping overrides inside the top-level vulnerabilityAlerts object, which Renovate applies as force overrides on the alert-generated rule. For example:
    "vulnerabilityAlerts": {
      "labels": ["security", "renovate"],
      "groupName": null,
      "groupSlug": null
    }

Medium

  • [ineffective-configuration] renovate.json:16 — vulnerabilityAlerts.schedule is silently ignored. The Renovate docs (configuration-options.md, vulnerabilityAlerts section) state: "Renovate always ignores commitHourlyLimit, prHourlyLimit, prCommitsPerRunLimit and schedule for vulnerability alerts, you can not override this." So "schedule": ["at any time"] has no runtime effect (vulnerability PRs already bypass schedules by default); it is misleading to future readers.
    Remediation: Drop the schedule key from vulnerabilityAlerts. Retain only supported keys (labels, assignees, automerge, prConcurrentLimit, branchConcurrentLimit, enabled, vulnerabilityFixStrategy, and — per the finding above — groupName/groupSlug).

Low

Info

  • [provenance-warning] — Prior review context was discarded: provenance validation failed (PRIOR_REVIEW_PROVENANCE=unverifiable-wrong-app). Severity anchoring was skipped for this run; all findings are first-time assessments.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

Previous run (4)

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

reviewed and resolved

@cuipinghuo

Copy link
Copy Markdown
Contributor

Review

Config-only re-review: the renovate.json content is byte-identical to the prior-review SHA — only the PR title/body text changed. All six review dimensions (correctness, security, intent-coherence, style-conventions, docs-currency, risk-assessment) completed; no findings at or above the configured severity threshold (high). One sub-threshold observation (PR title and fix( conventional-commit prefix still describe the originally proposed ungrouping remedy rather than the labels-only change that actually shipped) was suppressed per threshold policy.

Previous run

Review

Findings

Medium

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

Previous run (2)

Review

Config-only change (12 lines in renovate.json). Verified against Renovate source:

  • renovate.json is parsed through stripJsonComments before validation, so the added // line comments do not break config loading (though strict external tooling / IDE schemas may still warn).
  • The PR body's force-block justification is accurate: lib/workers/repository/process/vulnerabilities.ts sets force: { ...packageFileConfig.vulnerabilityAlerts }, and the built-in vulnerabilityAlerts default includes groupName: null, so an explicit user packageRules ungrouping entry would in fact be a no-op.
  • labels and schedule are valid keys under the vulnerabilityAlerts object (type: 'object', mergeable: true).

Security scan of the diff for injection / Unicode steganography / bidi overrides / permission-manifest changes found nothing — the only non-ASCII byte is a U+2014 em dash in the human-written comment. Net posture is a small improvement (faster surfacing + clear routing labels for CVE fixes).

Remaining concerns are about PR-tracking hygiene rather than the diff itself, and should be addressed before merge.

Prior-review provenance validation failed (PRIOR_REVIEW_PROVENANCE=unverifiable-wrong-app); this run is treated as a first review — no severity anchoring from any prior comment was applied.

Findings

Low

  • [intent-mismatch] renovate.json — The PR body uses Closes #3482, but explicitly acknowledges that the observed symptom that gave the issue its title — recurring autoclose of standalone security PRs (go-git v5.19.1→v5.19.2, CVE-2026-71556 / 71557) — is caused by Renovate's update deduplication and is not fixed here. Merging with Closes will close a security-labeled bug while its CVE-exposure root cause remains live and unaddressed.
    Remediation: change Closes #3482 to Refs #3482 / Part of #3482 in the PR body, or file (and reference) the follow-up issue for the deduplication root cause the PR body claims is "tracked separately".
  • [missing-followup] renovate.json — The PR body says the deduplication root cause is "tracked separately," but no follow-up issue link is present. Sibling issue Renovate grouping rule causes security update PRs to be autoclosed without merging #3483 ("Renovate grouping rule causes security update PRs to be autoclosed without merging") is still open and covers the same symptom; it is not referenced here either, so the audit trail from CVE symptom to eventual fix is lost.
    Remediation: reference Renovate grouping rule causes security update PRs to be autoclosed without merging #3483 (or a dedicated deduplication follow-up issue) in the PR body wherever "tracked separately" is claimed.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

Previous run (3)

Review

Findings

Critical

  • [logic-error] renovate.json:10 — isVulnerabilityAlert is not a valid packageRules matcher in Renovate. Renovate's registered matchers are the match*-prefixed ones (plus matchConfidence); isVulnerabilityAlert is only ever set internally by Renovate itself (in lib/workers/repository/init/vulnerability.ts) on the alert-generated rule, and it is listed in ignoredNodes in lib/config/validation.ts so validators will not warn. Inside this packageRule it is treated as a config value, not a match constraint. Net effect: the rule matches every gomod update (only matchManagers: ["gomod"] actually filters), so groupName: null / groupSlug: null disables grouping for the entire Go ecosystem — the opposite of the stated "keep vulnerability/security PRs standalone" intent — and every gomod update also gets tagged with isVulnerabilityAlert: true.
    Remediation: Remove the packageRule and put the grouping overrides inside the top-level vulnerabilityAlerts object, which Renovate applies as force overrides on the alert-generated rule. For example:
    "vulnerabilityAlerts": {
      "labels": ["security", "renovate"],
      "groupName": null,
      "groupSlug": null
    }

Medium

  • [ineffective-configuration] renovate.json:16 — vulnerabilityAlerts.schedule is silently ignored. The Renovate docs (configuration-options.md, vulnerabilityAlerts section) state: "Renovate always ignores commitHourlyLimit, prHourlyLimit, prCommitsPerRunLimit and schedule for vulnerability alerts, you can not override this." So "schedule": ["at any time"] has no runtime effect (vulnerability PRs already bypass schedules by default); it is misleading to future readers.
    Remediation: Drop the schedule key from vulnerabilityAlerts. Retain only supported keys (labels, assignees, automerge, prConcurrentLimit, branchConcurrentLimit, enabled, vulnerabilityFixStrategy, and — per the finding above — groupName/groupSlug).

Low

Info

  • [provenance-warning] — Prior review context was discarded: provenance validation failed (PRIOR_REVIEW_PROVENANCE=unverifiable-wrong-app). Severity anchoring was skipped for this run; all findings are first-time assessments.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

Previous run (4)

reviewed and resolved

@cuipinghuo
cuipinghuo force-pushed the agent/3482-exclude-vuln-from-group branch from b06a133 to f414e03 Compare October 6, 2026 13:14
@fullsend-ai-review

Copy link
Copy Markdown

🤖 Finished Review · ❌ Failure (ensuring provider "github-ro": provider create "github-ro" failed: exit status 1 (output: Error: × code: 'Client specified an invalid argument', message: "provider │ credentials are not declared by pr…) · Started 1:16 PM UTC · Completed 1:16 PM UTC

Commit: f414e03 · View workflow run →

Effort: high

Add a vulnerabilityAlerts block so Renovate security/vulnerability update
PRs are labeled `security` (and `renovate`) and are easy to spot and
route.

No packageRules ungrouping rule and no schedule override are added — both
would be no-ops. Renovate's built-in force block already forces
groupName: null and ignores the daily schedule for vulnerability alerts,
outranking user config. A comment documents this.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cuipinghuo
cuipinghuo force-pushed the agent/3482-exclude-vuln-from-group branch from f414e03 to bf784a2 Compare October 6, 2026 13:19
@fullsend-ai-review

Copy link
Copy Markdown

🤖 Finished Review · ❌ Failure (ensuring provider "github-ro": provider create "github-ro" failed: exit status 1 (output: Error: × code: 'Client specified an invalid argument', message: "provider │ credentials are not declared by pr…) · Started 1:21 PM UTC · Completed 1:21 PM UTC

Commit: bf784a2 · View workflow run →

Effort: high

@cuipinghuo
cuipinghuo merged commit f4d65be into main Oct 6, 2026
23 of 25 checks passed
@cuipinghuo
cuipinghuo deleted the agent/3482-exclude-vuln-from-group branch October 6, 2026 13:36
@fullsend-ai-retro

Copy link
Copy Markdown

🤖 Finished Retro · ❌ Failure (ensuring provider "github-artifacts": provider create "github-artifacts" failed: exit status 1 (output: Error: × code: 'Client specified an invalid argument', message: "provider │ credentials are not…) · Started 1:38 PM UTC · Completed 1:38 PM UTC

Commit: bf784a2 · View workflow run →

Effort: high

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

2 participants