Repository navigation
quest: plan #8023's follow-ups #8045
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
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 |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # [XS] moq-net builds without async | ||
|
|
||
| ## Goal | ||
|
|
||
| `moq-net` builds, tests, and documents without its `async` feature, and CI | ||
| checks that configuration so it stays that way. On main today (2026-11-06), | ||
| `cargo check -p moq-net --no-default-features --lib --tests` fails: | ||
| `track.rs`'s lib test calls `read_frame` on `group::Consumer`, which only | ||
| exists with `async`. The crate's no-async doc links are broken too | ||
| (reported by [moq-dev/moq#8023](https://github.com/moq-dev/moq/pull/8023)). | ||
|
|
||
| ## Plan | ||
|
|
||
| Decided 2026-11-06 (maintainer, /quest-complete): ✅ m0, fix both and add the | ||
| no-async build to CI. Not chosen: m1; fixing it without a CI lane. | ||
|
|
||
| Add the configuration to an existing check lane (such as `just check`'s rs | ||
| module) rather than a new job, and include the docs build. | ||
|
|
||
| Public API: none. Wire: none. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # [M] A declined lite-06 route is reconsidered when the lite-07 path fails | ||
|
|
||
| ## Goal | ||
|
|
||
| In a mixed-version cluster, a relay that declined an identity's lite-06 | ||
| route because it already knew that identity over lite-07 accepts the lite-06 | ||
| route again once the lite-07 path is gone, so the lite-06 path takes over | ||
| instead of leaving the broadcast unreachable. Today the relay declines it | ||
| once and never revisits it. | ||
|
Comment on lines
+5
to
+9
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. [P3] Describe known-identity suppression as new work The current behavior described here does not match the prerequisite PR. In #8023's
Comment on lines
+5
to
+9
Contributor
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. At #8023's head there is no known-identity decline to restore: Technical details# lite06-failover premise
## Affected sites
- `quest/m2/cluster-routing/routes/lite06-failover.md:5-9` — Goal says the relay declines the lite-06 route today.
- `quest/m2/cluster-routing/routes/lite06-failover.md:18-21` — both Plan bullets and the test assume the decline exists.
## Evidence (at #8023 head 8e03f17)
- `rs/moq-net/src/model/origin.rs:2751` (`forward`) inserts the route with no identity comparison; `Announcing::announce` at `:2976` only fails with `Closed`.
- `rs/moq-net/src/lite/subscriber.rs:783` (`chain`) drops a lite-06 chain only for this node's own hop/route identity, a repeated hop, or `max_hops`.
- #8023's "Choices made without asking": "The lite-06 guard checks only this node's own identity. Dropping every identity the router knows would strand a route: a lite-06 subscriber never reconsiders one it declined, even once the lite-07 path fails."
## Required outcome
- The Goal says #8023 deliberately accepts both routes, and the quest adds known-identity recognition *and* the reconsideration that makes it safe.
- The test first establishes that the lite-06 route was suppressed, then drops the lite-07 path and asserts fallback. |
||
|
|
||
| ## Plan | ||
|
|
||
| Decided 2026-11-06 (maintainer, /quest-complete, a follow-up of | ||
| [moq-dev/moq#8023](https://github.com/moq-dev/moq/pull/8023)): ✅ m2, in this | ||
| epic, since the cut ships mixed-version clusters and this is a failover gap. | ||
| Not chosen: m3; m4. | ||
|
|
||
| - Recognize known identities on lite-06 ingress, and keep the declined route | ||
| so it can be accepted again when the lite-07 route for that identity ends. | ||
| - Cover it with a mixed-version test: a relay with both paths to one | ||
| publisher loses the lite-07 one and keeps serving over lite-06. | ||
|
|
||
| Starts once #8023 lands. Public API: none expected. Wire: none. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| # [S] A covering predecessor's takeover shows under a mount | ||
|
|
||
| ## Goal | ||
|
|
||
| Under a mounted grant (for example, tenant B seeing tenant A's `public` at | ||
| `shared`), a lite-07 claim whose predecessor covers the mount's target | ||
| arrives beneath the mount point as a takeover, as it does on lite-06. Today | ||
| it arrives as a start, because the predecessor has no name beneath the | ||
|
Comment on lines
+6
to
+8
Contributor
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.
|
||
| mount point. | ||
|
|
||
| ## Plan | ||
|
|
||
| Decided 2026-11-06 (maintainer, /quest-complete, a follow-up of | ||
| [moq-dev/moq#8023](https://github.com/moq-dev/moq/pull/8023)): ✅ m2, in this | ||
| epic, so lite-07 presents mounts as lite-06 does before the cut. Not chosen: | ||
| m3; m4. | ||
|
|
||
| Extend `rs/moq-net/tests/integration/mount.rs`, which #8023 adds, with the | ||
| covering-predecessor case on both versions. | ||
|
|
||
| Starts once #8023 lands. Public API: none. Wire: none. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # [S] Relays split horizon per session | ||
|
|
||
| ## Goal | ||
|
|
||
| A relay never advertises a route back over the session it learned it from. | ||
| Since [moq-dev/moq#8023](https://github.com/moq-dev/moq/pull/8023), each | ||
| neighbor holds two stream keys, so the router advertises a route back to its | ||
| source. That is loop-free by the feasibility condition, but it doubles route | ||
| traffic between every pair of relays. | ||
|
|
||
| ## Plan | ||
|
|
||
| Decided 2026-11-06 (maintainer, /quest-complete, a follow-up of #8023): ✅ | ||
| m3: lite-07 routing ships correct in the cut, and this trims its traffic | ||
| afterward. Not chosen: m2; m4. | ||
|
|
||
| Suppress the advertisement per session rather than per neighbor, and measure | ||
|
Contributor
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.
|
||
| route messages between two relays before and after. | ||
|
|
||
| Public API: none. Wire: none; behavior only. | ||
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.
cargo check -p moq-net --no-default-features --lib --testsfinishes clean at this PR's base45930a7: #8017 (merged before the base) put theread_frametests behind#[cfg(feature = "async")]. Only the doc links still fail, so update the Goal and the Plan's "fix both" — the CI lane should keep the tests covered, but there is no test failure to fix.Technical details