Remove the Ended announce flag from moq-lite - #3034
Draft
kixelated wants to merge 1 commit into
Draft
Conversation
`Ended` made a recording per-broadcast announce state: every retained recording stayed advertised indefinitely, on an opt-in filter, so a publisher that keeps its output accumulates announcements without bound. That is announce-layer growth for content that is not live, and it is paid by every subscriber that asked for ended broadcasts. A recording does not need an announcement to be readable. It is discovered out of band, typically from an application catalog that already carries the generation identity, and read with FETCH, which works on ended broadcasts by design and takes an epoch to pin the generation. Removing the flag leaves that path intact. What survives is the content state, not its announce-layer representation: SUBSCRIBE still refuses an ended broadcast and FETCH is still the only way to read one. What goes is the claim that an advertisement can describe whether content is live. ANNOUNCE_END now says what retraction does and does not mean, since with the flag gone that is the only statement about the boundary: it claims nothing about the content, and it does not disturb subscriptions already in flight, which conclude normally with SUBSCRIBE_END. `Ended` was added within the unreleased lite-06, so its changelog bullet is replaced rather than a removal logged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
kixelated
marked this pull request as draft
August 25, 2026 16:21
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.
Split out of #3005, where it was bundled with the dynamic advertisement work and justified by it. It stands on its own.
The problem
Endedmade a recording into per-broadcast announce state. Every retained recording stayed advertised indefinitely, behind an opt-in filter on ANNOUNCE_REQUEST, so a publisher that keeps its output accumulates announcements without bound and every subscriber that asked for ended broadcasts pays for them. That is announce-layer growth for content that is not live.Why it can go
A recording does not need an announcement to be readable. It is discovered out of band, typically from an application catalog that already carries the generation identity, and read with FETCH, which works on ended broadcasts by design and takes an epoch to pin the generation. Removing the flag leaves that path completely intact.
What survives, what goes
The content state survives: SUBSCRIBE still refuses an ended broadcast and FETCH is still the only way to read one, and the Subscribe and Fetch prose says so unchanged. What goes is the claim that an advertisement can describe whether content is live.
ANNOUNCE_END gains the statement that used to live on the flag, because with
Endedgone it is the only place the boundary is described: retraction claims nothing about the content, a broadcast that ends but remains readable retracts too and serves its stored groups over FETCH, and retraction does not disturb subscriptions already in flight, which conclude normally with SUBSCRIBE_END.Endedwas added within the unreleased lite-06, so its changelog bullet is replaced rather than a removal logged.just drafts checkpasses.🤖 Generated with Claude Code
(written by Claude Opus 5)