Repository navigation
quest: program first; viewer-side composition moves to m1 - #30
Conversation
The program is how a studio broadcast reaches viewers. Sources are not published to the relay by default (decided on #21), so the composition epic moves to a new m1 milestone. Audio source tracks stay in m0 for isolated recording and replay, overlays and animation render into the program, and a low-priority Published independently quest covers sources a service places itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 16 minutes. View limit details
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. |
There was a problem hiding this comment.
Important
The milestone move and the new encode rule are sound, but several current-tense summaries in the moved tree still state the rule this PR reverses. A reader of the m1 epic would implement the old default.
Reviewed changes
- Milestone move —
quest/m0/compose/moves toquest/m1/compose/under a newquest/m1/README.md, indexed fromquest/README.md. - Audio source tracks stay in m0 —
compose/sources.mdbecomesquest/m0/audio-source-tracks.md, with the encode rule rewritten to encode only while used and reach the relay only when independently published. - New publish-independently quest — a per-source opt-out of the program that publishes its own track, off by default and low priority.
- m1 layout follow-ups — records the browser-source "viewers load this page" option and replay hidden/ended signalling.
- Overlays and animation render into the program in m0 — layout-track travel deferred to m1.
⚠️ The moved epic still states the reversed default in its Goal and Delivery bullet
quest/m1/compose/README.md still opens by saying a broadcast "carries each source as its own track", and its Delivery bullet still says "The program is the fallback, not the default". Both are the premise this PR reverses, and the new note then says the Delivery bullet "stands", which cannot be true for that claim.
Technical details
# Reversed default left in the m1 epic
## Affected sites
- quest/m1/compose/README.md:5-9 — Goal says every source is carried as its own track.
- quest/m1/compose/README.md:19-20 — Delivery bullet says the program is the fallback, not the default.
- quest/m1/compose/README.md:45-54 — the 2026-11-04 note says the program is the default, then says the Delivery and Cost bullets "stand".
## Required outcome
- The Goal and Delivery bullet describe the new default, or are explicitly marked superseded.
- The note does not say a reversed bullet still stands.
## Suggested approach
- Rewrite the Goal to "sources the creator publishes independently", mirroring the rewritten Goals in `audio-source-tracks.md` and `overlays.md`.
- Either rewrite the Delivery bullet or replace "stand only for sources published that way" with a statement that both bullets are superseded.⚠️ Index summaries still advertise deferred or reversed behavior
The scope changes are not reflected in the summaries that point at the moved quests. quest/m0/README.md:98 still promises "the DOM in the browser", but overlays.md now defers browser DOM rendering to m1, and quest/m1/README.md:20 still describes sources as their own tracks without the independently-published condition.
Technical details
# Stale index summaries
## Affected sites
- quest/m0/README.md:98 — "through Blitz natively and the DOM in the browser"; quest/m0/overlays.md:39-43 defers DOM rendering to m1.
- quest/m1/README.md:20 — "sources as their own tracks plus a layout track"; sources publish tracks only when independently published.
## Required outcome
- Each index line matches the scope of the quest it links to.big-pickle (free) | 𝕏
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head 2d450b2.
- [P2] Reconcile composition parity with the new source policy (
quest/m1/compose/layout.md:48-50,quest/m0/publish-independently.md:5-9). Only independently published sources are fetchable, and those are excluded from the studio program. For a normal display plus an independent webcam, a source-only viewer can fetch the webcam but not the display, while the program contains the display but not the webcam. The current m1 goal still requires the browser and server pictures to match the studio program. Define the intended hybrid/reference picture and layering, or explicitly defer that parity goal along with the old Delivery and Cost bullets. This preserves the recorded program-first decision rather than restoring default source publication. - [P2] Give source replay history before it is requested (
quest/m0/audio-source-tracks.md:28-32). Encoding only when a replay uses a source cannot populate the seconds before the replay click:Take::newcopies the already-retained interval ending at that click. A newly selected, otherwise unused audio source therefore has no past to replay. Specify how the creator arms or buffers that source ahead of time and how unavailable history is reported, or narrow the replay goal to already-buffered sources. The same issue applies to picture-source replay under the new on-demand rule.
Verification: GitHub-only static review of the changed quests, recorded maintainer decisions and current replay path. I could not run quest context, the quest checker, or replay tests.
(Written by review (OpenAI))
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Only the two documentation edits in 7d1f7c1 since the previous pullfrog review (2d450b2) were reviewed here; both prior inline findings are now fixed and the new wording matches the quest it links to.
- Audio encode rule restated in the m1 epic — the Required entry for audio source tracks now says tracks encode only while the studio uses them and reach the relay only when published independently, and marks the quest as m0 work.
- Paragraph break restored — a blank line now separates the 2026-11-03 encode-rule decision from the "Track names stay stable" paragraph in
quest/m0/audio-source-tracks.md, so the two render as distinct paragraphs.
big-pickle (free) | 𝕏
…ion parity Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
On the OpenAI review of (Written by Claude Opus 5.5) |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head f2ad6fe.
- [P2] Arm audio-only sources without picture visibility (
quest/m0/audio-source-tracks.md:30–34). The new rule retains history while a source is visible in the program scene, but microphones and system audio have no picture and the UI does not place them in scenes (rs/moq-scene/src/collection.rs:868–871,rs/moq-studio/src/ui.rs:2373–2395). They can be audible in the program for minutes and still never satisfy this condition, so an otherwise unrecorded microphone has no isolated history when replay is requested. Count audio routed into the program as used, or specify another way to arm audio-only sources in advance, while retaining the no-history refusal.
The earlier parity finding is addressed by explicitly deferring the goal and requiring a reference picture. The replay change also arms visible picture sources and defines the no-history outcome; the audio-only case above remains. Verification: GitHub-only static review of the plan and current source/scene behavior. I did not run replay or UI tests.
(Written by review (OpenAI))
There was a problem hiding this comment.
Important
The new "used" list does not cover the independently published source this PR adds, so as written the plan publishes a track that nothing encodes. One inline comment with the cross-file consequences.
Reviewed changes
Only the two documentation edits in f2ad6fe since the previous pullfrog review (7d1f7c1) were reviewed here; both address the OpenAI review's P2s.
- Program sources armed for replay (
quest/m0/audio-source-tracks.md) — a source visible in the program scene counts as used, so its track has past for a replay to read, and a replay of a source with no history is refused with the reason. - m1 parity deferred (
quest/m1/compose/README.md) — the Delivery and Cost bullets and the epic's parity goal are deferred until the reference picture is defined, since a source published independently is left out of the program.
big-pickle (free) | 𝕏
…e counts as used Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
On the OpenAI review of (Written by Claude Opus 5.5) |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head 6b9c94e. The audio-only replay finding is addressed: audio feeding the program mix now counts as used independently of picture visibility, so microphones and system audio can retain history. Independently published sources are also explicitly kept encoding, and the no-history refusal remains specified. The earlier parity goal remains explicitly deferred. No additional actionable issue found in this update.
Verification: GitHub-only static review of the updated quests and current scene/audio behavior. I did not run replay or UI tests.
(Written by review (OpenAI))
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Only the two documentation edits in 6b9c94e since the previous pullfrog review (f2ad6fe) were reviewed here; together they close the remaining encode-trigger gap and the OpenAI P2 about audio-only sources.
- Audio sources count as used while they feed the program mix — the "used" list now splits the case by source kind: a picture source while the program scene shows it, and an audio source while it feeds the program mix, so an audio-only source that never appears as a scene item still accumulates replay history.
- Independently published sources count as used —
quest/m0/audio-source-tracks.mdandquest/m0/publish-independently.mdboth add this, so the track an independent source publishes has an encode trigger andlayout.md's fetchable-track assumption holds. - Encode lifetime stated for independent sources —
publish-independently.mdrecords that such a source encodes for as long as it is published, and points back at the audio rule.
big-pickle (free) | 𝕏

Summary
The program becomes the default way a studio broadcast reaches viewers, and viewer-side composition moves to a new m1 milestone.
Decisions
Changes
quest/m0/compose/(layout, browser, server, controls) toquest/m1/compose/under a newquest/m1/README.md, and index m1 inquest/README.md.quest/m0/audio-source-tracks.md, since isolated recording and replay of audio sources need them. Rewrite its encode rule for feat(studio)!: a two-size program that follows the bandwidth grant, and local source tracks #21's decision: a source's track encodes only while something in the studio uses it, replacing the 2026-11-01 always-on decision.quest/m0/publish-independently.md[S], low priority: a per-source option, off by default, that publishes the source's track and leaves it out of the program.effects.md, the m0 README).Review
quest review).quest checkpasses (46 documents).🤖 Generated with Claude Code