diff --git a/quest/m0/README.md b/quest/m0/README.md index 2d8b6d06..3d34c96f 100644 --- a/quest/m0/README.md +++ b/quest/m0/README.md @@ -60,7 +60,7 @@ cameras, packaging, signing) that one monorepo no longer pays off. - **Pin:** moq is a `moq` git submodule whose crates are path dependencies, as in moq.pro, so the studio compiles against one moq checkout. - **moq-scene** moved here with the app, its only consumer. The - [viewer-side composition](/quest/m1/compose/README.md) epic (now m1) moved whole: + [viewer-side composition](/quest/m2/compose/README.md) epic (now m2) moved whole: browser composition ships as a package from this repository layered on `@moq/watch`, and the server composite is a headless binary here rather than a moq-cli subcommand, so moq never depends on the studio. @@ -77,7 +77,7 @@ broadcast reaches viewers, not the fallback. Sources are not published to the relay by default (decided 2026-11-03 on [moq-dev/studio#21](https://github.com/moq-dev/studio/pull/21)), because each encoding costs an encoder session and consumer GPUs have few, so the -[viewer-side composition](/quest/m1/compose/README.md) epic moved to m1. +[viewer-side composition](/quest/m2/compose/README.md) epic moved to m1. Overlays and animation render into the program here, and travel to viewers in the layout track only once that epic lands. diff --git a/quest/m1/README.md b/quest/m1/README.md index 5b4fefc4..9f216d23 100644 --- a/quest/m1/README.md +++ b/quest/m1/README.md @@ -2,11 +2,8 @@ ## Goal -The work held until m0 ships. A studio broadcast can be composed by its -viewers and by a server from the sources' own tracks and a layout track, -matching the program the studio composites, so a viewer can toggle and -prioritize elements. The studio gains features m0 left out: overlay assets -and restarts, and isolated guest recordings. +The work held until m0 ships. The studio gains features m0 left out: +overlay assets and restarts, and isolated guest recordings. ## Plan @@ -17,11 +14,15 @@ default (decided 2026-11-03 on encoding every source for viewers costs more encoder sessions than a consumer GPU has. Viewer-side composition waits until m0 ships. +Viewer-side composition moved to m2 on 2026-11-07 (maintainer, on +[moq-dev/studio#97](https://github.com/moq-dev/studio/pull/97)): no viewer +can fetch a source's track until a source is published independently, which +is m2. + Broadened 2026-11-04 (maintainer, /quest-plan): m1 also holds studio features planned as follow-ups of m0 work but not needed to ship it, rather than opening an m2 for them. ## Required -- [Viewer-side composition](/quest/m1/compose/README.md) - sources as their own tracks plus a layout track, composed by viewers and by a server - [Rune UI spike](/quest/m1/rune-spike.md) - the monitors prototyped on Rune, with a verdict on moving the UI off egui diff --git a/quest/m2/README.md b/quest/m2/README.md index 88c638b3..069465b4 100644 --- a/quest/m2/README.md +++ b/quest/m2/README.md @@ -11,7 +11,12 @@ Opened 2026-11-05 (maintainer, /quest-plan) for publishing a source independently, which no service uses yet. A quest moves up to m0 or m1 when a consumer appears. +Viewer-side composition moved here from m1 on 2026-11-07 (maintainer, on +[moq-dev/studio#97](https://github.com/moq-dev/studio/pull/97)): it composes +from sources published independently, so it follows that quest. + ## Required - [Published independently](/quest/m2/publish-independently.md) - a source opts out of the program and publishes its own track for services that place it themselves +- [Viewer-side composition](/quest/m2/compose/README.md) - independently published sources plus a layout track, composed by viewers and by a server - [Overlays drop their Blitz panic guard](/quest/m2/overlay-blitz-release.md) - the next Blitz release lets overlay checks parse without `catch_unwind` diff --git a/quest/m1/compose/README.md b/quest/m2/compose/README.md similarity index 85% rename from quest/m1/compose/README.md rename to quest/m2/compose/README.md index a6870005..f36a81ab 100644 --- a/quest/m1/compose/README.md +++ b/quest/m2/compose/README.md @@ -56,9 +56,15 @@ viewer composes from fetchable tracks matches the program today. When this epic starts, define the reference picture (such as the program with the independent sources layered over it) and replan those bullets. +Moved to m2 on 2026-11-07 (maintainer, on +[moq-dev/studio#97](https://github.com/moq-dev/studio/pull/97)): nothing in m1 +can fetch a source's track, so nothing can read a layout. The layout waits on +[Published independently](/quest/m2/publish-independently.md), and the +browser, server, and controls quests wait on it through the layout. + ## Required -- [Layout track](/quest/m1/compose/layout.md) - the live scene state as a hang JSON track on the media clock, specified in the hang draft -- [Browser composition](/quest/m1/compose/browser.md) - `@moq/watch` composes a broadcast with a layout track through moq-scene's browser build -- [Server composition](/quest/m1/compose/server.md) - a headless compositor renders the program from sources and layout, headless -- [Viewer controls](/quest/m1/compose/controls.md) - viewers toggle elements and the layout's priorities steer what they fetch +- [Layout track](/quest/m2/compose/layout.md) - the live scene state as a hang JSON track on the media clock, specified in the hang draft +- [Browser composition](/quest/m2/compose/browser.md) - `@moq/watch` composes a broadcast with a layout track through moq-scene's browser build +- [Server composition](/quest/m2/compose/server.md) - a headless compositor renders the program from sources and layout, headless +- [Viewer controls](/quest/m2/compose/controls.md) - viewers toggle elements and the layout's priorities steer what they fetch diff --git a/quest/m1/compose/browser.md b/quest/m2/compose/browser.md similarity index 94% rename from quest/m1/compose/browser.md rename to quest/m2/compose/browser.md index acedf6f6..f14a32ae 100644 --- a/quest/m1/compose/browser.md +++ b/quest/m2/compose/browser.md @@ -23,5 +23,5 @@ studio, compared within a stated tolerance. ## Required -- [Layout track](/quest/m1/compose/layout.md) - what the browser composes +- [Layout track](/quest/m2/compose/layout.md) - what the browser composes - [moq-video's browser backends are pinned](/quest/m0/pin-browser-video.md) - browser frames into wgpu diff --git a/quest/m1/compose/controls.md b/quest/m2/compose/controls.md similarity index 93% rename from quest/m1/compose/controls.md rename to quest/m2/compose/controls.md index 2a1c8a35..a4f664a5 100644 --- a/quest/m1/compose/controls.md +++ b/quest/m2/compose/controls.md @@ -20,4 +20,4 @@ of them is on, at the highest priority among them. ## Required -- [Browser composition](/quest/m1/compose/browser.md) - the viewer that exposes the toggles +- [Browser composition](/quest/m2/compose/browser.md) - the viewer that exposes the toggles diff --git a/quest/m1/compose/layout.md b/quest/m2/compose/layout.md similarity index 81% rename from quest/m1/compose/layout.md rename to quest/m2/compose/layout.md index e4276246..269204c0 100644 --- a/quest/m1/compose/layout.md +++ b/quest/m2/compose/layout.md @@ -55,3 +55,17 @@ viewer can fetch; the rest reach viewers only in the program. Decided 2026-11-05 (maintainer, /quest-plan): the layout serializes the scene model with scene sources, published scenes, and audio scenes, not the canvases and mixes they replaced. + +Decided 2026-11-07 (maintainer, on +[moq-dev/studio#97](https://github.com/moq-dev/studio/pull/97)): this quest +waits on [Published independently](/quest/m2/publish-independently.md), since +until then no viewer can fetch a track the layout names, and the epic moved to +m2 with it. Once that lands, replan this quest around the epic's reference +picture, which decides what the layout carries. Rejected: replanning now +around the program with the independently published sources layered over it, +and building the full-scene layout as written above while no viewer can use +it. + +## Required + +- [Published independently](/quest/m2/publish-independently.md) - the source tracks a viewer can fetch, which the layout names diff --git a/quest/m1/compose/server.md b/quest/m2/compose/server.md similarity index 93% rename from quest/m1/compose/server.md rename to quest/m2/compose/server.md index 42830273..296ae95e 100644 --- a/quest/m1/compose/server.md +++ b/quest/m2/compose/server.md @@ -22,4 +22,4 @@ and document it in `README.md`. ## Required -- [Layout track](/quest/m1/compose/layout.md) - what the server composes +- [Layout track](/quest/m2/compose/layout.md) - what the server composes diff --git a/quest/m2/publish-independently.md b/quest/m2/publish-independently.md index fe9ea201..b8c13e2a 100644 --- a/quest/m2/publish-independently.md +++ b/quest/m2/publish-independently.md @@ -37,4 +37,4 @@ user does, so `README.md` documents them. ## Related -- [Viewer-side composition](/quest/m1/compose/README.md) - the m1 epic that composes from independently published sources +- [Viewer-side composition](/quest/m2/compose/README.md) - the epic that composes from independently published sources