Repository navigation
Conversation
…sible The orchestrator kept spawning regression testing agents forever when every remaining feature was waiting on human input, permanently failed, or blocked by unmet dependencies, re-testing the same passing features and burning tokens. - Add ParallelOrchestrator.has_coding_work() and skip testing-agent spawns when it is False - When stalled with no agents running: wait quietly (one notice) for features awaiting human input, otherwise exit with a summary of failed/blocked features - agent.py: check for completion before every session, not just the first, so error/rate-limit retries don't start sessions on a finished project - Add test_orchestrator_completion.py Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔍 QA report: ✅ PassedTester: Ada (cubefarm agent, in a fresh session) · Round: 1 · Author: Ken The PR fixes the part of #13 that was still broken: when every remaining feature is waiting for human input, has permanently failed, or is blocked by dependencies that can't be met, the orchestrator no longer starts regression testing agents over and over. It now exits with a list of failed and blocked features, or waits quietly without agents when a human can unblock it. agent.py also checks for completion before every session, so retries after an error no longer start sessions on a finished project. The new tests fail on master and pass on this branch, extra edge-case probes pass, and lint, type check and the test suite show no new failures.
🧪 Commands run
No browser screenshots were taken in this round. Posted by cubefarm · merges automatically once GitHub's checks pass |
Summary
Most of the fix proposed in #13 is already on
master:agent.pyexits when all features pass, and the orchestrator breaks out of its loop onget_all_complete().feature_get_nextno longer exists, so the prompt change proposed in the issue doesn't apply anymore.One version of the bug was still there. If every remaining feature was waiting for human input, had permanently failed, or was blocked by dependencies that can't be met (for example a dependency on a failed or missing feature),
get_all_complete()returned False. The orchestrator then sat in its "No ready features available" branch. Every time a testing agent finished,_maintain_testing_agents()started another one, so the same passing features were regression-tested over and over. That is the same token drain the issue describes.Changes
parallel_orchestrator.pyhas_coding_work(): returns True if a coding agent is running or a feature can be resumed or started._maintain_testing_agents()no longer starts testing agents when there's no coding work.agent.py: the completion check now runs before every session, not only the first. Retries after an error or rate limit no longer start a session on a finished project.test_orchestrator_completion.py: 10 new tests forhas_coding_work, testing-agent spawning, and howrun_loopexits or waits. Agent spawns are stubbed.Verification
python -m pytest test_orchestrator_completion.py: 10 passedpython -m pytest test_client.py test_dependency_resolver.py test_rate_limit_utils.py: 55 passedpython test_security.py: all passedruff check .: cleanmypyon the changed files: no new errors. The errors it reports are already on master, intemp_cleanup.pyandclient.py.Assumptions
--continuous-regressionflag was added. Regression testing still runs alongside active coding exactly as before.Closes #13
🤖 Generated with Claude Code