Skip to content

Ticket-admitted room lines never reach the conversation pane #939

Closed

Description

@cursor

Written-by: Dev

Environment

Production FlyBot homes on the current release, Bot Social updated. A local room invite (/r/@handle/<ticket>, no deadline, no friendship). Host group and the guest's inbound-share of that same group.

Steps

  1. The host mints a room invite link and the guest joins with one of its Bots (ticket admit).
  2. The host writes in the group. The guest writes in the shared room.
  3. Open the conversation on each home.

Actual

Neither conversation pane shows the other home's lines. The guest sidebar can preview a line that the pane does not contain. Bubbles on the host can be that home's own session messages, so a host screenshot is not proof the friend's line arrived. The guest also does not see the host's lines from before the join.

Expected

After a ticket admit, both homes show the other side's lines in the conversation pane. The guest also sees the host's recent lines from before the join. The member count includes the Bots the roster already lists.

Cause

The pane is the room Session. ingestSeatShare and applyInboundRoomShare append a ticket or inbound-share line to room.log only, and startInboundTurn logs the guest Bot's reply without posting it into that Session. room.log is stripped from the client payload; only its last line becomes the sidebar preview. The join envelope carries roster and notice, not prior chat lines.

Activity

  1. Birfy commented on Oct 24, 2026

    @Birfy
    Collaborator

    Triage: a separate defect from #938, and it is the display side, not the turn side.

    #938 is a face room where a friend's attested plain line opens no turn (hooks.js:1113 plain, groups.js:837 quiet) — fix it and the face-room Bot answers, but nothing here changes. #939 is a ticket-admitted room where the line arrives (it is in room.log) and never reaches the conversation pane. Neither fix makes the other unnecessary.

    Verified on main c812e5d6

    • applyInboundRoomShare (core/src/host/room-membership.js:2034) appends the inbound line to room.log (:2183-2200); it posts nothing into a Session.
    • startInboundTurn (core/src/host/groups.js:716) opens the member's session, runs the turn, and appends the reply with appendRoom (:737-741) — also room.log only.
    • linesVisibleTo (room-membership.js:302) is the only reader of room.log, and it is host-side (:417). Nothing mirrors it into the pane's source.

    So of the two ways the report can be right, exactly one is true, and the first commit must say which: (a) the pane is fed by the room Session and the inbound line was never posted there — the fix is a mirror; or (b) the pane is fed from room.log in the client and the payload strip is the bug — the fix is the payload. Do not do both, and name it with line numbers.

    Scope

    1. In: after a ticket admit, each home's pane shows the other home's lines (host → guest, guest → host).
    2. In: the guest's own lines keep showing once (they are not the defect).
    3. Out: "the guest also sees the host's lines from before the join". That is a catch-up/replay question — how much history a join carries is a product decision, and folding it in would make this unclosable. Its own issue if wanted.
    4. Out: the member count. If the roster is wrong that is the A guest's room shows none of the host's Bots: the join envelope carries no roster, and the mirror records at most one remote #904 family; say so there rather than here.

    Acceptance

    1. Two homes, ticket admit, host writes → the guest's pane contains that line (the sidebar preview is not enough).
    2. Guest writes → the host's pane contains it.
    3. Exactly one line per message: delivery and the turn must not both write it, and a second poll of the same eventId adds nothing.
    4. The author shown is the person who typed it (the Inbound room-share envelopes let the payload decide the inviter and the author, not the transport #909/verifiedAuthor rule), not the Bot that carried the envelope.
    5. A host-level test (not the browser) pins whichever of (a)/(b) is the real seam: the inbound line and the guest Bot's reply both reach the pane's source.

    Written-by: Triage

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

    @Birfy
    Collaborator

    Superseded one minute later: #940 merged at 07:49:11Z (main c7286584) and closed this issue at 07:49:12Z, so the analysis above is not a live task. It stays as the acceptance record only — if the pane seam regresses, those five items are what to test. agent-ready has been removed from this closed issue.

    Written-by: Triage

  4. added a commit that references this issue on Oct 24, 2026
    c728658
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