test(watch): list and demand renditions a wildcard covers - #4153
Merged
Merged
Conversation
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
#4012) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Luke Curley <kixelated@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…live edge (#4041) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…4023) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Luke Curley <kixelated@gmail.com> Co-authored-by: Grok <noreply@x.ai>
Co-authored-by: moq-bot[bot] <186640430+moq-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Grok 4.7 <noreply@x.ai>
…uster (#4066) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
#4028) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
…4069) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…4019) Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…#4017) Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…generation (#4053) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ld (#4040) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…peer (#3972) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Grok 4.7 <noreply@x.ai> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…racks (#4073) Co-authored-by: Brad Greenway <brad.greenway@surveillx.com> Co-authored-by: Luke Curley <kixelated@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
#4084) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
…4128) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…4127) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…s it (#4104) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…count (#4142) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…4123) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…section (#4089) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: moq-bot[bot] <186640430+moq-bot[bot]@users.noreply.github.com>
…ks (#4137) Co-authored-by: Brad Greenway <brad.greenway@surveillx.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A rendition produced on demand is covered only by its service's prefix claim. The gate already accepts covering prefixes; these tests keep it listing the rendition, demanding it before any announcement, and hiding it once the last covering claim is withdrawn. Completes the Demand quest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
marked this pull request as ready for review
September 25, 2026 17:02
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Collaborator
Author
|
The bulk of this diff is (Written by Grok 4.7) |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The bulk of this diff is
mainmerged into the quest line, which had fallen behind. The only new commit isec2f066f2(test(watch): pin wildcard-covered renditions to the announcement gate): the watch test, a 3-line gate comment, and quest bookkeeping. Squash-merging as-is ontoquest/m1/wildcard/READMEso the line picks up that tree.Problem
The Demand quest feared a lazy-rendition deadlock: the browser player hides a cross-broadcast rendition until its broadcast is announced, while an on-demand service only produces (and announces) a path once something subscribes.
Approach
No production code change was needed. Since #3770 a wildcard is a prefix claim on every wire (
dynamic(prefix, route)), so the JS client already receives it as an ordinary prefix announcement, and#isPathAnnounced(#3225) already lists a rendition under any covering prefix. The quest's plannedPath.Patternmatcher and JS wire changes predate that decision and are obsolete.This PR pins the behavior with regression tests in
js/watch/src/broadcast.test.ts, each failing if the gate goes back to exact-path matching:requested()(before any announcement), and it plays once acceptedIt also clarifies the gate comment, deletes the quest, and updates the line README.
Worth knowing: a rendition published beneath its source (
foo.hang/transcode.pro) is already covered by the source's own announcement, since announcements are prefixes. The gate only matters for sibling layouts, which is what the tests use.Impact
Alternatives
Path.Patterncovering test). Rejected: nothing on the wire carries a pattern anymore, so there is nothing to parse and prefix containment is the correct test.Follow-ups
origin/maininto the line. The line's squash of feat(net): re-resolve once on a NO_CAPACITY refusal #4050 carried a partial main, so the merge used that sync point (bcc851421) as its base, which gave a conflict-free result.just checkfails locally only becausemoq-ffidoes not compile onmainat e173ddd:binary_stream(track, config.into())is ambiguous between twoIntoRenditionimpls (feat(ffi): advertise JSON tracks in the catalog, add binary data tracks #4137 against feat(moq-mux): publish data tracks into an application's own catalog section #4089). This branch changes no Rust. The JS lint, types, and tests for@moq/watchandquest checkall pass.(Written by Claude Opus 5.5)
🤖 Generated with Claude Code