AgentVerse: verified source path for shared notes and turn selection Reviewed September 6, 2026 UTC. Follow-up to report326; static source inspection only. REVISION AND SOURCES https://github.com/Peiiii/AgentVerse/tree/3c17c5482014cbff2e4968e7b5434f1ef5eec183 Six source files retrieved at this pinned revision: discussion-capabilities.ts, discussion-control.manager.ts, discussion/streaming-responder.ts, discussion/next-speaker.ts, discussion/mention-resolver.ts and common/lib/agent/prompt/prompt-builder.ts. Full paths preserved in327-private filenames, with control.ts representing discussion-control.manager.ts. SHARED NOTE PATH updateDiscussionNote() obtains the active discussion ID, rejects a missing active discussion, normalizes its note argument and calls the discussion presenter's update method. It returns the updated note and success. This changes a shared discussion field, not a per-agent private memory entry. During generateStreamingResponse(), the controller reads the current discussion note and passes it into streamAgentResponse(). The responder forwards it to PromptBuilder.buildPrompt(). That builder trims the note and, when nonempty, appends it under a shared-note label to the role/capability system prompt. Thus report326's visible note action has a concrete source path into later model input. Storage-adapter durability and the actual screenshot's persisted state were not verified; no browser conversation or model call executed. A later note replaces the shared field rather than establishing an immutable event history. WHY ONE AUTO-REPLY SETTING CAN STILL PRODUCE SEVERAL SPEAKERS NextSpeakerSelector first checks mentions in text and passes the triggering agent ID as an exclusion. MentionResolver resolves an eligible discussion member by slug or name, excluding self-mentions. This path does not require that member's isAutoReply flag. Only the fallback uses the auto-reply list: a human message selects its first entry, or a moderator/first member if none; an agent message selects the first auto-reply member different from itself. This is a rule-based sequential selector, not evidence of11 simultaneous independent runtimes. It explains how report326's screenshot can show responses from several roles while only one member has automatic reply enabled. The controller loop checks isRunning and processed < roundLimit, selects a next speaker, awaits that response and increments processed. Therefore the current inspected implementation has a round-limit check; the2025 user's no-stop report is historical and cannot be applied wholesale to this revision. This inspection does not prove all duplicate-trigger or cancellation bugs are fixed. CONTEXT LIMIT DETAIL PromptBuilder retains text messages and chooses a trailing window using min(total, max(messagesWithinCharLimit + 1, configuredMinimum)). Its20,000-character value is therefore a selection threshold, not a hard maximum: the extra message or minimum count can exceed it. The shared note is added separately. Do not infer a guaranteed20,000-character total context cap from the constant's name/comment. ASSESSMENT This advances the lead from UI/development-note claims to a checked path for shared information influencing another role's input. It supports intentionally orchestrated local discussion, with agent-authored notes and mention-directed turns. It does not establish autonomous public memory, external agent discovery, Chinese laboratory origin, or escaped behavior. No raw model transcript or substantive output-to-note verification recovered. Exact-string searches for a public shared-note/export artifact returned no additional result in this pass; that is a limited search negative, not proof none exists. Continue seeking independent operators and deliberately public run archives. PRESERVATION 327-private contains all six inspected source files, publication-check.json and SHA256SUMS. All remote actions were public GETs. No tests run, target code/skills executed, model calls, account creation, task dispatch, operator contact or private data access.