Skip to content

test(audio): a latest join loses no group a publisher bursts before its first frame - #7342

Merged
moq-bot[bot] merged 3 commits into
mainfrom
quest/m2/audio-join-budget
Oct 31, 2026
Merged

moq-bot[bot] merged 3 commits into
mainfrom
quest/m2/audio-join-budget

Conversation

@kixelated

@kixelated kixelated commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Finishes quest/m2/audio-join-budget.md. This PR deletes the quest and its links from quest/m2/README.md and quest/m2/readers-range-live.md.

Summary

The fix in the quest's Plan already landed in moq-dev/moq#6990. Since then, a Start::Latest join subscribes with max_delay + warmup from the start and moves only its local cursor to the live edge, and the joining_latest narrowing is gone. That PR didn't delete this quest. Its test checks the subscription budget in-process, and it listed a transport-level test as a follow-up.

This PR adds the reproduction the Plan asks for, over moq_net::transport::memory. latest_loses_no_group_the_publisher_bursts_before_its_first_frame in rs/moq-audio/src/decode/consumer.rs works like this:

  • A publisher writes one 20 ms packet per group.
  • A Start::Latest consumer joins across a lite-07 session, with an 80 ms catalog warmup and a 1 s budget.
  • The publisher writes 20 more groups in one pass, before the first decode, then finishes.
  • The test asserts there's no Read::Gap and that every frame from the end of the warmup (80 ms) to 400 ms arrives.

I confirmed it reproduces the bug. With the wire budget narrowed to the warmup again for a Latest join (the shape before #6990), the test fails with a gap of 320ms after 0s. On main it passes.

Choices made without asking

  • Kept a test instead of deleting the quest as already done. The Goal is the observable no-loss outcome over the wire, and fix(audio): hold a latest join's whole budget from the start #6990 tested only the subscription budget in-process. The test reuses the existing link helper in moq-audio's tests and doesn't need Link::held: the burst happens before the first decode, so no out-of-order delivery is needed.

Checks

  • quest gate just check: passed (rs check and tests, rs_shapes, markdown, gh, shell, quest, ...).
  • quest check --base origin/main: 665 documents ok.

Review

  • Reviewer: Codex (quest review), gpt-6.1-sol, medium effort.
  • Head reviewed: ff68d09, round 1.
  • Findings: none.

Suggested follow-ups

  • The transport-backpressure half of fix(audio): hold a latest join's whole budget from the start #6990's follow-up isn't covered here: a reader that stalls before its first read over a transport with capped stream credit, checked for no Old resets within its budget. This test exercises the publisher's skip on the wire budget, not relay-side stream-credit resets.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 2 commits October 30, 2026 04:03
…ts first frame

#6990 already subscribes a Start::Latest join with its whole
budget from the start, so the remaining work in
quest/m2/audio-join-budget.md was the session-level reproduction its Plan
asks for. The test bursts one-packet groups over a memory session before
the first decode and fails with a 320 ms gap if the wire budget is
narrowed to the warmup again. Finishes and deletes the quest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title Join moq-audio at the latest group without narrowing the wire budget test(audio): a latest join loses no group a publisher bursts before its first frame Oct 30, 2026
@kixelated
kixelated marked this pull request as ready for review October 30, 2026 11:13
@coderabbitai

coderabbitai Bot commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 1 minute.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2fa384ff-bbc6-4549-8fa8-18baa784af35
Commits

Reviewing files that changed from the base of the PR and between 9387174 and ff68d09.

Files selected for processing: 4
  • quest/m2/README.md
  • quest/m2/audio-join-budget.md
  • quest/m2/readers-range-live.md
  • rs/moq-audio/src/decode/consumer.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-30T11:14:01.446467Z ff68d09 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed commit ff68d09.

No actionable findings. The new regression exercises the existing full subscription budget over a lite-07 memory session: the synchronous burst precedes the first decode, the oracle rejects every gap and requires the complete 80–400 ms timestamp sequence after warmup. Keeping this focused regression rather than reworking the already-fixed production path is the right direction.

The separately disclosed capped-stream-credit/Old-reset scenario remains useful follow-up coverage; this test does not establish it. Static GitHub review only, including the existing Consumer initialization, warmup handling and link helper; I did not run tests or verify the reported mutation/gate results.

(Written by OpenAI)

@kixelated

Copy link
Copy Markdown
Collaborator Author

Landing summary: the head ff68d09 adds a transport-level regression test (latest_loses_no_group_the_publisher_bursts_before_its_first_frame) for the Start::Latest join budget fixed in #6990, and deletes the finished quest/m2/audio-join-budget.md with its links. CI is green, the local Codex review (round 1) and the online review on this head reported no findings, and quest check --base origin/main passes. No changes made during merge; queuing for quest land.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge (squash) October 31, 2026 05:00
@moq-bot
moq-bot Bot merged commit e17f699 into main Oct 31, 2026
8 checks passed
@moq-bot
moq-bot Bot deleted the quest/m2/audio-join-budget branch October 31, 2026 10:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant