From 47819335078eee5d9bb6c4ed541c9ca1b77e1e56 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Thu, 11 Jun 2026 11:14:06 +0000 Subject: [PATCH] =?UTF-8?q?docs(roadmap):=20=C2=A79=20client=E2=86=92host?= =?UTF-8?q?=20network=20speed=20test=20(bitrate=20prerequisite)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A bandwidth probe over the punktfunk/1 data path so a user-settable bitrate can be informed by what the network actually sustains (throughput/loss/jitter), surfaced in the client UI + web console. Reuses the existing Session/FEC plumbing. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/roadmap.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/roadmap.md b/docs/roadmap.md index d4d4a4a..3239417 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -164,3 +164,19 @@ client) is built and live. Two changes harden it from "works" to "secure by defa is a client-agent task. PIN pairing (§8a) stays the bootstrap — the first device, or when no approver is online. + +## 9. Client→host network speed test *(next — prerequisite for a user-settable bitrate)* + +Before exposing a user-settable bitrate, the client needs a way to **measure what the network +actually sustains** between it and the host, so the bitrate picker is informed (suggest/cap a safe +value) instead of guesswork that ends in a stuttering stream. + +- A short **bandwidth probe over the punktfunk/1 data path**: the host bursts a few seconds of + FEC-encoded payload (sized like a real high-bitrate stream) while the client measures sustained + throughput + packet loss + jitter, and reports the achievable Mbps (plus the FEC-recovered + headroom — the GF(2¹⁶) Leopard wall-breaker is exactly what makes a high-loss link still usable). +- Surface it in the client UI ("Test network" → "~XXX Mbps · recommended bitrate YYY") and the web + console; feed the result into the bitrate control (clamp/suggest) once that lands. +- Reuse the existing `Session`/FEC plumbing — a probe is just a non-video AU stream the client + byte-counts + times; no new transport. Pairs with bitrate negotiation (bitrate in Hello/Welcome, + alongside the mode renegotiation already in place).