Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions quest/m0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ remain and no release waits on them.
- [CI host](/quest/m0/ci-host.md) - the maintainer brings up the spare desktop as the `moq-ci` and `moq-gpu` runner host
- [Draft-22 media on 0.17](/quest/m0/release-22/README.md) - a 0.17.x with the LOCATION_FILTER and FIRST_OBJECT fixes and moq-noq 1.3.5, before Seattle
- [TS duration fidelity](/quest/m0/ts-duration-fidelity.md) - Interop's TS compliance captures the whole round-tripped stream again, fixing a regression that turns Interop red on main
- [Interop latecomer control](/quest/m0/interop-latecomer-control.md) - the lagging-latecomer control fails as designed, and a red Interop step no longer skips the TS steps
- [Paused spinner](/quest/m0/watch-paused-spinner.md) - the watch buffering spinner never covers the paused play button, so Interop's resume step can click it
- [Check base](/quest/m0/check-base.md) - `just check` diffs against the PR's base whatever the local branch tracks, so scoped checks stay scoped
- [web-transport releases the qmux fixes](/quest/m0/qmux-credit-upstream.md) - waiting on moq-dev/web-transport#412 and #413 to merge and ship, which qmux credit bumps to
Expand Down
31 changes: 31 additions & 0 deletions quest/m0/interop-latecomer-control.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# [S] Interop's lagging latecomer control fails as designed

## Goal

Interop's "control: lagging latecomer" negative control reliably fails
"late join reaches live", so a passing positive case means something. A
failing Interop step no longer hides the steps after it: the TS steps run
and report on their own whatever the browser media step did.

## Plan

Found on #5207 (2026-10-10). The control (`test/interop/interop.sh`, added in
#5173) runs `test/interop/clients/js/media.ts --lag --cases late-join
--expect-fail "late join reaches live"`. In 3 of 4 runs on #5207, and on
unrelated PRs, the lagged latecomer still reached live, so the control
failed. Because the media step fails first, CI skips every TS Interop step,
so TS regressions can land with no CI signal (the `--headroom` arm added in
#5207 has not run in CI yet).

- Find why `--lag` doesn't keep the player behind `LIVE_LAG_FRAMES` (the
player may catch up, the delay may not apply, or live detection may be too
loose), and fix that at its cause. Never widen thresholds, add retries, or
lengthen timeouts.
- Decided (2026-10-10): in this quest, make the Interop steps independent, so
one red step never skips another. The job still fails if any step fails.

Public API: none. Wire: none.

## Related

- [TS duration fidelity](/quest/m0/ts-duration-fidelity.md) - the other failure that keeps Interop red on main
1 change: 1 addition & 0 deletions quest/m1/tstd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ nightly.

- [Send-ahead within the delay](/quest/m1/tstd/send-ahead.md) - total lag is `--delay`, send-ahead included, with a 1 s default
- [Mux-rate hold](/quest/m1/tstd/mux-rate-hold.md) - import publishes its catalog once the mux rate is measured, so export is constant-rate from the start
- [PSI runs](/quest/m1/tstd/psi-runs.md) - aligned keyframes never lay identical PAT/PMT runs back to back, so the system buffer holds

## Related

Expand Down
26 changes: 26 additions & 0 deletions quest/m1/tstd/psi-runs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# [S] A TS slot never repeats a PSI run back to back

## Goal

When keyframes on several video PIDs align in one slot, the export does not
lay identical PAT and PMT runs back to back, so the system buffer (512 bytes,
ISO 13818-1 2.4.2.3) never overflows at 25 Mb/s and up. Each send-ahead unit
still leads with its own tables as a tune-in point, and changed tables (a new
PMT version) always go out, in order.

## Plan

Found by Codex on #5207 (`schedule.rs`, repeated PSI groups). It exists on
`main` before #5207 too. Keeping each table once per slot was tried and broke
`aac_program_config_follows_each_table`, because send-ahead units need their
own tables.

- Start from the author's narrower diff on #5207
(https://github.com/moq-dev/moq/pull/5207#discussion_r4239051134): drop a run
only when the same flush would lay it right after an identical run, and pad
the dropped packets back with nulls in a padded slot.
Comment thread
coderabbitai[bot] marked this conversation as resolved.
- Test against system-buffer fill with the T-STD model, not a packet count:
three or more aligned video keyframes at 25 Mb/s overflow today, and pass
after the fix. The AAC tune-in test still passes.

Public API: none. Wire: none.
Loading