Fix broken builds before they block your team.
When the build breaks on main, Polylane finds the commit that broke it and writes the fix, so your CI stays green without anyone digging through logs.
Get started for freeDetect
It watches main for every failed build
A failed or timed-out run on main or in the merge queue becomes an issue the moment it happens. GitHub Actions, Depot and any CI that reports to GitHub.
Connect your CIci / build failing on main
- 14:02:11 Alert received
GitHub · ci / build failed on main · run #1842
- 14:02:40 Triaged as an incident
tsc fails in orders/api.ts: it still imports formatPrice from utils/price, which a3f9c21 (#1287) moved to money/format.ts four minutes earlier.
- 14:02:44 Fix run started
The same agent that triaged it keeps working it.
- 14:09:30 Pull request opened
#1291 Import formatPrice from money/format in orders/api
- 14:21:05 Alert recovered
ci / build passed on main. Issue resolved.
Investigate
It reads the logs and finds the culprit
Polylane reads the failing job, the commit that broke the build and everything else that changed, and shows how they connect.
Start investigating- 14:02:44 Fix run started
One agent, from the failed run to the pull request.
- 14:06:12 Causal chain
- Signal (alert)
-
GitHub Actions · ci / build failed on main · run #1842
- Surfacing site
-
ci / build at coreplane/storefront:orders/api.ts:3
- Mechanism
-
tsc stops on TS2305: orders/api.ts imports formatPrice from ../utils/price, which no longer exports it
- Producer
-
coreplane/storefront, at money/format.ts
- Producer evidence
- job log, ci / build step 4: error TS2305 in orders/api.ts, 1 error
- git diff a3f9c21: formatPrice moved from utils/price.ts to money/format.ts, 6 imports updated, orders/api.ts not among them
- runs #1839 to #1841 on main passed before a3f9c21
- Trigger
-
a3f9c21 (#1287) merged 4 minutes before the failed run
- Blast radius
-
0 other resource(s), 0 other tenant(s); data at risk: none named
Every link rests on named evidence, or is written as unknown: <what would establish it>. Counts, not adjectives. If the cause isn't proven, no fix ships.
- 14:09:30 Pull request #1291
Import formatPrice from money/format in orders/api
Fix
It writes the fix and tests it first
The fix runs through your build and tests before you see it. When main passes again, the issue closes itself.
Start fixingImport formatPrice from money/format in orders/api #1291
polylanemain from polylane/autofix/ci/r7m2q8-9c1e4b0 The build on main has failed since a3f9c21 (#1287), which moved formatPrice from utils/price to money/format. orders/api.ts still imported it from the old path, so tsc failed in ci / build.
What changed
orders/api.ts imports formatPrice from ../money/format. Nothing else in the repo used the old path.
Validation
npm run build passes. npm test: 312 passed.
What Polylane does when the build breaks.
- main default branch
- gh-readonly-queue/main merge queue
Watches main and the merge queue
A failed or timed-out run there becomes an issue right away.
- error TS2305 orders/api.ts
- a3f9c21 broke the build
Reads the logs for you
It reads the failing job, the commit that broke it and what else changed around it.
- ci / test failed
- fix pushed same branch
Fixes its own pull requests
If CI fails on a fix Polylane wrote, it fixes that too, on the same branch.
- #1291 merged
- Alert recovered issue resolved
Cleans up after itself
When main passes again, the issue closes on its own.
- feature/checkout red build
- Polylane leaves it alone
Stays out of your branches
Red builds on your own branches and pull requests are yours. Polylane leaves them alone.
- default starts on its own
- approval waits for you
Starts when you say so
Fixes start on their own by default. Switch to approval and each one waits for you.
It plugs into what you already run.
Loved by developers
Related guides
All continuous integration guidesCommon questions.
Which CI providers does Polylane support?
GitHub Actions, Depot, and any other CI that reports checks to GitHub. GitLab CI and CircleCI are coming. The current list is at polylane.com/integrations.
Does it fix CI failures on my pull requests?
No. Polylane acts on your default branch and merge queue, where a red build blocks everyone. On your own branches the red check already tells you. When CI fails on a fix Polylane wrote, it fixes that too.
What does Polylane read when a build fails?
The failed run, the failing commit and the job logs, along with your code, recent changes and the rest of the context graph.
Can I approve fixes before Polylane starts?
Yes. Fixes start on their own by default. Switch autofix to approval and each one waits until someone presses Run.
Will it merge the fix?
Not by default. The fix goes through your normal review.