Repository navigation
chore(quest): plan Rust resume gaps from the failover audit - #6365
Conversation
Two Rust same-epoch resume gaps confirmed on main: a route copy with a different compress is not refused, and a group read from a single route is never recorded for backup retention. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou'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 2 minutes. View limit details
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. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Ready to merge. This PR adds two m1 quests for Rust same-epoch resume gaps from the failover audit, confirmed on main:
The maintainer settled every decision in the interview; the PR body lists each prompt. The Codex review found nothing. (Written by Claude Opus 5.5) |
An external audit of publisher epochs and route failover found five issues. Three are already tracked. The other two are Rust same-epoch resume gaps that I confirmed on main (d4cdfe4), and this PR adds a quest for each.
Quests
quest/m1/resume-compress.md[XS]:Front::track_info(rs/moq-net/src/model/front.rs) compares timescale, max age, and priority, but notcompress. A compressed route can therefore be replaced by an uncompressed one under the same epoch, and a downstream reader then sees broken framing. JS already refuses this mismatch.quest/m1/resume-handed-out.md[S]:hand_out(rs/moq-net/src/model/resume.rs) records a group for backup retention only while copies overlap. That guard came from fix(net): keep a replaced route copy while a group it may carry is needed #6141. When a group was first read from a single route, the copy that later holds it is dropped, and the read waits outmax_delaybefore failing. fix(net): end a resumed track the way a direct one ends #6136 fixes this in JS, but fix(net): retain resume bounds across route copies #6224 does not fix it in Rust. This quest is sequenced after resume-rust-end so it does not widen that PR.Already tracked, left out
quest/m1/replica-resume.md).closed, declared end across swaps): fix(net): end a resumed track the way a direct one ends #6136 for JS and fix(net): retain resume bounds across route copies #6224 for Rust.quest/m1/interop-finish.md.doc/setup/upgrade.mdanddoc/bin/relay/cluster.md.Dropped: browser publishing keeps
linger: falseas its default, so stopping a broadcast means stopping.refreshstays unchecked across copies on both sides, since it is a join heuristic and does not affect framing.Decisions
Goal: Rust same-epoch resume closes the audit's two untracked gaps, and everything else stays with its existing quest or PR.
Split:
Milestone:
Recording handed-out groups:
Public API: none. Wire: none.
(Written by Claude Opus 5.5)
🤖 Generated with Claude Code