We raised $3M for agent-native runners

Build the merge-queue speculations most likely to be needed

Analyze conflicts between queued changes, build independent ones concurrently, and spend CI on the speculative builds most likely to decide a change.

How Uber used this technique

Read what Uber changed and follow the original sources.

Build the merge-queue speculations most likely to be needed

Translated to GitHub Actions

What Uber built
Uber's SubmitQueue builds a tree of speculative builds and ranks each by the chance its result decides a change.
Your GitHub Actions version
In a merge queue, build the speculations most likely to be needed first and run changes that touch different targets concurrently.

SubmitQueue speculates on the outcome of every pending change and builds a tree of the possible builds. Its conflict analysis prunes that tree so changes touching different targets build concurrently. A probabilistic model, fed by predicted build times and a success predictor, ranks each speculative build by the chance its result decides a change. Only builds above a threshold run, and smaller changes that can bypass a large conflicting change ahead of them get priority.

Across the Go, iOS and Android monorepos, CPU hours fell 44.70% for Go (1,485 to 821 hours), 34.86% for iOS (472 to 307) and 52.23% for Android (729 to 348). Source

P95 waiting time fell 44.67% for Go (33.69 to 18.64 minutes), 33.32% for iOS (14.86 to 9.91) and 31.66% for Android (25.36 to 17.33). Source

Use it when
The repository lands changes through a merge queue, and queued builds are often cancelled or rebuilt when an earlier change lands.
Before applying it
A threshold set too high makes changes wait longer under heavy load; Uber tunes it from historical build data for each monorepo.
GitHub Actions adaptation
Compare the source system with your own workflow before applying this translation.

Company Playbooks