Repository navigation
Conversation
Quest-Claim: 3a2169ab830fd6c2
track::board hardcoded priority 0 and no budget for a flight's fill, so a late joiner's replay ranked below all live traffic upstream. The group's expiry, the subscriber's or fetch's per-reader policy, now reports what the reader asks fills with, and board asks with it (oldest first, since a flight holds one group). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
marked this pull request as ready for review
November 15, 2026 12:56
Contributor
|
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 30 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. |
Contributor
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
I reviewed how a flight's upstream fill now carries its rider's priority and budget, and the new path that lets a rider retry after an Old refusal.
- Rider's asking on flights:
track::boardbuilds the flight'sfill::Askingfromreader.asking()instead of hardcodingpriority: 0, max_delay: None. It still forcesOrder::Ascendingbecause a flight holds one group. Expiry::asking:GroupExpiryreads the live subscription.FetchExpirynow stores the fetch'spriorityand passes it throughfor_track. A consumer with no expiry falls back to the old defaults.- Retry for a looser rider:
Boardingnow keepsfillsandasking. If the flight it boarded was refusedOldunder a tighter budget, it asks again with its own budget, the same wayFetching::poll_answerdoes. That budget comparison now lives in a sharedlooser()helper. - Retry terminates:
flyskips any pending flight whose outcome already resolved the key, so a retry always joins or creates a flight that hasn't answered yet. The recursion goes at most one level deep, and each later retry needs a new refusal under a tighter budget. - No JS counterpart needed:
js/nethas no flight or board mechanism.
claude-opus-5-5 | 𝕏
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Finishes quest/m1/flight-priority.md: a flight's upstream fill now asks with its rider's priority and budget, so a late joiner's replay isn't ranked below all live traffic on a congested upstream link.
Changes
group::Expiry, the per-reader policy a handed-out group already carries, gainsasking(), which returns what that reader asks fills with:GroupExpiry(a subscriber's group) reads the subscription's priority,delay.max, and order.FetchExpiry(a fetched group) now keeps the fetch's priority next to itsmax_delay.group::Consumer::asking()returns its expiry's asking. A group with no expiry, such as a rawconsume(), falls back to priority 0 and no budget, which was the old behavior.track::boardasks for the flight with the reader's asking. Order staysAscending, as in a one-group fetch fill, since a flight holds one group.Old. It flies again with its own budget, the same retryFetching::poll_answermakes. The budget comparison is now a sharedlooser()helper.fill::Askingis widened topub(in crate::model)and re-exported fromtrack.Choices made unattended
Expiry, not from a new field ongroup::Consumer. The expiry already carries the subscriber'sSubscriptionor the fetch's budget, and the consumer has a size assert. A front's logical reader gets its preferences through the copy track's subscription, which the front mirrors.Join::updatethroughBoarding::pollwould cost a lock on the subscription on every poll during boarding.Validation
a_flight_asks_with_its_riders_priority(inrs/moq-net/src/model/track.rs) uses the public track API. A subscriber with priority 5,delay.max10s, and descending order sees its flight fill with priority 5, max_delay 10s, and ascending order. A fetch with priority -3 sees priority -3 and its budget.a_looser_rider_asks_again_after_old: a 1s rider and a 10s rider share a flight, and the request is rejected withOldunder 1s. The tight rider fails. The loose rider asks a new flight at 10s and reads it.priority: 0, max_delay: Noneback makes the test fail (left: 0, right: 5).cargo test -p moq-net --features async --lib flight: all 15 flight tests pass, and so does the new retry test.just checkpassed (check rs, test rs, and the rest).Public API / Wire
Public API: none. Everything is crate-private. Wire: none, though a relay's upstream flight SUBSCRIBE/FETCH now carries the rider's priority and budget, not 0 and none.
Caused by
track::boardwith a hardcodedpriority: 0, max_delay: None(found by reviewer: the feature review quest)Follow-ups
None.
Models
Size: XS
Implementer: Claude Code, claude-opus-5-5, unknown effort (arm B)
🤖 Generated with Claude Code
(Written by Opus 5.5)
Review
Rewritten by
quest reviewafter each round.Head: af63265
Base: origin/main at 250a13a
Risk: high,
Bounded upstream FETCH requests change wire behavior relied on by downstream readers and relays; incorrect budget handling can interrupt delivery, though reverting restores prior behavior.Classified: medium by default
Reviewer: Codex, gpt-6.1-sol, medium effort
Session:
01a1df38-f214-79a1-b7cd-1e3fc6c5dddc, round 2Score: 10/10,
The incremental change fixes the shared-flight budget refusal and adds a focused regression test, with no new issues found by code inspection.Raised the risk to high:
Bounded upstream FETCH requests change wire behavior relied on by downstream readers and relays; incorrect budget handling can interrupt delivery, though reverting restores prior behavior.Rounds: 2; first round 1 (medium 1); findings 1 (medium 1): fixed 1, refuted 0, open 0
Findings: none
The last round's findings, at 9073568:
rs/moq-net/src/model/track.rs:3864:Recover shared flights rejected under another rider's budget;Boarding retains the rider's asking and fills handle, retries Old refusals recorded under a tighter budget, and the new regression test covers a tolerant rider recovering through a second flight.