Skip to content

refactor(publish): keep each network broadcast's renditions and encoder state in one publication - #7371

Merged
kixelated merged 13 commits into
mainfrom
quest/m2/publish-publication
Nov 2, 2026
Merged

kixelated merged 13 commits into
mainfrom
quest/m2/publish-publication

Conversation

@kixelated

@kixelated kixelated commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Finishes quest/m2/publish-publication.md and deletes it, along with its link in the m1 cut audit.

Summary

Broadcast half: one publication per network broadcast.

  • Broadcast used five name-keyed maps (#kinds, #names, #replacements, #served, #listed) plus a local tracks map in #run. An internal Publication (js/publish/src/publication.ts) replaces them. It maps each catalog ID to { id, kind, name, track, owner, slot } and records every track name it has handed out. Each network broadcast creates a new publication, so a rename or a maxAge change starts names, kinds, replacements, tracks and slots over.
  • Identity follows Rust's rules: the identity fields are set per kind, mirroring hang::catalog::VideoConfig::same_identity and AudioConfig::same_identity. As a result, changing a video's interlaced flag moves it to a fresh track name.
  • Renames take effect only after catalog.mutate succeeds, so a fold that throws never ends a track the catalog still lists.

Encoder half: per-broadcast encoder state moves into the publication.

  • Each publication entry owns a Slot. It holds the coded-size ceiling, the bitrate and frame-rate maxima, the last enabled config, and the producer's terminal failure (error, a signal). Rendition exposes the current slot as an internal getter.
  • The video and audio encoders no longer keep a per-Broadcast #advertised WeakMap or a per-registration #failure Once. They read and write the current slot, and fall back to a local slot while no network broadcast serves them (for example, a local preview). out.error is now derived from the slot's error.
  • The errors WeakMap in internal.ts is gone. The broadcast's track loop handles failure from the slot instead:
    • a slot error aborts the entry's track, including an idle one;
    • a producer that aborts its own track directly fails the slot the same way;
    • the rendition stays down until the error clears;
    • once it clears (the encoder re-arms on changed settings or a new capture, or a replacement registration arrives), the rendition comes back under a fresh track name.
  • So a new network broadcast starts clean: no carried-over failure, fresh maxima, and a fresh coded-size ceiling.

Public API: none (Rendition.slot is @internal). Wire: none.

Decisions

  1. Land the Broadcast half now, or grow this PR to do the encoder half too?
    • Land the Broadcast half only, and leave the encoder half in the quest.
    • ✅ Grow the PR. Move each encoder's per-broadcast #advertised state and the errors failure plumbing (internal.ts) into the Publication, so a new network broadcast starts clean. Advertised bitrate and frame-rate peaks resetting on a network-broadcast restart is accepted. (Maintainer, 2026-10-30.)

Choices made without asking

  • The last enabled config is per slot too. This keeps the existing rule (encoder.test.ts, "a disabled rendition moved to another broadcast advertises nothing there"). The consequence: a rendition that is disabled (muted) through a network-broadcast restart is left out of the new broadcast's catalog until it is re-enabled, rather than advertised as enabled: false.
  • A network-broadcast restart re-probes video. The coded-size ceiling is per slot, so the probe for the old slot no longer applies. Until the new probe lands, the video rendition is missing from the new broadcast's catalog. This briefly happened before too when the Broadcast object was swapped; it now also happens on a rename or a maxAge change.
  • Failing the slot is the single path. A producer's direct track.abort is recorded as the slot's failure, so an unrelated rerun of the track loop never revives a failed track.
  • Added interlaced to video identity, as the Plan's "mirroring Rust's identity rules" calls for.
  • Between network broadcasts, the catalog lists each rendition under its own ID; that catalog is never served.

Checks

  • Land ejection (2026-11-01, failed_checks): reproduced on the merge with main 59e12a5. bun js/common/api.ts check failed with rendition-internal.d.ts:3: Module '"./publication"' has no exported member 'Slot': stripInternal drops the @internal Slot, but the non-internal makeRendition still named it. Fixed in 37e72d0 by marking makeRendition @internal (the package never re-exports it). After the fix, python3 sh/js/workspace.py check on the changed files passes, and test passes for every package except one @moq/net test (see below).

  • @moq/net "a version without a boundary syncs once the request is out" (js/net/src/lite/subscriber.test.ts:2895) failed once in the full sequential run under load and passed 5 of 5 runs of its file alone. This PR doesn't touch js/net, so it's a flake.

  • python3 sh/js/workspace.py check and test on the changed files (biome, tsc, builds, and @moq/publish plus dependents): pass, 0 failures. New tests:

    • a failed rendition stays down until its failure clears;
    • aborting a rendition's track fails its slot;
    • a new network broadcast starts each rendition's slot over;
    • a new network broadcast clears a video encoder failure and its maxima.
  • just test media (Playwright Chromium 156, publisher and player, including republish and late join): all checks passed.

  • Browser tests publish-ui, encoded-preview, source-selection and capture-channel-count (Chromium): 10 pass, 2 fail. Both failures are the watch-element version-list tests ("version lists keep their defaults…" and "version lists refuse unsupported…"), which expect the removed moq-transport-14. That test file and the code it covers are identical to main, so they fail on main too; this PR doesn't touch them.

  • quest check --base origin/main: ok.

  • Not verified: Firefox. The media fixture's publisher is Chromium-only (--media-engines changes only the player), and this change is publisher-side. Real-device failure paths, such as a GPU encoder dying mid-stream followed by a rename, were not run in a browser; the unit tests cover them with fake encoders.

Follow-ups

  • Deflake js/net/src/lite/subscriber.test.ts "a version without a boundary syncs once the request is out", which can fail under load.
  • Update publish-ui.browser.ts's version-list tests for the drafts 14–17 removal; they fail on main.

Review

  • Head 37e72d0: local quest review skipped under the simple-review rule. Since the last review, the only changes are a conflict-free merge of main and a one-line @internal doc tag on makeRendition. That tag changes declaration emit only, touches no public API (the symbol isn't re-exported), and changes no runtime behavior. Online reviewers cover this head. The Pullfrog check failure is a billing outage, not a finding.
  • Earlier rounds, kept for the trail:

mechanical fix by codex / Codex: Merged base cleanly; passed bun install --frozen-lockfile --ignore-scripts, bun run --cwd js/publish build, bun run --cwd js/publish test (304 tests), and CARGO_TARGET_DIR=/tmp/land-7323/target RUSTDOCFLAGS="-D warnings" cargo doc --locked --no-deps -p moq-net in /tmp/land-7371. (head 9acd0ef)

mechanical fix by codex / Codex: Merged base, preserving on-demand audio and publication state while following the internal Rendition move; tests blocked by missing workspace dependencies. (head 2b9e51e)

  • Reviewer: Codex, gpt-6.1-sol, medium effort (quest review --base origin/main), after merging main into the branch.
  • Merge of main: hand-resolved a conflict in quest/m1/cut-audit/README.md (main had marked moqsrc pad actors landed; this PR marks publish rendition identity landed; both now read "since landed"). Main's test: finish controlled-time test coverage and lint clock reads workspace-wide #7329 denies the performance global in tests, so the new test "a new network broadcast clears a video encoder failure and its maxima" drops its performance.now spy; the installed Manual clock already pins time, as test: finish controlled-time test coverage and lint clock reads workspace-wide #7329 did for the sibling tests (d4d2ad8).
  • Round 1 (head d4d2ad8, against main 08e71cd): 2 findings in rs/moq-net (model/resume.rs reserved group, ietf/subscriber.rs DYNAMIC_GROUPS), refuted: main had moved past the head's merged base, and they are the fixes main landed in 68fb455 (moq-dev/moq#7032) and 08e71cd (moq-dev/moq#7383). The PR touches no Rust; merging main again cleared them.
  • Round 2 (head 456fc7e): no findings.
  • just check origin/main in nix develop on 456fc7e: pass (@moq/publish 297 pass, 0 fail).
  • Earlier: round 1 on the pre-merge head 9d07353 found nothing; on the Broadcast half, a finding to commit renames only after the catalog fold succeeds (publication.ts) was fixed in b965273.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 3 commits October 30, 2026 05:54
…blication

Broadcast's five name-keyed maps (#kinds, #names, #replacements, #served,
#listed) become one internal Publication per network broadcast, mapping
catalog ID to kind, track name, track, and owner. A new network broadcast
starts a new publication, so names, kinds, and tracks reset structurally.

Identity now follows hang's same_identity per kind, so an interlacing change
takes a fresh video track name too. The quest is rewritten to the remaining
encoder-side state.

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/publish owns rendition identity in one publication refactor(publish): keep each network broadcast's renditions in one publication Oct 30, 2026
kixelated and others added 3 commits October 30, 2026 13:02
…lication

Each publication entry now owns a Slot: the coded-size ceiling, the raised
bitrate and frame-rate maxima, the last enabled config, and the producer's
terminal failure. Encoders read and write the current slot through their
Rendition instead of per-Broadcast WeakMaps, and their public error derives
from it, so a new network broadcast starts clean. The broadcast aborts a
failed slot's track (idle ones too), records a producer's own abort as the
slot's failure, and serves a fresh track name once the failure clears. This
replaces the `errors` WeakMap and each encoder's per-registration Once.

Deletes the finished quest.

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 refactor(publish): keep each network broadcast's renditions in one publication refactor(publish): keep each network broadcast's renditions and encoder state in one publication Oct 30, 2026
@kixelated
kixelated marked this pull request as ready for review October 30, 2026 20:09
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

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: 0a698d6c-57b1-4269-9dba-ad29deca1a9a
Commits

Reviewing files that changed from the base of the PR and between 75c48bb and 9acd0ef.

Files selected for processing: 16
  • doc/lib/js/publish.md
  • js/publish/src/audio/capture.test.ts
  • js/publish/src/audio/encoder.test.ts
  • js/publish/src/audio/encoder.ts
  • js/publish/src/broadcast.test.ts
  • js/publish/src/broadcast.ts
  • js/publish/src/internal.ts
  • js/publish/src/publication.ts
  • js/publish/src/rendition-internal.ts
  • js/publish/src/video/capture.test.ts
  • js/publish/src/video/encoder-stall.test.ts
  • js/publish/src/video/encoder.test.ts
  • js/publish/src/video/encoder.ts
  • quest/m1/cut-audit/README.md
  • quest/m2/README.md
  • quest/m2/publish-publication.md
Files with no reviewable changes: 3
  • quest/m2/README.md
  • quest/m2/publish-publication.md
  • js/publish/src/internal.ts

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

The change adds Publication state for rendition identity, track names, serving tracks, and per-rendition slots. Broadcast track serving and recovery now use publication entries and slot errors. Audio and video encoders store advertised maxima, configuration, and failure state on the active slot. Tests cover identity changes, catalog handling, track recovery, and slot switching. The recovery documentation now describes encoder restart and reset maxima after a new network broadcast.

Merge Risk: Minimal · up to 9acd0

No actionable publication or encoder failure was established; the change is mergeable after normal checks.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly summarizes the main change: consolidating rendition and encoder state for each network broadcast in one publication.
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
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 is specific and on-topic. It explains the move of per-broadcast state into a new internal Publication and encoder Slot, the removal of the errors WeakMap, the identity rules, the renam…
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. 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 2 functions across 11 files. (2 skipped: 2 unsupported.)

Full details: Description check

Explanation

The description is specific and on-topic. It explains the move of per-broadcast state into a new internal Publication and encoder Slot, the removal of the errors WeakMap, the identity rules, the rename-after-commit behavior, and the checks run. It matches the changeset summaries and the PR objectives, so it passes this lenient check.

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 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:12:03.110949Z 9d07353 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.

@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: 9d073535a5e68fbc0b0cd80ce8f0b8672ba69e31.

No actionable bugs found in the changed areas. Centralizing names, track ownership, advertised maxima and terminal failures in a per-network-broadcast publication is a coherent simplification. Committing identity-driven renames only after the catalog fold succeeds preserves the catalog/track relationship; the added failure-recovery and restart tests cover the key lifetime changes.

Verification: static review of the diff and surrounding broadcast/audio/video encoder code, including slot reset, reprobe and recovery paths. I did not run tests or browser/device checks; the checks reported in the PR were not independently reproduced.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Landing head 9d07353 via /quest-merge.

  • Changes: one internal Publication per network broadcast now holds each rendition's ID, kind, name, track, owner, and encoder Slot (coded-size ceiling, bitrate and frame-rate maxima, last enabled config, terminal error). This replaces Broadcast's five name-keyed maps, the encoders' per-broadcast #advertised WeakMaps, and the errors WeakMap in internal.ts. Finishes and deletes quest/m2/publish-publication.md.
  • Decision: the PR also includes the encoder half, as the maintainer picked on 2026-10-30. Advertised peaks now reset when a network broadcast restarts.
  • Reviews: the local Codex round on this head found nothing. The online automated review on this head found nothing actionable. No unresolved threads.
  • Checks: all 12 CI checks pass. quest check --base origin/main (main at 1ea4b1a) passes.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge (squash) October 31, 2026 05:08
@moq-bot
moq-bot Bot disabled auto-merge October 31, 2026 11:23
@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).

    Checking calloop-wayland-source v0.4.1
    Checking der v0.7.10
    Checking egui v0.36.2
    Checking moq-congestion v0.1.0 (/work/rs/moq-congestion)
    Checking tungstenite v0.30.0
    Checking ecdsa v0.17.0
   Compiling moq-vaapi v0.1.0
    Checking zbus_names v4.3.4
    Checking scuffle-h265 v0.2.2
    Checking moq-json v0.5.8 (/work/rs/moq-json)
    Checking wgpu v30.0.1
    Checking moq-loc v0.2.19 (/work/rs/moq-loc)
    Checking primeorder v0.14.0
    Checking smithay-client-toolkit v0.19.2
    Checking hang v0.21.11 (/work/rs/hang)
    Checking webm-iterable v0.7.1
    Checking wayland-protocols-misc v0.3.12
    Checking wayland-protocols-experimental v20250721.0.1
    Checking wayland-protocols-plasma v0.3.12
    Checking pipewire v0.10.1
    Checking scuffle-av1 v0.1.4
    Checking http-serde v2.1.1
    Checking sha2 v0.11.1
    Checking moq-msf v0.5.1 (/work/rs/moq-msf)
    Checking moka v0.12.16
    Checking moq-quic v0.1.0 (/work/rs/moq-quic)
    Checking humantime-serde v1.1.1
    Checking toml v1.1.6+spec-1.1.0
    Checking zbus v5.19.0
    Checking postcard v1.1.3
    Checking winit v0.30.13
    Checking http-cache-semantics v3.0.0
    Checking smithay-client-toolkit v0.20.0
    Checking tokio-tungstenite v0.30.0
    Checking spki v0.7.3
    Checking moq-mux v0.10.11 (/work/rs/moq-mux)
    Checking sfv v0.15.0
   Compiling moq-video v0.1.10 (/work/rs/moq-video)
    Checking serde_urlencoded v0.7.1
    Checking smithay-clipboard v0.7.3
    Checking axum-core v0.5.6
    Checking web-transport-proto v0.6.3
    Checking cpal v0.18.2
    Checking jsonwebtoken v11.1.0
    Checking x11rb v0.14.0
    Checking qmux v0.7.0 (/work/rs/qmux)
    Checking ashpd v0.13.13
    Checking rcgen v0.14.10
    Checking pkcs1 v0.7.5
    Checking http-cache v1.0.0-alpha.8
   Compiling proc-macro2-diagnostics v0.10.1
    Checking moq-sock v0.2.0 (/work/rs/moq-sock)
    Checking fs-err v3.3.1
    Checking p256 v0.14.0
    Checking p384 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 axum-server v0.8.0
    Checking moq-tokio v0.19.23 (/work/rs/moq-tokio)
    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 moq-stats v0.2.12 (/work/rs/moq-stats)
    Checking eframe v0.36.2
    Checking moq-auth v0.2.1 (/work/rs/moq-auth)
    Checking egui_dock v0.21.1
    Checking moq-audio v0.1.10 (/work/rs/moq-audio)
    Checking moq-scene v0.1.0 (/work/rs/moq-scene)
    Checking moq-relay v0.17.2 (/work/rs/moq-relay)
    Checking moq-studio v0.1.0 (/work/rs/moq-studio)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 51.38s
mbx[cache]: object cache: 167 hits, 1100 misses, 71 not looked up, 3 bypassed; 0 B downloaded, 0 B uploaded, 2.7 GiB stored locally
mbx[cache]: 13m 37s session; 2m 14s estimated compiler time avoided (summed across compilations)
mbx[cache]: 71 compilations had no usable prior inputs or matching prediction for a lookup
mbx[cache]: bypass reasons: 3 build-script-declarations-pending
mbx[cache]: Cargo artifact reuse and CI cache archive transfers are not included above
mbx[savings]: rustc believes it compiled everything. it is down 8d 20h across 11990 builds. let it believe.
ci: check quest failed
ci: test rs failed
ci: seconds per module
   798  check rs
   237  test rs (failed)
  1317  check rs_shapes
   210  check js
    17  test js
    22  check markdown
     3  check gh
    67  test gh
     0  check drill
     3  check quest (failed)
    32  check shell
     0  check large_files
     1  check toml
     0  check nix
     0  check justfile
  2352  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.

moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed setup/redundancy.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/py.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed setup/repository.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed bin/rtmp.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/rs.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed draft/qmux-websocket.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed concept/standard.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed bin/srt.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed concept/stats.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/swift.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed bin/studio.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed concept/transport.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed setup/troubleshooting.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed setup/upgrade.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed bin/rtc.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed concept/use-case.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/boy/element.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/publish/support/element.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Generated �[36mllms-full.txt�[39m (~�[1m268.3K�[22m tokens, �[1m1.01 MB�[22m) with �[1m89�[22m markdown files
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/watch/support/element.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/hang/util.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/net/zod.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/signals/dom.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/auth.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/hang.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/auth.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/boy.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/clock.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/json.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/json.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/clock.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/hang/cmaf.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/hang.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/libav.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/loc.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/msf.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/hang/container.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/hang/catalog.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/pattern.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/publish.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/net.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/publish/element.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/publish/ui.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/publish.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/publish/support.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/room.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/qmux.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/net.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/room.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/signals.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/signals.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/signals/react.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/signals/solid.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/ui.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/video.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/watch.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/video.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/watch/element.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/watch/support.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/watch/ui.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed bin/relay/auth.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed lib/js/api/watch.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed bin/relay/cluster.md
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m�[32m✓�[39m Processed bin/relay/config.md
moq-doc:build         | �[33m
moq-doc:build         | (!) Some chunks are larger than 500 kB after minification. Consider:
moq-doc:build         | - Using dynamic import() to code-split the application
moq-doc:build         | - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
moq-doc:build         | - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.�[39m
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m  �[1mvitepress-plugin-llms�[22m initialized �[2m(SSR build)�[22m with workDir: �[36m/work/doc�[39m
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m  Build started, file collection cleared
moq-doc:build         | �[34mllmstxt�[39m�[2m » �[22m  Skipping LLMs docs generation in SSR build
moq-doc:build         | �[32m✓�[0m building client + server bundles...
moq-doc:build         | - rendering pages...
moq-doc:build         | �[32m✓�[0m rendering pages...
moq-doc:build         | build complete in 69.81s.
moq-doc:build         | Done in 70.41s
js: check finished in 209.08s
==> test js
python3 ../sh/js/workspace.py test '/tmp/tmp.Aw0VHnRblW'
js: selecting @moq/audio-quality @moq/bench-browser @moq/boy @moq/demo @moq/demo-boy @moq/demo-carla @moq/interop-browser @moq/publish @moq/room @moq/ui @moq/video-test @moq/watch moq-doc moq-doc-api
[0.04ms] ".env"
bun install v1.4.2 (744846f84
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 15:01
@moq-bot
moq-bot Bot disabled auto-merge October 31, 2026 22:43
@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).

  test_api 0.7.14 (0.7.15 available)
  test_core 0.6.20 (0.6.21 available)
  vm_service 15.3.0 (15.4.0 available)
  web 1.1.1 (1.1.2 available)
Got dependencies!
14 packages have newer versions incompatible with dependency constraints.
Try `dart pub outdated` for more information.
Resolving dependencies...
Downloading packages...
  _fe_analyzer_shared 105.0.0 (111.0.0 available)
  analyzer 14.1.0 (14.7.0 available)
  code_assets 2.0.0 (2.1.0 available)
  coverage 1.15.1 (1.16.0 available)
  crypto 3.0.7 (3.0.8 available)
  frontend_server_client 4.0.0 (4.2.0 available)
  http_multi_server 3.2.2 (3.2.3 available)
! moq_ffi 0.0.0-dev from path ../moq_ffi (overridden)
  shelf 1.4.2 (1.4.3 available)
  shelf_static 1.1.3 (1.2.0 available)
  test 1.32.0 (1.33.0 available)
  test_api 0.7.14 (0.7.15 available)
  test_core 0.6.20 (0.6.21 available)
  vm_service 15.3.0 (15.4.0 available)
  web 1.1.1 (1.1.2 available)
Got dependencies!
14 packages have newer versions incompatible with dependency constraints.
Try `dart pub outdated` for more information.
Publishing moq 0.1.0 to https://pub.dev:
├── CHANGELOG.md (<1 KB)
├── LICENSE (1 KB)
├── MIGRATE.md (16 KB)
├── README.md (1 KB)
├── analysis_options.yaml (<1 KB)
├── bench
│   └── ffi.dart (5 KB)
├── lib
│   ├── audio.dart (2 KB)
│   ├── json.dart (2 KB)
│   ├── media.dart (4 KB)
│   ├── moq.dart (<1 KB)
│   ├── src
│   │   ├── aliases.dart (7 KB)
│   │   ├── client.dart (10 KB)
│   │   ├── durations.dart (<1 KB)
│   │   ├── epoch.dart (<1 KB)
│   │   ├── server.dart (5 KB)
│   │   ├── stream.dart (2 KB)
│   │   └── version.dart (<1 KB)
│   └── video.dart (3 KB)
├── pubspec.yaml (<1 KB)
└── test
    ├── cancellation_test.dart (7 KB)
    ├── docs
    │   ├── prelude.dart (<1 KB)
    │   └── samples.dart (4 KB)
    └── moq_test.dart (24 KB)

Total compressed archive size: 30 KB.
Validating package...
Package validation found the following hint:
* Non-dev dependencies are overridden in pubspec.yaml.
  
  This indicates you are not testing your package against the same versions of its
  dependencies that users will have when they use it.
  
  This might be necessary for packages with cyclic dependencies.
  
  Please be extra careful when publishing.
The server may enforce additional checks.

Package has 0 warnings and 1 hint.
ci: check quest failed
ci: test rs failed
ci: seconds per module
   253  check py
    55  test py
   848  check rs
   226  test rs (failed)
  1708  check rs_shapes
   296  check c
   210  check cpp
    58  check obs_compile
   247  check js
    45  test js
    15  check markdown
     3  check gh
    69  test gh
   260  check kt
     0  check swift
   134  check go
     0  check drill
     3  check quest (failed)
    16  check shell
     1  check large_files
     1  check toml
     0  check nix
     0  check justfile
   170  check dart
  2953  wall time
error: recipe `ci` failed on line 106 with exit code 1

.

@moq-bot
moq-bot Bot enabled auto-merge (squash) October 31, 2026 23:22
@moq-bot moq-bot Bot added the quest:merge label Oct 31, 2026
@moq-bot
moq-bot Bot enabled auto-merge (squash) November 1, 2026 12:55
@moq-bot moq-bot Bot added the quest:merge label Nov 1, 2026
@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 12:59
@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: the batch check failed (exit 1).

   Compiling smol_str v0.2.2
   Compiling cast v0.3.0
   Compiling criterion-plot v0.8.2
   Compiling moxcms v0.8.1
   Compiling moka v0.12.16
   Compiling png v0.18.1
   Compiling postcard v1.1.3
   Compiling http-cache-semantics v3.0.0
   Compiling ecolor v0.36.2
   Compiling harfrust v0.12.0
   Compiling skrifa v0.44.0
   Compiling chrono v0.4.45
   Compiling rayon v1.12.0
   Compiling vello_cpu v0.1.0
   Compiling plotters v0.3.7
   Compiling ciborium v0.2.2
   Compiling unicode-general-category v1.1.0
   Compiling tinytemplate v1.2.1
   Compiling simple_asn1 v0.6.4
   Compiling pem v3.0.6
   Compiling gstreamer-audio-sys v0.25.4
   Compiling glib v0.22.10
   Compiling kstring v2.0.5
   Compiling option-operations v0.6.1
   Compiling mp4ra-rust v0.3.0
   Compiling socket2 v0.5.10
   Compiling page_size v0.6.0
   Compiling nix v0.31.3
   Compiling byteorder-lite v0.1.0
   Compiling anes v0.1.6
   Compiling self_cell v1.3.0
   Compiling epaint_default_fonts v0.36.2
   Compiling muldiv v1.0.1
   Compiling test-env v0.0.1 (/work/rs/test-env)
   Compiling nohash-hasher v0.2.0
   Compiling convert_case v0.4.0
   Compiling oorandom v11.1.5
   Compiling mpeg4-audio-const v0.2.0
   Compiling rfc6381-codec v0.2.0
   Compiling criterion v0.8.2
   Compiling derive_more v0.99.20
   Compiling epaint v0.36.2
   Compiling image v0.25.10
   Compiling jsonwebtoken v11.1.0
   Compiling uniffi_internal_macros v0.32.2
   Compiling gst-plugin-version-helper v0.8.4
   Compiling http-cache v1.0.0-alpha.8
   Compiling p384 v0.14.0
   Compiling p256 v0.14.0
   Compiling gstreamer v0.25.4
   Compiling str0m-aws-lc-rs v0.6.0
   Compiling is v0.11.1
   Compiling reqwest-middleware v0.5.2
   Compiling sctp-proto v0.10.5
   Compiling calloop v0.14.5
   Compiling pkcs1 v0.7.5
   Compiling combine v4.6.8
   Compiling pin-project-internal v1.1.13
   Compiling sha-1 v0.10.1
   Compiling sha1 v0.10.7
   Compiling pbkdf2 v0.12.2
   Compiling arc-swap v1.9.2
   Compiling accesskit v0.24.1
   Compiling keyed_priority_queue v0.4.2
   Compiling streaming-stats v0.2.3
   Compiling bstr v1.13.1
   Compiling jiff-core v0.1.1
   Compiling bitstream-io v2.6.0
   Compiling spin v0.10.1
   Compiling array-init v2.1.0
   Compiling arraydeque v0.5.1
   Compiling fallible-iterator v0.3.0
   Compiling take-until v0.2.0
   Compiling atomic_refcell v0.1.14
   Compiling srt-protocol v0.4.4
   Compiling sdp-types v0.1.8
   Compiling egui v0.36.2
   Compiling crc-fast v1.10.0
   Compiling h264-reader v0.8.0
   Compiling jiff v0.2.37
   Compiling axum-server v0.8.0
   Compiling pin-project v1.1.13
   Compiling stun-types v2.0.3
error: recipe `test-changed` failed on line 82 with exit code 143
ci: check js failed
ci: seconds per module
    99  check rs
    68  test rs (cancelled)
   167  check js (failed)
    72  check flake
     0  check drill
     3  check quest
     1  check ts_paths
    16  check shell
     0  check large_files
     0  check toml
     1  check nix
     0  check justfile
   167  wall time
error: recipe `ci` failed on line 107 with exit code 1

.

@moq-bot

moq-bot Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

codex / Codex land fixer: This maintainer pick already used its mechanical fi·x attempt. Run /quest-iterate to diagnose the repeated failure, then pick it again.

(written by codex / Codex)

@kixelated
kixelated enabled auto-merge (squash) November 1, 2026 13:29
@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 18:41
@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: the batch check failed (exit 101).

@moq/demo:build    | computing gzip size...
@moq/demo:build    | src/dist/assets/capture-worker.js                0.64 kB
@moq/demo:build    | src/dist/assets/capture-worklet.js               1.37 kB
@moq/demo:build    | src/dist/meet.html                               3.78 kB │ gzip:   1.28 kB
@moq/demo:build    | src/dist/assets/render-worklet.js                4.70 kB
@moq/demo:build    | src/dist/assets/favicon-CGEMJmM0.svg             4.89 kB │ gzip:   2.35 kB
@moq/demo:build    | src/dist/stats.html                              8.22 kB │ gzip:   2.09 kB
@moq/demo:build    | src/dist/watch.html                              8.42 kB │ gzip:   2.66 kB
@moq/demo:build    | src/dist/publish.html                           14.89 kB │ gzip:   3.64 kB
@moq/demo:build    | src/dist/assets/highlight-B-oHczHB.css           0.85 kB │ gzip:   0.40 kB
@moq/demo:build    | src/dist/assets/pool-DVF8Jgvh.css               38.30 kB │ gzip:   6.69 kB
@moq/demo:build    | src/dist/assets/srt-parser-Ck3R_nRW.js           0.46 kB │ gzip:   0.31 kB
@moq/demo:build    | src/dist/assets/capture-worker-CVcZR5CB.js       0.73 kB │ gzip:   0.44 kB
@moq/demo:build    | src/dist/assets/rolldown-runtime-pP25SEvz.js     0.98 kB │ gzip:   0.56 kB
@moq/demo:build    | src/dist/assets/errors-DjRtVeid.js               1.13 kB │ gzip:   0.35 kB
@moq/demo:build    | src/dist/assets/capture-worklet-T-CDLjoL.js      1.46 kB │ gzip:   0.65 kB
@moq/demo:build    | src/dist/assets/consumer-B0nhu6nH.js             2.06 kB │ gzip:   0.97 kB
@moq/demo:build    | src/dist/assets/ssa-parser-CQw7eY7Y.js           4.66 kB │ gzip:   2.04 kB
@moq/demo:build    | src/dist/assets/render-worklet-nlcL_B5J.js       4.79 kB │ gzip:   1.77 kB
@moq/demo:build    | src/dist/assets/cmaf-wEt44ZDF.js                 5.53 kB │ gzip:   2.31 kB
@moq/demo:build    | src/dist/assets/stats-B9InyboM.js               11.19 kB │ gzip:   4.13 kB
@moq/demo:build    | src/dist/assets/viz-BiV62JJw.js                 11.28 kB │ gzip:   3.60 kB
@moq/demo:build    | src/dist/assets/meet-BupHZSYW.js                12.31 kB │ gzip:   4.29 kB
@moq/demo:build    | src/dist/assets/captions-BTu0StMP.js            17.78 kB │ gzip:   6.91 kB
@moq/demo:build    | src/dist/assets/support-37RxXITs.js             23.70 kB │ gzip:   9.44 kB
@moq/demo:build    | src/dist/assets/libav-opus-aac-af-B6f0W5UF.js   26.20 kB │ gzip:   7.38 kB
@moq/demo:build    | src/dist/assets/publish-Dozx61IV.js             45.84 kB │ gzip:  13.57 kB
@moq/demo:build    | src/dist/assets/main-0rcamW3Q.js                49.79 kB │ gzip:  11.51 kB
@moq/demo:build    | src/dist/assets/highlight-CAMdJ_SX.js           51.11 kB │ gzip:  16.93 kB
@moq/demo:build    | src/dist/assets/element-D8KM4yWs.js             56.54 kB │ gzip:  17.98 kB
@moq/demo:build    | src/dist/assets/watch-BUCGEsJY.js               58.39 kB │ gzip:  16.22 kB
@moq/demo:build    | src/dist/assets/element-CWjm0XCX.js             73.86 kB │ gzip:  22.49 kB
@moq/demo:build    | src/dist/assets/connection-PAEX2X18.js         107.73 kB │ gzip:  32.12 kB
@moq/demo:build    | src/dist/assets/src-BdGSSZKQ.js                380.95 kB │ gzip:  97.82 kB
@moq/demo:build    | src/dist/assets/pool-CTUTBvHa.js               458.25 kB │ gzip: 136.09 kB
@moq/demo:build    | 
@moq/demo:build    | �[32m✓ built in 6.75s�[39m
@moq/demo:build    | Done in 8.45s
@moq/publish:build | �[36mvite v8.3.4 �[32mbuilding client environment for production...�[36m�[39m
@moq/publish:build | transforming...
@moq/publish:build | ✓ 137 modules transformed.
@moq/publish:build | rendering chunks...
@moq/publish:build | computing gzip size...
@moq/publish:build | dist/assets/capture-worker.js       0.64 kB
@moq/publish:build | dist/assets/capture-worklet.js      1.37 kB
@moq/publish:build | dist/capture-worker-BJ0xkcGF.js     0.81 kB │ gzip:   0.50 kB │ map:     1.00 kB
@moq/publish:build | dist/index.js                       1.06 kB │ gzip:   0.54 kB │ map:     1.57 kB
@moq/publish:build | dist/support/index.js               1.16 kB │ gzip:   0.65 kB │ map:     4.26 kB
@moq/publish:build | dist/support/element.js             1.36 kB │ gzip:   0.54 kB │ map:     3.20 kB
@moq/publish:build | dist/capture-worklet-CRiEEPvQ.js    1.54 kB │ gzip:   0.70 kB │ map:     1.74 kB
@moq/publish:build | dist/video-CKv257p3.js              4.83 kB │ gzip:   1.94 kB │ map:    19.44 kB
@moq/publish:build | dist/microphone-BIV2nutQ.js         8.09 kB │ gzip:   2.43 kB │ map:    35.77 kB
@moq/publish:build | dist/element.js                    10.88 kB │ gzip:   3.19 kB │ map:    40.35 kB
@moq/publish:build | dist/ui/element.js                 31.00 kB │ gzip:   7.87 kB │ map:    47.32 kB
@moq/publish:build | dist/encoder-Dw1zOOJC.js           61.74 kB │ gzip:  18.12 kB │ map:   291.20 kB
@moq/publish:build | dist/src-BhV_c1Db.js              483.22 kB │ gzip: 111.10 kB │ map: 1,872.47 kB
@moq/publish:build | 
@moq/publish:build | �[32m✓ built in 4.02s�[39m
@moq/publish:build | ✍️  Rewriting package.json...
@moq/publish:build | 🔗 Converted @moq/clock: workspace:^ → ^0.1.0
@moq/publish:build | 🔗 Converted @moq/hang: workspace:^ → ^0.5.2
@moq/publish:build | 🔗 Converted @moq/json: workspace:^ → ^0.4.2
@moq/publish:build | 🔗 Converted @moq/net: workspace:^ → ^0.4.2
@moq/publish:build | 🔗 Converted @moq/signals: workspace:^ → ^0.2.5
@moq/publish:build | 🔗 Converted @moq/ui: workspace:^ → ^0.1.0
@moq/publish:build | 🔗 Converted @moq/video: workspace:^ → ^0.1.0
@moq/publish:build | 📄 Copying README.md...
@moq/publish:build | 🔍 Running publint...
@moq/publish:build | 📦 Package built successfully in dist/
@moq/publish:build | Done in 7.16s
@moq/room:build    | ✍️  Rewriting package.json...
@moq/room:build    | 🔗 Converted @moq/clock: workspace:^ → ^0.1.0
@moq/room:build    | 🔗 Converted @moq/hang: workspace:^ → ^0.5.2
@moq/room:build    | 🔗 Converted @moq/json: workspace:^ → ^0.4.2
@moq/room:build    | 🔗 Converted @moq/net: workspace:^ → ^0.4.2
@moq/room:build    | 🔗 Converted @moq/publish: workspace:^ → ^0.5.2
@moq/room:build    | 🔗 Converted @moq/signals: workspace:^ → ^0.2.5
@moq/room:build    | 🔗 Converted @moq/watch: workspace:^ → ^0.6.2
@moq/room:build    | 📄 Copying README.md...
@moq/room:build    | 🔍 Running publint...
@moq/room:build    | 📦 Package built successfully in dist/
@moq/room:build    | ✍️  Generating jsr.json...
@moq/room:build    | 📦 jsr.json written
@moq/room:build    | Done in 1.09s
error: recipe `check-changed` failed on line 31 with exit code 143
ci: check rs failed
ci: seconds per module
   246  check rs (failed)
   246  check js (cancelled)
    78  check flake
     0  check drill
     7  check quest
     6  check ts_paths
    53  check shell
     0  check large_files
     2  check toml
     1  check nix
     1  check justfile
   247  wall time
error: recipe `ci` failed on line 107 with exit code 101

.

@moq-bot
moq-bot Bot enabled auto-merge (squash) November 1, 2026 19:15
@moq-bot moq-bot Bot added the quest:merge label Nov 1, 2026
@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 19:23
@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: the batch check failed (exit 1).

Checking moq-pattern...
Checking moq-quic...
Checking moq-relay...
Checking moq-room...
Checking moq-rtc...
Checking moq-rtmp...
Checking moq-rtsp...
Checking moq-scene...
Checking moq-shaper...
Checking moq-sign...
Checking moq-sock...
Checking moq-srt...
Checking moq-stats...
Checking moq-studio...
Checking moq-tokio...
Checking moq-transcode...
Checking moq-uring...
Checking moq-v4l...
Checking moq-video...
Checking qmux...
Checking test-env...
Checking uniffi-bindgen...
Checking macros...
Checking fuzz...
Checking fuzz...
==> test rs
sh/rs/select.sh test "$LIST"
rs: selecting the workspace
rs: selecting the workspace
CARGO_BUILD_WARNINGS=deny RUSTC_WORKSPACE_WRAPPER='/nix/store/4klbl675argl2irhl89zrh2n14wilzx9-rust-minimal-1.98.1/bin/clippy-driver' bash sh/rs/nextest.sh cargo nextest run --locked --tests "$@"
   Compiling kio-macros v0.1.0 (/work/rs/kio/macros)
   Compiling moq-pattern v0.1.2 (/work/rs/moq-pattern)
   Compiling moq-sock v0.2.0 (/work/rs/moq-sock)
   Compiling kio v0.6.2 (/work/rs/kio)
   Compiling moq-msf v0.5.1 (/work/rs/moq-msf)
   Compiling bench-harness v0.0.1 (/work/rs/bench-harness)
   Compiling test-env v0.0.1 (/work/rs/test-env)
   Compiling moq-video v0.1.10 (/work/rs/moq-video)
   Compiling moq-nvenc v0.1.2 (/work/rs/moq-nvenc)
   Compiling moq-v4l v0.1.0 (/work/rs/moq-v4l)
   Compiling getrandom v0.4.3
   Compiling moq-gst v0.4.12 (/work/rs/moq-gst)
   Compiling libmoq v0.6.12 (/work/rs/libmoq)
   Compiling tempfile v3.27.0
   Compiling rand v0.10.3
   Compiling moq-native v0.20.0 (/work/rs/moq-native)
   Compiling uniffi_pipeline v0.32.2
   Compiling cbindgen v0.29.4
   Compiling uniffi_meta v0.32.2
   Compiling moq-net v0.3.10 (/work/rs/moq-net)
   Compiling moq-congestion v0.1.0 (/work/rs/moq-congestion)
   Compiling moq-ice v0.1.0 (/work/rs/moq-ice)
   Compiling moq-auth v0.2.1 (/work/rs/moq-auth)
   Compiling moq-quic v0.1.0 (/work/rs/moq-quic)
   Compiling moq-shaper v0.0.1 (/work/rs/moq-shaper)
   Compiling uniffi_macros v0.32.2
   Compiling moq-auth v0.2.1
   Compiling moq-c v0.7.0 (/work/rs/moq-c)
   Compiling uniffi v0.32.2
   Compiling moq-json v0.5.8 (/work/rs/moq-json)
   Compiling moq-loc v0.2.19 (/work/rs/moq-loc)
   Compiling qmux v0.7.0 (/work/rs/qmux)
   Compiling moq-uring v0.0.12 (/work/rs/moq-uring)
   Compiling moq-archive v0.0.11 (/work/rs/moq-archive)
   Compiling moq-e2ee v0.0.11 (/work/rs/moq-e2ee)
   Compiling hang v0.21.11 (/work/rs/hang)
   Compiling moq-tokio v0.19.23 (/work/rs/moq-tokio)
   Compiling moq-stats v0.2.12 (/work/rs/moq-stats)
   Compiling moq-mux v0.10.11 (/work/rs/moq-mux)
   Compiling moq-net-tests v0.0.0 (/work/rs/moq-net-tests)
   Compiling moq-relay v0.17.2 (/work/rs/moq-relay)
   Compiling moq-audio v0.1.10 (/work/rs/moq-audio)
   Compiling moq-hls v0.5.11 (/work/rs/moq-hls)
   Compiling moq-rtmp v0.3.11 (/work/rs/moq-rtmp)
   Compiling moq-rtc v0.3.12 (/work/rs/moq-rtc)
   Compiling moq-srt v0.3.11 (/work/rs/moq-srt)
   Compiling moq-rtsp v0.1.0 (/work/rs/moq-rtsp)
   Compiling moq-bench v0.0.1 (/work/rs/moq-bench)
   Compiling moq-room v0.2.11 (/work/rs/moq-room)
   Compiling moq-scene v0.1.0 (/work/rs/moq-scene)
   Compiling moq-carla-bridge v0.1.0 (/work/demo/carla/bridge)
   Compiling moq-transcode v0.1.10 (/work/rs/moq-transcode)
   Compiling moq-cli v0.14.2 (/work/rs/moq-cli)
error: recipe `test-changed` failed on line 82 with exit code 143
ci: check js failed
ci: seconds per module
   158  check rs
   145  test rs (cancelled)
   292  check js (failed)
   118  check flake
     1  check drill
     4  check quest
     2  check ts_paths
    34  check shell
     0  check large_files
     1  check toml
     0  check nix
     0  check justfile
   304  wall time
error: recipe `ci` failed on line 107 with exit code 1

.

@moq-bot

moq-bot Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

codex / Codex land fixer: This maintainer pick already used its mechanical fi·x attempt. Run /quest-iterate to diagnose the repeated failure, then pick it again.

(written by codex / Codex)

kixelated and others added 2 commits November 1, 2026 13:58
stripInternal drops the @internal Slot from publication.d.ts, but the
non-internal makeRendition still named it, so rendition-internal.d.ts
imported a missing member and the API report check failed. makeRendition
is broadcast-only plumbing that the package never re-exports, so mark it
@internal too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated enabled auto-merge (squash) November 1, 2026 22:18
@kixelated
kixelated added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit 26732b9 Nov 2, 2026
6 checks passed
@kixelated
kixelated deleted the quest/m2/publish-publication branch November 2, 2026 09:38
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