In parallel mode, one red check dequeues a PR and resets every batch behind it. Optimistic validation softens that by waiting on later batches, but it can't tell a broken test from a container image that failed to pull. AI-powered flaky test management reads the failure the way an engineer would, decides whether it's a flake, and retries only the transient ones.
How it decides
An LLM makes the call on whether a failure is a flake. Before it does, Aviator runs cheap deterministic checks, so the model only sees the failures that actually need judgment. It only investigates the checks you list in retriable_checks:
- No log, no verdict: if the failure output can't be read, the PR is dequeued as usual.
- Touches your change: if the failure names a file the batch modifies, it's treated as real.
- Seen before: each failure gets a stable identity (which test, what kind of error, which of your source frames), so a failure that's already been classified reuses its verdict.
- Repo-wide incidents: the same failure across batches that share no PRs isn't any one PR's fault, and Aviator says so instead of blaming whoever is at the front.
- The LLM verdict: an LLM reads the failure output alongside the files the batch changes and any context you've written about the check, pulls up individual diffs when it needs them, and answers one question: would this check pass if it ran again on the same code? Its reasoning is posted on the draft PR.
What it does
- Reruns only what failed: on GitHub Actions, the failing job and any jobs that
needit, not the whole workflow or every matrix leg. On Buildkite, the failed step. Each failure is retried once. - Keeps the queue patient: a failure judged transient doesn't count against
optimistic_validation_failure_depth, so the queue keeps looking ahead while the retry runs.
Built to be safe
- It never dequeues a PR sooner than today. Your configured depth is a floor.
- It never retries a deterministic failure, even one your PR didn't cause.
- It never marks a check as passing. Your CI decides the rerun.
- When it's unsure, it does exactly what the queue does today.
Getting started
Start in shadow mode on one repository and one check you know is flaky. Aviator records its verdicts and comments on the draft PR whenever it would have acted, without changing anything:
merge_rules: flaky_retry: enabled: true shadow_mode: true retriable_checks: - name: "integration-tests"
Give it a week. When you disagree with a verdict, add a sentence of plain-English context about how that check fails; the LLM reads it with every future failure. Then remove shadow_mode.
What you need to do
During the beta, flaky test management also has to be enabled on your account. Email support@aviator.co to join.
Docs: How it works · How to configure it
Also shipped
- Faster restacks: stacks are restacked through the GitHub API instead of an in-memory rebase, removing the memory limit on
/aviator syncin large repositories. - Stacks stay current: with
update_latest, stacked PRs are rebased onto the latest target branch before merging, and Aviator can update the branch of a PR in a GitHub-native stack. - GitHub-native stacks and rulesets: new guide on setting the Aviator app to Exempt so stack merges pass a ruleset with Restrict updates. Docs
- Required checks: evaluated against the most recently created check run, matching GitHub.
- Blocked PRs: requeueing a blocked PR removes the blocked label, and a blocked stack's comment lists the PRs that left the queue.
- Releases: faster cherry-picks with a smoother flow.
- Product controls: admins can enable or disable individual products for their workspace.
- Onboarding: a new setup flow with separate paths for MergeQueue, Releases and Verify, and redesigned sign-in pages that remember how you last signed in.
- Dark mode: now covers sign-in, onboarding, chart tooltips and the FlexReview SLO graphs.
- Anthropic API key: has its own settings tab, shared by Runbooks and Verify.



