Skip to content

quest(m1): plan failing an export on a source it cannot follow - #5437

Merged
kixelated merged 2 commits into
mainfrom
claude/plan-slow-source
Oct 13, 2026
Merged

kixelated merged 2 commits into
mainfrom
claude/plan-slow-source

Conversation

@kixelated

@kixelated kixelated commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Plans a follow-up from #5435. Before #5292, the TS export measured a source running -222,000 ppm, dropped 1,273 frames as late, and exited clean. jitter::Buffer already bails on an out-of-tolerance source, but only once its steered clock reaches the 30 ppm limit, which takes about 3 hours at the spec's slew rate.

Adds quest/m1/slow-source.md and links it from the m1 README.

Decisions

Goal: an export whose source arrives too far off real time for the output to follow ends promptly with an error naming the measured rate.

Where does the check live?

  • ✅ Shared jitter buffer: TS, FLV, and MKV export (audio decode has its own estimator and is out of scope)
  • TS export only

What trips the error?

  • ✅ Rate out of tolerance and half the delay gone: the existing rule without "steered clock at its limit", no new constant
  • A delay's worth of consecutive drops

Which act?

  • ✅ m1
  • m0
  • m2

Relation to m1 ts-live-clock (a local -1382 ppm run that exited clean)?

  • ✅ Separate, linked
  • Blocked on ts-live-clock
  • Fold into ts-live-clock

Landing

  • ✅ Own small PR now
  • Hold until the m1 PR merges

Docs beyond inline fixes?

  • ✅ Inline only
  • New troubleshooting page

Public API: none. Wire: none.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 13, 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-13T19:06:09.888723Z b75eb1d PR opened
ℹ️ 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.

@coderabbitai

coderabbitai Bot commented Oct 13, 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
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3cdf081a-21c0-43b9-978c-5d901d629015
📥 Commits

Reviewing files that changed from the base of the PR and between 4a6304a and 7bbe94e.

📒 Files selected for processing: 2
  • quest/m1/README.md
  • quest/m1/slow-source.md
  • 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 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b75eb1dcfb

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread quest/m1/slow-source.md Outdated
Comment on lines +26 to +27
- The check lives in the shared jitter buffer, so TS, FLV, and MKV export
and audio decode fail the same way.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Account for audio decode's separate jitter implementation

Implementing this check in rs/moq-mux/src/jitter.rs will affect the TS, FLV, and MKV exporters, but not audio decoding: rs/moq-audio/src/decode/consumer.rs uses its own crate::jitter::{self, Target}, while the mux buffer is private to moq-mux. Either remove audio decode from the promised behavior or explicitly plan a corresponding implementation and regression test in moq-audio; otherwise this quest can be marked complete while one stated consumer still silently behaves differently.

AGENTS.md reference: AGENTS.md:L73-L74

Useful? React with 👍 / 👎.

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.

Agreed. moq-audio decode uses its own delay estimator (rs/moq-audio/src/jitter.rs), not moq_mux::jitter::Buffer, which only the TS, FLV, and MKV exporters use. Fixed in 7bbe94e by scoping the quest to the mux exporters and naming audio decode as out of scope, matching the decision to put the check in the shared buffer.

(Written by Claude Opus 5.5)

Audio decode uses its own delay estimator in moq-audio, not the shared
mux jitter buffer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated enabled auto-merge October 13, 2026 19:07
@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary

  • Adds quest/m1/slow-source.md and its m1 README line. An export whose source is too far off real time for the output to follow fails promptly with an error naming the measured rate. The planned rule is the existing jitter-buffer rule without the "steered clock at its limit" condition.
  • I checked the plan against rs/moq-mux/src/jitter.rs. MAX_DRIFT is 30 ppm, and MAX_SLEW takes about 3 hours to reach it, which matches the plan.
  • Codex review (P2): the plan listed audio decode as covered, but moq-audio has its own estimator. I narrowed the scope to the TS, FLV, and MKV exporters in 7bbe94e, which is consistent with the decision to put the check in the shared buffer. The PR body is updated to match.
  • Check and Test passed on the reviewed head, and quest check passes. The only change since the review is that one-line scope fix.

Public API: none. Wire: none.

(Written by Claude Opus 5.5)

@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 7bbe94e against base 4a6304a, including the full plan and audio-scope correction. The narrower exporter scope resolves the existing finding (#5437 (comment)). No outstanding actionable code bug established.

One non-blocking clarification remains at quest/m1/slow-source.md:47: the -1382.60 ppm result is the external grader's PCR-versus-arrival fit, not a confirmed jitter-buffer source-rate measurement. The linked ts-live-clock investigation still leaves source timing, pacing, backpressure and measurement effects unresolved. Make the predicted loud failure conditional on reproducing out-of-tolerance source measurements and the half-delay condition, rather than assuming that diagnosis.

Fail-fast behavior fits the existing buffer error contract; keep the early-stall regressions before removing the steered-drift gate. Static GitHub review of both changed documents, related jitter/exporter/audio code and discussion. No tests run.

@kixelated
kixelated added this pull request to the merge queue Oct 13, 2026
Merged via the queue into main with commit ae40ff2 Oct 13, 2026
3 checks passed
@kixelated
kixelated deleted the claude/plan-slow-source branch October 13, 2026 19:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant