You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: share teamwire event channel across concurrent triple-shots (#668)
When starting a second triple-shot, the old event channel was closed
and replaced. The old listener's TeamwireChannelClosedMsg then nil'd
out m.teamwireEventCh, causing subsequent re-subscriptions to block
forever on a nil channel read. This left the second group visible but
empty — its instances appeared as top-level items.
Fix: reuse the existing event channel (all messages already carry a
GroupID for demux), only start a new listener when there isn't one,
and keep listening after completion when other coordinators are active.
Also adds listenTeamwireCmd() nil-guard helper used by all teamwire
handlers, preventing the nil-channel block-forever issue defensively.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
19
20
20
### Fixed
21
21
22
+
-**Multiple Triple-Shot Event Channel** - Fixed second triple-shot instances appearing outside their group. The teamwire event channel was replaced (old closed, new created) on each new triple-shot, causing the old listener's `TeamwireChannelClosedMsg` to nil out the new channel. Subsequent events blocked forever on a nil channel read. Now all coordinators share a single event channel (demuxed by GroupID), and `handleTeamwireCompleted` re-subscribes when the channel is still active.
23
+
22
24
-**TripleShot Implementer Auto-Collapse and Judge Nesting** - Fixed two TUI visual regressions introduced when Orchestration 2.0 became the default tripleshot execution path: (1) implementer instances were not auto-collapsed when the judge started because `ImplementersGroupID` was never set, and (2) the judge instance was not nested within the tripleshot group. Ported the legacy coordinator's group restructuring logic to `teamwire.TeamCoordinator.reorganizeGroupForJudge()` and added judge-to-group registration in the TUI handler.
23
25
24
26
-**TripleShot Combine Evaluation Parse Failure** - `FlexibleStringSlice` now handles LLM judge output that writes an array of objects (e.g., `[{"description":"...","source":"attempt_1"}]`) where flat strings were expected; also improved the judge prompt to show a populated `suggested_changes` example and explicitly require plain strings
0 commit comments