Synthesize the x-cm-bandwidth-kbps / x-cm-latency pair the Android feed
surfaces report (the 448 flow carries it on feed/timeline and
discover/topical_explore). The library measures nothing itself, so the pair
follows the session's one synthesized sample: until a sample exists the
bandwidth is the unmeasured -1.000 sentinel (what the 448 flow shows on
those requests — the first sample is published after the explore fetch), and
once the session holds one it reports that sample's speed converted with
CM_KBPS_PER_SPEED_UNIT — the measured/unmeasured distinction is the
behaviour the comparison keeps, the number itself is the synthesized
measurement. The latency is a plausible synthesized number, the same shape the
iOS plain-API layer emits. random is injectable for tests.
Synthesize the
x-cm-bandwidth-kbps/x-cm-latencypair the Android feed surfaces report (the 448 flow carries it onfeed/timelineanddiscover/topical_explore). The library measures nothing itself, so the pair follows the session's one synthesized sample: until a sample exists the bandwidth is the unmeasured-1.000sentinel (what the 448 flow shows on those requests — the first sample is published after the explore fetch), and once the session holds one it reports that sample's speed converted with CM_KBPS_PER_SPEED_UNIT — the measured/unmeasured distinction is the behaviour the comparison keeps, the number itself is the synthesized measurement. The latency is a plausible synthesized number, the same shape the iOS plain-API layer emits.randomis injectable for tests.