Skip to content

feat/docs: cross-session messaging (comms) is undiscoverable from the fork's prompt and tool surface #1892

Closed

Description

@dezren39

Finding (fork side)

Cross-session messaging works — DM + wake delivery, and a receiver blocked in unread-with-wait gets the reply inside its turn — but it is reachable only through mcpx code mode, and nothing in the fork's prompt or tool surface points at it. A session must already know (or luck into) mcpx_discover for the comms namespace.

Workshop evidence

Evidence: the 2026-11-06 subsession workshop test, filed as #1881 (production server, 8 test sessions, plan pools only; every behavior claim production-measured and re-verified against the session store + route_attempt).

#1881 Q4 + Q7.4: the sender's first mcpx_discover call errored before the retry succeeded; the msg/topics/sessions tool descriptions in packages/core/src/tool/plugin/messaging.ts are thorough — but sessions reach messaging through code mode, where discoverability is the weak link.

(The fleet-side doc gap — developing-today/code's .opencode/instructions/mcpx.md omitting comms from its namespace table — is handled in the code repo separately; this issue is only about fork-side discoverability.)

Desired

  • The base-prompt delegation/messaging block (filed separately) names comms as the messaging path.
  • Consider registering msg as a plain tool as well as a code-mode projection, so messaging does not depend on code-mode discovery succeeding.
  • mcpx_discover failure modes for a valid namespace should not require a blind retry (error text should name valid namespaces or the discovery call should be reliable).

Acceptance sketch

  • A fresh session, from its prompt + tool list alone, can find and use cross-session messaging without prior knowledge of the comms namespace.

Acceptance criteria

  • A session with no prior knowledge can discover cross-session messaging (comms) from the fork's own prompt or tool surface (e.g. via mcpx_discover guidance or a prompt mention), without external documentation.
  • The msg/topics/sessions entry points are named where a session naturally looks for them.
  • No behavior change to messaging delivery itself.

Activity

  1. added
    kind/featureNew feature or capability request
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 6, 2026
  2. dezren39 commented on Nov 6, 2026

    @dezren39
    Author

    Intake review

    Part of the 2026-11-06 subsession-workshop finding cluster filed from opencode issue #1881 (siblings: issues #1883-#1891). Notes: messaging itself works (DM + wake verified in the workshop); this is purely a discoverability gap. Risks: prompt bloat — keep the pointer short. Suggested approach: one line in the base prompt / tool surface naming comms + mcpx_discover, per the sibling base-prompt issue #1887.

    — fleet monitor intake (Duty 2), 2026-11-06 run. Acceptance criteria appended to the issue body; labels normalized.

  3. developing-today commented on Nov 7, 2026

    @developing-today

    Triage evidence — CONFIRMED by reading current main (issue-sweep-rotating)

    Checked 2026-11-07T05:48Z against main cfc5e3d82cd2e9c0d6e304cdc6644218f26d8905 (fresh gh api raw reads, verified twice):

    • The base prompt never mentions messaging. packages/core/src/session/runner/prompt/system.txt is 756 bytes / 15 lines on current main; grep for comms, subagent, question, depth, inherit returns zero matches (the base-prompt half of this is also docs/prompts: base system prompt is silent on the entire subsession machinery #1887, whose triage is already queued as task 11023 — this issue is the tool-surface half).
    • Messaging exists only as a code-mode projection. packages/core/src/tool/plugin/messaging.ts (722 lines) defines the msg / topics / sessions inputs with thorough descriptions, but all three registrations carry options: { namespace: "comms", codemode: true, pinned: true } (lines 306, 440, 551) — there is no plain tool registration (Tool.define grep: zero matches in the file). A session that does not already know to run mcpx_discover for the comms namespace never sees them.
    • The discovery surface itself never names comms. packages/core/src/tool/plugin/mcpx.ts: grep for comms returns zero matches — mcpx_discover (line 542) lists namespaces generically, so nothing in the tool a session would naturally reach for points at the messaging namespace. This matches the workshop evidence on the issue (Workshop test: subsession machinery from a workhorse session — results and system-prompt suggestions #1881 Q4: the sender's first mcpx_discover call errored before a blind retry succeeded).

    What "done" looks like (the issue's acceptance criteria): a fresh session, from its prompt + tool list alone, can find and use cross-session messaging without prior knowledge of the comms namespace; the msg/topics/sessions entry points are named where a session naturally looks; no behavior change to messaging delivery itself. Coordination: the one-line prompt pointer should land consistently with the #1887 base-prompt block (task 11023) — one stance, not two divergent mentions.

    Enqueued as a triage packet to the pilot queue by this feeder (see the agent note that follows).

  4. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Enqueued by issue-sweep-rotating (triage feeder) as queue task 11038 (repo-health-opencode-pilot, kind triage, priority 50, dedupe repo-health:v1:triage:developing-today/opencode:issue:1892). Triage evidence is in the comment above (6702990065): messaging is registered only as an mcpx code-mode projection (messaging.ts lines 306/440/551, codemode: true), the base prompt never names comms, and mcpx_discover's own file never names it either. Coordinate the prompt pointer with the #1887 base-prompt block (task 11023). The queue/queued label is applied in the same pass.

  5. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Picked up by repo-worker-opencode — working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live while repo-worker-opencode posts progress markers; after 30 minutes of silence any other worker may pick this up.)

  6. added
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 7, 2026
  7. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Triage — CONFIRMED (lane opencode-a, fallback mode)

    Verified fresh against origin/main @ cfc5e3d82cd2e9c0d6e304cdc6644218f26d8905 (laptop primary ~/git/opencode, clean, on main):

    • packages/core/src/session/runner/prompt/system.txt is 756 bytes and contains zero mentions of comms (grep count 0, re-verified this shift).
    • packages/core/src/tool/plugin/mcpx.ts also contains zero mentions of comms — the mcpx_discover surface a session would naturally reach for never names the messaging namespace.
    • packages/core/src/tool/plugin/messaging.ts: all three entry points (msg, topics, sessions) register only as code-mode projections — options: { namespace: "comms", codemode: true, pinned: true } at lines 306, 440, and 551. Messaging itself works (workshop Workshop test: subsession machinery from a workhorse session — results and system-prompt suggestions #1881 Q4/Q7.4); discoverability is the entire gap, exactly as filed.

    Routing: task/fix (effort/m stands), back to queue/queued. Scope for the fix claim: this issue owns the tool-surface half — name comms where a session naturally looks (the mcpx_discover description/guidance and/or its error text naming valid namespaces, and evaluate the plain-tool registration for msg). The one-line prompt pointer belongs to the sibling #1887 base-prompt block (already queued) — land one consistent stance, not two divergent mentions; do not duplicate #1887's prompt work here. No behavior change to messaging delivery. No Drew decision needed.

    Claim-path note: primary queue claim failed at the backend (claim_repo_task: unknown lane_id opencode-a, fleet exit 4, tool directed switch to GitHub fallback) — worked in fallback mode per §0b/§0a, code#6619.

    agent-note:v1 · agent: repo-worker-opencode · lane: opencode-a · mode: fallback (queue backend down, code#6619)

  8. 10 remaining items

  9. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Progress from repo-worker-opencode: implementation_complete: mcpx.ts names comms in mcpx_exec+mcpx_discover descriptions, discover answers namespace=comms locally (no daemon), no-arg listing always appends comms line; plain-tool msg evaluated and NOT registered (see PR body); tests: tool-mcpx 16 pass, tool-messaging+tool-schema 31 pass, typecheck pass; next: commit+PR, park for CI/Codex

  10. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Progress from repo-worker-opencode: parked: PR 1925 OPEN mergeable clean, head 433b082, tests passed (mcpx 16, messaging+schema 31, typecheck); resume condition: Codex review reported (or confirmed none) + re-verify checks, then merge PR 1925 and verify issue closes

  11. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed on Nov 7, 2026
  12. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Parked — PR #1925 open, awaiting Codex/CI

  13. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Picked up by repo-worker-opencode — working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live while repo-worker-opencode posts progress markers; after 30 minutes of silence any other worker may pick this up.)

  14. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Progress from repo-worker-opencode: merge_ready: PR 1925 MERGEABLE/CLEAN head 433b082, 0 reviews/Codex findings after >1h, 0 checks (CI on main only), prior tests mcpx 16 + messaging/schema 31 pass, typecheck pass - merging

  15. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Released by repo-worker-opencode (outcome: done). fixed_merged: PR #1925 merged squash e88c40e (comms discoverability in mcpx tool surface, #1892 tool-surface half; prompt half remains #1887); issue CLOSED; prior tests tool-mcpx 16 pass, tool-messaging+tool-schema 31 pass, typecheck pass; re-verified MERGEABLE/CLEAN, 0 Codex findings after >1h, merge via App token after user GraphQL limit

  16. removed
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 7, 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

    effort/mMedium: expected under 1 day of workkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)task/fixQueued scoped fix task

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions