Skip to content

quest(m1): lite-07 ranges wait for fetch-range - #7487

Merged
kixelated merged 6 commits into
mainfrom
quest/m1/subscribe-ranges/lite
Nov 2, 2026
Merged

kixelated merged 6 commits into
mainfrom
quest/m1/subscribe-ranges/lite

Conversation

@kixelated

@kixelated kixelated commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

Claims quest/m1/subscribe-ranges/lite.md.

Status

Checkpoint, quest-only. The lite-07 range fill fails nine integration tests until the miss judging and cached backfill rules from Fetch as a range land. moq-dev/moq#7545 is building those. No part of the code passed on its own: the passing range_fill.rs tests only exercise the range fill, and they need the same code that causes the nine failures. So this PR reverts the code and lands the quest rewrite. The attempt is kept in WIP commit b7f573d, and the quest Plan links to it.

Decisions

  • Prerequisite (maintainer, 2026-11-01): this quest requires Fetch as a range's miss judging and cached backfill.
    • ✅ Record it under the quest's Required section, which the guide uses for prerequisites, and land the passing, settled parts as a checkpoint.
    • This settles decisions 1 and 5 from the previous body: the tracks with no feed, the unbudgeted rejoin miss, and the relay re-asking upstream for groups it has cached.
  • End signal (maintainer, 2026-11-01, on moq-dev/moq#7545): use an explicit SUBSCRIBE_END or similar instead of a FIN for a covered bounded subscription, because a FIN prevents later updates. The quest now points to fetch-range for that design and is told not to build on the FIN. Nothing is implemented here.

What this does

  • Reverts the range fill in rs/moq-net/src/lite/subscriber.rs, along with range_fill.rs and the fetch_fanout.rs changes, so the branch's code matches main.
  • Rewrites quest/m1/subscribe-ranges/lite.md:
    • Adds Required: Fetch as a range, with the 2026-11-01 decision in the Plan.
    • Records the attempt's design: a fill is judged only against the subscription that asked for it, and a run stays asked until its streams finish.
    • Lists the failing tests and the rule from fetch-range that settles each one.
    • Keeps three questions open, each with the attempt's recommendation: datagram sequences, fills that start partway through a group, and one budget capping every range. The auth narrowing failure is also kept.
    • Adds the pointer to the explicit end signal.
  • Merges origin/main.

Validation

  • quest check and quest check --base origin/main: ok.
  • just check origin/main (markdown, gh, quest, shell, and the rest of the selected modules): pass.

Review

Skipped under the simple-review rule (moq-dev/quest#364): against main the diff touches only quest/m1/subscribe-ranges/lite.md, and the revert restores main's code. Reviewed head: 1720721. No online-reviewer findings were posted on the earlier head.

Follow-ups

  • None new. The open questions now live in the quest Plan.

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 2 commits October 31, 2026 23:41
A lite-07 copy no longer sends FETCH for a fill: each held fill's next owed
run joins the upstream SUBSCRIBE ranges (or opens a fills-only bounded
SUBSCRIBE when no demand is open), and the fill answers itself from the
cache as the groups arrive. A fill is judged against the subscription that
asked for it (SUBSCRIBE_DROP, a range start past it, or a covered FIN),
never the track's arrivals, so a group an earlier subscription cut is
filled whole. An asked run stays on the wire until its streams finish.

Work in progress: on-demand publishers, datagram groups, missing groups
under an unbounded budget, and multi-hop cached fetches still regress; see
the PR's Decisions needed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated and others added 3 commits November 1, 2026 10:17
The range fill through the subscription (b7f573d) fails nine
integration tests until Fetch as a range's miss judging and cached
backfill land. Keep it in the quest instead, so this PR lands as a
checkpoint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Record the maintainer's 2026-11-01 decision that the range fill waits for
Fetch as a range's miss judging and cached backfill, keep the first
attempt's design and its failing tests in the Plan, carry the datagram,
partial-group, and budget questions forward, and point the covered-FIN
end at fetch-range's explicit end signal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title Lite-07 ranges quest(m1): lite-07 ranges wait for fetch-range Nov 1, 2026
@kixelated
kixelated marked this pull request as ready for review November 1, 2026 18:20
@coderabbitai

coderabbitai Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You'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 5 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6e90d6f3-4431-4d15-9d8c-2a5c737c05ca
Commits

Reviewing files that changed from the base of the PR and between 951cca6 and 1720721.

Files selected for processing: 1
  • quest/m1/subscribe-ranges/lite.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed commit: 1720721

No actionable bugs found in this quest-only checkpoint. The complete PR diff changes only quest/m1/subscribe-ranges/lite.md; it does not ship the reverted range-fill implementation or change runtime APIs/wire behavior.

Direction: recording the miss-judging and cached-backfill prerequisite, retaining the known failing cases, and deferring to the explicit end-signal design is preferable to landing a second incomplete fill path. The partial-group, datagram, and budget choices remain explicitly unresolved rather than being presented as implemented guarantees.

Verification: static inspection of the full changed plan, related fetch-range/FETCH-removal plans, and recent file history. I did not run checks or reproduce the historical test results; this review does not validate the WIP implementation linked from the plan.

(Written by OpenAI)

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

  • Reverts the WIP range fill. The only net change against main is quest/m1/subscribe-ranges/lite.md; the attempt's code (b7f573d) is out of the tree, so the branch matches main's code.
  • Adds the 2026-11-01 prerequisite decision. The quest now waits on fetch-range's miss judging and cached backfill, and defers the lite-07 covered-FIN to fetch-range's explicit end-signal design.
  • Records the attempt's design and test status. RangeFills / Fill::next_run / Fill::drop_groups and per-subscription miss judging, the 4 passing range_fill.rs tests, and the 9 failing integration tests each mapped to the fetch-range rule that settles it.
  • Keeps four open questions (datagram sequences, partial-group fills, the shared budget cap, and the auth narrowing refusal), each with a recommendation, and adds ## Required: Fetch as a range.

Spot-checked the cites against the head tree: every named test exists, resume::Recover is rs/moq-net/src/model/resume.rs:1903, b7f573d contains RangeFills and the Fill methods described, #7545 is open and confirms the prerequisite, fetch-range.md lists no reciprocal Required, and the quest stays indexed in quest/m1/subscribe-ranges/README.md:107.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

@kixelated

Copy link
Copy Markdown
Collaborator Author

Coordination from moq-dev/moq#7545 (Fetch as a range), which this PR waits on.

On 2026-11-01 the maintainer answered #7545's two open decisions: "we should have a SUBSCRIBE_END message or something to signal the last group of a track? we were using QUIC FIN to signal that but that prevents updates in the future, so we should have a signal instead".

That answer affects this PR. Its range fill relies on the lite-07 covered FIN (no SUBSCRIBE_END) to close fill-only subscriptions, and that FIN is what the answer moves away from. #7545 now lists four decisions:

  1. Which signal replaces the covered FIN. Recommended: a new response, for example SUBSCRIBE_COVERED, naming how many updates it covers, with the stream left open.
  2. Whether SUBSCRIBE_END stops closing the stream. Recommended: yes.
  3. The frontier for a copy that nothing feeds.
  4. Holes below where a live feed started, with no declared start.

I proposed that 1 and 2, the wire half, belong to this PR's quest (quest/m1/subscribe-ranges/lite.md), together with the draft, just drafts check, and interop. 3 and 4 stay in Fetch as a range. The options and recommendations are in #7545's body. I did not edit lite.md, so this PR's rewrite of it isn't disturbed.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge (squash) November 1, 2026 18:32
kixelated added a commit that referenced this pull request Nov 1, 2026
…2026-11-01 answers

A copy the session holds no upstream subscription for is unfed
(track::Producer::set_unfed), from the session's own state. A bounded
read's holes there are misses up to its end at once, a refusal is final,
and the read takes its window from the cache even while the copy is idle.
The moq-transport subscriber marks a lingering copy unfed, and serves a
subscription wholly below the reported Largest Object by FETCH rather than
subscribing upstream.

Record the SUBSCRIBE_FINISH rename and the settled lite-07 wire design in
the quest until #7487 lands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit d721eed Nov 2, 2026
8 checks passed
@kixelated
kixelated deleted the quest/m1/subscribe-ranges/lite branch November 2, 2026 09:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant