You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
id: poc: five-node bridge relay over iroh-gossip — chained fan-out via a single bridging member #2249
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)
Phase 3 is id: protocol v1 phase 3 — relay envelope + hop records over iroh-gossip for chained messages (#2036) #3796 (relay envelope + hop records over iroh-gossip for chained messages) — OPEN and status/blocked as of 2026-11-03T13:29Z. Its blocker is a queue bookkeeping defect, not a design question: task 5786 sits blocked and holds the canonical dedupe key, so the validated part-A packet (hidden_files/packet-3796-part-a-types.json) deduped onto it and no successor was created (issue comment 2026-11-03T12:18Z).
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.
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.
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
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.
Activity
developing-today commentedon Oct 29, 2026
CODE-1115
dezren39 commentedon Nov 3, 2026
🤖 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,
ghreads)app/idonly, unchanged since 2026-10-29T11:53Z. No branch or PR owns it: repo-wide code search finds no iroh-gossip usage outsidedoc/spikes; the only PR mentioning id: poc: five-node bridge relay over iroh-gossip — chained fan-out via a single bridging member #2249 is docs(id): bridge semantics investigation — hosted (HTTPS/WS) ↔ native (Iroh) seam (#2058) #2277 (merged docs: bridge semantics investigation, id: investigate: bridge semantics — hosted (HTTPS/WS) edition syncing with native Iroh nodes #2058).doc/2026-11-01_design_id2036.mdonmain. id: design: ID messaging/relay protocol v1 #2036 itself stays open as the synthesis parent.relay envelope + hop records over iroh-gossip for chained messages) — OPEN andstatus/blockedas of 2026-11-03T13:29Z. Its blocker is a queue bookkeeping defect, not a design question: task 5786 sitsblockedand holds the canonical dedupe key, so the validated part-A packet (hidden_files/packet-3796-part-a-types.json) deduped onto it and no successor was created (issue comment 2026-11-03T12:18Z).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)
pkgs/idspikes (no production crate wiring); existing iroh work is onlydoc/2026-10-11T.../spikes/*, which are reference, not a base.Ordering / blockers
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.
developing-today 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/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
dezren39 commentedon Nov 3, 2026
🤖 Agent note · triaged (task 8601, lane code-k, direct)
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):
doc/spikes (task 7864's search, unrebutted since).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.