Unified Flutter GitHub PR CheckRun
- Dominant language
- Dart
- Stars
- 179k
- Forks
- 31.1k
- PR merge metrics
- PR metrics pending
Description
### Use case
Flutter's CI system, Cocoon, relies heavily on the GitHub CheckRuns API to report the status of tests for pull requests (PRs). For every task in its configuration, Cocoon creates a corresponding status check on GitHub.
The core problem is that as Flutter has scaled—with more tests and contributors—the sheer volume of these API calls frequently exceeds GitHub's invisible burst rate limit.
When this limit is hit, the system fails to update the PR's status, leaving it in a broken state. This forces developers to restart the entire test cycle or causes the merge queue to drop all pending PRs. Ultimately, this issue causes significant delays of 1 to 3 hours in merging code.
### Proposal
The proposal aims to solve the GitHub API rate-limiting issue by fundamentally changing how test statuses are reported. Instead of creating a separate GitHub check run for every test, the new approach is to:
**Use a Single Check Run**: Create only one mandatory check run called `Merge Queue Guard` This single check will act as a gatekeeper, showing an overall status (pending, success, or failure) for the entire test suite.
**Move Details to the Flutter Dashboard**: All granular, per-test results will be moved off of GitHub and onto a dedicated page for the pull request within the existing Flutter Dashboard.
**Link from GitHub to the Dashboard**: Developers will access the detailed test results by clicking the `View more details` link on the single GitHub check run, which will direct them to the PR-specific page on the dashboard.
**Notify on Failure with a Comment**: To ensure developers are promptly aware of issues, a bot will automatically post a comment on the PR whenever a test fails, including links to the specific failures on the dashboard.
See: [go/unified-flutter-checkrun-proposal](http://goto.google.com/unified-flutter-checkrun-proposal)
Contributor guide
Assessment
This issue has not been assessed yet.