# ECP-0086: Web Watcher Jitter Budget Override

Status: Implemented

## Problem

Browser live playback on `every.channel` stays connected but still cuts in and out. A Chrome browser repro against `https://every.channel/watch?url=https%3A%2F%2Fcdn.moq.dev%2Fanon&name=la-nbc` showed no remounts or request failures, but the `@moq/watch@0.2.0` player emitted continuous `skipping slow group` warnings plus frequent small seek corrections.

## Constraints

- Keep the existing `@moq/watch` integration and WebTransport-only path.
- Avoid forking upstream player code for a site-level playback tuning change.
- Keep the fix reversible and local to the web app wiring.

## Decision

Set the web watcher's `jitter` attribute to `750` milliseconds in `apps/web/app.js` before connect.

Browser evidence for the same live stream showed:

- default `jitter=100`: `2762` warnings over the sample, including `324` seek corrections, final `readyState=1`
- forced `jitter=750`: `2482` warnings over the sample, including `75` seek corrections, final `readyState=4`

This does not eliminate upstream `skipping slow group` churn entirely, but it substantially reduces the seek-thrash that most directly surfaces as visible cut-in/cut-out playback.

## Alternatives Considered

- Leave the default `100ms` jitter budget. Rejected because the browser repro showed sustained seek churn under live playback.
- Raise jitter further (for example `1500ms`). Rejected for now because it reduced some warnings but regressed playback advancement more than `750ms` in the same sample.
- Fork `@moq/watch`. Rejected because the exposed `jitter` control was sufficient for a first mitigation.

## Rollout / Teardown

- Deploy the `jitter=750` override and validate live watch continuity in Chrome against public relay streams.
- If the extra latency is unacceptable or upstream player behavior changes, remove the override and fall back to the library default.
