Repository navigation
fix(mux): retain published floors on reconfiguration - #7627
Conversation
Quest-Claim: 32847b0d048ed7e5
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 654b1bf
No actionable bugs found. Flooring only omitted jitter/delay in the shared rendition setter addresses the reconfiguration failure at its source without silently accepting explicit decreases or turning measured fields into supplied hints. Keeping the existing identity-change path gives a new track its own floor. The mixed-field and importer-boundary regressions cover the important distinctions without adding production machinery.
Verification: static GitHub review of the changes and surrounding catalog/reconfiguration paths. I did not run tests, builds, or HLS/ffprobe conformance checks; the PR's reported validation was not independently reproduced.
(Written by OpenAI)
|
No actionable comments were generated in the recent review.
|
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Rendition::setfloors omitted fields —rs/moq-mux/src/catalog/tracks.rs: on an already-published rendition, unsuppliedjitter/delayare floored at the catalog's current value before validation, so a same-codec reconfigure no longer resolves below the advertised floor and aborts withJitterDecreased/DelayDecreased. Explicitly supplied lower values still fail, andself.suppliedkeeps the un-floored fields so detection still owns them.check_decreasetakes the published estimate explicitly — refactored from a method tocheck_decrease(previous, next); the!self.presentguard moved to callers (setguards withif self.present,stagealready rejectsNotPublished). One catalog read per call.- Public
setdoc —rs/moq-mux/src/container/producer.rsdocuments the floor and the explicit-lower refusal. - Tests — new
reconfigure_floors_only_unsupplied_fields(2x2 supplied/omitted matrix) andreconfigure_keeps_floors_until_the_track_identity_changes(H.264/H.265 viareconfigure,modify()raise, explicit-lower refusals, new identity taking its own floor); updatedpublished_delay_never_decreasesandpublished_text_jitter_never_decreasessoset(None)retains the floor whilereplace(None)still refuses. - Quest cleanup — removed
quest/m1/catalog-jitter-floor.md, itsm1/README.mdrow, and thehls-conformance.mdlink; no dangling references remain.
Verified locally: the three reconfigure tests pass, cargo clippy --locked -p moq-mux --all-targets -- -D warnings is clean, and the full moq-mux --lib suite passes except 20 pre-existing ffmpeg/ffprobe-dependent failures (those tools are absent from this shell, unrelated to the diff).
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

Problem
Reconfiguring a published rendition with jitter or delay unset could resolve below its advertised floor and abort import with
JitterDecreasedorDelayDecreased.Approach
Rendition::setat the current catalog values, including measurement andmodifyraises. Explicit lower values still fail without changing the catalog.container::Producer::reconfigure, and a new track identity accepting its own lower values. Update the existing text-jitter and video-delay reset expectations.Impact
Overlap inspected
modifybefore an inline resolution switch. This fixes that import failure without copying its fixture or claiming its remaining HLS/DASH conformance failures are resolved. Its quest dependency is removed here.Alternatives
Flooring explicit fields would silently accept forbidden decreases. Keeping the previous supplied hints would pin fields the new config deliberately leaves to measurement. This uses the same published-floor rule as measurement, only for omitted fields.
Choices made without asking
Test the shared importer reconfiguration boundary with both H.264 and H.265 configs and real timestamp/reorder observations, without adding ffmpeg or HLS export dependencies to this unit regression. No new public helper or dependency.
Validation
JitterDecreasedon the unset-field reconfiguration.quest gate just rs test -p moq-mux: 1,963 passed, 3 skipped at38c47dac423b08232e38098f1aa7995f15c02a1c.quest gate just ci origin/main: exit 1 in this harness environment. mbx cannot launch Cargo (Argument list too long), so Rust docs and the CI lint-warning regression fail before their intended validation. Existing repo-side work: moq-dev/moq#7594. No upstream posts or fixes were made.quest gate env -u BASH_ENV just ci origin/main: exit 0, all selected checks pass, 4,400 tests passed and 66 skipped at654b1bfa9b. This retains mbx and the Nix toolchain but disables the harness startup script in child shells. It is not an unmodified standard-gate pass.BASH_ENVunset and pinned Cargo ahead of the mbx shim also passes, 4,400 tests. The final diagnostic above uses mbx.quest check --base origin/main: pass. No full HLS conformance/ffprobe run: its fixture and unrelated export failures remain owned by the existing PRs.Review
Claude Code, Claude Opus 5.5 (
claude-opus-5-5), medium effort, throughquest review --base origin/main --harness claude.654b1bfa9bfe114a52726b5a907e8f5a50357c30. No findings.setnow reads the published estimate once and shares it between flooring and decrease validation;stageuses the same comparison helper.Follow-ups
None created. Existing HLS PRs retain their owners and remaining work.
(Written by GPT-6.1 Sol)