webrtc-datachannels built the whole two-party conformance layer in-repo: paired child drivers (RTC_CT_ROLE / RTC_CT_SIGNALING_URL / RTC_CT_RUN_ID env contract), prefix-based case selection (solo/ vs pair/), inventory-order lockstep so both sides run the corpus in the same order (rendezvous holds by construction), a suite-owned signaling mailbox with three implementations (native driver, in-guest wasi:http client, browser JS), and per-case rooms.
component-iroh is the named second consumer of exactly this shape (its just matrix pairing assertions are two-party by construction, and its AGENTS.md commits it to this harness once the endpoint surface stabilizes — polymorph-components/polymorph-iroh#3 / #10 are the gates).
This issue is the placeholder to design the shared contract when iroh migrates, not before: one consumer is not evidence of a general shape, two is the family's own threshold. Inputs to the eventual design: webrtc's env contract and rendezvous rules as the incumbent; the results-side fold (tracked separately) as the already-upstreamable half; whether role assignment belongs in the manifest (targets.toml) or the driver invocation.
webrtc-datachannels built the whole two-party conformance layer in-repo: paired child drivers (
RTC_CT_ROLE/RTC_CT_SIGNALING_URL/RTC_CT_RUN_IDenv contract), prefix-based case selection (solo/vspair/), inventory-order lockstep so both sides run the corpus in the same order (rendezvous holds by construction), a suite-owned signaling mailbox with three implementations (native driver, in-guest wasi:http client, browser JS), and per-case rooms.component-iroh is the named second consumer of exactly this shape (its
just matrixpairing assertions are two-party by construction, and its AGENTS.md commits it to this harness once the endpoint surface stabilizes — polymorph-components/polymorph-iroh#3 / #10 are the gates).This issue is the placeholder to design the shared contract when iroh migrates, not before: one consumer is not evidence of a general shape, two is the family's own threshold. Inputs to the eventual design: webrtc's env contract and rendezvous rules as the incumbent; the results-side fold (tracked separately) as the already-upstreamable half; whether role assignment belongs in the manifest (targets.toml) or the driver invocation.