Skip to content

id: investigate: cross-jurisdiction shared worlds and federation — residency semantics for multi-tenant Durable Objects #2284

Closed

Description

@dezren39

Follow-up B from the Durable Object jurisdiction investigation on #2061
(doc: doc/2026-10-29T11-43-02Z_investigation_do_jurisdiction_pinning/, §2).

Parent epic: #2056. Context: #2044 (§6 shared worlds, §7 bridge), #2059 (hot-world sharding).

The problem

A shared world is one Durable Object, and a Durable Object has one jurisdiction (eu, us or fedramp), fixed when the ID is created. Its writers do not share that jurisdiction: an eu-pinned user and a us-pinned user writing into the same world means one of them is writing outside their jurisdiction. The platform cannot fix this — it is a product decision.

Questions to answer

  1. Partition or consent? Either worlds are jurisdiction-partitioned (an eu world and a us world, no cross-participation, and the same world name resolves differently per jurisdiction — exactly as Durable Object names already do), or cross-jurisdiction participation is explicit, consented and disclosed. Both are defensible; the doc must pick one and say what it costs.
  2. What does a world's participant list reveal? Even if content stays put, the DO holding the world learns which users participate. Is that metadata crossing a boundary?
  3. Blobs in a shared world. Content-addressed blobs follow the user's R2 jurisdiction bucket, but a world's participants share world content. Which bucket holds world blobs, and what happens when a user from the other jurisdiction reads them?
  4. The bridge. Native Iroh nodes are not jurisdiction-pinned at all. When a native node syncs with a hosted eu user, what residency claim survives?
  5. Federation and relay paths (id: investigate: multi-hop relay and P2P media paths — bridging peers, optional privacy relay, large-message chunking #2035, id: design: ID messaging/relay protocol v1 #2036): same question one layer down.

Acceptance

  • Investigation doc under doc/ with a recommendation, not a menu.
  • The recommendation states what a privacy policy can honestly say afterwards.
  • Follow-up design issues for the chosen path.

Acceptance criteria

  • Investigation doc under doc/ answers all five questions in the body and picks ONE of partition-vs-consent with its cost stated (a recommendation, not a menu)
  • The doc states what a privacy policy can honestly say afterwards
  • Follow-up design issues filed for the chosen path

Activity

  1. added
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    effort/mMedium: expected under 1 day of work
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. added
    kind/questionQuestion or design decision to resolve
    queue/queuedHas a queued task in the Supabase agent queue
    on Oct 29, 2026
  4. added
    priority/normalOrdinary priority (the default)
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 29, 2026
  5. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: #2061 (§2), #2044 (§6/§7), #2059 (hot-world sharding), #2035/#2036 (bridge/federation), #2283/#2285 (siblings), epic #2056

    Notes: Pure investigation/design question — the platform cannot fix the one-jurisdiction-per-DO constraint; this is a product decision with privacy-policy consequences.

    Risks: Participant-list metadata leakage (Q2) is easy to overlook and may decide the partition question on its own.

    Suggested approach: Answer Q2 and Q3 first — they constrain whether consent-based sharing is even coherent — then pick the model.

    🤖 Agent note · filed

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: repo-fleet-monitor run 2026-10-29T12:12Z (07:12 CDT)
    • Found via: monitor reconciliation
    • Task: Duty 2 intake enrichment — acceptance criteria appended (original body preserved verbatim above it), labels normalized, meta/enriched applied. Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found; where a queue triage task owns verification, it is named in the notes.
    • Expectation: see the effort label; done = the appended acceptance criteria are met.
    • Links: this issue
  6. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 1, 2026
  7. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  8. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workkind/questionQuestion or design decision to resolvemeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)status:in-review

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions