Skip to content

chore(quest): retire the broadcast epoch line - #3249

Merged
kixelated merged 1 commit into
mainfrom
claude/plan-quest-scoping-a49ad3
Aug 31, 2026
Merged

chore(quest): retire the broadcast epoch line#3249
kixelated merged 1 commit into
mainfrom
claude/plan-quest-scoping-a49ad3

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

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, retires draft-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.

Quest Fate
m1/2873 historical generations Deleted, closes #2873
m2/broadcast-epoch Deleted, closes #2610
m1/2756 announce-only entries Deleted, closes #2756
m1/plan-generations Deleted, its ask is this PR

#2873 enumerated (path, epoch, ended) on per-broadcast announcements that no longer carry per-broadcast meaning. Its resolution half was broadcast-epoch's plan verbatim; its enumeration half is what a prefix route plus dynamic() now does. It also contradicted a settled quest: quest/m1/archive/README.md puts "recording and generation keying... and platform discovery" downstream, with a managed recordings API keeping completed recordings discoverable after source teardown.

broadcast-epoch hung Epoch and Ended on ANNOUNCE_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::Producer per entry. #3225's dynamic() 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-side announce(prefix) gap #3225 lists as a known follow-up ("JS has no producer-side announce(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-generation Required 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 new m2/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 check passes (quest: 228 documents ok).

🤖 Generated with Claude Code

(written by claude-opus-5)

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>
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 36 minutes.

View limit details

Limit 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.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 4dcf0518-c60d-4132-95b0-0229bfcba031

📥 Commits

Reviewing files that changed from the base of the PR and between 87c2d13 and 879cf55.

📒 Files selected for processing (9)
  • quest/m1/2318-js-net-remaining-capability-gaps-vs-rs-moq-net-setup-role.md
  • quest/m1/2756-origin-announce-only-entries-advertise-on-demand-content.md
  • quest/m1/2873-moq-net-enumerate-and-resolve-historical-broadcast.md
  • quest/m1/README.md
  • quest/m1/plan-generations.md
  • quest/m2/README.md
  • quest/m2/broadcast-epoch.md
  • quest/m2/hls-generation.md
  • quest/m2/plan-hls-identity.md

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 31, 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-08-31T22:00:03.455886Z 879cf55 PR opened
ℹ️ 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.

@kixelated
kixelated merged commit 5e20516 into main Aug 31, 2026
2 checks passed
@kixelated
kixelated deleted the claude/plan-quest-scoping-a49ad3 branch August 31, 2026 21:59

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +8 to +11
[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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant