Skip to content

fix(net): lite-05/06 close waits for the subscriber's FIN; drop the legacy close quest - #7296

Merged
kixelated merged 90 commits into
mainfrom
quest/m1/lite-legacy-close-drain
Nov 2, 2026
Merged

kixelated merged 90 commits into
mainfrom
quest/m1/lite-legacy-close-drain

Conversation

@kixelated

@kixelated kixelated commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

On lite-05/06, graceful close waited for transport acknowledgements, which do not prove the subscriber received a finished track's tail. Closing the receiving transport can discard unread data.

Approach

Use the existing subscriber-FIN drain from lite-05, where SUBSCRIBE_END identifies the owed groups. Rust and JS wait for that FIN within the existing one-second close deadline. Preserve the expanded delayed-tail, withheld-FIN, and FIN-release tests. Update the close/shutdown documentation across the bindings.

Impact

  • Public API: no signature changes. Swift changes only the documentation comment on Session.shutdown(); no Swift implementation, generated Swift code, or package definition changes.
  • Wire: no framing or message changes. On lite-05/06, including default lite-06, close now waits for subscriber FIN and reports the existing timeout if the peer withholds it. Subscribers finish only their send half after settling the tail.
  • lite-01..04 keep the transport-ACK drain; IETF behavior is unchanged. The regenerated Dart binding changes the shutdown checksum because the UniFFI documentation changed.

Decisions

  1. ✅ Maintainer, 2026-10-30: lite-01..04 keep ACK-only drain. Their tail settles on grace expiry, so waiting for FIN would add a timer wait. The completed quest and its milestone link are deleted.
  2. ✅ Maintainer, 2026-10-30: accept the mock-based reproduction; no Chromium harness quest.

Alternatives

Waiting for subscriber FIN on lite-01..04 would run into the existing drain deadline with default grace. A transport ACK alone does not establish application delivery on lite-05/06.

Validation

  • Head 33eca67879f00d60eb6ee4517b6127056f2c524e integrates origin/main at f882be3ded89c8861bdc5f643f49128571a2cafd without hand edits or conflicts. The lite-05/06 subscriber-FIN contract and expanded tests are unchanged.
  • quest gate nix develop --ignore-environment --keep HOME --keep USER --keep PATH --command just ci origin/main: passed, exit 0. All 9,473 selected Rust tests passed (109 skipped), including both previously reported QUIC-close and GStreamer routing flakes. JS lint/build/tests, 113 Python tests, C/C++/OBS, Kotlin JVM tests/publication checks, Go race tests, Dart, and repository checks passed.
  • Focused just rs test -p moq-net --test integration session_close: 27 passed.
  • quest check --base origin/main --branch quest/m1/lite-legacy-close-drain: 599 documents valid. git diff --check: clean.
  • Swift formatting passed. The repository's just swift check intentionally skips build/tests on this Linux host without Swift; this is an environment limit, not a Swift source defect. Platform was dispatched on this head for macOS Swift build/tests and simulator checks; its result is pending and was not awaited.
  • Initial runs inherited an environment in which mbx failed with E2BIG before compilation; the clean Nix invocation above completed without cache-disabling overrides.
  • quest gate nix develop --ignore-environment --keep HOME --keep USER --keep PATH --command just test interop --all: passed, exit 0. The full publisher/subscriber matrix, authorization refusals, finished-media tails, CLI FETCH, and finite close-tail cases passed.

Review

Head 33eca67879f00d60eb6ee4517b6127056f2c524e: no new round, under the quest guide's conflict-free base-merge exemption. This iteration contains only the conflict-free integration of current main and the recorded PR head b64224b0223bb0955a9d5308e53b961b9c3ceb14, with no implementation edits.

The existing review chain remains applicable: local Codex gpt-6.1-sol, medium effort, quest review --base origin/main, head 55bbc932998889e4c0c27c92ce591b296c175f36, session 01a18e78-316b-7f70-b2cf-1d6b78d50441, round 1, no findings; later mechanical base integration and the comments-only review skip recorded on b64224b022. No online review findings require repair.

Follow-ups

The intermittent backend::quic_client_close_drains_finished_track routing refusal is being repaired separately by the iteration of moq-dev/moq#7520. This PR does not duplicate that repair. No new maintainer decisions.

(Written by GPT-6.1 Sol)

kixelated and others added 4 commits October 29, 2026 23:43
A transport ACK does not say the subscriber read the final group, and a
receiver may drop unread bytes on close. lite-05/06 subscribers already FIN
their half of the subscribe stream once SUBSCRIBE_END's tail settles, so the
publisher's drain now waits for that FIN, as lite-07 does, in Rust and JS.

lite-01..04 carry no SUBSCRIBE_END, so their subscriber FINs only after its
grace timer; they keep the ACK drain pending a maintainer decision.

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 A lite-01..06 graceful close delivers the final group fix(net): lite-05/06 close waits for the subscriber's FIN Oct 30, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title fix(net): lite-05/06 close waits for the subscriber's FIN fix(net): lite-05/06 close waits for the subscriber's FIN; drop the legacy close quest Oct 30, 2026
@kixelated
kixelated marked this pull request as ready for review October 30, 2026 21:00
@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-30T21:01:34.727441Z 55bbc93 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 enabled auto-merge (squash) October 30, 2026 21:00
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

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 51 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: 434f7c3b-af65-43b8-a708-a132d5e39608
Commits

Reviewing files that changed from the base of the PR and between 88e6990 and b64224b.

Files selected for processing: 31
  • dart/moq/lib/src/client.dart
  • dart/moq_ffi/lib/src/moq.dart
  • doc/bin/obs.md
  • doc/lib/cpp/index.md
  • doc/lib/dart/index.md
  • doc/lib/go/index.md
  • doc/lib/js/net.md
  • doc/lib/kt/index.md
  • doc/lib/py/index.md
  • doc/lib/rs/moq-net.md
  • doc/lib/swift/index.md
  • go/wrapper/session.go
  • js/net/src/connection/established.ts
  • js/net/src/lite/connection.test.ts
  • js/net/src/lite/connection.ts
  • js/net/src/lite/publisher.ts
  • js/net/src/lite/subscriber.ts
  • js/net/src/lite/version.ts
  • kt/moq/src/jvmAndAndroidMain/kotlin/dev/moq/Moq.kt
  • py/moq-rs/README.md
  • py/moq-rs/moq/session.py
  • quest/m1/README.md
  • quest/m1/lite-legacy-close-drain.md
  • rs/moq-ffi/src/session.rs
  • rs/moq-ffi/src/test.rs
  • rs/moq-net/src/lite/publisher.rs
  • rs/moq-net/src/lite/version.rs
  • rs/moq-net/src/session.rs
  • rs/moq-net/tests/integration/session_close.rs
  • rs/moq-tokio/src/connection.rs
  • swift/Sources/Moq/Client.swift
  • 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

@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: 55bbc93

No actionable bugs found. Extending the existing subscriber-FIN drain to lite-05/06 is a focused fix: SUBSCRIBE_END supplies the tail boundary, while lite-01..04 retain their documented ACK-only behavior. Reusing the existing feature boundary avoids additional teardown machinery; the Rust delayed-tail/withheld-FIN tests and JS FIN-release/deadline cases cover the changed contract.

Verification limits: static review of the diff and surrounding Rust/JS publisher/subscriber paths, version gates, and tests only. I did not run tests or verify real WebTransport/QMux interoperability.

@moq-bot
moq-bot Bot disabled auto-merge October 31, 2026 05:40
@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_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: 29 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 gh failed
ci: seconds per module
   176  check py
    32  test py
   460  check rs
   304  test rs
   937  check rs_shapes
   223  check c
   158  check cpp
    19  check obs_compile
   213  check js
    49  test js
    31  check markdown
     2  check gh (failed)
   103  check kt
    84  check flake
     0  check swift
   330  check go
     1  check drill
     3  check quest
     1  check obs
     1  check ts_paths
    18  check shell
     1  check large_files
     4  check toml
     1  check nix
     0  check justfile
   211  check dart
  1912  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.

…inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-pattern#0.1.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.510300Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-loc#0.2.19 not found in Cargo.lock
�[2m2026-10-31T05:08:12.531747Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-msf#0.5.1 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558253Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/hang#0.21.11 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558290Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio#0.6.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558299Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio/macros#kio-macros@0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558307Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-clock#0.11.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558315Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-clock/macros#moq-clock-macros@0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558330Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-json#0.5.8 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558338Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-loc#0.2.19 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558346Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-msf#0.5.1 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558353Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-mux#0.10.11 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558371Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-net#0.3.10 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558380Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-nvenc#0.1.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.558387Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-pattern#0.1.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.560927Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-video#0.1.10 not found in Cargo.lock
�[2m2026-10-31T05:08:12.582964Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-nvenc#0.1.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.602086Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-v4l#0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.618145Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/libmoq#0.6.12 not found in Cargo.lock
�[2m2026-10-31T05:08:12.644467Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio#0.6.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.644504Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio/macros#kio-macros@0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.644513Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-clock#0.11.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.644522Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-clock/macros#moq-clock-macros@0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.644530Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-net#0.3.10 not found in Cargo.lock
�[2m2026-10-31T05:08:12.644547Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-pattern#0.1.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.646871Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-archive#0.0.11 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673020Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/hang#0.21.11 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673052Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio#0.6.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673061Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio/macros#kio-macros@0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673070Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-clock#0.11.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673079Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-clock/macros#moq-clock-macros@0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673087Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-json#0.5.8 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673095Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-loc#0.2.19 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673107Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-msf#0.5.1 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673116Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-mux#0.10.11 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673132Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-net#0.3.10 not found in Cargo.lock
�[2m2026-10-31T05:08:12.673142Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-pattern#0.1.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.675005Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-audio#0.1.10 not found in Cargo.lock
�[2m2026-10-31T05:08:12.700424Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio#0.6.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.700463Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio/macros#kio-macros@0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.700473Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-clock#0.11.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.700482Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-clock/macros#moq-clock-macros@0.1.0 not found in Cargo.lock
�[2m2026-10-31T05:08:12.700490Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-pattern#0.1.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.702902Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/moq-auth#0.2.1 not found in Cargo.lock
�[2m2026-10-31T05:08:12.731250Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hash for package ID path+file:///work/rs/kio#0.6.2 not found in Cargo.lock
�[2m2026-10-31T05:08:12.731284Z�[0m �[34mDEBUG�[0m �[1mdevelop_cmd�[0m:�[1mbuild_wheels�[0m:�[1mbuild_wheels_inner�[0m:�[1mgenerate�[0m: �[2mcargo_cyclonedx::generator�[0m�[2m:�[0m Hquest: fixer agent exited 101

(written by Codex)

@kixelated
kixelated enabled auto-merge (squash) October 31, 2026 14:59
@moq-bot
moq-bot Bot disabled auto-merge October 31, 2026 20:36
@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 101).

  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: test rs failed
ci: check rs_shapes failed
ci: seconds per module
   141  check py
    74  test py
   511  check rs
   306  test rs (failed)
   840  check rs_shapes (failed)
   231  check c
   208  check cpp
    21  check obs_compile
   240  check js
    57  test js
    35  check markdown
     4  check gh
   122  test gh
   158  check kt
    78  check flake
     0  check swift
   304  check go
     1  check drill
     2  check quest
    13  check obs
     9  check ts_paths
    24  check shell
     3  check large_files
     3  check toml
     4  check nix
     0  check justfile
   230  check dart
  1888  wall time
error: recipe `ci` failed on line 106 with exit code 101

.

@moq-bot moq-bot Bot removed the quest:merge label Oct 31, 2026
@moq-bot
moq-bot Bot enabled auto-merge (squash) October 31, 2026 20:38
@moq-bot moq-bot Bot added the quest:merge label Oct 31, 2026
@moq-bot

moq-bot Bot commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

codex / Codex land fixer: Requeued unchanged: Healthy in batch checks; both failed Rust gates trace to PR &#35;7295 test fixtures.

(written by codex / Codex)

kixelated and others added 7 commits November 2, 2026 08:17
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…7559)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
Co-authored-by: moq-bot <moq-bot@users.noreply.github.com>
…efault (#7367)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
Co-authored-by: Codex <noreply@openai.com>
kixelated and others added 5 commits November 2, 2026 15:07
)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
…ith bitstream-io (#7398)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
Co-authored-by: moq-bot <moq-bot@users.noreply.github.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
…7491)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: quest fixer <quest-fixer@localhost>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@kixelated
kixelated added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit 103e98e Nov 2, 2026
12 checks passed
@kixelated
kixelated deleted the quest/m1/lite-legacy-close-drain branch November 2, 2026 17:39
kixelated added a commit that referenced this pull request Nov 2, 2026
subscriber-fin-fold drops its Required on the deleted legacy close quest:
#7296 landed and made both predicates agree on every version. js-close-drain
notes that #7296 reworked its cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Nov 3, 2026
Main's #7306 keeps a cleanly finished subscription's join in `Retain`, bounded by
its request grant and gate. It now holds the request's `RequestBinding` and the
gate the subscription was held to (the named one once it named a token), so a
token named by an update still bounds the retained join.

Main's #7439/#7296 made `poll_withdrawn` and `until_withdrawn` take
`fin_cancels`; `admit_request` takes it too, `false` for TRACK_STATUS as main's
TRACK_STATUS path does, `fin_cancels(version)` elsewhere.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Nov 3, 2026
lite-close-drain-queued is done by #7296 and #7553, and center-play-audio
folds into main's audio-only-play. Index lines follow the rewritten quests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

4 participants