Skip to content

fix: stop Renovate posting commit statuses - #10317

Merged
cryptodev-2s merged 1 commit into
mainfrom
fix/renovate-disable-status-checks
Sep 21, 2026
Merged

cryptodev-2s merged 1 commit into
mainfrom
fix/renovate-disable-status-checks

Conversation

@cryptodev-2s

@cryptodev-2s cryptodev-2s commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Explanation

#10316 broke the Renovate job outright. Asking the token exchange for statuses: write now fails before Renovate even starts:

##[error]Token exchange failed: 500 Internal Server Error
{"status":"error","message":"Failed to create installation token from GitHub"}

That is GitHub refusing to mint the token, not the policy rejecting it. consensys-vertical-apps/token-exchange-service#182 allows the permission, but the metamask-ci App installation does not hold Commit statuses, and a policy can only narrow what the App already has. Granting it means an org level App permission change that every installation has to accept, which is a lot of process for four informational checks.

So this reverts the permission request and stops Renovate posting the statuses at all. With every entry in statusCheckNames set to null, Renovate skips the POST rather than 403ing on it (status-checks.ts:91), which was what aborted the run before the pull request got created.

What we lose is the checks appearing on the pull request. Artifact and config errors still show up in the run log and on the dependency dashboard. minimumReleaseAge is unaffected, it is enforced internally whether or not the status is posted.

References

Reverts #10316. Follows #10311. 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
CI-only changes to Renovate permissions and config with no runtime or application code impact.

Overview
Fixes the Renovate workflow failing at token exchange by removing statuses: write from the MetaMask token-exchange permissions in .github/workflows/renovate.yml. The metamask-ci app installation does not have commit-status scope, so requesting it caused token minting to fail before Renovate could run.

Disables Renovate’s GitHub commit statuses by adding statusCheckNames in renovate.json with artifactError, configValidation, mergeConfidence, and minimumReleaseAge set to null, so Renovate skips posting those checks instead of erroring. Dependency updates and internal rules like minimumReleaseAge still apply; only the PR-visible status checks are dropped.

Reviewed by Cursor Bugbot for commit e5288f2. 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 21, 2026 14:56
@cryptodev-2s
cryptodev-2s deployed to default-branch September 21, 2026 14:56 — with GitHub Actions Active
@cryptodev-2s cryptodev-2s self-assigned this Sep 21, 2026
@cryptodev-2s
cryptodev-2s requested a review from Mrtenz September 21, 2026 14:57

@Mrtenz Mrtenz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is fine, but we can also ask TechOps to grant this permission to the app.

@cryptodev-2s
cryptodev-2s added this pull request to the merge queue Sep 21, 2026
Merged via the queue into main with commit 1397a57 Sep 21, 2026
668 of 671 checks passed
@cryptodev-2s
cryptodev-2s deleted the fix/renovate-disable-status-checks branch September 21, 2026 15:06
pull Bot pushed a commit to Reality2byte/core that referenced this pull request Sep 21, 2026
## Explanation

Renovate pull requests reach this workflow but the job skips. The gate
matches `dependabot[bot]`, and Renovate pull requests are authored by
`metamask-ci[bot]`, the identity of the token it runs with. Confirmed on
the first batch: the workflow triggered on `renovate/execa-10.x`,
`renovate/unzipper-0.x-lockfile` and `renovate/tstyche-7.x-lockfile` and
skipped all three, while MetaMask#10320 sits red on `Check changelog`.

So the gate also matches a `renovate/` branch prefix now. Everything
else about the job already applies: Renovate leaves the same changelog
gap, and `yarn dedupe` and the constraints fixer are harmless no ops
when there is nothing to repair.

The file name and `environment: dependabot` are both left alone on
purpose, and now carry a comment saying why. The token exchange policy
keys on the `environment` claim and globs on the workflow path, so
renaming either one breaks the token request before the job starts.

One behaviour worth noting: Renovate's default `rebaseWhen: auto` stops
updating a branch once someone else pushes to it, so the repairs will
not be clobbered the way Dependabot clobbers them.

## References

Follows MetaMask#10317. 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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> The workflow can push commits to dependency-update branches using
elevated token permissions, but behavior matches the existing Dependabot
path with a narrower trigger.
> 
> **Overview**
> Extends the existing **repair constraints, lockfile and changelogs**
workflow so it runs on **Renovate** PRs, not only Dependabot. The job
gate now also matches branches whose head ref starts with `renovate/`,
because Renovate PRs are opened by `metamask-ci[bot]` rather than
`dependabot[bot]`.
> 
> Repair commits are authored as **`github-actions[bot]`** instead of
`metamask-ci[bot]`, so Renovate’s auto-rebase stops overwriting the
fixes after an “external” commit. The workflow display name is
generalized; the file path and `environment: dependabot` are unchanged
so OIDC token exchange keeps working.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
bcbce01. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
pull Bot pushed a commit to Reality2byte/core that referenced this pull request Sep 21, 2026
## Explanation

By default Renovate leaves a manifest alone when the new version already
satisfies the declared range, so MetaMask#10318 bumped `ts-jest` to 29.4.12 in
`yarn.lock` and touched no `package.json` at all. That keeps the
declared minimum at the old version and produces no changelog entry,
since nothing published changed.

We want a changelog entry for every dependency bump, so `rangeStrategy:
bump` moves the range with the release: `^29.4.11` becomes `^29.4.12`
across every workspace that declares it, the same as Dependabot does
today. Out of range updates like MetaMask#10320 already behaved this way.

`peerDependencies` are exempted back to `widen`. An explicit
`rangeStrategy` overrides Renovate's peer handling
([`npm/range.ts`](https://github.com/renovatebot/renovate/blob/main/lib/modules/manager/npm/range.ts)),
and 11 peer entries here have simple ranges that would be narrowed
rather than broadened, `@babel/runtime ^7.0.0` most obviously. The other
11 are complex ranges like `^16.8.0 || ^17.0.0` and widen regardless.

The cost is diff size. A single patch now rewrites the same line in
every manifest that declares the dependency, and each of those packages
needs an entry. MetaMask#10322 is what writes them.

> [!IMPORTANT]
> Depends on MetaMask#10322. Without it the repair workflow still skips Renovate
pull requests, and every one of them lands red on `Check changelog`.

## References

Depends on MetaMask#10322. Follows MetaMask#10317. 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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Tooling-only change to Renovate; it does not alter runtime code, but
it will enlarge dependency PR diffs across workspaces.
> 
> **Overview**
> Renovate is configured to **raise semver ranges in `package.json`**
when a newer release still satisfies the existing constraint
(`rangeStrategy: bump`), matching Dependabot behavior so lockfile-only
bumps no longer skip manifest updates and downstream changelog tooling
can see a published change.
> 
> A **peer-only override** sets `rangeStrategy: widen` for
`peerDependencies`, undoing the global bump so wide peer ranges stay
broadened instead of tightened.
> 
> **Note:** This is meant to work with the changelog repair workflow in
MetaMask#10322; without that, Renovate PRs may fail `Check changelog`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
9ab221a. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

This branch was successfully deployed

1 active deployment
default-branch e5288f2c Deployed Sep 21, 2026 by cryptodev-2s via Determine whether this PR is a release PR #4305
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