Refuse to run the whole panel in one invocation; add --each - #60
Merged
Conversation
A single invocation finishes when its slowest lane finishes, which couples every lane's fate to the worst one. One slow lane sets the wall-clock for all of them. Raising that lane's timeout raises the whole run's duration, pushing it past the caller's timeout. And a lane that dies cannot be retried without rerunning everything, including http lanes that already billed for tokens nobody read. Lanes are supposed to be independent; sharing a deadline makes their failures dependent. Measured 2026-08-30: the poolside/ACP lane needs ~400s alone on a 110KB brief but exceeded 780s under 12-lane contention. Four consecutive rounds lost its answer. Every one of those losses was avoidable -- the same lane run by itself, with no contention and no shared deadline, answers fine. --each run each selected lane as its own process (the right default) --lanes N one lane, unchanged --panel the old shared-deadline behaviour, for anyone who means it A bare multi-lane call is now refused, with those three options in the error. This is deliberate: the wrong call was the obvious-looking one, so the tool now makes it unavailable rather than merely documenting against it. The three end-to-end tests that exercise pacing, per-vendor semaphores and silent-lane detection genuinely need the shared-deadline path, which is what --panel names; the test helper now passes it for multi-lane cases. 119 tests pass. Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/ Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmauK5UCYGRYyXoQ36FQ3S
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The bug this prevents
A single
roundtableinvocation finishes when its slowest lane finishes. Thatcouples every lane's fate to the worst one:
caller's timeout;
httplanes that already billed for tokens nobody will read.
Lanes are supposed to be independent. Sharing a deadline makes their failures
dependent, which is the opposite of the point of a multi-model panel.
Measured
The poolside/ACP lane needs ~400s alone on a 110KB brief. Under 12-lane contention it
exceeded 780s and was lost in four consecutive rounds. Each loss was avoidable: run
alone, with no contention and no shared deadline, the same lane answers fine. Raising
its ceiling only made every other lane wait longer.
What changes
A bare multi-lane call is now refused, with those three options printed in the
error. Deliberate: the wrong call was the obvious-looking one, so the tool makes it
unavailable rather than merely documenting against it.
--eachre-invokes the script once per lane — separate process, separate deadline,separate transcript.
Tests
Three end-to-end tests exercise pacing, per-vendor semaphores and silent-lane
detection, which genuinely need the shared-deadline path — that is what
--panelnames, and the test helper now passes it for multi-lane cases. 119 tests pass.
Docs updated:
README.mdusage block,AGENTS.md/CLAUDE.mdcontributor guide, andskill/SKILL.md.Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/