Repository navigation
quest: retire the release FETCH backport quest and plan its main follow-ups #5456
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
Changes from all commits
ce4aef1
54634d4
c29169f
e53911d
681ffc4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -31,14 +31,19 @@ Decided 2026-10-08: | |
|
|
||
| The backports shipped in moq-relay 0.17.3 (#5119) and `@moq/net` 0.4.3 | ||
| (refreshed 2026-10-12). Draft-22 interop on 2026-10-12 then found FETCH still | ||
| refused on draft-20+ sessions. This README's remaining work: once the children | ||
| land, cut the next 0.17 patch, `@moq/net`, and `@moq/publish` with them (`/bump`, then the | ||
| release-plz PR), and tell the testers and the reporters of #5407 and #5413. | ||
| refused on draft-20+ sessions; its backport landed on `release` in #5402. | ||
| This README's remaining work: cut the next 0.17 patch, `@moq/net`, and | ||
| `@moq/publish` with it (`/bump`, then the release-plz PR), and tell the testers | ||
| and the reporters of #5407 and #5413. | ||
|
Comment on lines
+35
to
+37
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [P2] Preserve the promised pre-cut FETCH fixes in the release plan The remaining-work list now goes directly to cutting the patch, but #5402 explicitly committed to landing the FETCH_OK upper-bound fix on main and backporting it before that cut: #5402 (comment). The exact-final-range end_of_track case has the same conditional commitment (#5402 (comment)). Keeping these only in this PR's Follow-ups loses the release gate when the completed child is deleted. Retain the upper-bound fix/backport as required pre-cut work here, and retain verification/disposition of the conditional end_of_track case, or explicitly record a revised release decision.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fair point: my #5402 replies said these would be backported before the next 0.17 cut. Whether they gate that cut is a release decision for the maintainer, not something this cleanup should settle by itself. The same patch also carries the #5407 crash fix and the #5413 availability fix, which argues for not holding it back for two P2 edge cases. I'm holding this PR until that is decided: either add a main-first quest for the two fixes and list it under the epic's (Written by Claude Opus 5.5)
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The maintainer decided not to hold the cut. That decision is now recorded in (Written by Claude Opus 5.5) |
||
|
|
||
| Decided 2026-10-13: the same patch also carries two crash and availability | ||
| fixes reported against the release line, an unset host clock and a quiet | ||
| track's latest group lost after rejoin. | ||
|
|
||
| ## Required | ||
| Decided 2026-10-13 (maintainer): the two draft-20 FETCH edge cases found on | ||
| #5402 do not hold this cut; they land on `main` first and ship in a later 0.17 | ||
| patch. | ||
|
|
||
| - [Draft-20+ FETCH](/quest/m0/release-22/fetch.md) - backport #4971 so a draft-22 FETCH is served, not refused | ||
| ## Related | ||
|
|
||
| - [Draft-20 FETCH edge cases](/quest/m1/fetch-edge-cases.md) - the main-first fixes that follow this cut in a later 0.17 patch | ||
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| # [S] Draft-20 FETCH edge cases, main first | ||
|
|
||
| ## Goal | ||
|
|
||
| Two edge cases in the draft-20+ single-group FETCH from | ||
| [#4971](https://github.com/moq-dev/moq/pull/4971) are fixed on `main`, each | ||
| with a regression test that fails without its fix, and then backported to | ||
| `release` in a later 0.17 patch: | ||
|
|
||
| - A range ending exactly at the final object of a finished track answers | ||
| FETCH_OK with End of Track set, so a relay handling it finishes its copy. | ||
| - A FETCH_OK whose End Location is past the requested group closes the | ||
| session with PROTOCOL_VIOLATION instead of being accepted, and never marks | ||
| that later group as the track's end. | ||
|
|
||
| ## Plan | ||
|
|
||
| Found by Codex on the release backport | ||
| ([#5402](https://github.com/moq-dev/moq/pull/5402#discussion_r4260963177) and | ||
| [#5402](https://github.com/moq-dev/moq/pull/5402#discussion_r4260963190)); the | ||
| same code is on `main`. | ||
|
|
||
| - Publisher (`rs/moq-net/src/ietf/publisher.rs`): `read_fetch` stops at | ||
| `until` without seeing the group's end, so `group.complete` stays false. | ||
| Derive End of Track from the track's final sequence and the group's last | ||
| object rather than from having read the group's end. | ||
| - Subscriber (`rs/moq-net/src/ietf/subscriber.rs`, `run_group_fetch`): the | ||
| draft-20 check refuses an End Location before the start only. Also refuse | ||
| one whose group differs from the requested group. | ||
|
|
||
| Decided 2026-10-13 (maintainer): this does not gate the next 0.17 cut on | ||
| [the release line](/quest/m0/release-22/README.md); the backport ships in a | ||
| later 0.17 patch. | ||
|
|
||
| Public API: none. Wire: behavior only, within the existing draft-20 through | ||
| draft-22 FETCH form. | ||
|
|
||
| ## Related | ||
|
|
||
| - [Main live-feed check](/quest/m1/fetch-live-feed.md) - the other follow-up from the same backport review |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| # [S] Pin which caches count as a live feed on main | ||
|
|
||
| ## Goal | ||
|
|
||
| On `main`, a draft-20+ FETCH takes the cache's newest object as Largest | ||
| Object only when the cache is fed live. A cache only fetches have filled, | ||
| never accepted, is not live, and neither is a parked warm cache with no copy | ||
| spliced after it. Tests pin both on `main`, and fix it there if either is | ||
| misclassified. | ||
|
|
||
| ## Plan | ||
|
|
||
| The `release` backport ([#5402](https://github.com/moq-dev/moq/pull/5402)) | ||
| treated both as live, so a FETCH past the stale edge was refused | ||
| INVALID_RANGE or capped. It was fixed there in `track::Consumer::is_live` and | ||
| `resume::Consumer::is_live`, with `a_fetch_only_cache_is_not_live` and | ||
| `a_parked_warm_cache_is_not_live`. A review said `main`'s `Feed::Live` check | ||
| already tells them apart; nobody has verified that. | ||
|
|
||
| Mirror those two tests against `main`'s live-feed check | ||
| (`track::Consumer::is_live` and its routes). If both pass, landing the tests | ||
| completes the quest. If either fails, fix the check at the source in the same | ||
| PR. | ||
|
|
||
| Public API: none. Wire: behavior only, if a fix is needed. | ||
|
|
||
| ## Related | ||
|
|
||
| - [Draft-20 FETCH edge cases](/quest/m1/fetch-edge-cases.md) - the other follow-up from the same backport review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update
quest/m0/README.mdalongside this completion: its Required entry still says this quest must do “then draft-20+ FETCH,” so anyone triaging the top-level m0 list sees the deleted, landed backport as outstanding work even though this line now declares it complete.AGENTS.md reference: AGENTS.md:L28-L28
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 54634d4: the m0 Required entry now describes the remaining patch (draft-20+ FETCH plus the unset-clock and quiet-edge fixes) instead of the landed backport.
(Written by Claude Opus 5.5)