[INFO] fetching crate scenesdetect 0.4.1...
[INFO] testing scenesdetect-0.4.1 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate scenesdetect 0.4.1 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate scenesdetect 0.4.1
[INFO] removed 0 missing examples
[INFO] finished tweaking crates.io crate scenesdetect 0.4.1
[INFO] tweaked toml for crates.io crate scenesdetect 0.4.1 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate scenesdetect 0.4.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate scenesdetect 0.4.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:117:12
[INFO] [stderr]     |
[INFO] [stderr] 117 | homepage = "https://github.com/findit-studio/scenesdetect"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 | repository = "https://github.com/findit-studio/scenesdetect"
[INFO] [stderr]     |              -----------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `scenesdetect` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b
[INFO] running `Command { std: "docker" "start" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:117:12
[INFO] [stderr]     |
[INFO] [stderr] 117 | homepage = "https://github.com/findit-studio/scenesdetect"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 | repository = "https://github.com/findit-studio/scenesdetect"
[INFO] [stderr]     |              -----------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `scenesdetect` (manifest) generated 1 warning
[INFO] [stderr]    Compiling mediatime v0.4.0
[INFO] [stderr]    Compiling scenesdetect v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling syn v3.0.4
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling fast_image_resize v6.1.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.60s
[INFO] running `Command { std: "docker" "inspect" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:117:12
[INFO] [stderr]     |
[INFO] [stderr] 117 | homepage = "https://github.com/findit-studio/scenesdetect"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 | repository = "https://github.com/findit-studio/scenesdetect"
[INFO] [stderr]     |              -----------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `scenesdetect` (manifest) generated 1 warning
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling zerocopy v0.8.56
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling cc v1.4.4
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling clap_builder v4.6.6
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling fast_image_resize v6.1.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling clap v4.6.6
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling zerocopy-derive v0.8.56
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling scenesdetect v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 48.60s
[INFO] running `Command { std: "docker" "inspect" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:117:12
[INFO] [stderr]     |
[INFO] [stderr] 117 | homepage = "https://github.com/findit-studio/scenesdetect"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 | repository = "https://github.com/findit-studio/scenesdetect"
[INFO] [stderr]     |              -----------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `scenesdetect` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.11s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/scenesdetect/fa7fd53f00cfd2a3/out/scenesdetect-fa7fd53f00cfd2a3)
[INFO] [stdout] 
[INFO] [stdout] running 449 tests
[INFO] [stdout] test adaptive::tests::adaptive_ratio_saturates_when_neighbors_are_flat ... ok
[INFO] [stdout] test adaptive::tests::buffer_fills_before_emitting ... ok
[INFO] [stdout] test adaptive::tests::try_new_propagates_content_zero_weights ... ok
[INFO] [stdout] test adaptive::tests::try_new_rejects_zero_window_width ... ok
[INFO] [stdout] test adaptive::tests::try_new_propagates_content_invalid_kernel ... ok
[INFO] [stdout] test adaptive::tests::isolated_spike_emits_cut ... ok
[INFO] [stdout] test adaptive::tests::clear_resets_state ... ok
[INFO] [stdout] test adaptive::tests::options_accessors_builders_setters_roundtrip ... ok
[INFO] [stdout] test arch::tests::avx2_plane_mean_variance_bright_matches_scalar ... ok
[INFO] [stdout] test adaptive::tests::detector_plumbing_accessors ... ok
[INFO] [stdout] test adaptive::tests::flat_content_produces_no_cut ... ok
[INFO] [stdout] test arch::tests::avx2_plane_mean_variance_matches_scalar ... ok
[INFO] [stdout] test adaptive::tests::process_bgr_and_process_hsv_entry_points ... ok
[INFO] [stdout] test arch::tests::avx2_colorfulness_matches_scalar ... ok
[INFO] [stdout] test arch::tests::avx2_bgr_to_hsv_planes_direct ... ok
[INFO] [stdout] test arch::tests::avx2_clipping_count_matches_scalar ... ok
[INFO] [stdout] test adaptive::tests::initial_cut_false_seeds_last_cut_at_target_ts ... ok
[INFO] [stdout] test arch::tests::avx2_bgr_to_luma_matches_scalar ... ok
[INFO] [stdout] test arch::tests::avx2_noise_matches_scalar ... ok
[INFO] [stdout] test arch::tests::avx2_gradient_anisotropy_matches_scalar ... ok
[INFO] [stdout] test arch::tests::avx2_mean_abs_diff_matches_scalar ... ok
[INFO] [stdout] test arch::tests::gradient_anisotropy_dispatcher_short_circuits_degenerate_before_assert ... ok
[INFO] [stdout] test arch::tests::scalar_colorfulness_empty_frame_is_zero ... ok
[INFO] [stdout] test arch::tests::scalar_colorfulness_stride_padding_is_ignored ... ok
[INFO] [stdout] test arch::tests::avx2_rgb_bgr_to_luma_matches_swapped ... ok
[INFO] [stdout] test arch::tests::scalar_colorfulness_uniform_gray_is_zero ... ok
[INFO] [stdout] test arch::tests::avx2_rgb_bgr_to_hsv_planes_matches_swapped ... ok
[INFO] [stdout] test arch::tests::avx2_sobel_matches_scalar ... ok
[INFO] [stdout] test arch::tests::scalar_colorfulness_pure_red_has_nonzero_score ... ok
[INFO] [stdout] test arch::tests::scalar_noise_alternating_stripe_matches_closed_form ... ok
[INFO] [stdout] test arch::tests::gradient_anisotropy_score_from_hist_matches_documented_endpoints ... ok
[INFO] [stdout] test arch::tests::avx2_tenengrad_matches_scalar ... ok
[INFO] [stdout] test arch::tests::scalar_gradient_anisotropy_too_small_is_zero ... ok
[INFO] [stdout] test arch::tests::scalar_gradient_anisotropy_uniform_directions_is_zero ... ok
[INFO] [stdout] test arch::tests::gradient_anisotropy_score_from_hist_multi_bin_saturation_stays_in_contract ... ok
[INFO] [stdout] test arch::tests::scalar_mean_abs_diff_nonzero ... ok
[INFO] [stdout] test arch::tests::scalar_gradient_anisotropy_zero_mag_is_zero ... ok
[INFO] [stdout] test arch::tests::scalar_bgr_to_luma_spot_values ... ok
[INFO] [stdout] test arch::tests::scalar_noise_uniform_is_zero ... ok
[INFO] [stdout] test arch::tests::scalar_clipping_count_spot_values ... ok
[INFO] [stdout] test arch::tests::scalar_gradient_anisotropy_single_direction_is_one ... ok
[INFO] [stdout] test arch::tests::scalar_bgr_to_hsv_planes ... ok
[INFO] [stdout] test arch::tests::scalar_plane_mean_variance_uniform ... ok
[INFO] [stdout] test arch::tests::scalar_noise_stride_padding_is_ignored ... ok
[INFO] [stdout] test arch::tests::scalar_plane_mean_variance_bright_uniform_is_zero_var ... ok
[INFO] [stdout] test arch::tests::scalar_tenengrad_uniform_is_zero ... ok
[INFO] [stdout] test arch::tests::sobel_dispatcher_short_circuits_on_zero_height ... ok
[INFO] [stdout] test arch::tests::scalar_rgb_to_luma_matches_swapped_bgr ... ok
[INFO] [stdout] test arch::tests::scalar_sobel ... ok
[INFO] [stdout] test arch::tests::scalar_tenengrad_small_frame_is_zero ... ok
[INFO] [stdout] test arch::tests::sobel_dispatcher_short_circuits_on_too_small ... ok
[INFO] [stdout] test arch::tests::sse41_bgr_to_hsv_planes_matches_scalar ... ok
[INFO] [stdout] test arch::tests::sse41_colorfulness_matches_scalar ... ok
[INFO] [stdout] test arch::tests::ssse3_clipping_count_matches_scalar ... ok
[INFO] [stdout] test arch::tests::scalar_plane_mean_variance_bimodal ... ok
[INFO] [stdout] test arch::tests::scalar_rgb_to_hsv_planes_matches_swapped_bgr ... ok
[INFO] [stdout] test arch::tests::sse41_gradient_anisotropy_matches_scalar ... ok
[INFO] [stdout] test arch::tests::ssse3_colorfulness_matches_scalar ... ok
[INFO] [stdout] test arch::tests::ssse3_mean_abs_diff_direct ... ok
[INFO] [stdout] test arch::tests::ssse3_bgr_to_luma_matches_scalar ... ok
[INFO] [stdout] test arch::tests::ssse3_gradient_anisotropy_matches_scalar ... ok
[INFO] [stdout] test arch::tests::ssse3_bgr_to_hsv_planes_direct ... ok
[INFO] [stdout] test arch::tests::ssse3_noise_matches_scalar ... ok
[INFO] [stdout] test arch::tests::scalar_noise_too_small_is_zero ... ok
[INFO] [stdout] test arch::tests::ssse3_plane_mean_variance_bright_matches_scalar ... ok
[INFO] [stdout] test arch::tests::ssse3_plane_mean_variance_matches_scalar ... ok
[INFO] [stdout] test arch::tests::sse41_noise_matches_scalar ... ok
[INFO] [stdout] test arch::tests::sobel_dispatcher_short_circuits_on_zero_width ... ok
[INFO] [stdout] test cascade::tests::buffer_overflow_keeps_the_stream_well_formed ... ignored, heavy: overfills the 65_536-entry selector buffer (~66k pushes); run with --ignored
[INFO] [stdout] test cascade::tests::a_single_lane_is_a_valid_composition ... ok
[INFO] [stdout] test arch::tests::ssse3_tenengrad_matches_scalar ... ok
[INFO] [stdout] test arch::tests::ssse3_sobel_direct ... ok
[INFO] [stdout] test arch::tests::ssse3_rgb_bgr_to_hsv_planes_matches_swapped ... ok
[INFO] [stdout] test arch::tests::ssse3_rgb_bgr_to_luma_matches_swapped ... ok
[INFO] [stdout] test cascade::tests::canonical_unrepresentable_close_is_rejected ... ok
[INFO] [stdout] test cascade::tests::a_shot_whose_windows_select_nothing_still_emitted_its_boundary ... ok
[INFO] [stdout] test cascade::tests::eos_fade_inside_warm_up_is_suppressed ... ok
[INFO] [stdout] test cascade::tests::dimension_switch_respects_lane_min_duration ... ok
[INFO] [stdout] test cascade::tests::adaptive_at_cut_tail_drains_per_window ... ok
[INFO] [stdout] test cascade::tests::adaptive_first_boundary_honors_initial_cut_false ... ok
[INFO] [stdout] test cascade::tests::content_first_boundary_honors_initial_cut_false ... ok
[INFO] [stdout] test arch::tests::gradient_anisotropy_dispatcher_panics_on_undersized_mag - should panic ... ok
[INFO] [stdout] test arch::tests::gradient_anisotropy_dispatcher_panics_on_undersized_dir - should panic ... ok
[INFO] [stdout] test arch::tests::gradient_anisotropy_dispatcher_panics_even_on_scalar_path - should panic ... ok
[INFO] [stdout] test cascade::tests::dimension_reset_re_anchors_first_cut_gating ... ok
[INFO] [stdout] test cascade::tests::frames_reject_oversized_views ... ok
[INFO] [stdout] test cascade::tests::frames_reject_zero_numerator_timebases ... ok
[INFO] [stdout] test cascade::tests::extractor_flags_prune_expensive_metrics ... ok
[INFO] [stdout] test cascade::tests::frames_try_new_rejects_mismatches ... ok
[INFO] [stdout] test cascade::tests::finalize_surfaces_the_terminal_fade_out_cut ... ok
[INFO] [stdout] test cascade::tests::lag_holdback_keeps_post_cut_frames_for_the_new_scene ... ok
[INFO] [stdout] test cascade::tests::dimension_change_resets_visual_state_only ... ok
[INFO] [stdout] test cascade::tests::finalize_refreshes_for_the_next_stream ... ok
[INFO] [stdout] test cascade::tests::lane_rescale_cannot_saturate_under_mixed_timebases ... ok
[INFO] [stdout] test cascade::tests::gate_failing_intervals_surface_fallback_keyframes ... ok
[INFO] [stdout] test cascade::tests::max_frame_pixels_is_the_exact_accept_reject_boundary ... ok
[INFO] [stdout] test cascade::tests::max_pts_frame_is_rejected ... ok
[INFO] [stdout] test cascade::tests::max_scene_duration_is_honored_at_exact_cap_boundaries ... ok
[INFO] [stdout] test cascade::tests::lagged_adaptive_provenance_carries_the_boundary_score ... ok
[INFO] [stdout] test cascade::tests::options_validation ... ok
[INFO] [stdout] test cascade::tests::lagged_boundary_keeps_the_trigger_frame_in_the_new_shot ... ok
[INFO] [stdout] test cascade::tests::oversized_edge_kernel_is_rejected_at_construction ... ok
[INFO] [stdout] test cascade::tests::oversized_histogram_bins_are_rejected_at_construction ... ok
[INFO] [stdout] test cascade::tests::oversized_phash_working_size_is_rejected_at_construction ... ok
[INFO] [stdout] test cascade::tests::out_of_order_frames_are_rejected_without_state_damage ... ok
[INFO] [stdout] test cascade::tests::every_window_with_frames_yields_keyframes ... ok
[INFO] [stdout] test cascade::tests::rejected_direct_cut_does_not_shadow_a_later_valid_one ... ok
[INFO] [stdout] test cascade::tests::cutless_stream_honors_max_scene_duration ... ok
[INFO] [stdout] test cascade::tests::same_push_deferral_survives_finalize ... ok
[INFO] [stdout] test cascade::tests::every_enabled_lane_cuts_directly ... ok
[INFO] [stdout] test cascade::tests::sparse_one_frame_windows_still_emit ... ok
[INFO] [stdout] test cascade::tests::sparse_timestamp_jump_keeps_push_bounded ... ok
[INFO] [stdout] test cascade::tests::keyframes_precede_their_scene_and_belong_to_its_range ... ok
[INFO] [stdout] test cascade::tests::max_scene_duration_force_splits_cutless_content ... ok
[INFO] [stdout] test content::tests::auto_kernel_size_reasonable ... ok
[INFO] [stdout] test content::tests::bgr_to_hsv_grayscale ... ok
[INFO] [stdout] test content::tests::bgr_to_hsv_pure_blue ... ok
[INFO] [stdout] test cascade::tests::coarse_canonical_timebase_keeps_association_total ... ok
[INFO] [stdout] test content::tests::bgr_to_hsv_pure_green ... ok
[INFO] [stdout] test content::tests::bgr_to_hsv_simd_matches_scalar ... ok
[INFO] [stdout] test content::tests::clear_resets_state ... ok
[INFO] [stdout] test content::tests::components_builders_round_trip ... ok
[INFO] [stdout] test content::tests::components_builders_setters_and_sum_abs ... ok
[INFO] [stdout] test content::tests::components_sum_abs ... ok
[INFO] [stdout] test content::tests::detector_options_and_component_accessors ... ok
[INFO] [stdout] test cascade::tests::strict_keyframes_carry_full_metrics ... ok
[INFO] [stdout] test content::tests::error_display_messages ... ok
[INFO] [stdout] test content::tests::edges_enabled_runs_full_pipeline ... ok
[INFO] [stdout] test content::tests::filter_mode_as_str_all_variants ... ok
[INFO] [stdout] test content::tests::filter_mode_suppress_emits_above_threshold_after_min_duration ... ok
[INFO] [stdout] test content::tests::bgr_to_hsv_pure_red ... ok
[INFO] [stdout] test content::tests::hysteresis_propagates_weak_pixels_through_both_passes ... ok
[INFO] [stdout] test content::tests::initial_cut_false_suppresses_first_detected_cut ... ok
[INFO] [stdout] test content::tests::median_u8_basic ... ok
[INFO] [stdout] test content::tests::identical_luma_frames_zero_score ... ok
[INFO] [stdout] test content::tests::initial_cut_true_emits_first_detected_cut ... ok
[INFO] [stdout] test content::tests::nms_exercises_diagonal_direction_arms ... ok
[INFO] [stdout] test content::tests::options_accessors_builders_setters_roundtrip ... ok
[INFO] [stdout] test content::tests::process_bgr_and_process_hsv_accept_frames ... ok
[INFO] [stdout] test content::tests::resize_clears_last_score_and_components ... ok
[INFO] [stdout] test content::tests::scalar_dispatch_bgr_with_edges ... ok
[INFO] [stdout] test cascade::tests::same_push_reports_defer_rather_than_vanish ... ok
[INFO] [stdout] test content::tests::scalar_dispatch_luma_only ... ok
[INFO] [stdout] test content::tests::scalar_dispatch_bgr_no_edges ... ok
[INFO] [stdout] test content::tests::merge_filter_holds_then_releases_cut_on_quiet_frame ... ok
[INFO] [stdout] test content::tests::try_new_rejects_zero_weights ... ok
[INFO] [stdout] test content::tests::van_herk_short_path_triggered_by_small_frame_large_kernel ... ok
[INFO] [stdout] test content::tests::very_different_luma_frames_exceed_threshold ... ok
[INFO] [stdout] test content::tests::van_herk_dilate_matches_naive_square_input ... ok
[INFO] [stdout] test content::tests::zero_sized_frame_with_edges_does_not_panic ... ok
[INFO] [stdout] test content::tests::try_new_rejects_even_kernel ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_hsv_planes_reexport_works ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_hsv_planes_panics_on_short_h_out - should panic ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_luma_black_is_zero ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_luma_honors_stride_padding ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_luma_panics_on_short_out - should panic ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_hsv_planes_panics_on_short_stride - should panic ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_luma_coefficients_match_bt601 ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_luma_panics_on_short_src - should panic ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_luma_panics_on_short_stride - should panic ... ok
[INFO] [stdout] test frame::convert::tests::rgb_to_hsv_planes_matches_swapped_bgr ... ok
[INFO] [stdout] test frame::convert::tests::rgb_to_luma_swaps_red_and_blue_coefficients ... ok
[INFO] [stdout] test frame::tests::frame_error_displays_include_key_fields ... ok
[INFO] [stdout] test frame::tests::hsv_frame_basic_accessors ... ok
[INFO] [stdout] test frame::tests::hsv_frame_error_display_variants ... ok
[INFO] [stdout] test frame::convert::tests::bgr_to_luma_white_is_saturated ... ok
[INFO] [stdout] test frame::tests::hsv_frame_try_new_reports_which_plane_is_short ... ok
[INFO] [stdout] test frame::tests::hsv_plane_display_and_as_str ... ok
[INFO] [stdout] test frame::tests::hsv_frame_try_new_rejects_stride_less_than_width ... ok
[INFO] [stdout] test frame::tests::hsv_frame_new_panics_on_invalid - should panic ... ok
[INFO] [stdout] test frame::tests::luma_frame_basic ... ok
[INFO] [stdout] test frame::tests::luma_frame_error_display ... ok
[INFO] [stdout] test frame::tests::luma_frame_new_panics_on_short_data - should panic ... ok
[INFO] [stdout] test frame::tests::luma_frame_new_panics_on_stride_less_than_width - should panic ... ok
[INFO] [stdout] test frame::tests::luma_frame_with_padding ... ok
[INFO] [stdout] test frame::tests::rgb_frame_try_new_rejects_width_times_three_overflow ... ok
[INFO] [stdout] test frame::tests::rgb_frame_with_padding ... ok
[INFO] [stdout] test frame::tests::try_new_rejects_short_data ... ok
[INFO] [stdout] test frame::tests::rgb_frame_basic ... ok
[INFO] [stdout] test frame::tests::try_new_rejects_stride_less_than_width ... ok
[INFO] [stdout] test frame::tests::rgb_frame_new_panics_on_invalid - should panic ... ok
[INFO] [stdout] test frame::tests::try_new_rgb_rejects_short_data ... ok
[INFO] [stdout] test frame::tests::try_new_success ... ok
[INFO] [stdout] test histogram::tests::build_bin_lookup_matches_formula ... ok
[INFO] [stdout] test histogram::tests::compute_histogram_remainder_path ... ok
[INFO] [stdout] test histogram::tests::clear_resets_stream_state ... ok
[INFO] [stdout] test frame::tests::try_new_rgb_rejects_stride_less_than_width_times_3 ... ok
[INFO] [stdout] test histogram::tests::correlation_of_flat_frames ... ok
[INFO] [stdout] test histogram::tests::correlation_of_identical_is_one ... ok
[INFO] [stdout] test histogram::tests::cut_reported_after_min_duration_elapsed ... ok
[INFO] [stdout] test histogram::tests::histogram_tail_three_exercises_three_remainder_pixels ... ok
[INFO] [stdout] test histogram::tests::identical_frames_produce_no_cut ... ok
[INFO] [stdout] test histogram::tests::detector_options_and_last_hist_diff_accessors ... ok
[INFO] [stdout] test histogram::tests::options_accessors_builders_setters_roundtrip ... ok
[INFO] [stdout] test histogram::tests::try_new_rejects_overflowing_bin_count ... ok
[INFO] [stdout] test histogram::tests::compute_histogram_respects_stride ... ok
[INFO] [stdout] test histogram::tests::min_duration_suppresses_rapid_cuts ... ok
[INFO] [stdout] test histogram::tests::with_min_frames_matches_python_default ... ok
[INFO] [stdout] test histogram::tests::very_different_frames_produce_cut ... ok
[INFO] [stdout] test keyframe::clipping::tests::all_black_pixels_are_fully_clipped ... ok
[INFO] [stdout] test keyframe::clipping::tests::all_white_pixels_are_fully_clipped ... ok
[INFO] [stdout] test keyframe::clipping::tests::boundary_values_behave_correctly ... ok
[INFO] [stdout] test histogram::tests::with_min_frames_ntsc ... ok
[INFO] [stdout] test keyframe::clipping::tests::options_builder_roundtrips ... ok
[INFO] [stdout] test keyframe::clipping::tests::byte_order_agnostic ... ok
[INFO] [stdout] test keyframe::clipping::tests::mid_gray_is_not_clipped ... ok
[INFO] [stdout] test keyframe::clipping::tests::stride_padding_is_ignored ... ok
[INFO] [stdout] test keyframe::colorfulness::tests::clear_is_noop ... ok
[INFO] [stdout] test keyframe::colorfulness::tests::options_default_enables_simd ... ok
[INFO] [stdout] test cascade::tests::mixed_timebases_keep_scene_ranges_partitioned ... ok
[INFO] [stdout] test keyframe::clipping::tests::saturated_red_is_clipped_despite_low_luma_mean ... ok
[INFO] [stdout] test keyframe::colorfulness::tests::options_default_is_bgr ... ok
[INFO] [stdout] test keyframe::colorfulness::tests::options_with_channel_order_round_trips ... ok
[INFO] [stdout] test keyframe::clipping::tests::options_default_enables_simd ... ok
[INFO] [stdout] test keyframe::colorfulness::tests::pure_red_has_nonzero_colorfulness ... ok
[INFO] [stdout] test keyframe::colorfulness::tests::rgb_detector_matches_swapped_bgr_detector ... ok
[INFO] [stdout] test keyframe::luma::tests::black_frame_has_zero_mean_and_variance ... ok
[INFO] [stdout] test keyframe::luma::tests::clear_is_noop ... ok
[INFO] [stdout] test keyframe::luma::tests::half_black_half_white_variance_matches_expected ... ok
[INFO] [stdout] test keyframe::luma::tests::lumastats_new_is_const_context_usable ... ok
[INFO] [stdout] test keyframe::luma::tests::lumastats_builders_and_setters_roundtrip ... ok
[INFO] [stdout] test keyframe::colorfulness::tests::uniform_gray_frame_has_zero_colorfulness ... ok
[INFO] [stdout] test keyframe::luma::tests::options_builder_roundtrips ... ok
[INFO] [stdout] test keyframe::luma::tests::options_default_enables_simd ... ok
[INFO] [stdout] test keyframe::luma::tests::uniform_white_has_zero_variance ... ok
[INFO] [stdout] test keyframe::metrics::tests::default_is_all_zero ... ok
[INFO] [stdout] test keyframe::metrics::tests::new_is_const_context_usable ... ok
[INFO] [stdout] test keyframe::luma::tests::stride_padding_is_ignored ... ok
[INFO] [stdout] test keyframe::metrics::tests::new_matches_default ... ok
[INFO] [stdout] test keyframe::metrics::tests::with_builder_is_const_context_usable ... ok
[INFO] [stdout] test keyframe::luma::tests::uniform_gray_has_zero_variance ... ok
[INFO] [stdout] test keyframe::metrics::tests::set_methods_chain_and_mutate ... ok
[INFO] [stdout] test keyframe::motion_blur::tests::clear_is_noop ... ok
[INFO] [stdout] test keyframe::motion_blur::tests::options_default_enables_simd ... ok
[INFO] [stdout] test keyframe::metrics::tests::with_builders_roundtrip_through_getters ... ok
[INFO] [stdout] test keyframe::motion_blur::tests::stride_padded_input_matches_tight ... ok
[INFO] [stdout] test keyframe::motion_blur::tests::too_small_frame_yields_zero ... ok
[INFO] [stdout] test keyframe::motion_blur::tests::observe_sobel_matches_observe_luma ... ok
[INFO] [stdout] test keyframe::motion_blur::tests::uniform_frame_yields_zero_anisotropy ... ok
[INFO] [stdout] test keyframe::motion_blur::tests::vertical_edge_is_highly_anisotropic ... ok
[INFO] [stdout] test keyframe::noise::tests::checkerboard_matches_closed_form ... ok
[INFO] [stdout] test keyframe::noise::tests::stride_padding_is_ignored ... ok
[INFO] [stdout] test keyframe::noise::tests::clear_is_noop ... ok
[INFO] [stdout] test keyframe::noise::tests::options_builder_roundtrips ... ok
[INFO] [stdout] test keyframe::noise::tests::uniform_frame_has_zero_noise ... ok
[INFO] [stdout] test keyframe::noise::tests::too_small_frame_yields_zero ... ok
[INFO] [stdout] test keyframe::noise::tests::options_default_enables_simd ... ok
[INFO] [stdout] test keyframe::preprocess::tests::downscaler_preserves_zero_width_frame ... ok
[INFO] [stdout] test keyframe::preprocess::tests::downscaler_preserves_zero_height_frame ... ok
[INFO] [stdout] test keyframe::preprocess::tests::downscaler_shortcircuits_when_already_small ... ok
[INFO] [stdout] test keyframe::preprocess::tests::hsv_converter_default_channel_order_is_bgr ... ok
[INFO] [stdout] test keyframe::preprocess::tests::hsv_converter_matches_frame_convert ... ok
[INFO] [stdout] test keyframe::preprocess::tests::hsv_converter_produces_three_planes ... ok
[INFO] [stdout] test keyframe::preprocess::tests::hsv_converter_with_rgb_order_matches_swapped_bgr ... ok
[INFO] [stdout] test keyframe::preprocess::tests::luma_converter_default_channel_order_is_bgr ... ok
[INFO] [stdout] test keyframe::preprocess::tests::downscaler_reduces_longest_side_to_target ... ok
[INFO] [stdout] test keyframe::preprocess::tests::luma_converter_matches_frame_convert ... ok
[INFO] [stdout] test keyframe::preprocess::tests::luma_converter_with_rgb_order_matches_swapped_bgr ... ok
[INFO] [stdout] test keyframe::preprocess::tests::resize_dims_clamped_to_one_for_extreme_aspect ... ok
[INFO] [stdout] test keyframe::preprocess::tests::resize_dims_preserves_aspect_landscape ... ok
[INFO] [stdout] test keyframe::preprocess::tests::resize_dims_square ... ok
[INFO] [stdout] test keyframe::preprocess::tests::resize_dims_preserves_aspect_portrait ... ok
[INFO] [stdout] test keyframe::reduce::tests::black_yields_zero_zero ... ok
[INFO] [stdout] test content::tests::van_herk_dilate_non_square_and_non_multiple_dims ... ok
[INFO] [stdout] test keyframe::reduce::tests::uniform_gray_has_mean_and_zero_variance ... ok
[INFO] [stdout] test keyframe::reduce::tests::bimodal_matches_expected_variance ... ok
[INFO] [stdout] test cascade::tests::end_of_stream_opens_no_shot_and_owes_no_boundary ... ok
[INFO] [stdout] test keyframe::reduce::tests::stride_padding_is_ignored ... ok
[INFO] [stdout] test keyframe::saturation::tests::observe_hsv_honours_stride_padding ... ok
[INFO] [stdout] test keyframe::saturation::tests::observe_rgb_matches_observe_hsv_on_equivalent_input ... ok
[INFO] [stdout] test cascade::tests::quality_and_fallback_keyframes_can_both_occur ... ok
[INFO] [stdout] test keyframe::reduce::tests::zero_dim_returns_zeros ... ok
[INFO] [stdout] test keyframe::saturation::tests::bimodal_saturation_variance_matches_expected ... ok
[INFO] [stdout] test keyframe::saturation::tests::observe_rgb_with_rgb_order_matches_swapped_bgr ... ok
[INFO] [stdout] test keyframe::saturation::tests::options_builder_roundtrips ... ok
[INFO] [stdout] test keyframe::saturation::tests::options_default_channel_order_is_bgr ... ok
[INFO] [stdout] test keyframe::saturation::tests::uniform_saturation_has_zero_variance ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_disabled_falls_back_to_absolute_floor ... ok
[INFO] [stdout] test keyframe::saturation::tests::options_default_enables_simd ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_does_not_raise_floor_in_high_sharpness_shot ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_excludes_hard_gate_failures_from_percentile ... ok
[INFO] [stdout] test keyframe::saturation::tests::observe_rgb_reuses_scratch_across_calls ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_filters_non_finite_sharpness_samples ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_excludes_corrupt_non_sharpness_metrics_from_percentile ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_recovers_strict_winner_in_low_detail_shot ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_uses_absolute_below_min_samples ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_min_samples_zero_with_empty_shot_uses_absolute_floor ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_works_when_min_samples_exceeds_storage_cap ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_uses_rank_buckets_not_modulo_stride ... ok
[INFO] [stdout] test keyframe::select::tests::builder_neg_inf_min_sharpness_doesnt_admit_every_frame ... ok
[INFO] [stdout] test keyframe::select::tests::argmax_skips_when_only_candidate_has_non_finite_sharpness ... ok
[INFO] [stdout] test keyframe::select::tests::clear_empties_buffer ... ok
[INFO] [stdout] test keyframe::select::tests::composite_argmax_collapses_to_sharpness_when_other_weights_zero ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_stride_samples_full_window_not_just_prefix ... ok
[INFO] [stdout] test keyframe::select::tests::composite_quality_stays_finite_under_invalid_weights ... ok
[INFO] [stdout] test keyframe::select::tests::composite_quality_with_clamped_norms_stays_finite ... ok
[INFO] [stdout] test keyframe::select::tests::composite_weights_default_matches_spec ... ok
[INFO] [stdout] test keyframe::select::tests::composite_weights_finite_negative_weight_passes_through ... ok
[INFO] [stdout] test keyframe::select::tests::composite_weights_invalid_norms_clamp_to_default ... ok
[INFO] [stdout] test keyframe::select::tests::composite_weights_builders_roundtrip ... ok
[INFO] [stdout] test keyframe::select::tests::composite_weights_new_is_const_context_usable ... ok
[INFO] [stdout] test keyframe::select::tests::composite_weights_invalid_weights_clamp_to_zero ... ok
[INFO] [stdout] test keyframe::select::tests::composite_argmax_picks_clean_over_sharper_noisy_under_defaults ... ok
[INFO] [stdout] test keyframe::select::tests::composite_weights_valid_norms_pass_through ... ok
[INFO] [stdout] test keyframe::select::tests::fallback_argmax_prefers_finite_sharpness_over_nan_incumbent ... ok
[INFO] [stdout] test keyframe::select::tests::fallback_argmax_skips_above_physical_max_but_below_old_cap_colorfulness ... ok
[INFO] [stdout] test keyframe::select::tests::default_options_match_design_doc ... ok
[INFO] [stdout] test keyframe::select::tests::fallback_argmax_skips_above_physical_max_but_below_old_cap_sharpness ... ok
[INFO] [stdout] test keyframe::select::tests::fallback_argmax_skips_corrupt_non_sharpness_metrics ... ok
[INFO] [stdout] test keyframe::select::tests::fallback_argmax_skips_impossible_finite_sharpness ... ok
[INFO] [stdout] test keyframe::select::tests::composite_weights_paired_builders_are_const_context_usable ... ok
[INFO] [stdout] test keyframe::select::tests::fallback_argmax_skips_negative_sharpness ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_degenerate_range_returns_empty_and_drops_stale ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_can_be_called_multiple_times ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_drops_stale_entries_from_earlier_shots ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_falls_back_when_all_frames_fail_gates ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_multiple_buckets_pick_per_bucket_sharpest ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_emits_in_pts_order ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_remaining_empty_buffer_returns_empty ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_remaining_treats_buffer_tail_as_final_shot ... ok
[INFO] [stdout] test keyframe::preprocess::tests::downscaler_handles_stride_padded_source ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_retains_post_shot_entries_for_next_call ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_single_bucket_picks_sharpest ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_skips_bucket_with_no_entries ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_two_tick_shot_with_default_margin_does_not_collapse ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_respects_first_bucket_margin ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_keeps_equiluminant_multicolour ... ok
[INFO] [stdout] test keyframe::select::tests::floor_sampling_does_not_walk_post_eligible_buffer ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_clipping_above_one ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_brightness_outside_0_255 ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_heavy_clipping ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_flat_frame ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_impossible_finite_colorfulness ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_impossible_finite_sharpness ... ok
[INFO] [stdout] test keyframe::preprocess::tests::downscaler_reuses_scratch_across_calls ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_impossible_finite_noise ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_motion_blur_above_one ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_negative_clipping ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_impossible_finite_variance ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_negative_motion_blur ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_negative_colorfulness ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_negative_noise ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_negative_sharpness ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_non_finite_brightness ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_negative_variances ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_non_finite_clipping ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_non_finite_luma_variance ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_non_finite_motion_blur_even_with_gate_disabled ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_non_finite_saturation_variance ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_too_bright ... ok
[INFO] [stdout] test keyframe::select::tests::hard_gate_rejects_too_dark ... ok
[INFO] [stdout] test keyframe::select::tests::motion_blur_gate_disabled_by_default_keeps_high_anisotropy_frame ... ok
[INFO] [stdout] test keyframe::select::tests::motion_blur_gate_enabled_rejects_high_anisotropy_frame ... ok
[INFO] [stdout] test keyframe::select::tests::n_buckets_floor_is_one ... ok
[INFO] [stdout] test keyframe::select::tests::n_buckets_capped_by_max_frames ... ok
[INFO] [stdout] test keyframe::select::tests::n_buckets_scales_with_duration ... ok
[INFO] [stdout] test keyframe::select::tests::nan_brightness_corrupt_frame_emits_nothing ... ok
[INFO] [stdout] test cascade::tests::the_boundary_carries_the_opening_frame_s_own_metrics ... ok
[INFO] [stdout] test keyframe::select::tests::observe_and_buffered ... ok
[INFO] [stdout] test keyframe::select::tests::observe_rejects_out_of_order_pts ... ok
[INFO] [stdout] test keyframe::select::tests::options_builders_roundtrip ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_allocation_bounded_for_long_shots ... ok
[INFO] [stdout] test keyframe::select::tests::options_max_frames_at_cap_is_accepted ... ok
[INFO] [stdout] test keyframe::select::tests::options_margin_half_panics - should panic ... ok
[INFO] [stdout] test keyframe::select::tests::options_max_clipping_out_of_range_panics - should panic ... ok
[INFO] [stdout] test keyframe::select::tests::options_max_frames_above_cap_panics - should panic ... ok
[INFO] [stdout] test keyframe::select::tests::options_max_frames_just_above_cap_panics - should panic ... ok
[INFO] [stdout] test keyframe::select::tests::options_target_interval_zero_panics - should panic ... ok
[INFO] [stdout] test keyframe::select::tests::strict_argmax_skips_non_finite_composite ... ok
[INFO] [stdout] test keyframe::select::tests::strict_argmax_cannot_be_gamed_by_negative_penalty_metrics ... ok
[INFO] [stdout] test keyframe::select::tests::options_max_frames_zero_panics - should panic ... ok
[INFO] [stdout] test keyframe::select::tests::sharper_returns_ordering_greater ... ok
[INFO] [stdout] test keyframe::select::tests::with_min_sharpness_clamps_non_finite_to_default ... ok
[INFO] [stdout] test keyframe::select::tests::with_luma_variance_threshold_clamps_non_finite_to_default ... ok
[INFO] [stdout] test keyframe::select::tests::with_min_sharpness_preserves_finite_negative ... ok
[INFO] [stdout] test keyframe::select::tests::with_sat_variance_threshold_clamps_non_finite_to_default ... ok
[INFO] [stdout] test keyframe::sharpness::tests::clear_is_noop ... ok
[INFO] [stdout] test keyframe::sharpness::tests::horizontal_edge_matches_vertical_edge ... ok
[INFO] [stdout] test keyframe::sharpness::tests::observe_sobel_matches_observe_luma_on_equivalent_input ... ok
[INFO] [stdout] test cascade::tests::the_boundary_frame_is_never_selected_twice ... ok
[INFO] [stdout] test keyframe::sharpness::tests::observe_sobel_too_small_returns_zero ... ok
[INFO] [stdout] test keyframe::sharpness::tests::observe_sobel_uniform_nonzero_interior ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_one_tick_shot_with_default_margin_does_not_collapse ... ok
[INFO] [stdout] test keyframe::select::tests::finalize_remaining_eos_before_buffer_start_returns_empty ... ok
[INFO] [stdout] test keyframe::sharpness::tests::too_small_frame_returns_zero ... ok
[INFO] [stdout] test keyframe::sharpness::tests::uniform_frame_has_zero_sharpness ... ok
[INFO] [stdout] test keyframe::sharpness::tests::stride_padding_is_ignored ... ok
[INFO] [stdout] test keyframe::sharpness::tests::options_builder_roundtrips ... ok
[INFO] [stdout] test keyframe::sharpness::tests::options_default_enables_simd ... ok
[INFO] [stdout] test keyframe::sharpness::tests::vertical_edge_matches_expected_tenengrad ... ok
[INFO] [stdout] test phash::tests::build_dct_cos_is_orthonormal ... ok
[INFO] [stdout] test keyframe::select::tests::adaptive_floor_excludes_margin_zone_samples ... ok
[INFO] [stdout] test keyframe::sharpness::tests::sharper_frame_scores_higher ... ok
[INFO] [stdout] test keyframe::sharpness::tests::observe_sobel_zero_gradients_yield_zero ... ok
[INFO] [stdout] test phash::tests::dct_dc_of_constant_input ... ok
[INFO] [stdout] test phash::tests::error_display ... ok
[INFO] [stdout] test phash::tests::hamming_distance_basic ... ok
[INFO] [stdout] test phash::tests::hash_bit_packing_matches_layout ... ok
[INFO] [stdout] test phash::tests::clear_resets_stream_state ... ok
[INFO] [stdout] test phash::tests::clear_preserves_resize_table_when_dims_match ... ok
[INFO] [stdout] test phash::tests::median_f32_singleton ... ok
[INFO] [stdout] test phash::tests::median_odd_and_even ... ok
[INFO] [stdout] test phash::tests::options_accessors_builders_setters_roundtrip ... ok
[INFO] [stdout] test phash::tests::resize_area_halve ... ok
[INFO] [stdout] test phash::tests::new_panics_on_invalid - should panic ... ok
[INFO] [stdout] test phash::tests::resize_table_rebuild_on_dim_change ... ok
[INFO] [stdout] test phash::tests::resize_area_identity ... ok
[INFO] [stdout] test phash::tests::identical_frames_produce_no_cut ... ok
[INFO] [stdout] test phash::tests::try_new_rejects_imsize_squared_overflow ... ok
[INFO] [stdout] test phash::tests::try_new_rejects_lowpass_zero ... ok
[INFO] [stdout] test phash::tests::try_new_rejects_size_too_small ... ok
[INFO] [stdout] test phash::tests::try_new_success ... ok
[INFO] [stdout] test phash::tests::with_min_frames_matches_python_default ... ok
[INFO] [stdout] test threshold::tests::clear_resets_stream_state ... ok
[INFO] [stdout] test threshold::tests::ceiling_method_fires_on_rising_edge ... ok
[INFO] [stdout] test threshold::tests::detector_options_accessor ... ok
[INFO] [stdout] test threshold::tests::fade_out_then_fade_in_emits_cut_at_midpoint ... ok
[INFO] [stdout] test threshold::tests::fade_bias_places_cut_at_fade_out_or_fade_in ... ok
[INFO] [stdout] test threshold::tests::final_cut_gated_on_fade_frame_not_last_ts ... ok
[INFO] [stdout] test threshold::tests::finish_returns_none_when_ending_in_fade_in ... ok
[INFO] [stdout] test threshold::tests::first_frame_emits_no_cut ... ok
[INFO] [stdout] test threshold::tests::finish_emits_final_cut_when_ending_in_fade_out ... ok
[INFO] [stdout] test phash::tests::very_different_frames_produce_cut ... ok
[INFO] [stdout] test threshold::tests::initial_cut_false_seeds_last_cut_at_ts ... ok
[INFO] [stdout] test threshold::tests::interpolate_cut_bias_bounds ... ok
[INFO] [stdout] test threshold::tests::interpolate_cut_midpoint_mixed_timebase ... ok
[INFO] [stdout] test threshold::tests::finish_clears_state ... ok
[INFO] [stdout] test threshold::tests::finish_returns_none_when_add_final_scene_disabled ... ok
[INFO] [stdout] test threshold::tests::last_fade_range_exposes_full_endpoints ... ok
[INFO] [stdout] test threshold::tests::luma_mean_uniform ... ok
[INFO] [stdout] test threshold::tests::min_duration_suppresses_cuts ... ok
[INFO] [stdout] test threshold::tests::options_accessors_builders_setters_roundtrip ... ok
[INFO] [stdout] test threshold::tests::rgb_mean_mixed_channels ... ok
[INFO] [stdout] test threshold::tests::rgb_mean_uniform ... ok
[INFO] [stdout] test threshold::tests::min_duration_gate_measured_from_emitted_cut_not_fade_in ... ok
[INFO] [stdout] test threshold::tests::last_fade_range_survives_finish_as_instant ... ok
[INFO] [stdout] test threshold::tests::method_as_str_all_variants ... ok
[INFO] [stdout] test threshold::tests::process_rgb_equivalent_to_luma_for_uniform_frames ... ok
[INFO] [stdout] test phash::tests::with_min_frames_ntsc ... ok
[INFO] [stdout] test threshold::tests::last_fade_range_cleared_by_clear ... ok
[INFO] [stdout] test cascade::tests::clear_discards_without_emitting ... ok
[INFO] [stdout] test keyframe::select::tests::observe_refuses_at_buffer_cap_and_signals_overflow ... ok
[INFO] [stdout] test cascade::tests::flat_stream_emits_no_cuts_but_still_samples_keyframes ... ok
[INFO] [stdout] test cascade::tests::keyframes_partition_a_multi_scene_stream ... ok
[INFO] [stdout] test cascade::tests::chroma_only_cut_is_caught_by_the_saturation_lane ... ok
[INFO] [stdout] test phash::tests::min_duration_suppresses_rapid_cuts ... ok
[INFO] [stdout] test cascade::tests::pathological_boundary_rate_keeps_the_backlog_bounded ... ok
[INFO] [stdout] test cascade::tests::every_shot_opens_with_a_boundary_keyframe ... ok
[INFO] [stdout] test cascade::tests::consecutive_cuts_are_found ... ok
[INFO] [stderr]    Doc-tests scenesdetect
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 448 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.76s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test src/keyframe/colorfulness.rs - keyframe::colorfulness (line 24) - compile ... ok
[INFO] [stdout] test src/keyframe/luma.rs - keyframe::luma (line 15) - compile ... ok
[INFO] [stdout] test src/keyframe/saturation.rs - keyframe::saturation (line 22) - compile ... ok
[INFO] [stdout] test src/keyframe/clipping.rs - keyframe::clipping (line 21) - compile ... ok
[INFO] [stdout] test src/keyframe/preprocess.rs - keyframe::preprocess (line 9) - compile ... ok
[INFO] [stdout] test src/keyframe/noise.rs - keyframe::noise (line 21) - compile ... ok
[INFO] [stdout] test src/keyframe/sharpness.rs - keyframe::sharpness (line 28) - compile ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.58s; merged doctests compilation took 0.57s
[INFO] running `Command { std: "docker" "inspect" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b", kill_on_drop: false }`
[INFO] [stdout] 21363e9214b2d4c1326ee80d891900b6273fe56336c224ea9cf07406919e094b
