#456 ·
agent-ops · child of #454chat-duo: render origin_aro-tagged messages in their ARO room, stop spawning a room per DM
- Ref
#456(#456)- Project
agent-ops- Parent
- inProgress #454 llmmsg-srv roster & PM resilience: pruneStale soft-offline, offline buffering, PM re-election
- Status
- done
- Priority
- high
- Type
- task
- Assigned
- coder-chatduo-cc coder
- Created by
- —
- Created
- 2026-05-21T16:36:11.432Z
- Updated
- 2026-05-21T16:38:03.568Z
- Closed
- 2026-05-21T16:38:03.568Z
Questions
No questions.
Event log
-
wi cli; parent=#454
-
assigned to coder-chatduo-cc
-
Item 9 of WI 454. chat-duo renders a separate room per DM; Elazar reported 3 stray DM rooms (proxy-mba-w-cc / coder-chatduo-cc / researcher-ha-cc). Fix: any message carrying origin_aro renders INSIDE that ARO room regardless of DM/fan-out. The hub already tags re= replies with origin_aro (v2.2.2) - chat-duo is not honoring it for display. Lane: coder-chatduo-cc. MOVABLE NOW - no dependency on the blocked hub items; coder-chatduo-cc is online. This is the slice that can land before hub item 8 ships. Design context: aro:llmmsg-srv-engineering brainstorm 2026-05-21.
-
Scope broadened (nw-whey-cc, 2026-05-21 13:37, folding bin-whey-cc's refinement). The complete chat-duo fix is TWO complementary behaviors - WI 456 covers both: 1. origin_aro-TAGGED agent->Elazar message -> render INSIDE that ARO room (hub already tags re= replies with origin_aro since v2.2.2; chat-duo isn't honoring it for display). 2. origin_aro-LESS agent->Elazar DM -> collapse into ONE shared DM room, NEVER a per-agent room. This is the structural killer: even after WI 454 item 8 (hub kind-gating) a legitimate tagless kind=ask/report DM is allowed through and would still spawn a per-agent room. Behavior 2 prevents room proliferation regardless of kind or agent behavior. WI 456 (chat-duo) is the actual room-prevention fix; item 8 is noise control only. WI 456 is movable now - coder-chatduo-cc online, no hub dependency.
-
Evidence from bin-whey-cc (read ~/.local/state/chat-duo/chat-duo-rooms.json): chat-duo buckets a message by origin_aro - a DM carrying origin_aro lands in that ARO's room (bin-whey-cc DM'd Elazar ~20x today w/ origin_aro, zero per-agent room created). A tagless DM has no ARO bucket -> spawns a per-agent room. The 3 junk rooms + the 3 cc-context-monitor-* rooms are all tagless-DM spawns. aro_list disproved the pruneStale-fallback hypothesis: all 3 agents ARE in AROs - tagless DM was a choice, not a fallback, so this is NOT WI 454's roster bug. Fix = both behaviors: origin_aro-tagged -> render in that ARO room; origin_aro-less agent->Elazar DM -> collapse into ONE shared room, never per-agent.
-
Shipped - chat-duo v1.13.0, commit 2e72665, pushed to main (coder-chatduo-cc). No hub dependency. Root cause: chat-duo's existing DM->ARO consolidation predicate required the human to be an ARO member AND the sender to be that ARO's PM - ordinary agents are not PMs so it never fired; 12h of prior fixes were tuning dead code. Fix: a tagless agent->Elazar DM now routes into the ARO room the sender co-shares with Elazar (per-ARO, not one catch-all - cleaner, same zero-per-agent-room guarantee). Multi-ARO senders disambiguated by re= then most-recently-active room. Stale per-agent DM rooms dropped on restore, so the existing 3 vanish on relaunch. Elazar relaunches chat-duo to pick up v1.13.0.