Skip to content

test(mux): reduce fixture CPU and checkpoint frozen cohort - #6914

Merged
kixelated merged 12 commits into
mainfrom
quest/m0/ci/slow-tests
Oct 27, 2026
Merged

kixelated merged 12 commits into
mainfrom
quest/m0/ci/slow-tests

Conversation

@kixelated

@kixelated kixelated commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The slowest 1% of tests (quest/m0/ci/slow-tests.md) should take under half their CPU. One full normal nextest run before any edit (10,275 passed, 104 skipped) froze the slowest ceil(10,275 / 100) = 103 IDs at 137.83 CPU-seconds, so the target is below 68.92 s.

This PR lands the fixture-only cuts found so far (137.83 s to 116.83 s, 15.2%) and rewrites the quest to what remains, so the next session starts from these measurements instead of redoing them.

Changes

  • MPEG-TS reset tests (container::ts::import): drain queued media on the exporter's own deadlines and stop when idle, instead of polling through an hour of idle output. Retention is derived from the stimulus (the 30 s leap plus eight PES of two 72 ms frames), both phases must emit media, and exporter errors now fail the test. All discontinuity assertions are unchanged. 12.98 s to 0.18 s.
  • Jitter drift and feed helpers (jitter::tests): advance an explicit moq_clock::Deadlines queue instead of the tokio paused clock. Advancing to max(arrived, now) keeps the old instants, so arrivals, frame counts, the full 24-hour durations, ordering, bounds and assertions are unchanged. 10.16 s to 6.80 s across the 8 frozen jitter tests.
  • Quest: rewritten to the remaining goal (the same 103 IDs below 68.92 s), the measurement method, what was tried and dropped, and the remaining cost by module.

No case, duration, assertion or coverage was removed or moved to nightly.

Impact

  • Public API: none.
  • Wire: none.
  • Production code: unchanged; tests and the quest only.

Decisions

Settled by the maintainer on 2026-10-27:

  • ✅ Land the independently useful fixture-only cuts now and rewrite the quest to what remains (recommended)
  • Keep this PR a draft until the cohort reaches 68.92 s

Chosen while iterating (not reserved for the maintainer):

  • drift and feed stay async fn though they no longer await. Dropping async would touch every caller in jitter.rs, which draft moq-dev/moq#6919 also extends with new callers.
  • Merged main into the branch (no rebase) so local checks ran against current main. The recorded CPU numbers are from the measured source below, not the merge.

Tried and dropped

  • Caching the jitter lead median: the frame-rate benchmark stayed within noise and one cell regressed about 6%.
  • A containment shortcut for miss-verdict intersections in moq-net: sparse gap and range sweeps were unchanged (4096 timed gaps, 2.796 ms to 2.783 ms). The broader fix stays with incremental sparse misses.
  • Retaining only one phase's span in the TS reset tests: it shed the boundary and failed the unsignalled-reset assertion.

Validation

  • Baseline source 6f6a3ae21432 (source-identical to main 88620648e0a2): 10,275 passed, 104 skipped, 253.45 total test CPU-seconds, frozen cohort 137.83 s.
  • Measured source a6aa64383a19: the same 10,275 passed and 104 skipped, all attempt 1, frozen cohort 116.83 s. Later commits change only the quest and merge main.
  • Same machine (Intel Core Ultra 7 270K Plus, 24 logical CPUs), same command, wrapper, nextest profile, zero retries and lockfile. Shared host: unchanged tests varied (moq-stats' produce::tests by up to 40%), so only the touched tests are credited.
  • After merging main, just check passed (4,109 tests, 60 skipped) and quest check --base origin/main passed.

Follow-ups

The quest stays open for the remaining ~48 s. The largest remaining targets are moq-mux's export_timing_test (22.2 s) and recovery_test (11.6 s), and moq-net's model::track::test gap tests (17.3 s), which run through the same miss judging as incremental sparse misses.

Measurement

Portable measurement command, wrapper and unchanged runner hashes

Run once before edits with phase=baseline, then once for the final retained source with phase=after-final, each with an empty dedicated output directory. phase below selects only the record directory; the runner and suite are identical.

nix develop --command env \
  CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="python3 $PWD/.tmp/cpu-wrapper.py" \
  MOQ_TEST_CPU_DIR=$PWD/.tmp/PHASE-cpu \
  just rs test --workspace --exclude moq-net-fuzz --exclude moq-quic-fuzz
#!/usr/bin/env python3
"""Account the actual nextest test child; listing remains a direct exec."""
import hashlib
import json
import os
from pathlib import Path
import signal
import subprocess
import sys

name = os.environ.get('NEXTEST_TEST_NAME')
if name is None:
    os.execvpe(sys.argv[1], sys.argv[1:], os.environ)

binary = os.environ['NEXTEST_BINARY_ID']
attempt = os.environ['NEXTEST_ATTEMPT']
if attempt != '1':
    raise SystemExit('CPU measurement requires the normal zero-retry profile')
child = subprocess.Popen(sys.argv[1:])
_, status, usage = os.wait4(child.pid, 0)
child.returncode = os.waitstatus_to_exitcode(status)
record = {
    'binary_id': binary,
    'test_name': name,
    'attempt': int(attempt),
    'run_id': os.environ['NEXTEST_RUN_ID'],
    'user': usage.ru_utime,
    'system': usage.ru_stime,
    'cpu': usage.ru_utime + usage.ru_stime,
    'status': child.returncode,
}
key = hashlib.sha256((binary + '\0' + name).encode()).hexdigest()
path = Path(os.environ['MOQ_TEST_CPU_DIR']) / (key + '.json')
with path.open('x') as output:
    json.dump(record, output)
    output.write('\n')
if child.returncode < 0:
    sig = -child.returncode
    if sig not in (signal.SIGKILL, signal.SIGSTOP):
        signal.signal(sig, signal.SIG_DFL)
    os.kill(os.getpid(), sig)
raise SystemExit(child.returncode)

Identical SHA-256 in both runs:

  • .tmp/cpu-wrapper.py: d16e86fb379a8d68b301f1471d5f135517faa5225f8fbaa1156f3e7405e5ef48
  • .config/nextest.toml: e19961d71b30b0946259439331dc93cddec95052c43f6771156687de4a217be0
  • sh/local.sh: 86ee7f61a5f40e9ccce41ec012cc1dc3268c2f270fa2ab57a2eac4e3a8157cf2
  • sh/rs/nextest.sh: eba5b17e18c59097dcbeb20a1f85615feec3eb69be584344414994f77631ab71
  • Cargo.lock: 4e54ae32843a5b2ea06e33f3b36a098ee45e7921e6b7928a25080d5fe6a89d30
Frozen 103 IDs, same-run baseline and final per-test user/system CPU
Binary ID Frozen test ID Before user s Before system s Before CPU s After user s After system s After CPU s
moq-net model::track::test::an_endless_track_with_gaps_stays_bounded 7.394866 0.008997 7.403863 7.411815 0.005999 7.417814
moq-mux container::ts::import::test::a_shared_forward_boundary_resets_once_per_rendition 6.345129 0.179173 6.524302 0.065994 0.008999 0.074993
moq-mux container::ts::import::test::a_signalled_reset_reaches_the_exported_clock 6.272155 0.185945 6.458100 0.096805 0.006985 0.103790
moq-mux container::ts::export_timing_test::two_legs_render_a_drifting_source_the_same_way 5.501213 0.137905 5.639118 5.236185 0.086003 5.322188
moq-mux jitter::tests::the_clock_follows_a_drifting_source_for_a_day 4.808942 0.132998 4.941940 3.577058 0.003998 3.581056
moq-net::integration routing_contracts::handoff::sweep_handoff 4.505067 0.002996 4.508063 4.527643 0.002999 4.530642
moq-net model::track::test::an_untimed_sparse_feed_keeps_its_gaps 3.731604 0.005999 3.737603 3.759201 0.005995 3.765196
moq-mux container::ts::export_timing_test::a_fast_source_clock_keeps_the_delay 3.611212 0.094769 3.705981 2.984293 0.087008 3.071301
moq-mux container::ts::export_timing_test::a_joiner_keeps_the_system_clock_in_tolerance 3.401003 0.078676 3.479679 3.004465 0.076986 3.081451
moq-net::integration routing_contracts::handoff::sweep_requests_reach_a_quiet_origin 3.397993 0.001999 3.399992 3.389534 0.002999 3.392533
moq-net::integration mesh_withdraw::capped_random_meshes_hunt_less 3.323417 0.005997 3.329414 3.378051 0.006000 3.384051
moq-net::integration mesh_withdraw::residual_random_meshes 3.306482 0.008990 3.315472 3.803471 0.005001 3.808472
moq-mux container::ts::export_timing_test::a_source_past_the_limit_is_counted 3.089102 0.087059 3.176161 3.003968 0.082999 3.086967
moq-mux container::ts::export_timing_test::a_slow_source_clock_keeps_the_delay 3.074535 0.079987 3.154522 2.969038 0.080001 3.049039
moq-net model::track::test::a_fill_refused_group_by_group_stays_linear 2.341147 0.003998 2.345145 2.349654 0.001999 2.351653
moq-stats produce::tests::an_oversize_group_leaves_other_groups_readable 2.074321 0.181600 2.255921 1.304137 0.128914 1.433051
moq-net model::front::tests::bounded_sequences_hold_the_invariants 2.246848 0.002999 2.249847 2.257839 0.002999 2.260838
moq-quic tests::sim::random_workloads 2.131719 0.002996 2.134715 2.130446 0.002999 2.133445
moq-stats produce::tests::oversized_frame_ends_both_flavors 1.947787 0.133090 2.080877 1.208551 0.098963 1.307514
moq-net::integration routing_contracts::sweep_forgetting_distances 2.053220 0.003000 2.056220 2.063028 0.002998 2.066026
moq-quic tests::sim::replays_from_seed 1.828526 0.003998 1.832524 1.829402 0.001000 1.830402
moq-net model::track::test::an_empty_successor_still_lets_the_gaps_go 1.818693 0.008998 1.827691 1.849858 0.004999 1.854857
moq-net model::track::test::an_endless_untimed_track_with_gaps_stays_bounded 1.810141 0.005000 1.815141 1.887448 0.005001 1.892449
moq-stats produce::tests::reheld_wire_presence_refreshes_two_relay_caches 1.682435 0.018308 1.700743 0.935832 0.010008 0.945840
moq-net model::resume::test::a_resumed_reader_forgets_gaps_past_its_budget 1.458691 0.005970 1.464661 1.281415 0.004001 1.285416
moq-json window::encoder::test::a_header_larger_than_the_group_cache_is_rejected 1.287626 0.082975 1.370601 1.275496 0.086033 1.361529
qmux session::tests::websocket_keep_alive_runs_during_continuous_output 1.345066 0.004992 1.350058 1.310004 0.002001 1.312005
moq-json window::encoder::test::an_op_that_would_evict_the_header_rolls_first 1.173214 0.094936 1.268150 1.174438 0.096953 1.271391
moq-video encode::encoder::tests::transcode_keeps_the_space_the_source_signalled 1.165155 0.078271 1.243426 1.114225 0.062012 1.176237
moq-mux rate::tests::model::invariants_hold_on_random_walks 1.143729 0.005993 1.149722 1.142093 0.007000 1.149093
moq-net::integration catalog_churn::catalog_churn_lite_07 1.138248 0.004000 1.142248 1.182584 0.003998 1.186582
moq-mux jitter::tests::a_wandering_track_sent_latest_does_not_move_the_rate 1.099140 0.037004 1.136144 0.645806 0.003998 0.649804
moq-mux container::ts::recovery_test::hevc_keeps_radl_after_a_hole 0.950774 0.178664 1.129438 0.902374 0.162345 1.064719
moq-pattern::integration pattern_exhaustive::intersect_matches_exactly_what_both_match 1.085375 0.001000 1.086375 1.087042 0.001998 1.089040
moq-mux container::ts::recovery_test::hevc_trims_only_orphaned_rasl 0.899366 0.163515 1.062881 0.825394 0.211255 1.036649
moq-tokio::integration broadcast::broadcast_rejoin_replays_a_current_warm_cache 0.973617 0.071503 1.045120 0.559378 0.055334 0.614712
moq-quic tests::probe::congested 0.929315 0.038804 0.968119 0.883086 0.045952 0.929038
moq-net::integration routing_contracts::sweep_forwarding_progress 0.940671 0.002998 0.943669 0.944871 0.002999 0.947870
moq-mux jitter::tests::closing_a_late_start_is_not_charged_to_the_rate 0.910324 0.031011 0.941335 0.597753 0.003998 0.601751
moq-mux jitter::tests::a_late_start_within_the_drift_limit_never_fails 0.865704 0.041033 0.906737 0.522544 0.002002 0.524546
moq-mux container::ts::export_timing_test::a_cut_judges_held_video_when_the_loss_is_observed 0.883026 0.011892 0.894918 0.485745 0.008012 0.493757
moq-json window::properties::window_codec_property_matches_every_readers_logical_window 0.836908 0.055993 0.892901 0.822642 0.062972 0.885614
moq-audio resample::tests::duration_and_samples_are_invariant_across_partitions_and_epochs 0.869017 0.003000 0.872017 0.869218 0.001000 0.870218
moq-mux container::ts::export_timing_test::a_skip_at_the_join_keeps_one_clock 0.850220 0.018893 0.869113 0.624145 0.006001 0.630146
moq-json snapshot::encoder::test::snapshot_codec_property_reconstructs_each_json_value 0.800973 0.048937 0.849910 0.805811 0.041041 0.846852
moq-mux container::ts::recovery_test::a_skip_across_a_resolution_change_takes_the_new_parameters 0.650650 0.190506 0.841156 0.650433 0.161768 0.812201
moq-mux container::ts::recovery_test::a_lost_discontinuity_marker_still_breaks_the_clock 0.701204 0.138868 0.840072 0.690231 0.137687 0.827918
moq-net::integration mesh_withdraw::partial_mesh_withdraw_then_republish 0.815941 0.022970 0.838911 0.810595 0.011994 0.822589
moq-mux container::ts::recovery_test::a_declared_discontinuity_survives_loss_either_side 0.701468 0.134644 0.836112 0.662197 0.175352 0.837549
moq-net::integration catalog_churn::catalog_churn_lite_06 0.820074 0.004994 0.825068 0.857423 0.006995 0.864418
moq-mux container::ts::export_timing_test::frames_held_through_a_silence_drop_as_late 0.755415 0.020010 0.775425 0.738299 0.012987 0.751286
moq-mux jitter::tests::a_spell_on_the_steady_track_keeps_the_rate_on_it 0.751096 0.019002 0.770098 0.478632 0.003996 0.482628
moq-quic tests::bbr_marking_versus_dropping 0.692320 0.040900 0.733220 0.678173 0.043011 0.721184
moq-net ietf::publisher::group_priority_test::a_busy_track_yields_to_its_siblings 0.708598 0.016966 0.725564 0.701980 0.022999 0.724979
moq-quic tests::probe::borderline_skips_probe_rtt 0.657681 0.020894 0.678575 0.671758 0.027030 0.698788
moq-hls export::tests::a_fresh_join_reads_a_bounded_number_of_records 0.658271 0.011004 0.669275 0.662082 0.013001 0.675083
moq-mux container::ts::export_timing_test::a_skip_while_running_keeps_one_clock 0.646397 0.010955 0.657352 0.613442 0.008005 0.621447
moq-json stream::test::an_oversized_record_is_refused_and_the_log_continues 0.592682 0.047974 0.640656 0.589520 0.047960 0.637480
moq-quic tests::probe::rises_to_target 0.614061 0.022927 0.636988 0.563547 0.020019 0.583566
moq-mux jitter::tests::start_up_latency_never_fails_a_full_multiplex 0.610171 0.012982 0.623153 0.290647 0.003995 0.294642
moq-audio decode::consumer::tests::the_decode_path_conforms_to_the_corpus 0.603347 0.012026 0.615373 0.610548 0.010991 0.621539
moq-quic tests::sim::priority_on_a_clean_path 0.611108 0.004007 0.615115 0.622642 0.003997 0.626639
moq-net::integration mesh_withdraw::full_mesh_withdraw_retracts_once_lite06 0.601691 0.011993 0.613684 0.547946 0.015025 0.562971
moq-net::integration mesh_withdraw::full_mesh_withdraw_retracts_once_lite04 0.586908 0.017055 0.603963 0.572477 0.015957 0.588434
moq-mux container::ts::recovery_test::a_cut_group_keeps_what_it_delivered 0.508378 0.087385 0.595763 0.489396 0.102911 0.592307
moq-mux container::ts::recovery_test::a_skipped_group_resumes_at_the_next 0.495883 0.094128 0.590011 0.493233 0.091593 0.584826
moq-mux container::ts::recovery_test::skewed_audio_survives_a_video_skip 0.483886 0.083059 0.566945 0.441037 0.099152 0.540189
moq-tokio::integration receive_credit::lite_frame_of_many_windows_completes 0.499318 0.066775 0.566093 0.298305 0.045046 0.343351
moq-tokio::integration receive_credit::bufferbloat_is_not_a_stuck_window 0.504746 0.058392 0.563138 0.424357 0.039718 0.464075
moq-mux container::ts::recovery_test::a_clean_path_loses_nothing 0.481713 0.079659 0.561372 0.476962 0.085845 0.562807
moq-mux container::ts::recovery_test::a_skip_across_the_wrap_keeps_the_clock 0.479482 0.081009 0.560491 0.472584 0.111720 0.584304
moq-net::integration mesh_withdraw::partial_mesh_withdraw_retracts_once 0.538275 0.012982 0.551257 0.490641 0.013017 0.503658
moq-mux container::ts::recovery_test::a_congested_path_sheds_what_it_made_late 0.446515 0.102758 0.549273 0.469383 0.076691 0.546074
moq-relay::integration cluster_unknown::every_ingest_version_crosses_a_redundant_mesh 0.490173 0.049117 0.539290 0.465172 0.046816 0.511988
moq-json stream::test::a_compressed_log_is_charged_its_inflated_size 0.500281 0.029016 0.529297 0.479125 0.035009 0.514134
moq-mux container::ts::recovery_test::a_stall_drops_what_it_made_late 0.453062 0.073802 0.526864 0.438603 0.092236 0.530839
moq-cli::bin/moq hls::test::an_ended_playlist_announces_its_catalog 0.458780 0.061434 0.520214 0.616768 0.074012 0.690780
moq-mux container::ts::recovery_test::a_path_stall_drops_what_it_made_late 0.440934 0.077767 0.518701 0.442103 0.079206 0.521309
moq-mux container::ts::recovery_test::a_stalled_track_leaves_the_others_running 0.436961 0.081571 0.518532 0.484930 0.074415 0.559345
moq-mux container::ts::recovery_test::open_gop_trims_only_the_orphans 0.411807 0.101756 0.513563 0.423148 0.089662 0.512810
moq-mux container::ts::recovery_test::a_join_starts_on_a_whole_group 0.420613 0.090100 0.510713 0.443961 0.061484 0.505445
moq-mux container::ts::export_timing_test::a_track_sent_later_than_the_delay_loses_nothing 0.500062 0.010001 0.510063 0.488445 0.006005 0.494450
moq-mux container::ts::recovery_test::a_late_catalog_starts_on_a_whole_group 0.417480 0.082198 0.499678 0.399764 0.075247 0.475011
moq-cli::bin/moq publish::tests::ts_passthrough_crosses_a_relay_through_a_flagged_jump 0.455674 0.035974 0.491648 0.652823 0.067158 0.719981
moq-net::integration fetch_fanout::sequential_viewers_share_the_relays_fetched_groups 0.477448 0.010009 0.487457 0.474645 0.010991 0.485636
moq-tokio::integration broadcast::zero_initial_backoff_still_gives_up_on_a_flapping_peer 0.449451 0.027417 0.476868 0.498065 0.032068 0.530133
moq-mux jitter::tests::a_step_in_queueing_does_not_move_the_estimate 0.457920 0.003006 0.460926 0.359265 0.003002 0.362267
moq-mux container::ts::export_timing_test::the_video_held_at_the_end_goes_out 0.447852 0.008997 0.456849 0.448068 0.009001 0.457069
moq-net lite::publisher::tests::a_busy_subscription_yields_to_its_siblings 0.442562 0.013986 0.456548 0.451535 0.016982 0.468517
moq-mux container::ts::passthrough_test::a_long_gop_splits_at_the_byte_ceiling_between_objects 0.397589 0.055942 0.453531 0.392562 0.058934 0.451496
moq-quic tests::probe::overflow_keeps_probe_rtt 0.433503 0.016941 0.450444 0.453556 0.010989 0.464545
moq-stats produce::tests::steady_drain_collects_without_allocating 0.426534 0.012805 0.439339 0.294439 0.012975 0.307414
moq-mux container::ts::recovery_test::the_graders_fail_what_they_should 0.355972 0.062208 0.418180 0.400995 0.055459 0.456454
moq-mux container::ts::export_timing_test::a_successor_settles_held_video_across_a_skip_or_restart 0.392795 0.014028 0.406823 0.388250 0.007004 0.395254
moq-quic tests::bbr_burst_after_long_idle_keeps_learned_bandwidth 0.379738 0.019986 0.399724 0.374112 0.025007 0.399119
moq-mux container::ts::export_timing_test::video_held_for_most_of_the_delay_drops_nothing 0.375722 0.009992 0.385714 0.379434 0.005005 0.384439
moq-mux jitter::tests::a_source_past_the_drift_limit_fails 0.372212 0.012006 0.384218 0.296812 0.002998 0.299810
moq-mux container::ts::export_timing_test::live_audio_shares_its_pes 0.359194 0.011973 0.371167 0.364307 0.006986 0.371293
moq-mux container::ts::export_test::scte35_fixtures_survive_roundtrip 0.353242 0.017810 0.371052 0.267188 0.013009 0.280197
moq-json snapshot::encoder::test::memo_matches_the_value_diff 0.356074 0.011968 0.368042 0.353463 0.009984 0.363447
moq-net::integration routing_contracts::handoff::sweep_scoped_handoff 0.358509 0.001997 0.360506 0.399404 0.002002 0.401406
moq-net::integration compress::a_start_group_arrives_whole 0.351009 0.003008 0.354017 0.411344 0.003002 0.414346
moq-json snapshot::test::a_rejected_update_leaves_the_previous_value_readable 0.317985 0.031998 0.349983 0.328797 0.026063 0.354860

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 7 commits October 26, 2026 22:58
Quest-Claim: 263d25ccaa7a1636
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
Drop the jitter cache hypothesis after benchmark evaluation.

Co-Authored-By: GPT-6 <noreply@openai.com>
Drive pure jitter state-machine fixtures with explicit deadlines.

Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
@kixelated kixelated changed the title Halve the slowest tests' CPU test(mux): reduce fixture CPU and checkpoint frozen cohort Oct 27, 2026
kixelated and others added 3 commits October 27, 2026 12:35
Record the frozen cohort's measurement method, what this PR cut, what was
tried and dropped, and the remaining cost by module.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review October 27, 2026 19:49
@coderabbitai

coderabbitai Bot commented Oct 27, 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 2 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: a5cacf8d-e195-43f3-8f5c-5257391fccf4
Commits

Reviewing files that changed from the base of the PR and between 9af4141 and f69ded9.

Files selected for processing: 3
  • quest/m0/ci/slow-tests.md
  • rs/moq-mux/src/container/ts/import.rs
  • rs/moq-mux/src/jitter.rs
  • 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

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 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-27T21:10:04.077682Z f69ded9 New commits
ℹ️ About Codex in GitHub

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

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

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

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed commit: c15e866

No actionable bugs found in the three-file change and relevant clock/export code.

Direction: the fixture-only scope is sensible. jitter.rs preserves arrival ordering and nondecreasing time while avoiding scheduler work; its entered clock does not cross a suspension point. The TS helper uses the existing queued-media deadlines instead of generating idle output, retains the complete reset span, keeps the signalled/unsignalled and shared-boundary assertions, and now fails on exporter errors. Keeping the async helper signatures avoids unrelated caller churn. No production/API/wire changes are needed for these savings.

The quest appropriately leaves the halving target open: the reported 137.83 → 116.83 CPU-seconds is a partial improvement, not completion, and unchanged-test noise should not be credited as an optimization.

Verification limits: static GitHub review only; I did not run tests or reproduce the CPU measurements. The reported test results and timings are author-provided, including measurements made before the main-branch merge.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary for head c15e866:

  • Review: Codex completed a review of c15e866 with no findings (thumbs up). The OpenAI review posted from the maintainer account also found no actionable bugs. No unresolved threads.
  • CI: all required checks passed; only the optional CodeQL Analyze (rust) job was still running.
  • quest check --base origin/main --branch quest/m0/ci/slow-tests passes on the head; the quest is rewritten to the remaining ~48 s, as the body describes.
  • No changes were needed in this merge pass. The diff is tests and the quest only, so it is a merge-queue jump candidate.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 27, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 27, 2026
@kixelated

Copy link
Copy Markdown
Collaborator Author

Re-landing after the merge queue removed it (run https://github.com/moq-dev/moq/actions/runs/40580353542). The failure was check quest: moq-dev/moq#6921 landed on main and deleted quest/m1/release-perf/sparse-misses.md, which quest/m0/ci/slow-tests.md still linked twice. Merged main in and pointed both notes at the landed fix (f69ded9), noting the model::track::test timings predate it and need re-measuring. quest check and just check pass locally on main + head; PR checks are green.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit 0ce3807 Oct 27, 2026
11 checks passed
@kixelated
kixelated deleted the quest/m0/ci/slow-tests branch October 27, 2026 22:20
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