Skip to content

test(watch): list and demand renditions a wildcard covers - #4153

Merged
kixelated merged 86 commits into
quest/m1/wildcard/READMEfrom
quest/m1/wildcard/demand
Sep 25, 2026
Merged

kixelated merged 86 commits into
quest/m1/wildcard/READMEfrom
quest/m1/wildcard/demand

Conversation

@kixelated

@kixelated kixelated commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

The bulk of this diff is main merged into the quest line, which had fallen behind. The only new commit is ec2f066f2 (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 onto quest/m1/wildcard/README so 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 planned Path.Pattern matcher 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:

  • a rendition covered only by a wildcard is listed; selecting it is what reaches the service's requested() (before any announcement), and it plays once accepted
  • a concrete announcement of the served path afterwards changes nothing visible
  • the rendition stays while any covering wildcard remains and hides once the last is withdrawn

It 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

  • Public API: none
  • Wire: none

Alternatives

  • Implementing the quest as written (a JS wildcard advertisement plus a Path.Pattern covering 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

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 30 commits September 24, 2026 10:45
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>
)

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>
…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>
kixelated and others added 25 commits September 25, 2026 06:38
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>
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>
The line's squash of #4050 carried a partial main; merged with that sync
point (bcc8514) as the base so main's later changes apply cleanly.

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
kixelated marked this pull request as ready for review September 25, 2026 17:02
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-25T17:04:52.173184Z ec2f066 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Copy link
Copy Markdown
Collaborator Author

The bulk of this diff is main merged into the quest line (it had fallen behind). The only new commit is ec2f066f2, the watch test that pins wildcard-covered renditions to the announcement gate. Squash-merging as-is onto quest/m1/wildcard/README so that branch picks up the tree. Not retargeting to main.

(Written by Grok 4.7)

@kixelated
kixelated merged commit 9d059b1 into quest/m1/wildcard/README Sep 25, 2026
10 of 15 checks passed
@kixelated
kixelated deleted the quest/m1/wildcard/demand branch September 25, 2026 17:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants