Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Two formatters disagreed and the branch built itself all night

Description and use

An auto‑formatting job in GitHub Actions repeatedly committed conflicting changes, saturating the CI runner pool. Safeguards—check‑only mode, concurrency groups, bot‑skip, and alerts—were added to stop the loop and protect resources.

Problem

An autoformatting job repeatedly committed conflicting changes, causing an infinite loop that saturated the CI runner pool and delayed other builds.

Outcome

The safeguards prevented infinite loops, restored CI runner availability, and introduced monitoring to detect similar issues early.

Workflow

  • 1. Pull request opened with conflicting formatter rules.
  • 2. Autoformatting job ran, changed file, pushed back.
  • 3. Push triggered the workflow again, changing file back.
  • 4. Loop continued until 900 runs completed.
  • 5. Team observed queue depth the next morning.
  • 6. Implemented check‑only mode to fail on diffs.
  • 7. Added concurrency group per branch with cancel in progress.
  • 8. Skipped runs triggered by bot account.
  • 9. Added alert on workflow run frequency per repository per hour.

Evidence

The job ran, changed the file, pushed. The push triggered the workflow. The job ran, changed it back, pushed.

Source

The immediate fix was to make the job check rather than fix, failing the build with the diff instead of committing anything.

Source

A concurrency group per branch with cancel in progress, so a new push kills the run it supersedes.

Source

  • Record date: 2026-09-21T11:45:34.198Z