From b6a3210d549729697d13095260a04a8d63934cd4 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Mon, 9 Nov 2026 23:19:25 -0800 Subject: [PATCH] quest: plan catching the studio up to moq's main Co-Authored-By: Claude Opus 5.5 --- quest/m0/README.md | 1 + quest/m0/pin-aac-encode.md | 2 +- quest/m0/pin-audio-filters.md | 2 +- quest/m0/pin-audio-tap.md | 2 +- quest/m0/pin-egress-dial.md | 2 +- quest/m0/pin-main.md | 42 +++++++++++++++++++++++++++++++++ quest/m0/pin-portal-token.md | 2 +- quest/m0/pin-sync.md | 4 ++-- quest/m2/compose/hang-layers.md | 2 +- quest/m2/pin-browser-audio.md | 2 +- quest/m2/pin-browser-video.md | 2 +- 11 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 quest/m0/pin-main.md diff --git a/quest/m0/README.md b/quest/m0/README.md index f2b570a7..7e2a409e 100644 --- a/quest/m0/README.md +++ b/quest/m0/README.md @@ -114,6 +114,7 @@ repository. - [Playout writes land on positioned bus channels](/quest/m0/playout-positioned.md) - broadcast, media, and replay sound at the bus position its pictures are timed for - [moq-audio's positioned bus channel is pinned](/quest/m0/pin-bus-positioned.md) - `Bus::positioned`, which playout writes through - [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - `moq_mux::sync` in place of `moq_mux::timeline`, which every later pin crosses +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes past #8272 in one PR, so each later pin stays small ## Related diff --git a/quest/m0/pin-aac-encode.md b/quest/m0/pin-aac-encode.md index 15606eec..48e76f0f 100644 --- a/quest/m0/pin-aac-encode.md +++ b/quest/m0/pin-aac-encode.md @@ -23,4 +23,4 @@ fixing whatever the new API breaks here. ## Required -- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - moq-dev/moq#8272, which no later pin can skip +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own diff --git a/quest/m0/pin-audio-filters.md b/quest/m0/pin-audio-filters.md index 432b8f08..0ccffa99 100644 --- a/quest/m0/pin-audio-filters.md +++ b/quest/m0/pin-audio-filters.md @@ -21,4 +21,4 @@ fixing whatever the new API breaks here. ## Required -- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - moq-dev/moq#8272, which no later pin can skip +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own diff --git a/quest/m0/pin-audio-tap.md b/quest/m0/pin-audio-tap.md index c83e231b..f48da93d 100644 --- a/quest/m0/pin-audio-tap.md +++ b/quest/m0/pin-audio-tap.md @@ -20,4 +20,4 @@ fixing whatever the new API breaks here. ## Required -- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - moq-dev/moq#8272, which no later pin can skip +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own diff --git a/quest/m0/pin-egress-dial.md b/quest/m0/pin-egress-dial.md index 40e389a1..c125eb7f 100644 --- a/quest/m0/pin-egress-dial.md +++ b/quest/m0/pin-egress-dial.md @@ -29,4 +29,4 @@ fixing whatever the new API breaks here. ## Required -- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - moq-dev/moq#8272, which no later pin can skip +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own diff --git a/quest/m0/pin-main.md b/quest/m0/pin-main.md new file mode 100644 index 00000000..16a1a21e --- /dev/null +++ b/quest/m0/pin-main.md @@ -0,0 +1,42 @@ +# [L] The studio is caught up to moq's main + +## Goal + +The `moq` submodule is at moq's `main` as of the day this quest starts, and +`just ci` passes on it. Every breaking change between `644d48996` (where +[pin-sync](/quest/m0/pin-sync.md) leaves it) and that commit is fixed in one +PR, so each later wait-gated pin moves past only its own upstream change. + +## Plan + +Decided 2026-11-09 (maintainer, /quest-plan on the follow-up from +[moq-dev/studio#123](https://github.com/moq-dev/studio/pull/123)): + +- ✅ Pin `main` on the day it starts, with `just upgrade-moq` and no commit + argument (rejected: a commit fixed at planning time; dropping the quest + and letting the first small pin absorb the catch-up). A commit chosen now + goes stale before anyone starts the quest. +- ✅ Every pin whose upstream work lands after pin-sync requires this quest + (rejected: leaving them on pin-sync). Each then stays XS. + +On 2026-11-09, moq's `main` (`103052ed0`) was 117 first-parent commits past +`644d48996`, 27 of them breaking. The ones that reach studio code most: + +- [moq-dev/moq#8220](https://github.com/moq-dev/moq/pull/8220): kio's + `Instant` has no `+` or `-` with a `Duration`. `rs/moq-scene/src/playout.rs` + and `source.rs` use them throughout. +- [moq-dev/moq#8270](https://github.com/moq-dev/moq/pull/8270): moq-audio + codecs return zero or more outputs and flush. +- [moq-dev/moq#8372](https://github.com/moq-dev/moq/pull/8372): moq-video + codecs split submission from receive. +- Renames and surface cuts in moq-net, moq-tokio, moq-mux, and moq-video + (#8247, #8265, #8266, #8298, #8305, #8369, #8370, #8371, #8375, #8392). + `just ci` finds the rest. + +Each change's PR has an Impact section with the migration. If an upstream +change a pin waits for is already on `main` when this starts, this PR also +does that pin's work and deletes the pin quest. + +## Required + +- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - the playout rewrite onto `moq_mux::sync`, which this builds on diff --git a/quest/m0/pin-portal-token.md b/quest/m0/pin-portal-token.md index 350144ae..9df91ac3 100644 --- a/quest/m0/pin-portal-token.md +++ b/quest/m0/pin-portal-token.md @@ -18,4 +18,4 @@ fixing whatever the new API breaks here. ## Required -- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - moq-dev/moq#8272, which no later pin can skip +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own diff --git a/quest/m0/pin-sync.md b/quest/m0/pin-sync.md index c0c3fd4d..d795cead 100644 --- a/quest/m0/pin-sync.md +++ b/quest/m0/pin-sync.md @@ -52,8 +52,8 @@ Not crossed here: [moq-dev/moq#8270](https://github.com/moq-dev/moq/pull/8270) (`147327e14`), and [moq-dev/moq#8220](https://github.com/moq-dev/moq/pull/8220) (`16a673036`, kio's `Instant` loses `+` and `-` with a `Duration`, which `playout.rs` and -`source.rs` use throughout) all merged after #8272. The first pin past them -fixes them. +`source.rs` use throughout) all merged after #8272. +[pin-main](/quest/m0/pin-main.md) fixes them. ## Waiting diff --git a/quest/m2/compose/hang-layers.md b/quest/m2/compose/hang-layers.md index 4ec5803b..dc52f82b 100644 --- a/quest/m2/compose/hang-layers.md +++ b/quest/m2/compose/hang-layers.md @@ -36,4 +36,4 @@ quests (rejected: "both quests", unnamed, which left out `@moq/watch`). - [moq-studio watch prototype](/quest/m2/compose/watch.md) - the format moq specifies - [Viewer controls](/quest/m2/compose/controls.md) - toggles and priorities the spec carries -- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - moq-dev/moq#8272, which no later pin can skip +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own diff --git a/quest/m2/pin-browser-audio.md b/quest/m2/pin-browser-audio.md index 1a927e21..692e0527 100644 --- a/quest/m2/pin-browser-audio.md +++ b/quest/m2/pin-browser-audio.md @@ -23,4 +23,4 @@ Moved to m2 with the [web studio](/quest/m2/web.md) on 2026-11-09 ## Required -- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - moq-dev/moq#8272, which no later pin can skip +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own diff --git a/quest/m2/pin-browser-video.md b/quest/m2/pin-browser-video.md index bf08776f..aa8607c9 100644 --- a/quest/m2/pin-browser-video.md +++ b/quest/m2/pin-browser-video.md @@ -24,4 +24,4 @@ Moved to m2 with the [web studio](/quest/m2/web.md) on 2026-11-09 ## Required -- [moq-mux's decoupled playout clock is pinned](/quest/m0/pin-sync.md) - moq-dev/moq#8272, which no later pin can skip +- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own