Skip to content

id: poc: five-node bridge relay over iroh-gossip — chained fan-out via a single bridging member #2249

Open

Description

@dezren39

GATED on #2036 (ID messaging/relay protocol v1 synthesis). Do not start until #2036's design is reviewed — a PoC built on an unreviewed protocol would be making the protocol's decisions itself, which the ID program forbids (see #2035 deliverable rules).

What

A five-node proof of concept of the relay model from the #2035 investigation (doc: doc/2026-10-29T11-05-00Z_investigation_multi_hop_relay_and_p2p_media/):

  • Four mutually visible members {A, B, C, D} plus E reachable only through D.
  • Chained-class messages fan out over iroh-gossip; D bridges to/from E in the same manner (fan-out to visible neighbours, excluding arrival neighbour).
  • Origin-signed envelopes with prev-hash chaining; signed hop records appended per relay; dedupe by message ID; hop cap enforced.
  • Measure: delivery completeness to E, duplicate rate at E when a second bridge appears, one-hop bridged latency vs direct latency.

Acceptance

  • Test/demo harness with 5 in-process or local endpoints, E firewalled from all but D at the application layer
  • A's chained message reaches E via D with a verifiable hop chain; a tampered relayed copy is refused at ingest
  • Duplicate copies (two bridges) collapse to one delivered message
  • Latency numbers recorded in the PoC report (direct vs one bridge hop)
  • Report linked from id: design: ID messaging/relay protocol v1 #2036; PoC is explicitly NOT the permanent feature

Parent epic: #2056 — ID platform expansion. Origin investigation: #2035. Pattern per Drew's 2026-10-28 execution orders: investigate → synthesise (#2036) → PoC.

Activity

  1. added
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · state: triaged — gate check and scope record (queue task 7864)

    Verdict: still live, not superseded, and correctly gated. No implementation starts now.

    Fresh state (2026-11-03T13:4xZ, gh reads)

    Why the PoC cannot start

    The issue's own deliverable list requires origin-signed envelopes + prev-hash chaining, signed hop records appended per relay, dedupe by message ID, and an enforced hop cap. Those are exactly the artifacts #3796 defines. Building the five-node harness first would decide the envelope and hop-record shape inside PoC code — the failure mode #2036 §6 and the #2035 deliverable rules forbid ("do NOT build the permanent feature on top of an unreviewed PoC").

    Scope, recorded for when the gate opens (do not implement now)

    • Location: a new PoC under pkgs/id spikes (no production crate wiring); existing iroh work is only doc/2026-10-11T.../spikes/*, which are reference, not a base.
    • Topology: A, B, C, D mutually visible; E reachable only via D; E isolated from A/B/C at the application layer.
    • Behaviour: chained-class fan-out over iroh-gossip; D bridges to/from E by the same rule (fan-out to visible neighbours excluding the arrival neighbour); origin signature over content/prev-refs/group/sequence; hop record outside the signed envelope; dedupe by message ID; four-hop cap.
    • Measurements to record in the PoC report: delivery completeness to E; duplicate rate at E when a second bridge appears; direct vs one-bridge-hop latency.
    • Refusal vectors: tampered relayed copy rejected at ingest; two-bridge duplicates collapse to one delivery; relay forwards at most once per message and refuses its own prior hop.
    • Report links back to id: design: ID messaging/relay protocol v1 #2036; explicitly not the permanent feature.

    Ordering / blockers

    1. id: protocol v1 phase 3 — relay envelope + hop records over iroh-gossip for chained messages (#2036) #3796 part A — envelope, stable message ID, hop-record types (task 5786: re-scope or cancel-and-re-enqueue, per the 12:18Z correction note).
    2. id: protocol v1 phase 3 — relay envelope + hop records over iroh-gossip for chained messages (#2036) #3796 part B — gossip topic derivation, membership/ingest gate, validate-before-forward seam, bridge integration test.
    3. id: poc: five-node bridge relay over iroh-gossip — chained fan-out via a single bridging member #2249 — this PoC, against the reviewed id: protocol v1 phase 3 — relay envelope + hop records over iroh-gossip for chained messages (#2036) #3796 envelope.
    4. Review of the PoC report before anything here becomes production code.

    Resume condition: #3796 closed/merged (envelope reviewed). Until then this issue is dependency-blocked; the queue task closes as triaged and no worker should claim it for implementation.

  4. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 3, 2026
  5. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    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/none). 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

  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 3, 2026
  7. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · triaged (task 8601, lane code-k, direct)

    • Agent: queue worker (repo-worker-code), lane code-k
    • Session / ID: task 8601
    • Found via: queue claim (coverage pass re-queue)

    Triage verdict — still live; the design gate has cleared since the last triage, and the practical predecessor is now issue #3796.

    What changed since task 7864's gate check (2026-11-03T13:45Z):

    Ordering (recorded per the packet): #3796 lands → #2249 is unblocked and ready to implement as written (its acceptance checklist is complete and needs no rescoping). No new packet is enqueued from this triage — the blocker is a live sibling with its own task, and #2249 will re-queue through coverage; this note is the ordering record the next claim should resume from.

    Issue stays OPEN. Status: triaged.

  8. added
    status/triagedTriaged and routed (see agent note)
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 3, 2026
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)source/creatorFiled by the new-issue-creator jobstatus/triagedTriaged and routed (see agent note)task/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions