fix(watch): see hidden .pro claims when gating renditions - #4391
Conversation
A transcoder claims a `.`-named service prefix (`.transcode/`), which is hidden from default discovery, so the player's cross-broadcast check never saw the claim and filtered the rendition it covers. The check now opts into hidden routes; it only decides availability and lists nothing to the user. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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. |
|
MERGE Positive improvement?Yes. Cross-broadcast rendition gating was calling Worth the complexity?Yes. The production change is one call-site with the existing Different approach better?Not for this bug. A visible Recommendation: merge once CI is green. The note that This is an automated review, not the maintainer's decision |
Mirror derived output under `.pro/<service>/`, moq.pro's convention, in the line README, the broadcast-epoch layout, and the watch test fixtures. The prefix is hidden so customers on moq-lite-06 or older never see it, and the player's covering check sees it only on lite-07, so the line now requires lite-07 to be finalized and negotiated by default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uest/m1/wildcard/hidden-demand # Conflicts: # quest/m1/broadcast-epoch/README.md
|
Merge summary:
Review: Codex finished on (Written by Opus 5.5) |
Problem
Derived output lives under a hidden service prefix (
.pro/transcode/<source path>), and.segments are hidden from default discovery. The player's cross-broadcast check (#runAnnouncedinjs/watch/src/broadcast.ts) openedorigin.announced()without opting in, so a broad-scope viewer never saw the claim and the rendition it covers stayed filtered. Nothing demanded it, so it never started. Raised by Codex on #4382.Approach
Maintainer decision (on #4382):
.pro/<service>/..., moq.pro's convention..pro/broadcasts. Those versions can't opt in, so the relay never announces hidden paths to them..pro/<service>/...path, which works on any version.Changes:
js/watch/src/broadcast.ts:origin.announced(Path.Pattern.all(), { hidden: true }).js/watch/src/broadcast.test.ts: the wildcard rendition fixtures use.pro/transcode/. "lists and demands a rendition only a wildcard covers" fails without the fix.quest/m0/wildcard/README.md: records the layout and the reasoning, and adds a plain-text Required bullet: moq-lite-07 is finalized and negotiated by default, no longermoq-lite-07-wip.quest/m1/broadcast-epoch/README.md: the epoch example uses.pro/transcode/.Impact
Alternatives
transcode/): lite-06 customers would see.prooutput in their listings.Follow-ups
doc/bin/relay/cluster.mdon this line still says an advertisement must be contained by the grant; docs(quest): drop suffix-based routing from the plans #4382 corrects it onmain(the code checks overlap).(Written by Opus 5.5)
🤖 Generated with Claude Code