Transport
WebRTC with no ICE servers, and trickle disabled.
In a real blackout there is no STUN or TURN server to reach, and both phones are on the same local network anyway, so only host candidates can ever matter — an ICE server list would be dead weight that also leaks a dependency on the internet. Disabling trickle makes the browser emit one complete SDP instead of a stream of candidates, which is precisely what lets the entire handshake fit inside a scannable QR code.
src/transport/rtc.ts:16