Repository navigation
Closed
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/sSmall: expected under 2 hours of workSmall: expected under 2 hours of workkind/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/normalOrdinary priority (the default)Ordinary priority (the default)source/humanFiled directly by a humanFiled directly by a humantask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
WorldCommand::Input carries a capability token, not a session (pkgs/id/src/world/actor.rs, around the Input arm). So the actor cannot tell which connection caused a change. F13.7 client providers need to route a request to the originating participant's own session. F13.8 multi-world, multi-client sessions probably need the same identity. This is a small prerequisite that no plan names yet.
Proposed: carry an opaque per-connection session id with input-derived commands, never journaled (ephemeral per the shell contract, #783).
Found while writing the F13.7 design (#789). Refs #790 (F13.8).
Acceptance criteria
-
WorldCommand::Input(and any input-derived command) carries an opaque per-connection session id, so the actor can attribute a change to the connection that caused it - The session id is never journaled (ephemeral, per the shell contract in id: Phase 13 F13.1 versioned shell contract (client-server frame spec + conformance check) #783)
- A test or probe shows two connections' inputs are distinguishable by the actor
- F13.7 routing (id: Phase 13 F13.7 client-side capability providers under the ceiling model #789) and F13.8 (id: Phase 13 F13.8 multi-server, multi-client topology; client-only mode always supported #790) can consume the id without a further protocol change
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/sSmall: expected under 2 hours of workSmall: expected under 2 hours of workkind/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/normalOrdinary priority (the default)Ordinary priority (the default)source/humanFiled directly by a humanFiled directly by a humantask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
docs(id): design client-side capability providers under the ceiling m…
dezren39 commentedon Oct 26, 2026
Intake review
Still live: verified on current main (a2eef6f) —
WorldCommand::Inputinpkgs/id/src/world/actor.rsstill carries onlytoken+input, no session identity. No merged PR or commit found that adds one.Related: #789 (F13.7 design, where this was found), #790 (F13.8), #783 (shell contract — the id must stay ephemeral / never journaled).
Notes / risks: small prerequisite, but it touches the command envelope — consumers of
WorldCommandall need updating in the same change. Keep the id opaque; do not let it become a second capability token.Suggested approach: add the id at the session/connection layer where input enters, thread it through
prepare_input, and assert non-journaling in a test.🤖 Fleet monitor intake enrichment — acceptance criteria appended to the body, labels normalized and
meta/enrichedapplied this pass.dezren39 commentedon Nov 1, 2026
🤖 Agent note · picked up
28 remaining items
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 40 (priority/normal). 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
dezren39 commentedon Nov 3, 2026
🤖 Agent note · picked up
mergeable_state: dirty(conflicts with main). Plan: verify the diff against the acceptance criteria, merge main into the PR branch, resolve conflicts, run the package tests, and land it if green.Merge pull request #3916 from developing-today/queue/4860-840-world-i…
dezren39 commentedon Nov 3, 2026
🤖 Agent note · done
What shipped: PR #3916
id(world): carry per-connection identity with input (#840)merged asb9633324312197a1da81be0d69d778917b56c3f9.pkgs/id/src/world/mod.rs— ephemeralSessionId(u64)(in-memory only, no serde).pkgs/id/src/world/actor.rs—WorldCommand::Inputcarriessession_id,WorldActor::acting_sessionholds it during processing and clears it after; deliberately absent fromWorldEvent/journal.pkgs/id/src/world/handle.rs—WorldHandle::input_from_sessionfor the session layer;input/input_signedkeep the unsigned/no-session paths.pkgs/id/src/world_session/{mod,types}.rs—WorldService::next_session_idmints one id per accepted connection, threaded into both input frames.Acceptance criteria: input-derived commands carry an opaque per-connection id; the id is never journaled (pinned by test); two connections are distinguishable by the actor (test); F13.7/F13.8 can read the id from actor context with no protocol change.
State correction: the PR had gone
mergeable_state: dirtyagainst main (main added thesigned_moveplumbing to the sameWorldCommand::Input). This run mergedorigin/maininto the branch, resolved the 7 conflicts by combining both changes, and pusheda653cb9eab32b345b315b247c4ccd38c80f10e4b.Tests:
cargo test -p id --lib -- input_session_attribution cloned_service_allocates→ 2 passed, 0 failed. PR CI has no per-PRidjobs configured (the workflow runs on push to main), so main-tier verification is the backstop.Follow-ups: none; #789 (F13.7) and #790 (F13.8) can consume the id.