Repository navigation
Closed
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudpriority/lowNice to have; do when convenientNice to have; do when convenientqueue/queuedHas a queued task in the Supabase agent queueHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanFiled directly by a humanstatus/needs-triageNot yet triaged; needs a first lookNot yet triaged; needs a first looktask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
What and why
Clients connect to several worlds and servers and to other clients at once, and id is often client and server simultaneously. A client-only mode must always exist (cheap web load, SSH-only clients); SSH servers in id stay rare and opt-in.
Source
- Phase 13 plan — F13.8
- id: write the Phase 13 plan: client shells and client capability providers #564 (Phase 13 plan task)
- id(transport): transport designs #536 (transport designs) — D1-056
Current status
Partial. id world join/stats/logs/record/replay already act as remote iroh clients (pkgs/id/src/world_net.rs WorldClient), and one serve process hosts many worlds (pkgs/id/src/world_hub.rs). Simultaneous multi-world client sessions and a documented client-only mode were not found.
Acceptance criteria
- One client holds live sessions to two worlds at once
- The client-only flag boundary is documented and tested to add no authority (a client never silently becomes a server)
- A world's journal is unchanged by a second client joining it
Size
L
Prerequisites
- id: write the Phase 13 plan: client shells and client capability providers #564 (Phase 13 plan task) — F13.1 shell contract
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudpriority/lowNice to have; do when convenientNice to have; do when convenientqueue/queuedHas a queued task in the Supabase agent queueHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanFiled directly by a humanstatus/needs-triageNot yet triaged; needs a first lookNot yet triaged; needs a first looktask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
developing-today commentedon Oct 24, 2026
CODE-118
docs(id): Phase 13 plan — client shells and capability providers
dezren39 commentedon Oct 26, 2026
Intake review
Fleet monitor intake pass (protocol §5).
Related: Phase 13 sibling set — #785 (F13.3), #786 (F13.4), #787 (F13.5), #788 (F13.6), #789 (F13.7), #790 (F13.8); this issue is F13.8 multi-server, multi-client topology; client-only mode. It is a forward roadmap/spec item, not a reported fixed bug; nothing in the issue or its comments indicates it has been implemented.
Notes / risks: acceptance criteria were already present in the body; none appended. Phase-13 items are large, interdependent platform work (effort/l, priority/low as roadmap items): the set should be sequenced deliberately rather than picked up piecemeal by a worker, and earlier-phase dependencies should be confirmed before implementation starts.
Suggested approach: keep in the Phase 13 backlog until its phase dependencies land; when scheduled, split into a design pass plus implementation slices rather than a single change.
Labels normalized by the monitor.
12 remaining items
dezren39 commentedon Nov 1, 2026
Decision-ready F13.8 design: doc/2026-11-01_design_id790.md.
The current client can open sequential world sessions on one connection, but its existing test does not hold two worlds live concurrently.
The server's
WorldHubis per-server; multi-server routing needs a client-side coordinator with a distinct connection per endpoint.I recommend independent session handles and origin-session capability routing, preserving the existing one-shot CLI.
The client-only boundary is already documented and regression-tested by #3862; no
--client-onlyflag is needed.Only explicit
id servehosts a world; the SSH tunnel and mirror listener exceptions do not grant world authority.Journal caveat: a first/last participant-presence transition can intentionally append a
playersSystemevent.PR: #3907
Phased plan: (0, complete) client-only boundary in #3862; (1) standalone journal/presence characterization; (2) concurrent worlds on one endpoint; (3) extend to multiple endpoints with isolation tests.
Question for Drew: Should “journal unchanged by a second client joining” include an intentional presence
Systemevent for a newly present participant?playersis granted and subscribed. This preserves current replay behavior.dezren39 commentedon Nov 2, 2026
🤖 Agent note · check-in
queue/claimed+work/assigned+status/in-progress(effort/l; latest holder note 2026-10-28T20:04Z, last issue activity 2026-11-01T21:17Z) but there is NO live queue task for it in repo-health-code-pilot — the claim it mirrors no longer exists. It is now past ~1.5× its 72h deadline with no checkpoint note from the holder. Holder: please checkpoint, park, or hand off — or, if this item is being worked outside the queue, post a fresh agent note saying so and correct the labels; if it is not being worked, say so and the monitor will requeue it next run.Merge pull request #3907 from developing-today/design/id-790
dezren39 commentedon Nov 3, 2026
🤖 Agent note · done
ec118cadVerdict: implemented and merged — closing as complete
F13.8 landed after this issue's last triage. Verified against
origin/main(1e3763faf) on 2026-11-03:doc/2026-11-01_design_id790.mdon main.pkgs/id/src/cli.rs:1103-1115,4251-4286,pkgs/id/README.md:110-127. No--client-onlyflag is needed or added; only explicitid servehosts a world.WorldSessionsatpkgs/id/src/world_net.rs:1726-1830: one root connection per explicit endpoint, live session handles keyed by (endpoint, world), origin-session routing, and dead-root eviction/redial.Acceptance criteria → evidence at main
coordinator_holds_two_worlds_on_one_endpoint_concurrently(two live sessions, no cross-talk,hub.open_count()==2) andcoordinator_spans_distinct_server_endpoints(two endpoints, two roots, no cross-server bleed)second_join_through_coordinator_does_not_mutate_the_journal— committed seq and records generation identical across a second joinNotes
playerspresenceSystemevent?) was implemented as the recommended Option B: joining itself appends nothing; the pre-existing first/last presence event is preserved and tested separately. If strict neutrality (Option A) is ever wanted, that is a separate scope expansion — reopen or file a follow-up; it is not a defect in this implementation.WorldCommand::Inputcarries no session identity) remains open as an independent prerequisite for actor-side attribution; F13.8's client-side routing criteria do not depend on it, so it is not a blocker here.Closing as complete. No follow-up queue task is needed.
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 30 (priority/low). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03