Repository navigation
Conversation
…er builtin test/audio-quality/congestion.toml sat where moq-relay's repository_configs_load test reads every tracked TOML as a relay config, so main failed on its unknown `down` field. Shaper profiles live in rs/moq-shaper/profiles/, so it moves there and run.sh passes it by name like bursty and step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou'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. View limit details
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. |
|
quest land watch: the merge queue removed this pull request at fbd443d because A person's removal ends the pick: the watcher leaves this pull request alone until a maintainer enqueues it again. (written by quest land watch) |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed fbd443d. No actionable findings.
Direction: moving the congestion profile out of the relay-fixture directory and embedding it through the existing preset registry is consistent with the intended fix. The moved TOML is byte-identical, the audio harness now selects the matching built-in name, and the documentation follows the new location. Existing all-built-in tests include the new preset automatically.
Verification limits: GitHub-only static review of all five changed files and preset loading/tests. No builds, tests, or audio-quality runs performed; author-reported checks were not independently verified.
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Profile moved, not rewritten —
test/audio-quality/congestion.tomlbecomesrs/moq-shaper/profiles/congestion.tomlas a pure rename (R100), so its seed, step timing, and rate are unchanged. - Registered as a builtin —
rs/moq-shaper/src/preset.rsappends("congestion", include_str!("../profiles/congestion.toml"))toBUILTIN, and the audio lane'sshaper_ofnow passes--profile congestioninstead of the file path, so lane behavior is unchanged (the lane's--seed 7still overrides the profile'sseed = 8). - Docs updated — the shaper README lists the builtin in
BUILTINorder, and the audio-lane README links the new path and drops the old fixture row.
I ran the suites this touches: cargo test -p moq-shaper --lib (builtin parse/name/bind tests pass), cargo test -p moq-relay --lib config::tests::repository_configs_load (passes at fbd443d), and bun test test/audio-quality/clients/js/src/run.test.ts.
ℹ️ The relay fixture scan still accepts any tracked TOML under test/
This fix relocates the offending file rather than narrowing the scan, so repository_configs_load still parses every tracked .toml under test/ as a relay config. Not a blocker here — the profile genuinely belongs in the shaper crate — but the next lane fixture that is not a relay config reintroduces the same failure.
Technical details
# Relay fixture scan
## Affected sites
- rs/moq-relay/src/config.rs:959-991 — repository_configs_load skips Cargo.toml, rust-toolchain.toml, and bunfig.toml by name, then parses everything else as a relay config.
## Required outcome (optional follow-up)
- Narrow the scan to relay configs (filename pattern or a small allowlist), or add the shaper profile's location to the skip rule, so a future lane fixture does not trip it.
## Open questions
- Is the loose scan intentional, so a new relay fixture is picked up without editing the test?
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏
|
quest land watch: the merge queue removed this pull request at fbd443d because its The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs.
…ks.rs
src/vendor/dimpl/timer.rs
src/vendor/dimpl/types.rs
src/vendor/dimpl/util.rs
src/vendor/dimpl/window.rs
src/vendor/is/agent.rs
src/vendor/is/candidate.rs
src/vendor/is/error.rs
src/vendor/is/hmac_provider.rs
src/vendor/is/pair.rs
src/vendor/is/parse.rs
src/vendor/is/preference.rs
src/vendor/is/stun.rs
src/vendor/netem/config.rs
src/vendor/netem/loss.rs
src/vendor/sctp_proto/association/mod.rs
src/vendor/sctp_proto/chunk/mod.rs
src/vendor/sctp_proto/config.rs
src/vendor/sctp_proto/endpoint/mod.rs
src/vendor/sctp_proto/error.rs
src/vendor/sctp_proto/packet.rs
src/vendor/sctp_proto/param/mod.rs
src/vendor/sctp_proto/queue/mod.rs
src/vendor/sctp_proto/shared.rs
src/vendor/sctp_proto/tests/partial_reliability.rs
src/vendor/sctp_proto/util.rs
src/vendor/str0m/change/mod.rs
src/vendor/str0m/channel.rs
src/vendor/str0m/crypto/mod.rs
src/vendor/str0m/dtls.rs
src/vendor/str0m/error.rs
src/vendor/str0m/format/mod.rs
src/vendor/str0m/io/mod.rs
src/vendor/str0m/media/mod.rs
src/vendor/str0m/pacer/mod.rs
src/vendor/str0m/packet/mod.rs
src/vendor/str0m/poll.rs
src/vendor/str0m/sctp/mod.rs
src/vendor/str0m/sdp/mod.rs
src/vendor/str0m/session.rs
src/vendor/str0m/streams/mod.rs
src/vendor/str0m/tests/mod.rs
src/vendor/str0m/util/mod.rs
src/vendor/str0m_proto/bandwidth.rs
src/vendor/str0m_proto/crypto/mod.rs
src/vendor/str0m_proto/id.rs
src/vendor/str0m_proto/net.rs
src/vendor/str0m_proto/pii.rs
src/vendor/str0m_proto/rng.rs
src/vendor/str0m_proto/sha1.rs
src/vendor/str0m_rind/dtls.rs
src/vendor/str0m_rind/hash.rs
src/vendor/str0m_rind/srtp.rs (delete these files)
# The workspace-hack's table order is `cargo hakari`'s, which `cargo sort` disagrees with.
cargo sort --check --no-format . $(cargo metadata --locked --no-deps --format-version 1 | jq -r '.packages[] | select(.name != "workspace-hack") | .manifest_path | rtrimstr("/Cargo.toml")')
Checking ....
Checking bridge...
Checking moq-mux...
Checking hang...
Checking kio...
Checking macros...
Checking test-env...
Checking bench-harness...
Checking moq-json...
Checking moq-net...
Checking moq-pattern...
Checking moq-tokio...
Checking moq-congestion...
Checking moq-crypto...
Checking moq-quic...
Checking moq-sock...
Checking qmux...
Checking moq-shaper...
Checking moq-loc...
Checking moq-msf...
Checking moq-video...
Checking moq-nvenc...
Checking moq-v4l...
Checking moq-vaapi...
Checking libmoq...
Checking moq-archive...
Checking moq-audio...
Checking moq-hls...
Checking moq-auth...
Checking moq-bench...
Checking moq-boy...
Checking moq-c...
Checking moq-cli...
Checking moq-relay...
Checking moq-stats...
Checking moq-uring...
Checking moq-rtmp...
Checking moq-rtsp...
Checking moq-srt...
Checking moq-transcode...
Checking moq-webrtc...
Checking moq-ffi...
Checking moq-gst...
Checking moq-native...
Checking moq-net-tests...
Checking moq-room...
Checking uniffi-bindgen...
Checking fuzz...
Checking fuzz...
Checking fuzz...
Checking fuzz...
cargo hakari generate --diff
python3 sh/rs/hakari.py
python3 sh/rs/crypto.py
no C crypto on 12 targets: aarch64-apple-darwin aarch64-apple-ios aarch64-apple-ios-sim aarch64-linux-android aarch64-unknown-linux-gnu armv7-linux-androideabi armv7-unknown-linux-gnueabihf x86_64-apple-darwin x86_64-apple-ios x86_64-linux-android x86_64-pc-windows-msvc x86_64-unknown-linux-gnu
bash sh/local.sh cargo clippy --locked -p moq-audio -p moq-video --tests -- -D warnings
Checking moq-net v0.3.10 (/var/cache/github-runner-work/moq/moq/rs/moq-net)
Checking moq-json v0.5.8 (/var/cache/github-runner-work/moq/moq/rs/moq-json)
Checking moq-loc v0.2.19 (/var/cache/github-runner-work/moq/moq/rs/moq-loc)
Checking hang v0.21.11 (/var/cache/github-runner-work/moq/moq/rs/hang)
mbx[progress]: 15s elapsed; 2 hits, 1 misses, 0 bypassed, 0 not looked up; ~24.77s compiler work saved
Checking moq-mux v0.10.11 (/var/cache/github-runner-work/moq/moq/rs/moq-mux)
mbx[progress]: 30s elapsed; 2 hits, 2 misses, 0 bypassed, 0 not looked up; ~24.77s compiler work saved
Checking moq-hls v0.5.11 (/var/cache/github-runner-work/moq/moq/rs/moq-hls)
Checking moq-audio v0.1.10 (/var/cache/github-runner-work/moq/moq/rs/moq-audio)
Checking moq-video v0.1.10 (/var/cache/github-runner-work/moq/moq/rs/moq-video)
mbx[progress]: 45s elapsed; 2 hits, 6 misses, 0 bypassed, 0 not looked up; ~24.77s compiler work saved
Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.56s
mbx[cache]: object cache: 2 hits, 8 misses; 0 B downloaded, 0 B uploaded, 9.2 MiB stored locally
mbx[cache]: 51.15s session; 24.77s estimated compiler time avoided (summed across compilations)
mbx[cache]: Cargo artifact reuse and CI cache archive transfers are not included above
mbx[savings]: 15d 1h unspent across 18363 builds. compounding, in a sense.
##[endgroup]
##[group]test rs
sh/rs/select.sh test "$LIST"
rs: selecting bridge hang moq-audio moq-bench moq-boy moq-c moq-cli moq-ffi moq-gst moq-hls moq-mux moq-relay moq-room moq-rtmp moq-rtsp moq-shaper moq-srt moq-tokio moq-transcode moq-uring moq-video moq-webrtc
KIO_DENY_HOST_TIMERS=1 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 moq-net v0.3.10 (/var/cache/github-runner-work/moq/moq/rs/moq-net)
Compiling moq-shaper v0.0.1 (/var/cache/github-runner-work/moq/moq/rs/moq-shaper)
Compiling moq-json v0.5.8 (/var/cache/github-runner-work/moq/moq/rs/moq-json)
Compiling moq-crypto v0.0.11 (/var/cache/github-runner-work/moq/moq/rs/moq-crypto)
Compiling moq-loc v0.2.19 (/var/cache/github-runner-work/moq/moq/rs/moq-loc)
Compiling moq-archive v0.0.11 (/var/cache/github-runner-work/moq/moq/rs/moq-archive)
Compiling moq-quic v0.1.0 (/var/cache/github-runner-work/moq/moq/rs/moq-quic)
Compiling moq-auth v0.2.1 (/var/cache/github-runner-work/moq/moq/rs/moq-auth)
Compiling hang v0.21.11 (/var/cache/github-runner-work/moq/moq/rs/hang)
Compiling moq-stats v0.2.12 (/var/cache/github-runner-work/moq/moq/rs/moq-stats)
Compiling qmux v0.7.0 (/var/cache/github-runner-work/moq/moq/rs/qmux)
Compiling moq-uring v0.0.12 (/var/cache/github-runner-work/moq/moq/rs/moq-uring)
Compiling moq-room v0.2.11 (/var/cache/github-runner-work/moq/moq/rs/moq-room)
Compiling moq-mux v0.10.11 (/var/cache/github-runner-work/moq/moq/rs/moq-mux)
Compiling moq-tokio v0.19.23 (/var/cache/github-runner-work/moq/moq/rs/moq-tokio)
Compiling moq-video v0.1.10 (/var/cache/github-runner-work/moq/moq/rs/moq-video)
Compiling moq-audio v0.1.10 (/var/cache/github-runner-work/moq/moq/rs/moq-audio)
Compiling moq-hls v0.5.11 (/var/cache/github-runner-work/moq/moq/rs/moq-hls)
Compiling moq-rtmp v0.3.11 (/var/cache/github-runner-work/moq/moq/rs/moq-rtmp)
Compiling moq-srt v0.3.11 (/var/cache/github-runner-work/moq/moq/rs/moq-srt)
Compiling moq-relay v0.17.2 (/var/cache/github-runner-work/moq/moq/rs/moq-relay)
Compiling moq-rtsp v0.1.0 (/var/cache/github-runner-work/moq/moq/rs/moq-rtsp)
Compiling moq-webrtc v0.3.12 (/var/cache/github-runner-work/moq/moq/rs/moq-webrtc)
Compiling moq-gst v0.4.12 (/var/cache/github-runner-work/moq/moq/rs/moq-gst)
Compiling moq-transcode v0.1.10 (/var/cache/github-runner-work/moq/moq/rs/moq-transcode)
Compiling moq-carla-bridge v0.1.0 (/var/cache/github-runner-work/moq/moq/demo/carla/bridge)
Compiling moq-cli v0.14.2 (/var/cache/github-runner-work/moq/moq/rs/moq-cli)
Compiling moq-c v0.7.0 (/var/cache/github-runner-work/moq/moq/rs/moq-c)
Compiling moq-boy v0.5.12 (/var/cache/github-runner-work/moq/moq/rs/moq-boy)
error: recipe `test-changed` was terminated on line 92 by signal 15
sh/dispatch.sh: line 350: wait: pid 2466522 is not a child of this shell
##[endgroup]
##[error]ci: test js failed
ci: wall and CPU seconds per module
213 266 check rs
184 0 test rs (cancelled)
12 41 check biome
314 633 check js
71 76 test js (failed)
71 88 check flake
0 0 check drill
44 40 check shell
1 0 check large_files
1 0 check text
4 0 check toml
2 0 check nix
1 0 check justfile
398 1149 whole run
error: recipe `ci` failed on line 119 with exit code 1
##[error]Process completed with exit code 1.
##[group]Run actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9
with:
name: cargo-timings
path: target/cargo-timings/cargo-timing-*.html
if-no-files-found: ignore
retention-days: 14
compression-level: 6
overwrite: false
include-hidden-files: false
archive: true
env:
BASE: 114b14fb607050a7c6161ce54a2070812a333091
CHECK_FAIL_FAST: 1
NEXTEST_TEST_THREADS: 24
MBX_CACHE_LINKS: 1
MBX_REMOTE_URL:
##[endgroup]
With the provided path, there will be 2 files uploaded
Artifact name is valid!
Root directory input is valid!
Uploading artifact: cargo-timings.zip
Beginning upload of artifact content to blob storage
Uploaded bytes 176687
Finished uploading artifact content to blob storage!
SHA256 digest of uploaded artifact is b2859c2e988e4a854d2fadd3da7414b5739577ac9ee45e29327bd3e9105d5806
Finalizing artifact upload
Artifact cargo-timings successfully finalized. Artifact ID 13821428187
Artifact cargo-timings has been successfully uploaded! Final size is 176687 bytes. Artifact ID is 13821428187
Artifact download URL: https://github.com/moq-dev/moq/actions/runs/42943199053/artifacts/13821428187
Post job cleanup.
##[start-action display=Run jdx/mr-boxington-action@88acf2bb50552c7c508cbac13e5f8c576b95b1de;id=__08af3798-65d1-4ad1-9f18-52f941c570ca.mbx]
##[end-action id=__08af3798-65d1-4ad1-9f18-52f941c570ca.mbx;outcome=skipped;conclusion=skipped;duration_ms=0]
Post job cleanup.
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git version
git version 2.55.0
Temporarily overriding HOME='/var/cache/github-runner-work/_temp/2437cb9a-4b8b-4768-9fe4-06b9bf73eba0' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git config --global --add safe.directory /var/cache/github-runner-work/moq/moq
Removing SSH command configuration
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
Removing HTTP extra header
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
Removing includeIf entries pointing to credentials config files
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
A job completed hook has been configured by the self-hosted runner administrator
##[group]Run '/nix/store/gx2v6q84b0w43bafm0whkdx93qyxbpps-ci-cache-gc.sh/bin/ci-cache-gc.sh'
shell: /nix/store/1mv3qz005gkbalxfghk4y3s8ayv4d2dl-bash-interactive-5.3p15/bin/bash --noprofile --norc -e -o pipefail {0}
##[endgroup]
evicted 2 objects and 0 action results (82.6 MiB logical); 50.0 GiB logical remain
removed 1 target directories (28.4 GiB logical, 0 abandoned and 1 live); 0 B logical remain
Cleaning up orphan processes
(written by quest land watch) |
|
codex, gpt-6.1-sol, medium effort land fixer note:
(written by codex, gpt-6.1-sol, medium effort) |
|
codex, gpt-6.1-sol, medium effort land fixer: @moq/net test: 25 | ready();
@moq/net test: 26 | // Thrown from the host callback, so the test running now fails.
@moq/net test: 27 | if (armed !== undefined && owner === guard.test && !owner?.real && timer !== undefined) {
@moq/net test: 28 | throw new Error(
@moq/net test: 29 | `a timer fired on the host clock: install a Manual clock or await the event, or call hostTime()\n${armed}`,
@moq/net test: 30 | );
@moq/net test: ^
@moq/net test: error: a timer fired on the host clock: install a Manual clock or await the event, or call hostTime()
@moq/net test: Error: armed
@moq/net test: at arm (/var/cache/github-runner-work/moq/moq/js/clock/src/host.ts:17:44)
@moq/net test: at <anonymous> (/var/cache/github-runner-work/moq/moq/js/clock/src/timer.ts:30:18)
@moq/net test: at new Promise (native:1:11)
@moq/net test: at wait (/var/cache/github-runner-work/moq/moq/js/clock/src/timer.ts:15:22)
@moq/net test: at sleep (/var/cache/github-runner-work/moq/moq/js/clock/src/timer.ts:49:9)
@moq/net test: at connectTransport (/var/cache/github-runner-work/moq/moq/js/net/src/connection/connect.ts:614:45)
@moq/net test: at async connectInner (/var/cache/github-runner-work/moq/moq/js/net/src/connection/connect.ts:486:17)
@moq/net test: at processTicksAndRejections (native:7:39)
@moq/net test: at check (/var/cache/github-runner-work/moq/moq/js/clock/src/host.ts:30:6)
@moq/net test:
@moq/net test: ::error file=js/clock/src/host.ts,line=30,col=6,title=error: a timer fired on the host clock%3A install a Manual clock or await the event%2C or call hostTime():: at arm (/var/cache/github-runner-work/moq/moq/js/clock/src/host.ts:17:44)%0A at <anonymous> (/var/cache/github-runner-work/moq/moq/js/clock/src/timer.ts:30:18)%0A at new Promise (native:1:11)%0A at wait (/var/cache/github-runner-work/moq/moq/js/clock/src/timer.ts:15:22)%0A at sleep (/var/cache/github-runner-work/moq/moq/js/clock/src/timer.ts:49:9)%0A at connectTransport (/var/cache/github-runner-work/moq/moq/js/net/src/connection/connect.ts:614:45)%0A at async connectInner (/var/cache/github-runner-work/moq/moq/js/net/src/connection/connect.ts:486:17)%0A at processTicksAndRejections (native:7:39)%0A at check (/var/cache/github-runner-work/moq/moq/js/clock/src/host.ts:30:6)
@moq/net test: (fail) abort race never returns a closed connection [114.86ms]
(written by codex, gpt-6.1-sol, medium effort) |
|
Duplicate of #8486, which makes the same fix and was opened first. Closing on the maintainer's pick. (Written by Opus 5.5 with medium) |

mainfailsmoq-relay'sconfig::tests::repository_configs_load. That test loads every tracked.tomlundertest/as a relay config, and moq-dev/moq#8459 addedtest/audio-quality/congestion.toml, a moq-shaper profile, so the relay config parser refuses itsdowntable.Shaper profiles live in
rs/moq-shaper/profiles/. This movescongestion.tomlthere as a built-in, sorun.shpasses--profile congestionthe way it already passesburstyandstep. The moq-shaper and audio-quality READMEs are updated to match.Impact
moq-shaper --profile congestionis a new built-in name.Validation
cargo test -p moq-shaper -p moq-relay --lib: passes, includingrepository_configs_loadand the builtin preset tests.just check: everything passes exceptmoq-gst'sa_moqsink_restart_keeps_pads_when_caps_arrive_at_different_times. This change doesn't touch that test, and moq-dev/moq#8438 disables it as flaky.Caused by
repository_configs_loadscans.Models
Size: XS
Implementer: Claude Code, claude-opus-5-5, medium effort
🤖 Generated with Claude Code
(Written by Opus 5.5 with medium)
Review
Rewritten by
quest reviewafter each round.01a1c855-1d2b-7672-882b-45a9cb95c088, round 1The change consistently relocates the unchanged congestion profile through the existing preset mechanism, with no actionable regressions found by source inspection; builds and tests were not run as instructed.