Skip to content

Face rooms: another home's Bot answer doesn't count — local Bot forced to re-answer/re-plan; friend Bot's @all wakes all my Bots #475

Closed

Description

@Birfy

Summary

In a face-to-face room (面对面房间, multi-home room via Bot Social), every home runs its own round over only its local Bots. The round logic in core/src/host/groups.js ignores what another home's Bots already posted, so:

  1. Forced fallback after a friend already answered. answeredAlready(round) and fallbackDue(round) look only at round.slots (local Bots). When a friend's Bot (e.g. their Chief) has already answered or posted a plan for the person's line, and all local Bots reply [PASS], fallbackDue is still true and the first local Bot is forced to answer (route.forced, ROOM_REPLY_FORCED — "nobody else answered"). Result: a second plan for the same request.
  2. A friend Bot's @all / @所有人 wakes every local Bot. openingSpeakers() only returns [] for face-room Bot posts when !all (if (isFaceRoom(room) && !all) return [], ~line 739); with @all it falls through to return admin ? [admin, ...] : members, so a Bot in another home can start a full round of all of my Bots. This is the gap left by Face rooms: a plain line should let every Bot in the room answer (one round, capped), not only the first (follow-up to #287) #295 (which made a person's plain line answerable in one capped pass) and Face-to-face: a human message that does not @ the Bot still starts a Chief model turn #167 ("only @name / @ALL calls a Bot") — Bots in two homes can still set each other off with @all.

Investigation: local clone at main bae4128.

Expected behavior

Acceptance criteria

File pointers (main @ bae4128)

  • core/src/host/groups.js
    • routeFor() ~L339, answeredAlready ~L352, fallbackDue() ~L357, forced fallback in runRound() ~L403
    • routeNote() ~L202, roomPrompt() ~L222
    • currentFaceLine / openFaceLine ~L76–82 (room.faceLine)
    • openingSpeakers() ~L708, the face-room Bot-post rule ~L739
  • core/test/rounds.test.js

Related

Scope: bug fix only; no UI changes.

Activity

  1. added
    bugSomething isn't working
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    area:socialFriends, invites, grants, Bot Social
    on Oct 20, 2026
  2. Birfy commented on Oct 20, 2026

    @Birfy
    CollaboratorAuthor

    Owner decision (2026-10-20): face rooms must work like self-created groups — the room has one selectable overall lead (总负责人). The lead is not necessarily the Chief (the Chief may not be in the room); any Bot in the room, from any home, can be chosen. The room creator picks it via a UI button in the room (never by a typed chat reply); until picked, the default is the first Bot from the creator's home that joined. The lead sees the full room roster (all people and all Bots from every home, with roles) and assigns work; other Bots only do the part assigned to them or answer when named. One plan per request; nobody re-plans.

    For this issue: a friend Bot's answer/plan must count as answered (no forced local re-answer), and a friend Bot's @all/@所有人 must not wake all local Bots. Lead selection itself is #476.

  3. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 20, 2026
  4. self-assigned this
    on Oct 20, 2026
  5. Birfy commented on Oct 20, 2026

    @Birfy
    CollaboratorAuthor

    Claimed by maintenance run (2026-10-20 09:54 Asia/Shanghai). Working on branch fix/475-face-room-cross-home-answers (fork Birfy/FlyBot), developed in parallel with sibling issues; first slice per the Owner decision only.

  6. Birfy commented on Oct 20, 2026

    @Birfy
    CollaboratorAuthor

    Minor decisions for PR #487 (2026-10-20 11:12 Asia/Shanghai):

    • "Answered" counts another home's Bot lines (botId not one of my room members, not face-notice, no kind) logged after the person's line and after my round opened. A friend Bot post that was queued before the round opened is not counted, because the relay logs it after the person's line even when it is older (this keeps Face room: friend's plain line bypasses face-room routing and no-follow-up rule #462's "friend line queued after a Bot post" case answered). My own Bots' answers keep being counted through the round's slots and room.faceLine.answered as before.
    • The "already posted" note is shown in routeNote only, so it reaches Bots still asked on a routed line to everyone; an explicit @Name line is not routed and gets no note (unchanged prompt).
    • A friend Bot's @all / @所有人 calls only the local Bots it also names by @; my own Bots' @all and any person's @all are unchanged.
    • ds-bot/ is pristine upstream and is never edited; the change reaches it only through the regenerated patches/ds-bot/.
  7. added a commit that references this issue on Oct 20, 2026
    59871ee
  8. Birfy commented on Oct 20, 2026

    @Birfy
    CollaboratorAuthor

    Cleanup: face-room answer-count fix shipped; issue closed. Removing stale agent-working and assignee.

  9. removed their assignment
    on Oct 20, 2026
  10. removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:socialFriends, invites, grants, Bot SocialbugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions