diff --git a/docs/adr/0004-peer-assisted-media-experiment.md b/docs/adr/0004-peer-assisted-media-experiment.md index 935e998..ef4161c 100644 --- a/docs/adr/0004-peer-assisted-media-experiment.md +++ b/docs/adr/0004-peer-assisted-media-experiment.md @@ -112,10 +112,11 @@ viewing remains required. Test 1, 3, 5, and 8 viewers for 30 minutes across the three recommended ceiling combinations, plus any advanced combination proposed for production, with controlled per-edge RTT at or below 40 ms and loss at or below 1%. Current -desktop Chrome and Edge form the relay cohort; current Android -Chrome and iOS Safari join last as leaf checks. The protocol has no -relay-capability bit, so controlled join order is the only enforcement and this -spike is not safe for arbitrary-user deployment. +desktop Chrome and Edge form the relay cohort; current Android Chrome and iOS +Safari join last as leaf checks. ADR-0005 now adds a per-session binary relay +capacity: detected mobile/iPad clients report zero and desktop-class browsers +report one. That heuristic, background lifecycle, and voluntary relay policy +remain unverified, so the spike is still unsafe for arbitrary-user deployment. The proposal advances only if every condition holds: diff --git a/docs/project-memory.md b/docs/project-memory.md index d916895..438894b 100644 --- a/docs/project-memory.md +++ b/docs/project-memory.md @@ -17,7 +17,7 @@ Last updated: 2026-08-19 ## Current Recommendation - Keep desktop Chrome/Edge and the responsive Web viewer as the baseline. Validate Android Chrome and iOS Safari as leaves. -- Use direct host P2P for one or two viewers. `main` carries ADR-0004's default-off experiment for later viewers: two sticky deterministic chains, host capacity two, viewer capacity one, no proactive rebalance or composite score, and no more than eight viewers when `PEER_ASSISTED_MEDIA=true`. +- Use direct host P2P for one or two viewers. Keep ADR-0004's two-chain experiment off on production: without LiveKit, two mobile/iPad leaves can consume both host roots and leave later viewers admitted without media. Test it only on an isolated instance until the full resource, quality, recovery, TURN, and browser/mobile gates pass. - Standard browser relays resend remote `MediaStreamTrack` values and therefore decode and re-encode at every hop. Browser WebRTC does not guarantee one shared encoder across peer connections; measure this cost rather than hiding it. - Keep the browser experiment bounded. Evaluate native RTP relay, encoded-object striping, SVC, or FEC only in separate measured spikes. - Plan a separate native-sender ADR for TeamSpeak-style shared encoding regardless of the browser relay result. One compatible encoded output may feed at most two standard WebRTC packetizers to reduce host encode work, but each edge still consumes upload bandwidth. This work is not part of the current Draft and cannot rescue another failed browser-relay gate. diff --git a/docs/status.md b/docs/status.md index d5d7774..692ec0d 100644 --- a/docs/status.md +++ b/docs/status.md @@ -60,8 +60,9 @@ separate experiments, not ways to relabel a failed browser route. ## Blockers And Decisions -Production enablement of peer assistance and automatic routing remains blocked -on ADR-0004/0005 gates. +Production enablement of peer assistance and automatic routing is No-Go until +ADR-0004/0005 gates pass. Without LiveKit, two mobile leaves can occupy both +host roots and leave later viewers without media; use only an isolated canary. Native shared encode and multi-tree striping remain separate experiments. - Whole-system versus selected-game audio for the first release.