A hundred merges a day, and none of them tested nothing.
Two bad options dominate at scale: build the world on every change and watch the queue grow, or build the diff and let cross-repo breakage through. Reverse-dependencies from the real module graph give you the third — build exactly what the change can reach, and refuse to call it green when it reached nothing.
Both obvious answers are wrong.
One is too slow to keep up; the other is fast and lets breakage through.
Build everything on every change and correctness is easy — but the queue grows with merge rate, and past a point the feedback arrives after the next three changes have already landed on top.
Build only what the diff touches and it's fast — but the interesting failures were never in the diff. They're two repositories away, in something that depended on a behavior nobody wrote down.
The third answer needs a real graph: every target that transitively depends on what changed, followed across repository boundaries, computed per push. That's a much smaller set than the world and a much larger one than the diff, and it's the only one that is both fast and honest.
When merges outpace the cluster.
The signals that tell you which lever to pull, from the Prometheus your remote execution already exposes. Values illustrative.
| signal | now | the lever it points at |
|---|---|---|
| cache hit rate | 68.2% | hermeticity — something is leaking non-determinism |
| queue depth | 214 | worker count, or the size of the target set |
| worker saturation | 0.97 | scale out — there is no headroom left |
| p99 action latency | 31.4s | the tail, which is what sets wall-clock |
Fast and honest, not one or the other.
The comparison worth making is against the strategies, not a product.
Blast radius is reverse-dependencies, computed from the real graph on every push — not a path glob someone wrote once and stopped maintaining.
Backed by shipping plugins.
Each claim on this page is anchored to a plugin that provides it. The site build resolves these cross-references against the live feature catalog and fails if one of them doesn't exist — so this list can't quietly outlive what the platform ships.
Resolves each push against the real Bazel module graph so the target set is reverse-dependencies rather than the world or the diff — and assess_merge refuses a green that reached nothing.
plugin detail →Cache hit rate, worker saturation, queue depth and latency percentiles are the four numbers you actually tune when merges start outpacing capacity — read live from the Prometheus your RBE already exposes.
plugin detail →An image per commit, drillable to config and the ordered layer filesystem, so a regression can be traced to the exact artifact that shipped.
plugin detail →One status contract writes a native Check Run on every pull request across GitHub and self-hosted GitLab, at whatever rate they arrive.
plugin detail →Content-addressed history and live mirror-sync mean the substrate keeps up with merge rate without history being rewritten underneath it.
plugin detail →Adjacent problems.
Every repo has a pipeline file nobody fully understands. The build graph already knows what to do — so stop describing it twice.
Read more →An agent can open thirty pull requests an hour. The gate is what decides which of them are safe to merge.
Read more →Prove it's safe to merge.
Hosted, or launched into your own AWS account. Start free — no card required.