Repository navigation
Description
Report
The owner, in the group chat at 11:11 today: a Bot posts a line that names another Bot with @, and the named Bot never answers. Earlier the same shape with @Reviewer. This is Bot-to-Bot naming inside one room.
Not reproduced — recorded so nobody re-opens it
Two Bots in participants, admin-mode room, A (the admin) replies @B your call on current main dfa25a2a: B gets exactly one turn — assert.equal(writerTurns.length, 1) is green, no duplicate, no gap. Evidence from that run:
- The round report can see such a member:
groups.js:1005-1019has three buckets —addressed(the poster's own@,mineat:1009-1010),Called, but no answer(:1019), andStayed silent(:1017). hop = 1(a person's line 0, a Bot's reply +1), nowhere nearMAX_HOPS = 6(core/src/host/constants.js:23).- B's Session was created, ran, answered
[PASS]→status: 'passed', androom.logholds no line by B (a pass writes none). The call was built and the turn ran.
So the callMembers path (groups.js:585) is correct and must not gain a rule. This test stays as the negative control.
The two paths that actually drop the @ (all line numbers on main dfa25a2a)
(a) A Bot posts into the group while the round is running
postToRoom:929 → the group agent is running and heldWhileRunning is true → holdPost:915 → a this-home Bot's ordinary line goes through showInRound:891, which does logPost and round.replies.push and nothing else: no mentionsIn, no callMembers. The held post is only re-delivered after agent.whenIdle() (:918-925), i.e. after the round has ended — and the round's report has already said Stayed silent (:1017) about the member it named.
This is most likely what the owner saw: a Bot speaks during a round, names a member, and that member is not called until the round is over (and reads as silent in the report).
(b) A late line past ROOM_LATE_ROUNDS is marked quiet and the @ is never read
lateRoomReply:947 sets quiet at :961 once room.lateRounds >= ROOM_LATE_ROUNDS, and passes { late: true, quiet: true } down. Two early returns follow: showInRound drops it (:904), and when it finally opens a round, openingSpeakers returns at :837 — if (opener.quiet) return [] — before mentionsIn is consulted. Measured: feeding {late:true, quiet:true} with @Writer ... yields zero calls for Writer, and the admin answers instead.
quiet exists so late posts cannot keep a group talking; that goal is right. An explicit @ is not "keeping it talking", it names exactly one member.
Dev measured these on a nearby ref, so its numbers drift by a few lines (:939, :895, :812). Anchor on dfa25a2a.
What to change
- (a) resolve the mentions once in
showInRoundfor a this-home Bot's ordinary line and build the calls there, still insideROOM_TURNS_EACH/ROOM_ADMIN_TURNS_EACH(groups.js:40-41, enforced incallMembers:347) and the round limit — no second, uncapped call path that skips the caps. - (b) make
quietstop only the spread that nobody asked for: either move the mention parse above the:837early return, or let the early return apply only when nothing is named. Whichever, the comment must say why an explicit@is exempt and whatquietstill prevents.
Acceptance
Red tests first, then the code:
- Mid-round post: while a round runs, a this-home Bot posts a line
@Writer→Writergets exactly one call (assert.equal, not "at least one"), and the round's report does not fileWriterunderStayed silent. - Late quiet line:
{late:true, quiet:true}with@Writer→ exactly one call forWriter. - The spread guard still holds: a late
quietline naming nobody → zero calls (that is whatquietis for). - Dev's green case stays, unchanged, as a negative control: two Bots, A replies
@B, exactly one turn — proof thecallMemberspath was not touched. - Negative controls: naming a Bot that is not in
participantsbuilds no call; a speaker naming itself builds no call and no loop.
Why the report is not the observation point for this
On both paths the named member is never called, so #913's report files it under Stayed silent (:1017) — not under Called, but no answer. Anyone looking for evidence here should read the code paths above, not the round report.
Activity
[-]group chat: a Bot that @-names another Bot gets no answer, and the call cannot be traced to the step that dropped it[/-][+]group chat: a Bot's "@Name" is dropped on two paths — a mid-round post builds no call, and a late "quiet" line returns before the @ is read[/+]Call the member a Bot's own group line names, in the round that sees …