Skip to content

quest: Opus holds its codec floor instead of disabling its rendition - #8135

Merged
kixelated merged 2 commits into
mainfrom
quest-plan/opus-hold-floor
Nov 7, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest-plan/opus-hold-floor

Conversation

@kixelated

@kixelated kixelated commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

Follow-up from moq-dev/moq#8123, planned through /quest-plan in the 2026-11-07 /quest-complete run.

Problem

quest/m5/2848-follow-the-bandwidth-grant-in-moq-audio-instead-of.md had a grant below the Opus codec floor disable the rendition (catalog enabled: false) until bandwidth recovered. After the push-to-talk work, players deselect a disabled rendition, so each flip makes every listener drop the track and resubscribe, losing what it was playing. That is the enabled-toggle cost moq-dev/moq#7942 removed. Recovery itself would still work, since an unwatched reservation still reads its slice (pullfrog's finding, now recorded).

Change

  • Goal: a grant below the floor holds the encoder at the floor, and the transport sheds what the link can't carry. The rendition stays enabled.
  • Plan: drops the 2026-10-04 disable-and-re-enable rule for audio and records the 2026-11-07 decision. moq_mux::rate::Control's rung-disable rule no longer applies to audio.
  • Tests: the below-floor case expects the encoder held at the floor with the rendition enabled, instead of disable then re-enable.

Decisions

Decided 2026-11-07 (maintainer): how a below-floor Opus grant behaves.

  • ✅ Hold the floor, no disable
  • Keep the disable; the Producer keeps reserving at the floor while disabled
  • Keep the disable; players keep a passive subscription to a grant-disabled rendition
  • Drop the follow-up

Public API: none. Wire: none.

Review

Codex (quest review --base origin/main), gpt-6.1-sol, medium effort, session 01a1b4a8-36e1-72f3-b0cc-03bbe1fda81e, round 2 on 54d25ae603: no findings. Round 1 on f6ec3d5 also had none. Pullfrog's finding on the recorded reason was fixed in 54d25ae. quest check passes.

(Written by Claude Opus 5.5 with high effort)

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 7, 2026 06:18
@coderabbitai

coderabbitai Bot commented Nov 7, 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 3 minutes.

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: cf7a276f-5c5a-4974-968f-bf0e14c35a9b
Commits

Reviewing files that changed from the base of the PR and between 3eb044f and 54d25ae.

Files selected for processing: 1

  • quest/m5/2848-follow-the-bandwidth-grant-in-moq-audio-instead-of.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

@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: f6ec3d5
Base: 3eb044f

No actionable findings in this plan-only change.

Direction: keeping Opus enabled at its codec floor removes the planned demand-loss feedback loop without adding passive subscriptions or a separate recovery mechanism. This fits the existing shared rate policy: its lowest/only rendition holds the minimum, while rung disabling requires a lower rendition. The plan consistently updates the goal, decision and below-floor test expectation, retains a fixed reservation ceiling, and leaves PCM reserve-only.

Verification: GitHub-only static review of the complete changed quest and the relevant shared rate policy and Opus bitrate setter. No implementation changes are included. I did not run quest context/check, tests, or network impairment experiments; encoder adaptation and recovery remain future implementation work. This is a COMMENT, not an approval.

(Written by review (OpenAI))

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ℹ️ Minor: the new decision's recorded reason conflicts with the tree's recovery design. The decision itself is sound.

Reviewed changes

  • Below-floor Opus behavior: the Goal, Plan and Tests now hold the encoder at the codec floor and leave the excess to the transport, keeping the rendition enabled instead of disabling it.
  • Recorded decision: a new 2026-11-07 maintainer decision block replaces the 2026-10-04 disable-and-re-enable rule, listing all four options with the chosen one marked ✅.
  • Removed stale detail: the "viewers with no enabled alternative hold it" sentence and its push-to-talk link are gone, along with the hypothetical-share recovery sentence.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

…d rendition

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

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ No new issues found.

Reviewed changes

  • Corrected decision rationale: the 2026-11-07 block now records the catalog flip as the reason to stop disabling, citing an_idle_track_claims_nothing to show recovery alone would work, and ties the cost to the enabled-toggle latency #7942 removed.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

@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: 54d25ae
Base: 3eb044f
Incremental review since f6ec3d5; the base is unchanged.

No actionable new findings.

The corrected rationale is supported by the source. An idle reservation receives its hypothetical rejoin share (rs/moq-net/src/model/bandwidth.rs:1070–1083 and the test at 1442–1462), so my earlier review's demand-loss feedback-loop explanation was incorrect. Disabled audio is deselected by the browser player (js/watch/src/audio/source.ts:103–118), and native playback stops disabled tracks (rs/moq-cli/src/play/media.rs:189–203). Keeping the rendition enabled therefore avoids subscription/playback churn rather than repairing bandwidth recovery.

Direction: retain the chosen codec-floor behavior and the existing shared rate policy; no extra reservation or passive-subscription recovery mechanism is needed for this rationale. The implementation and its adaptation proof remain future work.

Verification limits: GitHub-only static review of the complete quest, the incremental correction, and relevant allocator/player paths. No code changes are part of this PR; I did not run tests, quest validation, or playback/network experiments. This is a COMMENT, not an approval.

(Written by review (OpenAI))

@kixelated
kixelated added this pull request to the merge queue Nov 7, 2026
Merged via the queue into main with commit fb79ba5 Nov 7, 2026
8 of 9 checks passed
@kixelated
kixelated deleted the quest-plan/opus-hold-floor branch November 7, 2026 10:47
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