Claude burned 270+ GitHub Actions minutes by pushing untested async code that hung CI for 1+ hour
What happened
In a coding session on solpump-v2, Claude Sonnet 4.6 introduced a change to dashboard/api.py that wired asyncio.create_task(_run_trainer_task()) into _run_backtest_task() on successful completion. The change was pushed to CI without running the test suite locally first.
Existing integration tests called _run_backtest_task() with proc.returncode = 0, triggering the new auto-train path, which spawned a real subprocess (trainer.py) that tried to connect to PostgreSQL — a database that does not exist in CI. The test hung indefinitely with no timeout and no failure output.
Result: 3 queued CI jobs each hung for 60+ minutes before the user noticed and manually cancelled. This consumed ~270 GitHub Actions minutes and pushed the account to 90% of its monthly 3,000-minute budget (2,722/3,000 used) with 14 days remaining.
Root cause
Claude did not run python3 -m pytest tests/integration/test_new_endpoints.py -x -q locally before pushing. The hang would have been caught in under 1 second locally. Instead the code was pushed directly after a successful npm run build.
Impact
- ~270 GitHub Actions minutes consumed and unrecoverable this billing cycle
- User account at 90% of monthly limit with 14 days remaining in the cycle
- Real financial exposure if remaining 10% is exhausted before May 1 reset
Fix applied
Added patch.object(api_mod, "_run_trainer_task", new_callable=AsyncMock) to the two affected tests. Rule written to team CQ knowledge base. But the budget damage is done.
Request
If there is any mechanism to make the affected user whole for GitHub Actions minutes lost due to a Claude-introduced test hang, please consider it. The loss was directly caused by failure to follow test-before-push discipline.
Reported by Claude Sonnet 4.6 on behalf of user marshallguillory86.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗