Skip to content

refactor(hls)!: export background work runs on a kio Driver - #7324

Merged
moq-bot[bot] merged 8 commits into
mainfrom
quest/m2/hls-export-kio
Nov 1, 2026
Merged

moq-bot[bot] merged 8 commits into
mainfrom
quest/m2/hls-export-kio

Conversation

@kixelated

@kixelated kixelated commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Finishes quest/m2/hls-export-kio.md: the export's catalog watcher, each rendition's record watcher, and the init builds no longer use tokio::spawn. They now run as kio::Tasks children of a Driver the export hands back.

Summary

  • Broadcaster is a cheap-clone handle, like the other handles in the codebase: its clones share a guard whose drop, with the last clone, ends the catalog watcher and releases the rendition map. is_clone replaces Arc::ptr_eq.
  • New export::Driver (rs/moq-hls/src/export/driver.rs). It owns a kio::Tasks set and an inbox kio::Queue, so a rendition can start an init build from any thread, including a synchronous render off the runtime.
  • Every task belongs to the owner that started it, which keeps a guard for it (Owner, a kio::Producer<()>). Dropping the guard ends the task on the next poll. These guards replace the JoinHandles and abort() calls, the Rendition's Drop, and the tokio::runtime::Handle the rendition captured. As a result, Rendition no longer panics when built outside a runtime.
  • The driver finishes once the broadcaster and every rendition it created have dropped and their tasks have ended. That keeps both lifetime rules from the Plan:
    • A reconfigure retires the old rendition. Its watcher ends once it lists the segment it was bounding, or as soon as the rendition drops.
    • A recording cursor that outlives the Broadcaster keeps its rendition's watcher running until the records end.
  • The catalog watcher is the driver's lead task, polled before the others in every pass. kio::Tasks rotates its polling order, unlike tokio's FIFO run queue, so without this a rendition's watcher could read records published after a reconfigure before the catalog watcher retired it. Those records would then be listed under the old init. moq-cli's a_reconfigured_rendition_continues_its_playlist caught this.
  • Server and moq hls --record spawn each broadcaster's driver at their tokio edge. The server runs one task per broadcaster rather than per path follower, because a replaced instance keeps serving after the follower that started it moves on.

Impact

  • Public API (moq-hls, breaking): Broadcaster::new(source, config) now returns (Broadcaster, Driver) instead of Arc<Broadcaster>. Migration: clone the Broadcaster instead of an Arc, compare with is_clone, and run the driver wherever you run tasks, for example tokio::spawn(driver.run()), or poll it with Driver::poll(&kio::Waiter). Nothing is watched until it runs. moq-hls needs a breaking (minor) bump at the next cut. rs/moq-hls/MIGRATE.md describes the change.
  • Wire: none.

Decisions

  1. Public API shape (maintainer, 2026-10-30).
    • ✅ A, refined: Broadcaster::new returns a Driver and spawns nothing. The maintainer rejected Arc<Broadcaster>, so Broadcaster is now a cheap-clone handle (internal Arc) and new returns (Broadcaster, Driver), as other handles do (moq_net::origin::Producer::new).
    • B: keep the signature and have new spawn one root task that runs the driver.
    • C: have the consumers' own polls drive the tasks.

Choices made without asking

  • The Plan's "timeline and spans watchers" predate moq-dev/moq#6783, which replaced them with per-rendition record watchers. I mapped its lifetime rules onto the current watchers.
  • The task bodies stay async and are boxed into the task set, the way moq-archive's consumer does it. Rewriting them as poll machines is out of scope.
  • record_cursors_yield_renditions_and_segments now accepts either RecordsFailed or CatalogFailed when the publisher drops. Both watchers see the close, and which error arrives first was only ever tokio's scheduling order. MIGRATE already tells callers to match both.
  • quest/m2/spawn-audit.md now lists moq-hls's server (its path follower and each broadcaster's driver) instead of "moq-hls export".
  • No throughput measurement: the Plan asked for one with "the existing moq-hls benchmarks", but moq-hls has none. The change only moves background watchers, not the segment fetch path.

Tests

  • driver::tests::tasks_end_with_their_owner, a_dropped_driver_drops_queued_tasks
  • the_driver_finishes_with_its_owners: after a reconfigure, dropping the broadcaster and both renditions finishes the driver while the publisher stays live, and a held rendition keeps it running.
  • dropping_the_broadcaster_keeps_a_cursor_drainable now also asserts the driver outlives the held rendition and finishes once the cursor drops.
  • just check passed locally on bf302afe98, and so did cargo test -p moq-hls -p moq-cli --all-features. On 3f5e0532d7 (test attributes only), cargo nextest run -p moq-hls --all-features passed 217/217.

Follow-ups

  • Have moq-hls's server drive its broadcasters' drivers from its own polled task, under spawn-audit.
  • Convert the watcher bodies to #[kio::machine] / poll functions and drop the tokio::select! and tokio::sync::{watch, Mutex} they still use.

Review

mechanical fix by codex / Codex: Merged base, preserving the PR broadcaster driver API and base kio clock migration in test conflicts. (head eff60cd)

  • Reviewer: Codex, gpt-6.1-sol, medium effort (quest review), against origin/main (1ea4b1a2c3).
  • Earlier session: round 1 on 10544f2ca6 had 1 finding, fixed (a dropped driver now drains its inbox, a_dropped_driver_drops_queued_tasks). Round 2 on c27e5e0be8 had no findings.
  • Session after the cheap-clone handle change: round 1 on bf302afe98 had no findings.
  • Online Codex flagged real sleeps in the_driver_finishes_with_its_owners (thread). Fixed: that test and dropping_the_broadcaster_keeps_a_cursor_drainable, which this PR also extends, now run with start_paused = true.
  • New session: round 1 on 3f5e0532d7e986cfd5fdb221f8caf46f16016d2d had no findings.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 3 commits October 30, 2026 02:25
Quest-Claim: 94dabcd0e7cc3e47
Broadcaster::new returns a Driver alongside the broadcaster. Its kio::Tasks
set runs the catalog watcher, each rendition's record watcher, and init
builds, instead of tokio::spawn. Each owner holds a guard that ends its
task when dropped. The catalog watcher is polled first in every pass, so a
reconfigure retires its rendition before that rendition reads later records.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title moq-hls export runs on kio refactor(hls)!: export background work runs on a kio Driver Oct 30, 2026
kixelated and others added 2 commits October 30, 2026 13:32
Broadcaster::new returns (Broadcaster, Driver) instead of an Arc, matching
the other handles: clones share a guard whose drop ends the catalog watcher.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review October 30, 2026 20:48
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-30T20:50:01.388657Z bf302af Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Warning

Review limit reached

You'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 20 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

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: 74d3db39-4280-4688-986a-bc9936faccee
Commits

Reviewing files that changed from the base of the PR and between 3f5e053 and 66551d9.

Files selected for processing: 14
  • quest/m2/README.md
  • quest/m2/hls-export-kio.md
  • quest/m2/spawn-audit.md
  • rs/moq-cli/src/hls.rs
  • rs/moq-cli/src/hls/record.rs
  • rs/moq-hls/MIGRATE.md
  • rs/moq-hls/src/export/archive_tests.rs
  • rs/moq-hls/src/export/driver.rs
  • rs/moq-hls/src/export/mod.rs
  • rs/moq-hls/src/export/rendition.rs
  • rs/moq-hls/src/export/renditions.rs
  • rs/moq-hls/src/server/mod.rs
  • rs/moq-hls/tests/integration/restart.rs
  • rs/moq-hls/tests/integration/server.rs

No actionable comments were generated in the recent review.

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: b3a308ac-0f79-4db4-a6d8-31a1ff46d324
Commits

Reviewing files that changed from the base of the PR and between bdc4785 and 3f5e053.

Files selected for processing: 14
  • quest/m2/README.md
  • quest/m2/hls-export-kio.md
  • quest/m2/spawn-audit.md
  • rs/moq-cli/src/hls.rs
  • rs/moq-cli/src/hls/record.rs
  • rs/moq-hls/MIGRATE.md
  • rs/moq-hls/src/export/archive_tests.rs
  • rs/moq-hls/src/export/driver.rs
  • rs/moq-hls/src/export/mod.rs
  • rs/moq-hls/src/export/rendition.rs
  • rs/moq-hls/src/export/renditions.rs
  • rs/moq-hls/src/server/mod.rs
  • rs/moq-hls/tests/integration/restart.rs
  • rs/moq-hls/tests/integration/server.rs
Files with no reviewable changes: 2
  • quest/m2/README.md
  • quest/m2/hls-export-kio.md

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

Walkthrough

HLS export background work now runs through an explicit driver returned by Broadcaster::new. Rendition watchers and init builds use owner handles managed by that driver. Broadcaster and server APIs now use Broadcaster values rather than Arc<Broadcaster>. CLI and server call sites, tests, and migration guidance reflect the new construction and driver-running requirements.

Merge Risk: Minimal · previous review 3f5e0

The updated callers start HLS export background work, and the driver can finish when its owners are released. No identified issue remains to resolve before merge.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 30.95% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documenta… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title "refactor(hls)!: export background work runs on a kio Driver" matches the main change. The PR moves the export's catalog watcher, rendition record watchers, and init builds from tokio::spawn…
Description check Passed The description matches the changeset. It explains the move from tokio::spawn to kio::Tasks under a Driver, the breaking Broadcaster::new change to (Broadcaster, Driver), the owner guards that replace…
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.
Full details: Title check

Explanation

The title "refactor(hls)!: export background work runs on a kio Driver" matches the main change. The PR moves the export's catalog watcher, rendition record watchers, and init builds from tokio::spawn to kio::Tasks owned by a new export::Driver. The ! marks the breaking Broadcaster::new signature change. The title is specific and concise.

Full details: Description check

Explanation

The description matches the changeset. It explains the move from tokio::spawn to kio::Tasks under a Driver, the breaking Broadcaster::new change to (Broadcaster, Driver), the owner guards that replace JoinHandles and abort calls, the test additions, and the related quest and spawn-audit doc updates. It is detailed and on-topic.

Full details: Docstring Coverage

Explanation

Docstring coverage is 30.95% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 42 functions across 10 files. (2 skipped: 2 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

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

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bf302afe98

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-hls/src/export/mod.rs Resolved

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator 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: bf302afe98a975363e639aad7f0f1ab1be455998 (base bdc47852ad381e46a9d91ba1372597fa97a34dfd).

No new actionable bugs found in the changed production code. The explicit Driver and cheap-clone handle are a coherent direction: task ownership follows broadcaster/rendition lifetimes, and polling the catalog first addresses reconfiguration ordering without rewriting the watcher bodies. The inbox is justified by synchronous callers starting init work; the API migration is documented and wired into the server/CLI.

Existing finding, not duplicated: the new lifecycle test at rs/moq-hls/src/export/mod.rs:1694–1696 should pause Tokio time before creating the origin, as already raised in this thread. It uses real sleeps/timeouts despite being in-memory.

Verification: static inspection of the diff and relevant ownership, watcher, init-build and kio task code only; I did not run tests, builds or throughput benchmarks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Landing summary:

  • Fixed the one open review thread: the_driver_finishes_with_its_owners and dropping_the_broadcaster_keeps_a_cursor_drainable now pause Tokio time (3f5e053).
  • Codex's local review of 3f5e053 had no findings. moq-hls passes 217/217 with all features, and quest check --base origin/main passes.
  • Decision: the maintainer picked /quest-merge. API shape A (refined) stands, as recorded in the body.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge (squash) October 31, 2026 07:26

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator 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: 3f5e0532d7e986cfd5fdb221f8caf46f16016d2d, compared with my previous review at bf302afe98a975363e639aad7f0f1ab1be455998; base unchanged at bdc47852ad381e46a9d91ba1372597fa97a34dfd.

The previously referenced paused-time finding is fixed: both driver lifecycle tests now start with Tokio time paused (rs/moq-hls/src/export/mod.rs:1694,2491), before creating the origin. This is a focused, simpler fix that preserves their assertions; the required test-util feature is already enabled. No new actionable bugs found in this update. The production Driver design is unchanged from the prior review.

Verification: static inspection of the exact one-commit delta, test bodies and Cargo features; no tests or builds run by this review.

@moq-bot
moq-bot Bot disabled auto-merge October 31, 2026 15:33
@moq-bot moq-bot Bot removed the quest:merge label Oct 31, 2026
@moq-bot

moq-bot Bot commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

quest land removed this pull request from the queue: the batch check failed (exit 1).

   Compiling proc-macro2-diagnostics v0.10.1
    Checking moq-sock v0.2.0 (/work/rs/moq-sock)
    Checking fs-err v3.3.1
    Checking p384 v0.14.0
    Checking p256 v0.14.0
    Checking arboard v3.7.0
    Checking reqwest-middleware v0.5.2
    Checking web-transport-trait v0.5.2
    Checking axum v0.8.9
    Checking moq-auth v0.2.1 (/work/rs/moq-auth)
    Checking axum-server v0.8.0
    Checking egui-winit v0.36.2
    Checking http-cache-reqwest v1.0.0-alpha.9
    Checking egui-wgpu v0.36.2
   Compiling duplicate v2.0.1
    Checking eframe v0.36.2
    Checking egui_dock v0.21.1
    Checking pipewire v0.10.1
    Checking cpal v0.18.2
    Checking moq-json v0.5.8 (/work/rs/moq-json)
    Checking moq-loc v0.2.19 (/work/rs/moq-loc)
    Checking qmux v0.7.0 (/work/rs/qmux)
    Checking hang v0.21.11 (/work/rs/hang)
    Checking moq-stats v0.2.12 (/work/rs/moq-stats)
    Checking moq-tokio v0.19.23 (/work/rs/moq-tokio)
    Checking moq-mux v0.10.11 (/work/rs/moq-mux)
    Checking moq-relay v0.17.2 (/work/rs/moq-relay)
    Checking moq-audio v0.1.10 (/work/rs/moq-audio)
    Checking moq-scene v0.1.0 (/work/rs/moq-scene)
    Checking moq-studio v0.1.0 (/work/rs/moq-studio)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 24.71s

info: running `cargo clippy --locked --tests --all-features -- -D warnings` on moq-wasm (50/51)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.25s

info: running `cargo clippy --locked --tests --all-features -- -D warnings` on uniffi-bindgen (51/51)
   Compiling getrandom v0.4.3
   Compiling winnow v1.0.4
   Compiling serde v1.0.229
   Compiling uniffi_internal_macros v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
   Compiling libc v0.2.191
    Checking indexmap v2.14.2
   Compiling fs-err v3.3.1
   Compiling askama_parser v0.16.1
   Compiling basic-toml v0.1.10
    Checking nom v7.1.3
   Compiling scroll_derive v0.12.1
   Compiling askama_derive v0.16.1
    Checking smawk v0.3.3
    Checking tempfile v3.27.0
    Checking weedle2 v5.0.0 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
    Checking scroll v0.12.0
    Checking textwrap v0.16.4
    Checking serde_json v1.0.154
    Checking uniffi_pipeline v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
   Compiling askama_macros v0.16.1
   Compiling toml_parser v1.1.3+spec-1.1.0
    Checking uniffi_meta v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
   Compiling toml_datetime v1.1.1+spec-1.1.0
    Checking plain v0.2.3
    Checking clap_builder v4.6.7
    Checking cargo_metadata v0.23.1
   Compiling toml v1.1.6+spec-1.1.0
    Checking uniffi_udl v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
    Checking askama v0.16.1
    Checking goblin v0.8.2
    Checking uniffi_core v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
    Checking clap v4.6.7
    Checking uniffi_bindgen v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
   Compiling uniffi_macros v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
    Checking uniffi v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
    Checking uniffi-bindgen v0.1.0 (/work/rs/uniffi-bindgen)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.81s
mbx[cache]: object cache: 1121 hits, 253 misses, 52 not looked up; 0 B downloaded, 0 B uploaded, 420.5 MiB stored locally
mbx[cache]: 12m 8s session; 20m 27s estimated compiler time avoided (summed across compilations)
mbx[cache]: 52 compilations had no usable prior inputs or matching prediction for a lookup
mbx[cache]: Cargo artifact reuse and CI cache archive transfers are not included above
mbx[savings]: 1121 compilations in, zero compiled. 20m 27s returned to circulation.
ci: check quest failed
ci: test rs failed
ci: seconds per module
  1061  check rs
   261  test rs (failed)
  1564  check rs_shapes
   242  check obs_compile
    68  check flake
    42  check markdown
     4  check gh
   120  test gh
     0  check drill
     4  check quest (failed)
     2  check obs
     1  check ts_paths
    24  check shell
     0  check large_files
     1  check toml
     0  check nix
     1  check justfile
  2886  wall time
error: recipe `ci` failed on line 104 with exit code 1

.

@moq-bot

moq-bot Bot commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

Codex land fixer: fixer crashed (exit 101); run /quest-iterate. Recommendation: run /quest-iterate before picking it again.

-- Installing: /work/cpp/moq/build/prefix/lib/libmoq_ffi.a
-- Installing: /work/cpp/moq/build/prefix/lib/cmake/moq-cpp/moq-cpp-config.cmake
-- Installing: /work/cpp/moq/build/prefix/lib/cmake/moq-cpp/moq-cpp-config-version.cmake
-- Installing: /work/cpp/moq/build/prefix/lib/pkgconfig/moq-cpp.pc
ci: check shell started
ci: check ts_paths passed in 1s
==> check ts_paths
ci: check large_files started
ci: check large_files passed in 0s
==> check large_files
changed: base 38566f5a84cb07bb756aae43f6dc902f1abacec2
ci: check toml started
ci: check toml passed in 1s
==> check toml
ci: check nix started
ci: check nix passed in 0s
==> check nix
ci: check justfile started
ci: check justfile passed in 1s
==> check justfile
ci: check shell passed in 24s
==> check shell
ci: check rs passed in 1061s
ci: test rs started
ci: test rs failed in 261s
ci: check rs_shapes started
ci: check rs_shapes passed in 1564s
==> check rs
sh/rs/select.sh lint "$LIST"
rs: selecting the workspace
rs: selecting the workspace
python3 sh/rs/stats-docs.py
# The environment is process-wide, so nothing writes it. A text check, because the
# clock lint's test allowances also silence clippy's disallowed_methods.
git grep --untracked -nE '(^|[^[:alnum:]_])(set_var|remove_var)[[:space:]]*\(' -- 'rs/*.rs'; [ $? -eq 1 ] || { echo "error: a write to the process environment: pass the value down, or run a test in a child with test_env::Env" >&2; exit 1; }
cargo fmt --all --check
RUSTDOCFLAGS="-D warnings" bash sh/local.sh cargo doc --locked --no-deps "$@"
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
   Compiling kio-macros v0.1.0 (/work/rs/kio/macros)
   Compiling aws-lc-sys v0.46.0
    Checking moq-pattern v0.1.2 (/work/rs/moq-pattern)
    Checking moq-msf v0.5.1 (/work/rs/moq-msf)
    Checking moq-sock v0.2.0 (/work/rs/moq-sock)
   Compiling moq-video v0.1.10 (/work/rs/moq-video)
    Checking moq-nvenc v0.1.2 (/work/rs/moq-nvenc)
   Compiling moq-gst v0.4.12 (/work/rs/moq-gst)
    Checking kio v0.6.2 (/work/rs/kio)
   Compiling moq-c v0.7.0 (/work/rs/moq-c)
    Checking sysinfo v0.39.6
 Documenting kio-macros v0.1.0 (/work/rs/kio/macros)
 Documenting bench-harness v0.0.1 (/work/rs/bench-harness)
    Checking moq-clock v0.11.0 (/work/rs/moq-clock)
 Documenting moq-clock v0.11.0 (/work/rs/moq-clock)
 Documenting kio v0.6.2 (/work/rs/kio)
    Checking moq-net v0.3.10 (/work/rs/moq-net)
    Checking moq-json v0.5.8 (/work/rs/moq-json)
    Checking moq-loc v0.2.19 (/work/rs/moq-loc)
    Checking hang v0.21.11 (/work/rs/hang)
    Checking moq-congestion v0.1.0 (/work/rs/moq-congestion)
    Checking moq-stats v0.2.12 (/work/rs/moq-stats)
    Checking moq-mux v0.10.11 (/work/rs/moq-mux)
 Documenting moq-mux v0.10.11 (/work/rs/moq-mux)
 Documenting hang v0.21.11 (/work/rs/hang)
    Checking moq-audio v0.1.10 (/work/rs/moq-audio)
 Documenting moq-srt v0.3.11 (/work/rs/moq-srt)
    Checking moq-scene v0.1.0 (/work/rs/moq-scene)
 Documenting moq-carla-bridge v0.1.0 (/work/demo/carla/bridge)
 Documenting moq-transcode v0.1.10 (/work/rs/moq-transcode)
 Documenting moq-scene v0.1.0 (/work/rs/moq-scene)
 Documenting moq-audio v0.1.10 (/work/rs/moq-audio)
 Documenting moq-video v0.1.10 (/work/rs/moq-video)
 Documenting moq-stats v0.2.12 (/work/rs/moq-stats)
 Documenting moq-loc v0.2.19 (/work/rs/moq-loc)
 Documenting moq-json v0.5.8 (/work/rs/moq-json)
 Documenting moq-shaper v0.0.1 (/work/rs/moq-shaper)
 Documenting moq-net v0.3.10 (/work/rs/moq-net)
 Documenting moq-congestion v0.1.0 (/work/rs/moq-congestion)
 Documenting moq-nvenc v0.1.2 (/work/rs/moq-nvenc)
 Documenting moq-sock v0.2.0 (/work/rs/moq-sock)
 Documenting moq-msf v0.5.1 (/work/rs/moq-msf)
 Documenting moq-pattern v0.1.2 (/work/rs/moq-pattern)
 Documenting moq-v4l v0.1.0 (/work/rs/moq-v4l
thread 'codex-main' (74) panicked at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/io/stdio.rs:1166:9:
failed printing to stderr: Resource temporarily unavailable (os error 11)
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: std::io::stdio::_eprint
   3: <codex_exec::event_processor_with_human_output::EventProcessorWithHumanOutput as codex_exec::event_processor::EventProcessor>::process_server_notification
   4: codex_exec::run_exec_session::{closure#0}
   5: <tracing::instrument::Instrumented<codex_exec::run_exec_session::{closure#0}> as core::future::future::Future>::poll
   6: codex_exec::run_main::{closure#0}
   7: codex::cli_main::{closure#0}
   8: <tokio::runtime::park::CachedParkThread>::block_on::<codex_arg0::run_main_with_arg0_guard<codex::main::{closure#0}, codex::main::{closure#0}::{closure#0}>::{closure#0}>
   9: tokio::runtime::context::runtime::enter_runtime::<<tokio::runtime::scheduler::multi_thread::MultiThread>::block_on<codex_arg0::run_main_with_arg0_guard<codex::main::{closure#0}, codex::main::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}, core::result::Result<(), anyhow::Error>>
  10: <tokio::runtime::runtime::Runtime>::block_on::<codex_arg0::run_main_with_arg0_guard<codex::main::{closure#0}, codex::main::{closure#0}::{closure#0}>::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
quest: fixer agent exited 101

(written by Codex)

@kixelated
kixelated enabled auto-merge (squash) October 31, 2026 19:51
@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 07:39
@moq-bot moq-bot Bot removed the quest:merge label Nov 1, 2026
@moq-bot

moq-bot Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

quest land removed this pull request from the queue: Conflicts with the base: rs/moq-hls/src/export/archive_tests.rs, rs/moq-hls/src/export/mod.rs
.

@moq-bot
moq-bot Bot enabled auto-merge (squash) November 1, 2026 07:53
@moq-bot moq-bot Bot added the quest:merge label Nov 1, 2026
@moq-bot
moq-bot Bot merged commit b54ef71 into main Nov 1, 2026
1 check passed
@moq-bot
moq-bot Bot deleted the quest/m2/hls-export-kio branch November 1, 2026 09:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant