Skip to content

[code-infra] Add Renovate PR report workflow - #1793

Open
brijeshb42 wants to merge 10 commits into
masterfrom
renovate-pr-report
Open

[code-infra] Add Renovate PR report workflow#1793
brijeshb42 wants to merge 10 commits into
masterfrom
renovate-pr-report

Conversation

@brijeshb42

@brijeshb42 brijeshb42 commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a manually triggered Renovate PR report that fans out over every repo the Renovate App is installed on (discovered dynamically from the App installation; scheduling to be enabled after merge).
  • Analyze release notes with a configurable Claude model, defaulting to Haiku. Heuristics (bump level, breaking-change keywords, security advisories, pre-release targets, missing changelogs) still produce a report when the model is unavailable.
  • Diagnose failing CI: for PRs with red checks — GitHub Actions or CircleCI — the failing jobs' log tails are fetched and the model names the dependency that likely broke CI and the fix direction (or calls the failure unrelated: flaky test, infra). Any log that cannot be fetched degrades to a stub, never failing the report.
  • Each analyzed PR gets its risk verdict as a sticky comment, edited in place on later runs. The comment's last line embeds the verdict keyed by head SHA, which doubles as the cache. @mui/infra is mentioned when a PR needs attention; when a later run reports a materially different issue (breaking status, security flag, culprit dependency, or CI culprit — not reason wording), the comment is recreated so the mention pings again.

Example of the sticky comment on a PR:

### Renovate update risk

**major bump** — possibly breaking — supports-color: Requires Node.js 18 or newer.

**CI failing** — supports-color: Update the color detection call in scripts/build.mjs.

@mui/infra — this update needs a look.

Test plan

  • pnpm test --run renovatePrReport
  • pnpm test --run
  • pnpm release:build
  • pnpm typescript

The aggregate report below is written to the action run's job summary only (it is not posted as a comment anywhere) —

### Renovate PR report

6 open PR(s) by `code-infra-renovate[bot]` created in the last 10 day(s).

#### Needs attention (2)

| PR | Title | Bump | Age | Why |
| --- | --- | --- | --- | --- |
| [#48978](https://github.com/mui/material-ui/pull/48978) | Bump nextjs monorepo to 16.3.1 | minor | 2d | security fix |
| [#48985](https://github.com/mui/material-ui/pull/48985) | Bump supports-color to 11.0.0 | major | 2d | possibly breaking |

#### Needs action (4)

| PR | Title | Bump | Age | Blocked by |
| --- | --- | --- | --- | --- |
| [#48976](https://github.com/mui/material-ui/pull/48976) | Bump code-infra:devDependencies | minor | 2d | review required |
| [#48982](https://github.com/mui/material-ui/pull/48982) | Bump styled-components to ^6.5.2 | minor | 2d | review required |
| [#48983](https://github.com/mui/material-ui/pull/48983) | Bump DocSearch to 5.0.1 | major | 2d | CI failing, review required |
| [#48984](https://github.com/mui/material-ui/pull/48984) | Bump react-intersection-observer to ^11.0.0 | major | 2d | CI failing, review required |

#### Ready to merge (0)

_None._

#### Waiting on CI (0)

_None._

@code-infra-dashboard

code-infra-dashboard Bot commented Aug 18, 2026

Copy link
Copy Markdown

Deploy preview

https://deploy-preview-1793--mui-internal.netlify.app/
QR code for https://deploy-preview-1793--mui-internal.netlify.app/

Bundle size

Total Size Change: 0B(0.00%) - Total Gzip Change: 0B(0.00%)
Files: 69 total (0 added, 0 removed, 0 changed)

Show details for 69 more bundles

@mui/internal-docs-infra/abstractCreateDemoparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/abstractCreateDemoClientparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/abstractCreateStreamparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/abstractCreateTypesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/ChunkProviderparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/cliparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/CodeControllerContextparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/CodeExternalsContextparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/CodeHighlighterparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/CodeHighlighter/errorsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/CodeHighlighter/typesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/CodeProviderparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/CoordinatedLazyparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/CoordinatedLazy/typesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/createDemoDataparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/createDemoData/typesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/createSitemapparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/createSitemap/typesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useCodeparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useCodeWindowparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useCoordinatedparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useCopierparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useCrossTabStateparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useDemoparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useDemoControllerparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useErrorsparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useLocalStorageStateparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/usePreferenceparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useScrollAnchorparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useSearchparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useSearch/typesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useStreamparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useStream/typesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useTypeparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useTypesparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/useUrlHashStateparsed: 0B(0.00%) gzip: 0B(0.00%)
@mui/internal-docs-infra/withDocsInfraparsed: 0B(0.00%) gzip: 0B(0.00%)
addLineGuttersparsed: 0B(0.00%) gzip: 0B(0.00%)
BuildEngineparsed: 0B(0.00%) gzip: 0B(0.00%)
CodeHighlighterChunkparsed: 0B(0.00%) gzip: 0B(0.00%)
CodeHighlighterClientparsed: 0B(0.00%) gzip: 0B(0.00%)
CodeInitialSourceLoaderparsed: 0B(0.00%) gzip: 0B(0.00%)
CodeSourceLoaderparsed: 0B(0.00%) gzip: 0B(0.00%)
compileCssWithPostcssparsed: 0B(0.00%) gzip: 0B(0.00%)
createFrameparsed: 0B(0.00%) gzip: 0B(0.00%)
createParseSourceWorkerClientparsed: 0B(0.00%) gzip: 0B(0.00%)
EditingEngineparsed: 0B(0.00%) gzip: 0B(0.00%)
embedTransformsparsed: 0B(0.00%) gzip: 0B(0.00%)
enhanceCodeEmphasisparsed: 0B(0.00%) gzip: 0B(0.00%)
findExpandingRangesparsed: 0B(0.00%) gzip: 0B(0.00%)
getHastTextContentparsed: 0B(0.00%) gzip: 0B(0.00%)
grammarLoadersparsed: 0B(0.00%) gzip: 0B(0.00%)
grammarsparsed: 0B(0.00%) gzip: 0B(0.00%)
isFrameSpanparsed: 0B(0.00%) gzip: 0B(0.00%)
loadIsomorphicCodeVariantparsed: 0B(0.00%) gzip: 0B(0.00%)
parseSourceparsed: 0B(0.00%) gzip: 0B(0.00%)
rolldown-runtimeparsed: 0B(0.00%) gzip: 0B(0.00%)
source.cssparsed: 0B(0.00%) gzip: 0B(0.00%)
source.jsparsed: 0B(0.00%) gzip: 0B(0.00%)
source.jsonparsed: 0B(0.00%) gzip: 0B(0.00%)
source.mdxparsed: 0B(0.00%) gzip: 0B(0.00%)
source.shellparsed: 0B(0.00%) gzip: 0B(0.00%)
source.tsparsed: 0B(0.00%) gzip: 0B(0.00%)
source.tsxparsed: 0B(0.00%) gzip: 0B(0.00%)
source.yamlparsed: 0B(0.00%) gzip: 0B(0.00%)
text.html.basicparsed: 0B(0.00%) gzip: 0B(0.00%)
text.mdparsed: 0B(0.00%) gzip: 0B(0.00%)
TransformEngineparsed: 0B(0.00%) gzip: 0B(0.00%)
transpileSourceparsed: 0B(0.00%) gzip: 0B(0.00%)

Details of bundle changes

Performance

Total duration: 17.99 ms -4.25 ms(-19.1%) | Renders: 5 (+0) | Paint: 69.11 ms -10.41 ms(-13.1%)

Test Duration Renders
HeavyList mount 9.64 ms ▼-2.57 ms(-21.0%) 1 (+0)
DataGrid mount with paint timing 2.09 ms ▼-1.69 ms(-44.7%) 1 (+0)

5 tests within noise — details


Check out the code infra dashboard for more information about this PR.

@brijeshb42 brijeshb42 added the scope: code-infra Involves the code-infra product (https://www.notion.so/mui-org/5562c14178aa42af97bc1fa5114000cd). label Aug 18, 2026
@brijeshb42
brijeshb42 requested a review from a team August 18, 2026 07:16
@brijeshb42
brijeshb42 marked this pull request as ready for review August 18, 2026 07:16
@Janpot

Janpot commented Aug 19, 2026

Copy link
Copy Markdown
Member
  • Will circleci diagnosis work for private repos?
  • Does this run the whole matrix using the mui-public federation rule? That would mean it eats in our budget even though it does work on other repositories.
  • When will this be triggered?

- Replace the GraphQL viewer lookup, which fails for installation tokens,
  with an explicit comment-author input; the fleet workflow derives it from
  the App slug and the reusable workflow defaults to github-actions[bot].
- Match report comment authors exactly instead of stripping the [bot]
  suffix, so a same-named user account cannot forge the sticky state.
- Let the report degrade to heuristics when the Claude step fails.
- Share the state-comment serializer between renderer and parser, and
  cover the announce flow with round-trip tests.
@github-actions github-actions Bot added the PR: out-of-date The pull request has merge conflicts and can't be merged. label Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: out-of-date The pull request has merge conflicts and can't be merged. scope: code-infra Involves the code-infra product (https://www.notion.so/mui-org/5562c14178aa42af97bc1fa5114000cd).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants