Skip to content

refactor(relay): render /metrics through prometheus-client - #7363

Merged
moq-bot[bot] merged 8 commits into
mainfrom
quest/m2/relay-prometheus-client
Nov 1, 2026
Merged

moq-bot[bot] merged 8 commits into
mainfrom
quest/m2/relay-prometheus-client

Conversation

@kixelated

@kixelated kixelated commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Finishes quest/m2/relay-prometheus-client.md: the relay's /metrics endpoint now renders through prometheus-client 0.25.1 instead of hand-written text exposition.

Summary

  • Golden test first (a08322a349): metrics_series_are_pinned scrapes a fixture covering every source (traffic, sessions, control, accept, stun, drain, refusals, panics, plus io_uring under io-uring). It normalizes the output into kind name{labels} value rows plus one # TYPE row per family, so a renamed, relabeled, retyped, or revalued series fails. It was committed and passing against the old renderer before the switch.
  • Switch (6b3426bce6): each scrape reads the same snapshot as before into a Scrape and encodes it through a per-scrape prometheus-client collector. The hot path is untouched (the Plan's snapshot model). Small helpers (family, counter, gauge, single, render) replace the writeln! blocks, and stun.rs encodes through the same helpers. The io_uring histograms go through encode_histogram after converting the cumulative buckets to the per-bucket counts the crate expects. A new unit test covers that with non-zero counts.
  • The golden passes after the switch. Its only change is comparing labels as a set, because the crate writes a histogram's le before worker, and Prometheus sorts labels on ingest anyway. The re-sorted constants were checked to hold the same 155 rows.
  • Docs: doc/bin/relay/http.md and the module doc now say OpenMetrics. The quest is deleted and quest/m2/audit-deps.md updated.
  • New deps: prometheus-client, prometheus-client-derive-encode, dtoa (protobuf features off). itoa and parking_lot were already in the lock.

Choices made without asking

  • Label stays. The Plan expected the crate's encoder to replace the hand escaping, but 0.25.1 writes label values verbatim (impl EncodeLabelValue for &str → write_str). Label is now an EncodeLabelValue that still escapes \, ", and newlines, and label_values_are_escaped still passes.
  • Served as OpenMetrics. The crate only emits OpenMetrics text (counter families named without _total, a trailing # EOF), so the response's Content-Type is now application/openmetrics-text; version=1.0.0; charset=utf-8 rather than text/plain; version=0.0.4. Labeling OpenMetrics output as the classic format would mismatch the # TYPE names.
  • Text assertions in existing tests now expect the new header and float forms. Integration tests only match sample lines, which are unchanged, so they did not need edits.

Decisions

  1. ✅ Accept the exposition-format changes. Maintainer decision, 2026-10-30. The question was: accept, or no-go? The Plan allows a no-go "if the crate cannot reproduce the existing series without renames". Every sample name, label set, type, and value is unchanged (the golden proves it), but the text around them changes in ways a scraper or dashboard can see:

    • # HELP/# TYPE name counter families without _total (# TYPE moq_relay_bytes counter), so Prometheus's metadata API lists them under that name. Samples are still moq_relay_bytes_total{...}.
    • Content type application/openmetrics-text, plus # EOF.
    • Floats print as 0.0, and histogram bounds as le="1.0" instead of le="1". Prometheus 3 normalizes le to the float form on ingest (per its 3.0 migration guide), but on Prometheus 2 a query pinning le="1" on moq_relay_uring_{sqes,cqes}_per_enter_bucket would need updating. Nothing in this repo queries those.
    • Production code is about the same size (internal.rs is +69 lines outside tests), so the gain is a maintained encoder, not fewer lines.

    Accepted because series identity is preserved, the crate is the Prometheus project's own client, and the golden test now guards future edits.

  2. Report prometheus-client's label-escaping bug upstream? Not approved: nothing is filed on prometheus/client_rust, and Label keeps escaping label values itself.

Checks

  • just check origin/main (through quest gate): all modules pass.
  • cargo test -p moq-relay --lib with --features io-uring,stun (295) and with defaults (279): pass.
  • cargo test -p moq-relay --features io-uring --test integration: 126 passed.
  • cargo clippy -p moq-relay --all-targets -D warnings with io-uring,stun and with defaults: clean.
  • quest check --base origin/main: ok.
  • On 977b064143, with main merged at 878e91b359, these pass: just rs test -p moq-relay (402 tests), just rs test -p moq-relay -p moq-cli -p moq-studio --features moq-relay/io-uring (683 tests, the feature set CI picks), just rs check -p moq-relay --features io-uring, and quest check --base origin/main.

Ejection 2026-11-01T20:24Z (failed_checks)

The batch was this PR plus moq-dev/moq#7258, and its test rs module failed. That failure came from #7258, not this PR. #7258 renames moq-congestion's API, and main's new moq-quic/moq-tokio sim tests (from moq-dev/moq#7377) still used the old names. #7258 has since pushed 8778db5529 ("test(quic): follow congestion API renames in base tests") to fix that. #7258 touches nothing under rs/moq-relay. With current main merged, this PR's relay, cli, and studio tests pass under CI's feature set (above). The only change here is a conflict-free merge of main.

Review

mechanical fix by codex / Codex: Merged base and mechanically re·solved audit text and relay import/test conflicts, preserving both sides. (head 624880e)

  • Reviewer: Codex (quest review), gpt-6.1-sol, medium effort.
  • Head reviewed: 206b388b412a815741db7f2a37bc0b431d1703bb, round 1.
  • Findings: none.
  • Since then: the land fixer's mechanical merge above, the land queue's base merge e81705c6a1, and a conflict-free merge of main, 977b064143. None of these changes behavior, so they need no new review.
  • Online reviewers: CodeRabbit had no actionable comments, Codex gave a thumbs-up, and no review threads are open.

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 4 commits October 30, 2026 05:22
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The relay's /metrics endpoint now encodes through prometheus-client 0.25.1
instead of hand-written text exposition. Each scrape still reads a snapshot
of the existing atomics and encodes it through a per-scrape collector, so
nothing on the hot path changes.

Every series keeps its name, labels, type, and value; the series golden test
passes unchanged apart from comparing labels as a set, since the crate
writes a histogram's `le` first. The exposition is now OpenMetrics text: the
content type is application/openmetrics-text, counter families are named
without `_total` in HELP/TYPE (samples keep it), floats print as `0.0`, and
histogram bounds as `le="1.0"`.

The crate writes label values verbatim, so `Label` still escapes them.

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 Relay metrics through prometheus-client refactor(relay): render /metrics through prometheus-client Oct 30, 2026
@kixelated
kixelated marked this pull request as ready for review October 30, 2026 20:57
@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 6 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: 378f082e-5517-4a9b-9b4b-18f7378bc73d
Commits

Reviewing files that changed from the base of the PR and between e81705c and ef3231b.

Files ignored due to path filters: 1
  • Cargo.lock is excluded by !**/*.lock
Files selected for processing: 7
  • doc/bin/relay/http.md
  • quest/m2/README.md
  • quest/m2/audit-deps.md
  • quest/m2/relay-prometheus-client.md
  • rs/moq-relay/Cargo.toml
  • rs/moq-relay/src/internal.rs
  • rs/moq-relay/src/stun.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: 13534c97-b1b6-457d-bc59-ffa7f10e8e33
Commits

Reviewing files that changed from the base of the PR and between 624880e and e81705c.

Files ignored due to path filters: 1
  • Cargo.lock is excluded by !**/*.lock
Files selected for processing: 1
  • quest/m2/README.md
Files with no reviewable changes: 1
  • quest/m2/README.md

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

Walkthrough

The relay’s /metrics endpoint now uses prometheus-client to encode metric families and returns OpenMetrics 1.0 text. The change updates traffic, session, listener, worker, and STUN metric encoding, along with histogram handling and output tests. Documentation now describes the endpoint format and the completed prometheus-client migration.

Merge Risk: Minimal · previous review e8170

The plan update presents no identified obstacle to merging after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 70.59% 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 clearly and concisely describes the main change: replacing the relay's hand-written /metrics rendering with prometheus-client.
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 pull request description directly explains the migration of the relay /metrics endpoint to prometheus-client, the OpenMetrics output changes, tests, dependencies, and documentation updates. It mat…
Full details: Description check

Explanation

The pull request description directly explains the migration of the relay /metrics endpoint to prometheus-client, the OpenMetrics output changes, tests, dependencies, and documentation updates. It matches the changeset.

Full details: Docstring Coverage

Explanation

Docstring coverage is 70.59% 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 17 functions across 2 files.

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 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:58:17.466151Z 206b388 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

Copy link
Copy Markdown
Collaborator Author

Landing. Maintainer decision (2026-10-30): accept the OpenMetrics format changes. Reporting prometheus-client's label-escaping bug upstream is not approved, so Label keeps escaping label values itself. Codex reviewed 206b388b41 with no findings, and just check origin/main passed on it.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge (squash) October 30, 2026 20:57

@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: 206b388

No actionable bugs found in the changed areas. The direction is sound: retain the existing counters/snapshot model and delegate exposition to the maintained encoder, without introducing a second hot-path registry. The label-escaping wrapper and cumulative-to-per-bucket histogram adapter are justified; the golden-series and nonzero-histogram tests cover the main migration risks. The explicitly accepted OpenMetrics metadata/content-type and histogram-bound formatting changes are compatibility tradeoffs, not new findings.

Verification: static review of the diff, surrounding renderer and histogram source, and existing review threads. I did not run builds/tests or validate a live Prometheus scrape.

@moq-bot
moq-bot Bot disabled auto-merge October 31, 2026 05:40
@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 removed the quest:merge label Oct 31, 2026
@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 15:01
@moq-bot
moq-bot Bot disabled auto-merge October 31, 2026 21:48
@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 rcgen v0.14.10
    Checking ashpd v0.13.13
   Compiling proc-macro2-diagnostics v0.10.1
    Checking http-cache v1.0.0-alpha.8
    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 egui-winit v0.36.2
    Checking prometheus-client v0.25.1
    Checking axum v0.8.9
    Checking axum-server v0.8.0
    Checking egui-wgpu v0.36.2
    Checking http-cache-reqwest v1.0.0-alpha.9
    Checking moq-auth v0.2.1 (/work/rs/moq-auth)
   Compiling duplicate v2.0.1
    Checking moq-stats v0.2.12 (/work/rs/moq-stats)
    Checking eframe v0.36.2
    Checking egui_dock v0.21.1
    Checking moq-tokio v0.19.23 (/work/rs/moq-tokio)
    Checking moq-relay v0.17.2 (/work/rs/moq-relay)
    Checking pipewire v0.10.1
    Checking cpal v0.18.2
    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 16.87s

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

info: running `cargo clippy --locked --tests --all-features -- -D warnings` on uniffi-bindgen (52/52)
   Compiling getrandom v0.4.3
   Compiling winnow v1.0.4
   Compiling uniffi_internal_macros v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
   Compiling serde v1.0.229
   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
    Checking smawk v0.3.3
   Compiling askama_derive v0.16.1
    Checking tempfile v3.27.0
    Checking serde_json v1.0.154
    Checking weedle2 v5.0.0 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
    Checking textwrap v0.16.4
   Compiling toml_parser v1.1.3+spec-1.1.0
    Checking uniffi_pipeline v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
    Checking scroll v0.12.0
   Compiling toml_datetime v1.1.1+spec-1.1.0
    Checking uniffi_meta v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
   Compiling askama_macros v0.16.1
    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 goblin v0.8.2
    Checking askama v0.16.1
    Checking clap v4.6.7
    Checking uniffi_core v0.32.2 (https://github.com/kixelated/uniffi-rs?rev=88d835d#88d835d6)
    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.74s
mbx[cache]: object cache: 1328 hits, 58 misses, 40 not looked up; 0 B downloaded, 0 B uploaded, 192.7 KiB stored locally
mbx[cache]: 2m 41s session; 27m 41s estimated compiler time avoided (summed across compilations)
mbx[cache]: 40 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]: every checkout believes it owns 2.5 TiB of outputs. the disk keeps one copy and says nothing.
ci: check quest failed
ci: seconds per module
   310  check rs
   159  test rs
   326  check rs_shapes
   170  check obs_compile
   498  check js
    80  test js
    15  check markdown
     3  check gh
    73  test gh
   218  check flake
     0  check drill
    10  check quest (failed)
     4  check obs
    12  check ts_paths
    48  check shell
     1  check large_files
     1  check toml
     0  check nix
     0  check justfile
   796  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 21:53
@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; batch checks passed except the stale quest dependency introduced by PR &#35;7366.

(written by codex / Codex)

@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 09:28
@moq-bot moq-bot Bot removed the quest:merge label Nov 1, 2026
@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 13:46
@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: GitHub refused /repos/moq-dev/moq/pulls/7363: Pull Request has merge conflicts; the rest of the batch was not merged.

@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:59
@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 19:54
@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-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-epoch [4.95ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-flate [4.33ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-hang [38.46ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-hidden [6.51ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-ietf [9.82ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-lite [54.98ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-mpegts [17.77ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-probe [6.17ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-sign [4.93ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-solicit [4.24ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-timestamp [5.23ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-moq-use-cases [9.06ms]
moq-doc:check                  | (pass) tables render as tables > draft-lcurley-qmux-websocket [4.76ms]
moq-doc:check                  | (pass) tables render as tables > row separators do not split a table apart [88.83ms]
moq-doc:check                  | 
moq-doc:check                  | .vitepress/api/index.test.ts:
moq-doc:check                  | (pass) a rendered workspace > each entrypoint gets a page named by its import specifier [9.10ms]
moq-doc:check                  | (pass) a rendered workspace > a re-export from another workspace package links to its owner [8.68ms]
moq-doc:check                  | (pass) a rendered workspace > an external re-export is documented under each public name [3.71ms]
moq-doc:check                  | (pass) a rendered workspace > a namespace export keeps its public name [3.65ms]
moq-doc:check                  | (pass) a rendered workspace > a hidden declaration is documented under the alias that re-exports it [3.99ms]
moq-doc:check                  | �[93m[warning]�[0m Value, defined in @test/hidden/src/access.ts, is referenced by read but not included in the documentation
moq-doc:check                  | �[93m[warning]�[0m Value, defined in @test/hidden/src/access.ts, is referenced by read but not included in the documentation
moq-doc:check                  | (pass) an unexported declaration that a public one names fails the run [582.31ms]
moq-doc:check                  | �[93m[warning]�[0m Failed to resolve link to "Missing" in comment for value
moq-doc:check                  | (pass) a link that does not resolve fails the run [453.08ms]
moq-doc:check                  | 
moq-doc:check                  | concept/audio-jitter/corpus.test.ts:
moq-doc:check                  | (pass) audio jitter corpus > paced > matches the checked-in file [0.22ms]
moq-doc:check                  | (pass) audio jitter corpus > paced > is a trace of equal-length clocks [0.05ms]
moq-doc:check                  | (pass) audio jitter corpus > paced > arrives in a monotonic order [1.75ms]
moq-doc:check                  | (pass) audio jitter corpus > paced > names a target for the first frame [0.03ms]
moq-doc:check                  | (pass) audio jitter corpus > paced > reports every target as a change [0.11ms]
moq-doc:check                  | (pass) audio jitter corpus > flush > matches the checked-in file [0.05ms]
moq-doc:check                  | (pass) audio jitter corpus > flush > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > flush > arrives in a monotonic order [0.60ms]
moq-doc:check                  | (pass) audio jitter corpus > flush > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > flush > reports every target as a change [0.02ms]
moq-doc:check                  | (pass) audio jitter corpus > advertised > matches the checked-in file [0.05ms]
moq-doc:check                  | (pass) audio jitter corpus > advertised > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > advertised > arrives in a monotonic order [0.38ms]
moq-doc:check                  | (pass) audio jitter corpus > advertised > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > advertised > reports every target as a change
moq-doc:check                  | (pass) audio jitter corpus > buildup > matches the checked-in file [0.07ms]
moq-doc:check                  | (pass) audio jitter corpus > buildup > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > buildup > arrives in a monotonic order [0.61ms]
moq-doc:check                  | (pass) audio jitter corpus > buildup > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > buildup > reports every target as a change [0.03ms]
moq-doc:check                  | (pass) audio jitter corpus > reorder > matches the checked-in file [0.04ms]
moq-doc:check                  | (pass) audio jitter corpus > reorder > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > reorder > arrives in a monotonic order [0.40ms]
moq-doc:check                  | (pass) audio jitter corpus > reorder > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > reorder > reports every target as a change
moq-doc:check                  | (pass) audio jitter corpus > backlog > matches the checked-in file [0.07ms]
moq-doc:check                  | (pass) audio jitter corpus > backlog > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > backlog > arrives in a monotonic order [0.72ms]
moq-doc:check                  | (pass) audio jitter corpus > backlog > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > backlog > reports every target as a change [0.01ms]
moq-doc:check                  | (pass) audio jitter corpus > idle > matches the checked-in file [0.04ms]
moq-doc:check                  | (pass) audio jitter corpus > idle > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > idle > arrives in a monotonic order [0.25ms]
moq-doc:check                  | (pass) audio jitter corpus > idle > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > idle > reports every target as a change [0.01ms]
moq-doc:check                  | (pass) audio jitter corpus > tunein > matches the checked-in file [0.06ms]
moq-doc:check                  | (pass) audio jitter corpus > tunein > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > tunein > arrives in a monotonic order [0.36ms]
moq-doc:check                  | (pass) audio jitter corpus > tunein > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > tunein > reports every target as a change
moq-doc:check                  | (pass) audio jitter corpus > spike > matches the checked-in file [0.09ms]
moq-doc:check                  | (pass) audio jitter corpus > spike > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > spike > arrives in a monotonic order [0.75ms]
moq-doc:check                  | (pass) audio jitter corpus > spike > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > spike > reports every target as a change [0.02ms]
moq-doc:check                  | (pass) audio jitter corpus > straggler > matches the checked-in file [0.09ms]
moq-doc:check                  | (pass) audio jitter corpus > straggler > is a trace of equal-length clocks
moq-doc:check                  | (pass) audio jitter corpus > straggler > arrives in a monotonic order [0.49ms]
moq-doc:check                  | (pass) audio jitter corpus > straggler > names a target for the first frame
moq-doc:check                  | (pass) audio jitter corpus > straggler > reports every target as a change [0.01ms]
moq-doc:check                  | (pass) audio jitter corpus > fixed > matches the checked-in file [0.03ms]
moq-doc:check                  | (pass) audio jitter corpus > fixed > is a trace of equal-length clocks [0.03ms]
moq-doc:check                  | (pass) audio jitter corpus > fixed > arrives in a monotonic order [0.56ms]
moq-doc:check                  | (pass) audio jitter corpus > fixed > names a target for the first frame [0.01ms]
moq-doc:check                  | (pass) audio jitter corpus > fixed > reports every target as a change [0.02ms]
moq-doc:check                  | 
moq-doc:check                  |  134 pass
moq-doc:check                  |  0 fail
moq-doc:check                  |  15964 expect() calls
moq-doc:check                  | Ran 134 tests across 3 files. [5.46s]
error: recipe `check-changed` failed on line 31 with exit code 143
ci: check rs failed
ci: seconds per module
   126  check rs (failed)
   127  check js (cancelled)
    68  check flake
     1  check drill
     8  check quest
     4  check ts_paths
    45  check shell (cancelled)
   128  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 20:17
@moq-bot moq-bot Bot added the quest:merge label Nov 1, 2026
@moq-bot

moq-bot Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

codex / Codex land fixer: Requeued unchanged: Healthy unchanged; batch failure was the stale rustdoc link in PR &#35;7258; passed cargo build --locked -p moq-relay; cargo test --locked -p moq-relay; RUSTDOCFLAGS="-D warnings" cargo doc --locked --no-

(written by codex / Codex)

@moq-bot

moq-bot Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

quest land: this pull request conflicts with a pull request queued ahead of it, in these files:

  • #7095: rs/moq-relay/src/internal.rs

Once one of them lands, this one conflicts with the base and is ejected when its turn comes. Resolve the overlap before then, such as by coordinating with that author, or by merging the base once it lands.

@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 20:24
@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 100).

----------------------------------------------------------------------
Ran 30 tests in 25.778s

OK
python3 sh/dispatch-query.test.py --bench
ci: 1 paths, median 342.2 ms
ci: 100 paths, median 395.8 ms
ci: 1000 paths, median 371.9 ms
python3 sh/gh/test-inventory.test.py
..........
----------------------------------------------------------------------
Ran 10 tests in 4.081s

OK
bun test sh/gh/setup.test.ts
bun test v1.4.2 (744846f84)

sh/gh/setup.test.ts:
(pass) check queries before setup and keeps its required check name [1.16ms]
(pass) check keeps release checks on a hosted runner [0.03ms]
(pass) self-hosted queue jobs use local caches without R2 credentials [1.04ms]
(pass) one job runs one CI dispatch with one checkout and cache restore [0.14ms]
(pass) nightly fuzzing restores and saves minimized target-specific corpora [1.36ms]

 5 pass
 0 fail
 59 expect() calls
Ran 5 tests across 1 file. [103.00ms]
bun sh/gh/queue.test.ts
queue event policy passed
python3 sh/gh/install-formula.test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.343s

OK
sh/gh/release.test.sh
release.sh ffi-unreleased: ok
python3 sh/gh/ffi.test.py
............
----------------------------------------------------------------------
Ran 12 tests in 5.867s

OK
bun test sh/gh/ffi.test.ts sh/gh/cpp.test.ts
bun test v1.4.2 (744846f84)

sh/gh/cpp.test.ts:
(pass) OBS builds on branch dry runs, and on tags only after the C++ release succeeds [7.93ms]

sh/gh/ffi.test.ts:
(pass) shared default builds cover each consumer exactly once [7.38ms]
(pass) wrapper gates preserve trusted tag inputs and inspect only their publisher [5.56ms]
(pass) privileged workflow_run jobs require a protected release tag before running its code [6.00ms]
(pass) Nightly and alert chains retain packaged outputs with one shared producer [5.37ms]

 5 pass
 0 fail
 113 expect() calls
Ran 5 tests across 2 files. [116.00ms]
python3 sh/rs/package-rename.test.py
using deb packager...
created package: /tmp/tmpr8hkk_oj/moq-nfpm.deb
using deb packager...
created package: /tmp/tmpr8hkk_oj/moq-transition.deb
using rpm packager...
created package: /tmp/tmpr8hkk_oj/moq-nfpm.rpm
.
----------------------------------------------------------------------
Ran 1 test in 1.470s

OK
python3 sh/dart/build.test.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.581s

OK
python3 sh/rs/select.test.py
...error: recipe `test` was terminated on line 59 by signal 15
ci: test rs failed
ci: seconds per module
   132  check rs
   206  test rs (failed)
   166  check js
    14  test js
    77  check markdown
    13  check gh
    68  test gh (cancelled)
    67  check flake
     1  check drill
     8  check quest
     1  check ts_paths
    15  check shell
     1  check large_files
     2  check toml
     0  check nix
     0  check justfile
   338  wall time
error: recipe `ci` failed on line 107 with exit code 100

.

@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)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@moq-bot
moq-bot Bot merged commit 5aabe3c into main Nov 1, 2026
1 check passed
@moq-bot
moq-bot Bot deleted the quest/m2/relay-prometheus-client branch November 1, 2026 22:26
kixelated added a commit that referenced this pull request Nov 1, 2026
main renders /metrics through prometheus-client now (#7363), so the demux drop
counter becomes an `encode_demux` family on `Scrape`, and the pinned series test
covers it. Also rename the two `kio::Producer::is_used` calls to `wanted`, which
#7036 renamed; the previous merge left them uncompiled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Nov 2, 2026
- relay-end-reason becomes browser-bench-consoles: #7396 fixed
  the malformed-track end code and publish-done-codes owns the rest.
- relay-stack-all-features: drop the added evidence; #7595
  finishes and deletes the quest, and the #7363 citation was wrong.
- nextest-pin: name the Dockerfile's NEXTEST_VERSION arg.
- quic-lb-forward-extras: define the peer-map fields and counter owner,
  and require relay-quic-lb-forward.
- subscriber-fin-fold: the predicates differ on lite-05/06 until
  #7296 lands; require its quest.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant