With no timeout-minutes, a hung job runs to GitHub's six-hour default before it is killed. Most repos never set one, and unattended scheduled jobs are the worst case. These popular projects skip it too. Read the fix →
| Repo | Runs (30d) | CI min (30d) | Recoverable min/mo | Failure rate | Findings |
|---|---|---|---|---|---|
| microsoft/playwright | 2,500 | 8,883* | 4,442 | 32% | 33 |
| gohugoio/hugo | 628 | 17.2k* | 2,823 | 15% | 12 |
| reduxjs/redux | 440 | 5,331 | 2,289 | 11% | 13 |
| caddyserver/caddy | 2,048 | 22.0k* | 2,184 | 15% | 19 |
| expressjs/express | 192 | 8,581 | 1,937 | 29% | 14 |
| sharkdp/bat | 408 | 4,990 | 1,918 | 17% | 11 |
| python/mypy | 1,097 | 7,129* | 1,555 | 4% | 8 |
| sqlalchemy/sqlalchemy | 157 | 10.5k | 955 | 13% | 11 |
| axios/axios | 1,452 | 3,420* | 932 | 2% | 16 |
| drizzle-team/drizzle-orm | 442 | 7,884 | 787 | 19% | 7 |
| fastify/fastify | 1,414 | 4,206* | 765 | 5% | 33 |
| eslint/eslint | 1,106 | 2,082* | 764 | 3% | 31 |
| labstack/echo | 130 | 6,819 | 681 | 18% | 7 |
| prisma/prisma | 2,500 | 2,386* | 666 | 6% | 16 |
| denoland/deno | 791 | 17.6k* | 652 | 21% | 15 |
| charmbracelet/bubbletea | 223 | 2,316 | 604 | 10% | 14 |
| honojs/hono | 806 | 14.3k* | 595 | 18% | 16 |
| colinhacks/zod | 1,427 | 2,403* | 556 | 6% | 15 |
| biomejs/biome | 2,500 | 2,253* | 505 | 2% | 32 |
| sveltejs/kit | 2,500 | 1,922* | 458 | 8% | 9 |
| sharkdp/fd | 85 | 873 | 336 | 9% | 8 |
| numpy/numpy | 2,500 | 3,294* | 324 | 2% | 47 |
| vercel/turbo | 2,500 | 1,743* | 273 | 17% | 17 |
| pydantic/pydantic | 1,350 | 3,271* | 246 | 15% | 21 |
| nestjs/nest | 1,762 | 2,529* | 232 | 4% | 5 |
| BurntSushi/ripgrep | 56 | 543 | 217 | 7% | 9 |
| mui/material-ui | 2,500 | 1,706* | 207 | 2% | 23 |
| rust-lang/rust-analyzer | 1,697 | 2,167* | 197 | 4% | 20 |
| vuejs/core | 2,500 | 2,048* | 196 | 4% | 12 |
| psf/black | 1,496 | 3,395* | 183 | 6% | 27 |
| rails/rails | 2,500 | 1,113* | 152 | 1% | 17 |
| Homebrew/brew | 2,500 | 2,581* | 136 | 2% | 32 |
| sveltejs/svelte | 1,311 | 1,514* | 132 | 2% | 8 |
| cli/cli | 2,500 | 1,642* | 130 | 1% | 26 |
| withastro/astro | 2,500 | 2,339* | 121 | 4% | 31 |
| junegunn/fzf | 195 | 445 | 120 | 0% | 16 |
| TanStack/table | 105 | 3,578 | 112 | 15% | 9 |
| google/gson | 410 | 1,086 | 105 | 2% | 21 |
| oven-sh/bun | 2,500 | 619* | 95 | 5% | 17 |
| solidjs/solid | 2,500 | 3,930* | 85 | 10% | 4 |
| react-hook-form/react-hook-form | 1,249 | 611* | 78 | 1% | 21 |
| square/retrofit | 34 | 191 | 76 | 71% | 6 |
| gin-gonic/gin | 333 | 752 | 71 | 15% | 16 |
| vitejs/vite | 2,500 | 694* | 65 | 7% | 15 |
| preactjs/preact | 410 | 651 | 65 | 3% | 5 |
| python-poetry/poetry | 380 | 1,912 | 65 | 9% | 14 |
| remix-run/remix | 2,500 | 982* | 56 | 2% | 21 |
| actix/actix-web | 1,303 | 4,173* | 55 | 4% | 14 |
| astral-sh/ruff | 2,500 | 2,274* | 46 | 2% | 13 |
| huggingface/transformers | 2,500 | 2,017* | 40 | 6% | 34 |
| nuxt/nuxt | 2,500 | 1,634* | 39 | 4% | 32 |
| pola-rs/polars | 2,500 | 5,514* | 34 | 4% | 27 |
| TanStack/router | 2,500 | 3,384* | 33 | 7% | 17 |
| rollup/rollup | 608 | 7,561* | 31 | 8% | 13 |
| alacritty/alacritty | 17 | 101 | 30 | 12% | 3 |
| jestjs/jest | 1,639 | 2,472* | 29 | 7% | 23 |
| trpc/trpc | 2,500 | 1,200* | 23 | 17% | 22 |
| pocketbase/pocketbase | 52 | 229 | 23 | 2% | 3 |
| date-fns/date-fns | 155 | 57 | 22 | 3% | 20 |
| aio-libs/aiohttp | 2,500 | 1,442* | 18 | 7% | 19 |
| psf/requests | 112 | 93 | 17 | 4% | 13 |
| go-gorm/gorm | 2,500 | 135* | 11 | 1% | 8 |
| vercel/next.js | 2,500 | 2,005* | 9 | 3% | 22 |
| sindresorhus/got | 9 | 20 | 6 | 56% | 2 |
| scikit-learn/scikit-learn | 2,500 | 725* | 5 | 2% | 19 |
| TanStack/query | 2,500 | 845* | 5 | 0% | 9 |
| google/guava | 581 | 6,005* | 5 | 3% | 7 |
| calcom/cal.com | 2,500 | 338* | 4 | 4% | 30 |
| scrapy/scrapy | 2,280 | 12.8k* | 4 | 6% | 11 |
| fastlane/fastlane | 1,503 | 2,906* | 3 | 2% | 22 |
| storybookjs/storybook | 2,500 | 155* | 2 | 0% | 24 |
| prettier/prettier | 2,500 | 3,564* | 1 | 6% | 19 |
| pytest-dev/pytest | 548 | 18.7k* | 1 | 20% | 6 |
| square/okhttp | 100 | 728 | 1 | 45% | 6 |
| pandas-dev/pandas | 2,500 | 15.4k* | 0 | 1% | 24 |
| tokio-rs/tokio | 2,325 | 7,205* | 0 | 5% | 15 |
| clap-rs/clap | 399 | 499 | 0 | 25% | 13 |
| pmndrs/zustand | 109 | 106 | 0 | 6% | 7 |
| pmndrs/jotai | 89 | 115 | 0 | 8% | 7 |
| spf13/viper | 58 | 13 | 0 | 3% | 9 |
| jekyll/jekyll | 54 | 157 | 0 | 22% | 5 |
| pallets/flask | 50 | 17 | 0 | 14% | 8 |
| vercel/swr | 40 | 33 | 0 | 0% | 6 |
| spf13/cobra | 40 | 14 | 0 | 0% | 4 |
| sidekiq/sidekiq | 36 | 2,693 | 0 | 31% | 3 |
* CI min, recoverable min and failure rate cover only the latest 500 runs of a repo with more in 30 days.
Public data from each repo's GitHub Actions. Minutes are wall-clock workflow time over 30 days. These repos run Actions free (public repos always do). Each scorecard shows the private-repo dollar equivalent as a labeled estimate. Repo owners can remove their scorecard any time.