Skip to content

moq-audio's positioned bus channel is pinned - #128

Merged
kixelated merged 3 commits into
mainfrom
quest/m0/pin-bus-positioned
Nov 11, 2026
Merged

kixelated merged 3 commits into
mainfrom
quest/m0/pin-bus-positioned

Conversation

@kixelated

@kixelated kixelated commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The studio builds against moq at a commit that predates moq-audio's positioned bus channel. moq-dev/moq#8273 adds Bus::positioned, whose bus::Positioned::write(position, data) plays a write at the bus position it names, and renames Bus::channel / bus::Channel to Bus::live / bus::Live. The positioned playout writes in Playout writes land on positioned bus channels depend on this pin.

Approach

  • Pin the moq submodule to 79960a9dd with just upgrade-moq 79960a9dd, exactly rather than moq's main. Moving to main would also cross the playout clock replacement in moq-dev/moq#8272, which pin-sync owns.
  • Rename every bus.channel(..) call to bus.live(..) and every bus::Channel type to bus::Live in moq-scene (playout.rs, source.rs, browser/run.rs) and moq-studio (feed.rs, mix.rs).
  • Drop the RouteEvent::Takeover arms in moq-studio's engine.rs. The pinned moq no longer has that variant, and its RouteEvent::Restart arm, already present, covers the same case.
  • Refresh bun.lock. Cargo.lock needed no change.
  • Delete this quest and its links from quest/m0/README.md and quest/m0/playout-positioned.md, which now has no Required list, and rewrite the prose mention in quest/m0/pin-sync.md.

Impact

  • No user-visible change. The studio's audio still plays through the same bus; no audio moves onto positioned writes here.
  • Public API and wire impact: none outside the workspace. The moq-audio rename is consumed only inside this repository, and nothing on the wire changes.

Alternatives

  • Pin moq's main. Rejected: it crosses the playout clock replacement (#8272), which resizes this quest, and the maintainer decided on the exact commit on 2026-11-09.

Choices made without asking

  • Removed the Takeover arms rather than mapping them onto Restart with a new arm. The pinned moq's Restart documents "another instance now serves the prefix", which is what the removed arms handled, so the existing Restart arm already covers it. The old Takeover variant's extra fields are gone with it, so a reviewer should check that no caller relied on them.
  • Kept the private helper names channel (in moq-scene's source.rs and in the moq-studio test helpers) and only changed the types and method calls they wrap. The names describe a role in the studio, not the bus API.

Follow-ups

Models

Size: XS
Implementer: Claude Haiku 5.5, high effort

🤖 Generated with Claude Code

(Written by Claude Haiku 5.5 with high)

Review

Rewritten by quest review after each round.

  • Reviewer: Codex, gpt-6.1-sol, low effort
  • Session: 01a1cc82-1c60-7882-933a-bff4c4e6d374, round 1
  • Head: 24a6bbb
  • Base: origin/main at 7807be9
  • Score: 9/10, The focused audio API migration preserves existing live-channel behavior with no identified regressions, pending CI confirmation.
  • Findings: none

@pullfrog

pullfrog Bot commented Nov 10, 2026

Copy link
Copy Markdown

Pullfrog  | Review this ➔

Pin the moq submodule to 79960a9dd, which adds Bus::positioned and renames
Bus::channel to Bus::live (moq-dev/moq#8273). Callers take the rename, and
moq-studio drops the Takeover route arm that moq's RouteEvent no longer has.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 10, 2026 17:52

@kixelated kixelated left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed commit: 944dbf3

No actionable findings in the inspected changes. The Bus::live/bus::Live migration matches the pinned upstream API and retains live writes; the removed Takeover test arms discarded their extra fields, and the pinned RouteEvent retains Restart for instance changes. Overall direction: consistent with the narrowly scoped pin quest; positioned playout remains separate.

Verification: GitHub-only static review of the PR diff and relevant pinned upstream definitions. The pin spans 46 upstream commits, not an exhaustive upstream audit. No builds, tests, quest checks, or runtime audio validation run; the exact-head Check workflow was still in progress when checked.

@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The moq submodule reference advances to a new commit. Scene audio code and studio test helpers change from Channel to Live and use Bus::live. Quest documentation is revised or removed. The relay-routing test no longer handles RouteEvent::Takeover when selecting announcements.

Merge Risk: Minimal · up to 944db

The audio API migration has no identified user-visible regression and is mergeable after normal checks.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title relates to the moq pin and positioned-bus API, but it does not clearly state that this PR mainly updates the pin and adapts callers to the Live API.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description check Passed The description directly explains the moq submodule pin, the Bus::channel to Bus::live migration, RouteEvent::Takeover removal, lockfile refresh, and quest documentation changes. These changes match t…
Full details: Description check

Explanation

The description directly explains the moq submodule pin, the Bus::channel to Bus::live migration, RouteEvent::Takeover removal, lockfile refresh, and quest documentation changes. These changes match the provided changeset.

Finishing Touches

Simplify code

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2744512e-114c-4c0a-9bea-0bfaa178d86d
Commits

Reviewing files that changed from the base of the PR and between e8f5bd0 and 944dbf3.

Files ignored due to path filters: 1

  • bun.lock is excluded by !**/*.lock
Files selected for processing: 11

  • moq
  • quest/m0/README.md
  • quest/m0/pin-bus-positioned.md
  • quest/m0/pin-sync.md
  • quest/m0/playout-positioned.md
  • rs/moq-scene/src/browser/run.rs
  • rs/moq-scene/src/playout.rs
  • rs/moq-scene/src/source.rs
  • rs/moq-studio/src/engine.rs
  • rs/moq-studio/src/feed.rs
  • rs/moq-studio/src/mix.rs
Files with no reviewable changes: 3

  • quest/m0/pin-bus-positioned.md
  • quest/m0/playout-positioned.md
  • quest/m0/README.md

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Resolve the m0 README conflict by taking main's version: main already dropped
the Required list that held this quest's link, so the PR's removal of that
line is moot.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@kixelated
kixelated enabled auto-merge (squash) November 11, 2026 21:29
@kixelated
kixelated merged commit c8d8dd3 into main Nov 11, 2026
3 checks passed
@kixelated
kixelated deleted the quest/m0/pin-bus-positioned branch November 11, 2026 21:39
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