Skip to content

fix: repair pull requests again after a rebase - #10451

Merged
cryptodev-2s merged 5 commits into
mainfrom
fix/repair-on-push
Sep 24, 2026
Merged

cryptodev-2s merged 5 commits into
mainfrom
fix/repair-on-push

Conversation

@cryptodev-2s

@cryptodev-2s cryptodev-2s commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Explanation

Renovate rebases wipe the repair commits, and the workflow only ran on opened and reopened, so the only way to get them back was closing and reopening the pull request. It listens to synchronize now.

The check job stops it reacting to its own push, since the repair commits under github-actions[bot].

Manual testing

Push to an open Renovate pull request, confirm the repair runs once and the run from its own push stops at check.

References

Follows #10334. Part of WPC-1161.

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Low Risk
Changes are limited to a Dependabot/Renovate repair GitHub Actions workflow; no application runtime or auth logic is touched.

Overview
Renovate rebases drop the workflow’s repair commits, but the job only ran on opened/reopened, so repairs could only be restored by closing and reopening the PR. The workflow now also triggers on synchronize, so new pushes and rebases can trigger repair again.

To avoid a loop when the repair job pushes to the branch, a check job inspects the PR head commit author via the GitHub API and skips repair when the last commit is already from github-actions[bot]. repair is gated on needed == 'true'.

Shared repair commit identity moves to workflow env (used by both the author check and git config), and concurrency per PR cancels stale in-flight runs when the branch moves again.

Reviewed by Cursor Bugbot for commit 798f702. Bugbot is set up for automated code reviews on this repo. Configure here.

@cryptodev-2s
cryptodev-2s requested a review from a team as a code owner September 24, 2026 17:32
@cryptodev-2s
cryptodev-2s deployed to default-branch September 24, 2026 17:32 — with GitHub Actions Active
@cryptodev-2s cryptodev-2s self-assigned this Sep 24, 2026
Comment thread .github/workflows/repair-dependency-upgrade-pull-requests.yml Outdated
Comment thread .github/workflows/repair-dependency-upgrade-pull-requests.yml Outdated
Comment thread .github/workflows/repair-dependency-upgrade-pull-requests.yml
@cryptodev-2s
cryptodev-2s requested a review from mcmire September 24, 2026 18:11

@mcmire mcmire left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

One more thing.

Comment thread .github/workflows/repair-dependency-upgrade-pull-requests.yml Outdated
Co-authored-by: Elliot Winkler <elliot.winkler@gmail.com>

@mcmire mcmire left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM!

@cryptodev-2s
cryptodev-2s added this pull request to the merge queue Sep 24, 2026
Merged via the queue into main with commit 7f5ac96 Sep 24, 2026
339 checks passed
@cryptodev-2s
cryptodev-2s deleted the fix/repair-on-push branch September 24, 2026 19:19
FrederikBolding pushed a commit that referenced this pull request Sep 28, 2026
## Explanation

`@ethersproject` has 11 packages here and they all ship from one
repository at one version, so the 5.8.0 release produced #10478, #10481,
#10482, #10483 and #10484, each bumping the same manifests and writing
into the same changelogs. They cannot be merged independently without
conflicting.

`config:recommended` already pulls in `group:monorepos`, but that works
off Renovate's own monorepo data, which has no `ethers` entry, nor most
of ours.

So instead of listing scopes, this groups by the repository a package is
published from, which is the thing that actually decides whether
releases move together. `groupName` supports templating and
`sourceRepoSlug` is available, so it is one rule for every dependency.

That is also more accurate than grouping by npm scope. `@noble` would
have been wrong as a scope group, since `noble-hashes`, `noble-curves`
and `noble-ciphers` are three separate repositories, and this splits
them correctly without being told.

Two exclusions:

- `@types`, because DefinitelyTyped is a single repository holding 21
unrelated libraries. The two that do belong with something else,
`@types/jest` and `@types/react`, are already paired with their runtime
packages by `group:jestPlusTypes` and `group:react`.
- `@metamask`, because grouping it would touch most of the monorepo in
one pull request.

The `{{#if}}` fallback is load bearing rather than decoration. A package
with no `sourceUrl` gets an empty `groupName`, and `hasGroupName` only
tests for `null`, so without it every such package would collapse into
one nameless group.

Validated with `renovate-config-validator --strict`.

Renovate will supersede the five open `@ethersproject` pull requests
with a single grouped one on the next run.

## References

Follows #10451. Part of WPC-1161.

## Checklist

- [ ] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
pull Bot pushed a commit to Reality2byte/core that referenced this pull request Sep 28, 2026
## Explanation

`@ethersproject` has 11 packages here and they all ship from one
repository at one version, so the 5.8.0 release produced MetaMask#10478, MetaMask#10481,
MetaMask#10482, MetaMask#10483 and MetaMask#10484, each bumping the same manifests and writing
into the same changelogs. They cannot be merged independently without
conflicting.

`config:recommended` already pulls in `group:monorepos`, but that works
off Renovate's own monorepo data, which has no `ethers` entry, nor most
of ours.

So instead of listing scopes, this groups by the repository a package is
published from, which is the thing that actually decides whether
releases move together. `groupName` supports templating and
`sourceRepoSlug` is available, so it is one rule for every dependency.

That is also more accurate than grouping by npm scope. `@noble` would
have been wrong as a scope group, since `noble-hashes`, `noble-curves`
and `noble-ciphers` are three separate repositories, and this splits
them correctly without being told.

Two exclusions:

- `@types`, because DefinitelyTyped is a single repository holding 21
unrelated libraries. The two that do belong with something else,
`@types/jest` and `@types/react`, are already paired with their runtime
packages by `group:jestPlusTypes` and `group:react`.
- `@metamask`, because grouping it would touch most of the monorepo in
one pull request.

The `{{#if}}` fallback is load bearing rather than decoration. A package
with no `sourceUrl` gets an empty `groupName`, and `hasGroupName` only
tests for `null`, so without it every such package would collapse into
one nameless group.

Validated with `renovate-config-validator --strict`.

Renovate will supersede the five open `@ethersproject` pull requests
with a single grouped one on the next run.

## References

Follows MetaMask#10451. Part of WPC-1161.

## Checklist

- [ ] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
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.

2 participants