chore(quest): retire the broadcast epoch line - #3249
Conversation
PR #3225 makes announcements prefix routes, removes Epoch from the drafts as spec-only and never implemented, and retires draft-lcurley-moq-broadcast. Cross-session splice goes with it: failover is abort-and-resubscribe precisely because there is no content identity to splice on. Four quests rested on the model that removes: - #2873 enumerated historical generations by path and epoch, on per-broadcast announcements that no longer carry per-broadcast meaning. Its resolution rules were broadcast-epoch's plan verbatim, and the archive line already puts recording discovery downstream behind a managed recordings API. - broadcast-epoch hung Epoch and Ended on ANNOUNCE_START/ANNOUNCE_UPDATE. - #2756 wanted to advertise a catalog without instantiating a broadcast per entry, which a prefix route plus dynamic() now is. Its one surviving piece, the producer-side announce(prefix) a Rust publisher has and a browser one does not, folds into the js/net capability-gaps quest. - plan-generations asked for this pass. HLS generation is the orphan worth keeping. Re-enabling CDN segment caching still needs a publisher-minted identity in the media URL, and that need is untouched by how announcements work, so it keeps its quest and gains a scoping placeholder for where the identity now comes from. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Warning Review limit reachedNext included review available in 36 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (9)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 879cf55bbc
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| [moq#3225](https://github.com/moq-dev/moq/pull/3225) removed Epoch from the | ||
| drafts as spec-only and never implemented, retired | ||
| `draft-lcurley-moq-broadcast`, and made announcements prefix routes with no | ||
| per-broadcast identity to hang a generation on. |
There was a problem hiding this comment.
Reconcile quests that still require broadcast Epoch
This retirement leaves several live quests premised on the Epoch that these lines declare removed: quest/m2/wildcard/epoch.md still plans to add it to ANNOUNCE_START/ANNOUNCE_UPDATE, the wildcard README still requires that child, quest/m1/2985-js-net-path-keyed-publisher-state-goes-stale-when-a.md still points to #2610's TRACK_INFO epoch as its solution, and quest/m1/archive/catalog.md still requires a broadcast epoch. The quest tree therefore closes #2610 while continuing to schedule or depend on the same wire/API work; replan or remove those references as part of this retirement.
AGENTS.md reference: quest/AGENTS.md:L28-L30
Useful? React with 👍 / 👎.
Scoping pass over
quest/m1/plan-generations.md, which asked for exactly this. It came out more destructive than the placeholder anticipated: the premise is gone, so the quests are deleted rather than split.Why
#3225 (
feat(net)!: announcements are prefix routes) embraces the route model everywhere. An announcement is a claim that paths under a prefix can be served, not a per-broadcast advertisement. Along the way it removes Epoch from the drafts as spec-only and never implemented, retiresdraft-lcurley-moq-broadcast, and deletes cross-session splice because that splice relied on content identity the epoch was supposed to supply.Four quests were written against the model it removes.
m1/2873historical generationsm2/broadcast-epochm1/2756announce-only entriesm1/plan-generations#2873 enumerated
(path, epoch, ended)on per-broadcast announcements that no longer carry per-broadcast meaning. Its resolution half wasbroadcast-epoch's plan verbatim; its enumeration half is what a prefix route plusdynamic()now does. It also contradicted a settled quest:quest/m1/archive/README.mdputs "recording and generation keying... and platform discovery" downstream, with a managed recordings API keeping completed recordings discoverable after source teardown.broadcast-epoch hung
EpochandEndedonANNOUNCE_START/ANNOUNCE_UPDATE. Its stated goal, that a restarted publisher is never confused with its previous run, is already met by #3225 removing the splice rather than adding identity.#2756 wanted to advertise a large on-demand catalog without instantiating a
broadcast::Producerper entry. #3225'sdynamic()serving Rust consumers beneath a short announced prefix is that, and the 100k-recordings case becomes one prefix. Its one surviving piece is the producer-sideannounce(prefix)gap #3225 lists as a known follow-up ("JS has no producer-sideannounce(prefix)yet"), which folds into the js/net capability-gaps quest (#2318, re-estimated S to M).Closes #2873
Closes #2610
Closes #2756
The orphan worth keeping
m2/hls-generationRequired broadcast-epoch, and killing the epoch would silently kill the goal with it. It should not: re-enabling CDN segment caching still needs a publisher-minted generation in the media URL, and that need is untouched by how announcements work. So the quest stays, its epoch language is rewritten to speak of a generation identity generally, and it now Requires a newm2/plan-hls-identity.md(S) that settles where the identity comes from. That plan also inherits the open problem hls-generation already recorded: a per-broadcast identity cannot version a mid-broadcast rendition reconfigure, which is the harder half of the caching question.Note
#3225 is still open against
dev. Written as if it landed, per maintainer direction, rather than carrying plain-text Required bullets that would be deleted on merge. #3225 carries no closing keywords today, which is why #2610 is closed here.just checkpasses (quest: 228 documents ok).🤖 Generated with Claude Code
(written by claude-opus-5)