Skip to content
Merged
13 changes: 13 additions & 0 deletions doc/concept/moq-lite.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,19 @@ a group at or past `SUBSCRIBE_END`, or a `SUBSCRIBE_END` below a group already
received. moq-lite 05 specified an inclusive end, so there it only drops that
group or the early boundary.

## Group reads across failover

Rust origin readers can keep reading an in-flight group after its source fails.
A group reader waiting on a replacement copy subscribes to it from the frame it
needs, even when the caller is not polling for the next group, and holds that
subscription until the group ends. If that copy refuses the subscription, the
read ends with an error. The copy's declared start says whether the group is
still coming, so a newer group overtaking it on the wire does not end the wait.
A copy that declares no start (a local track) and has advanced past the group
ends the read with an error. This also applies when waiting for the group's
completion; no FETCH is issued. A replacement that later drops the group it is
serving still needs SUBSCRIBE\_DROP support to resolve that wait.

## Discovery

A session can ask for announcements matching a path prefix. The peer replies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,5 @@ the closed producer's cache or terminal state.

## Related

- [Resume latest](/quest/m1/resume-latest.md) - edits `resume.rs` and its takeover tests (#4491)
- [#4491](https://github.com/moq-dev/moq/pull/4491) - edits `resume.rs` and its takeover tests
- [Parked reads wake](/quest/m1/parked-read-wakes.md) - edits the same `resume.rs` wakeups
1 change: 0 additions & 1 deletion quest/m1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ QUIC studies there on that rule.
- [web-transport-moq 1.3.3 ships noq#24](/quest/m1/web-transport-moq-release.md) - the release that carries the close-capsule fix
- [WebTransport close upstream](/quest/m1/wt-close-upstream.md) - web-transport-moq delivers the close capsule itself, and moq-tokio's `CLOSE_LINGER` is deleted
- [Browser close code](/quest/m1/browser-close-code.md) - a playwright case proves the page reads a relay's close code and reason, on every web-transport backend
- [Resumed groups](/quest/m1/resume-latest.md) - a half-delivered group ends once the new copy is past it, so a group-only reader never parks after a mid-group failover
- [Truncated groups fail finished()](/quest/m1/finished-truncated.md) - a spliced group whose continuation can never arrive fails `finished()` instead of reporting a clean end at the seam
- [SUBSCRIBE_DROP](/quest/m1/subscribe-drop.md) - every stream group in a lite subscription arrives or is dropped by name, and lite-07 drops its stream count for it
- [Late lower groups](/quest/m1/lite-late-lower-group.md) - a moq-lite subscriber with a floor receives a group created below the first served one, as moq-transport does
Expand Down
2 changes: 1 addition & 1 deletion quest/m1/finished-truncated.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ Public API: behavior only (an error where `Ok` was returned). Wire: none.

## Related

- [Resumed groups](/quest/m1/resume-latest.md) - same `poll_finished` subscription path
- [#4491](https://github.com/moq-dev/moq/pull/4491) - the same `poll_finished` subscription path
5 changes: 1 addition & 4 deletions quest/m1/parked-read-wakes.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,9 @@ Follow-ups from [#4484](https://github.com/moq-dev/moq/pull/4484), which made
Settled: one quest, since both are the same wakeup invariant in
`rs/moq-net/src/model/track.rs` and `resume.rs`.

Land after [resume latest](/quest/m1/resume-latest.md) (#4491), which edits
the same `resume.rs` wakeups, and rebase onto it.

Public API: none. Wire: none.

## Related

- [Resume latest](/quest/m1/resume-latest.md) - edits the same `resume.rs` wakeups; lands first (#4491)
- [#4491](https://github.com/moq-dev/moq/pull/4491) - a resumed group holds demand on its replacement copy in the same `resume.rs` wakeups
- [#2991](/quest/m1/2991-net-coalesce-dynamic-tracks-and-preserve-sequences-across.md) - extends the `resume.rs` takeover tests
75 changes: 0 additions & 75 deletions quest/m1/resume-latest.md

This file was deleted.

4 changes: 2 additions & 2 deletions quest/m1/subscribe-drop.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ Decided:
- Datagram groups stay best effort. A publisher counts a datagram as
delivered, so a lost one leaves an uncovered hole that waits out the tail
grace, as today.
- A resumed group ([Resumed groups](/quest/m1/resume-latest.md)) that is the
new copy's latest ends with the DROP's error when the copy drops it.
- A resumed group that is the new copy's latest ends with the DROP's error
when the copy drops it.
- A dropped or aborted group is visible to readers, not silently skipped.
#4533 found the Rust model releases an aborted group's sequence and skips it,
so a truncated first object is indistinguishable from a group never sent.
Expand Down
Loading
Loading