Repository navigation
quest(m1): plan follow-ups from the 2026-10-10 merge session #5246
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| # [S] An accepted group request's demand ends cleanly | ||
|
|
||
| ## Goal | ||
|
|
||
| Once a group request is answered with `accept`, its `group::Demand` ends the | ||
| way a dropped request's does: `used()`, `unused()`, and `closed()` return | ||
| `Error::Dropped`, which moq-ffi's `MoqGroupDemand` reports as `Closed`. A rejected request's demand | ||
| still fails with the reject reason. | ||
|
|
||
| ## Plan | ||
|
|
||
| Today `group::Request::accept` stores `rejected = NotFound` so a fetch that | ||
| joins the answered request fails, and `Demand::abort_reason` | ||
| (`rs/moq-net/src/model/group.rs`, `DemandSource::Fetch`) reads that same | ||
| field, so every binding sees `NotFound` after an accept. Keep the | ||
| joined-fetch refusal in its own field and let the demand read only an actual | ||
| reject. | ||
|
|
||
| Decided 2026-10-10 (found in #5139): clean close after accept, reject keeps | ||
| its error. Add a moq-net test that both outcomes hold for `used()`, | ||
| `unused()`, and `closed()`, flip moq-ffi's | ||
| `group_request_demand_fails_after_accept`, and update the `MoqGroupDemand` | ||
| docs in Rust, Go, Python, and Swift. Hand-written moq-c is frozen, so it gets | ||
| no change. | ||
|
|
||
| Public API: behavior only (the error a demand wait returns). Wire: none. | ||
|
|
||
| ## Related | ||
|
|
||
| - [Track request demand](/quest/m1/ffi-shape/track-request-demand.md) - its demand should end the same way |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # [XS] Origin pool churn benchmark sweeps cursors | ||
|
|
||
| ## Goal | ||
|
|
||
| `bench_pool_churn` in `rs/moq-net/benches/origin.rs` sweeps the number of | ||
| announce cursors on a prefix, alongside members and paths, so a renewal cost | ||
| that grows with cursors shows up as a slope. | ||
|
|
||
| ## Plan | ||
|
|
||
| PR #5182 made a front's renewal check read each cursor presenting the prefix, and | ||
| a renewal restarts every cursor, so both scale with cursors. Add the axis, and | ||
| include a scoped cursor so the per-cursor scope filter is measured. | ||
|
|
||
| Public API: none. Wire: none. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| # [M] A track's pending tail counts arrivals, not its cache | ||
|
|
||
| ## Goal | ||
|
|
||
| A received track decides which groups are still missing below a declared end | ||
| from a per-track record of live groups that arrived, which eviction never | ||
| touches. An end check stops scanning the cache, and a reader whose track | ||
| ends short because a never-arrived group was aborted gets the abort error | ||
| instead of a clean end. A reader that got every group still ends cleanly. | ||
|
|
||
| ## Plan | ||
|
|
||
| PR #4225 judges holes from the cached range (`finish_at_pending` / | ||
| `set_tail_pending` in `rs/moq-net/src/model/track.rs`), so each end check is | ||
| O(groups), and an evicted group, a datagram, or an abort over a group that | ||
| never arrived all look alike. Decided 2026-10-10: record live arrivals per | ||
| track (fetched copies never count, as in #4225), bounded by the subscription's | ||
| grace like `tail::Tail`, and error the reader on an aborted hole. | ||
| Open: whether an arrival that ages past grace before the end is declared still | ||
| counts as arrived or becomes a hole. | ||
|
|
||
| Add a benchmark swept over tracks and groups held at the tail, per AGENTS.md's | ||
| fan-out rule. Mirror the record in JS through | ||
| [JS pending tail](/quest/m1/js-pending-tail.md), which waits for this. | ||
|
|
||
| Public API: behavior only (a short tail errors). Wire: none. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # [XS] A TS adaptation field must fit its packet | ||
|
|
||
| ## Goal | ||
|
|
||
| `adaptation_valid` (`rs/moq-mux/src/container/ts/import.rs`) refuses an | ||
| adaptation-only packet (`adaptation_field_control == 0b10`) whose adaptation | ||
| field length is not 183, and a packet with both (`0b11`) whose field is longer | ||
| than 182, as ISO 13818-1 requires, so either is treated as damage like any | ||
| other malformed adaptation field. Lands on `main` first, then is | ||
| cherry-picked to `release`. | ||
|
|
||
| ## Plan | ||
|
|
||
| Found reviewing #5124. Add a regression test covering both boundaries, | ||
| on a media PID and on the PCR PID. | ||
|
|
||
| Public API: none. Wire: none. | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # [XS] A burst of damaged TS units logs a summary, not a flood | ||
|
|
||
| ## Goal | ||
|
|
||
| When MPEG-TS ingest refuses damaged units, it warns on the first damaged unit | ||
| of a burst per PID, then logs one summary with the count per interval, instead | ||
| of one warning per unit for the whole session. Lands on `main` first, then is | ||
| cherry-picked to `release`. | ||
|
|
||
| ## Plan | ||
|
|
||
| `Import::damage` (`rs/moq-mux/src/container/ts/import.rs`) already counts per | ||
| PID in `damaged`, but warns on every unit. Since #4733 (and #5124 on | ||
| `release`) a sender streaming garbage no longer ends the session, so the | ||
| warning repeats for its lifetime. Decided 2026-10-10: first warning plus a | ||
| periodic summary per PID, no new dependency; test it with mocked time. | ||
|
|
||
| Public API: none. Wire: none. |
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.