Skip to content

Remove the Ended announce flag from moq-lite - #3034

Draft
kixelated wants to merge 1 commit into
devfrom
claude/announce-drop-ended
Draft

Remove the Ended announce flag from moq-lite#3034
kixelated wants to merge 1 commit into
devfrom
claude/announce-drop-ended

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Split out of #3005, where it was bundled with the dynamic advertisement work and justified by it. It stands on its own.

The problem

Ended made 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 Ended gone 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.

Ended was added within the unreleased lite-06, so its changelog bullet is replaced rather than a removal logged.

just drafts check passes.

🤖 Generated with Claude Code

(written by Claude Opus 5)

`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
kixelated marked this pull request as draft August 25, 2026 16:21
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.

1 participant