Summary
Every CI run since July 12, 2026 fails with the same crash, regardless of the change under test. The tests themselves pass — the failure is in bin/rspec-queue's coverage cleanup, triggered by the simplecov 1.0.0 release.
Impact — failing PRs
main is not yet red only because it hasn't run since July 11 — its next scheduled run will fail the same way.
The crash
bin/rspec-queue:30:in 'RubyLLMRSpecQueueRunner#cleanup_worker': undefined method 'running' for module SimpleCov (NoMethodError)
return unless defined?(SimpleCov) && SimpleCov.running
^^^^^^^^
bin/rspec-queue (introduced in 33da5f8, Mar 2026) calls SimpleCov.running in three places: after_fork (per-worker command_name), cleanup_worker (per-worker SimpleCov.result), and the final format! guard.
The change that broke it
- simplecov 1.0.0 was released 2026-07-12 09:30 UTC (changelog). The 1.0 internals rewrite dropped the
SimpleCov.running accessor that existed in 0.22.x. It was undocumented/internal API, so its removal isn't in the breaking-changes list — but the wrapper depends on it.
- simplecov-cobertura 4.0.0 (requires
simplecov ~> 1.0) shipped alongside, so the cobertura/codecov path moves to the new major at the same time.
Why it hit without any change in this repo
The appraisal lockfiles (gemfiles/*.gemfile.lock) are gitignored, so CI resolves gems fresh on every run. The Gemfile constraint is gem 'simplecov', '>= 0.21', which now resolves to 1.0.0.
Timeline: last green run Jul 11 06:30 UTC (scheduled, main) → simplecov 1.0.0 released Jul 12 09:30 UTC → first red run Jul 13 11:42 UTC (#840), reproduced Jul 13 13:16 UTC (#841).
Suggested fix
Short term: pin gem 'simplecov', '>= 0.21', '< 1.0' — restores exactly the resolution CI ran green with through July 11. One line, unblocks all open PRs.
Longer term: migrate to simplecov 1.0 properly. Its new ParallelAdapters interface and native parallel-results collation cover what bin/rspec-queue currently hand-rolls (per-worker command_name + manual SimpleCov.result merging), and SimpleCov.formatter false + SimpleCov.collate is the intended pattern for multi-worker CI — so most of the wrapper's coverage logic can likely be deleted rather than adapted.
Happy to open the pin PR.
cc @crmne
Summary
Every CI run since July 12, 2026 fails with the same crash, regardless of the change under test. The tests themselves pass — the failure is in
bin/rspec-queue's coverage cleanup, triggered by the simplecov 1.0.0 release.Impact — failing PRs
NoMethodError, whole test matrix redmainis not yet red only because it hasn't run since July 11 — its next scheduled run will fail the same way.The crash
bin/rspec-queue(introduced in 33da5f8, Mar 2026) callsSimpleCov.runningin three places:after_fork(per-workercommand_name),cleanup_worker(per-workerSimpleCov.result), and the finalformat!guard.The change that broke it
SimpleCov.runningaccessor that existed in 0.22.x. It was undocumented/internal API, so its removal isn't in the breaking-changes list — but the wrapper depends on it.simplecov ~> 1.0) shipped alongside, so the cobertura/codecov path moves to the new major at the same time.Why it hit without any change in this repo
The appraisal lockfiles (
gemfiles/*.gemfile.lock) are gitignored, so CI resolves gems fresh on every run. The Gemfile constraint isgem 'simplecov', '>= 0.21', which now resolves to 1.0.0.Timeline: last green run Jul 11 06:30 UTC (scheduled, main) → simplecov 1.0.0 released Jul 12 09:30 UTC → first red run Jul 13 11:42 UTC (#840), reproduced Jul 13 13:16 UTC (#841).
Suggested fix
Short term: pin
gem 'simplecov', '>= 0.21', '< 1.0'— restores exactly the resolution CI ran green with through July 11. One line, unblocks all open PRs.Longer term: migrate to simplecov 1.0 properly. Its new
ParallelAdaptersinterface and native parallel-results collation cover whatbin/rspec-queuecurrently hand-rolls (per-workercommand_name+ manualSimpleCov.resultmerging), andSimpleCov.formatter false+SimpleCov.collateis the intended pattern for multi-worker CI — so most of the wrapper's coverage logic can likely be deleted rather than adapted.Happy to open the pin PR.
cc @crmne