[INFO] fetching crate oximedia-dedup 0.1.3... [INFO] testing oximedia-dedup-0.1.3 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-2 [INFO] extracting crate oximedia-dedup 0.1.3 into /workspace/builds/worker-7-tc2/source [INFO] started tweaking crates.io crate oximedia-dedup 0.1.3 [INFO] finished tweaking crates.io crate oximedia-dedup 0.1.3 [INFO] tweaked toml for crates.io crate oximedia-dedup 0.1.3 written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate oximedia-dedup 0.1.3 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate oximedia-dedup 0.1.3 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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9d053412da78c57b8f4411c427cff9071e6c607a6d0e4f197829580879ab9d5e [INFO] running `Command { std: "docker" "start" "-a" "9d053412da78c57b8f4411c427cff9071e6c607a6d0e4f197829580879ab9d5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9d053412da78c57b8f4411c427cff9071e6c607a6d0e4f197829580879ab9d5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9d053412da78c57b8f4411c427cff9071e6c607a6d0e4f197829580879ab9d5e", kill_on_drop: false }` [INFO] [stdout] 9d053412da78c57b8f4411c427cff9071e6c607a6d0e4f197829580879ab9d5e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2f3068ea079819501bfd27a65a51bd16ad837f9efe2707ba73c582db726177d9 [INFO] running `Command { std: "docker" "start" "-a" "2f3068ea079819501bfd27a65a51bd16ad837f9efe2707ba73c582db726177d9", kill_on_drop: false }` [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling audio-core v0.2.1 [INFO] [stderr] Compiling strength_reduce v0.2.4 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling oxifft v0.2.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling hashbrown v0.17.0 [INFO] [stderr] Compiling rayon v1.12.0 [INFO] [stderr] Compiling seahash v4.1.0 [INFO] [stderr] Compiling spin v0.10.0 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling blake3 v1.8.4 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling fdeflate v0.3.7 [INFO] [stderr] Compiling oximedia-cv v0.1.3 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling audioadapter v3.0.0 [INFO] [stderr] Compiling audioadapter-sample v3.0.0 [INFO] [stderr] Compiling windowfunctions v0.1.1 [INFO] [stderr] Compiling png v0.18.1 [INFO] [stderr] Compiling primal-check v0.3.4 [INFO] [stderr] Compiling transpose v0.2.3 [INFO] [stderr] Compiling audioadapter-buffers v3.0.0 [INFO] [stderr] Compiling rustfft v6.4.1 [INFO] [stderr] Compiling ndarray v0.17.2 [INFO] [stderr] Compiling jpeg-decoder v0.3.2 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling oxifft-codegen v0.2.0 [INFO] [stderr] Compiling visibility v0.1.1 [INFO] [stderr] Compiling tokio v1.52.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling oxiarc-core v0.2.6 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling oxiarc-deflate v0.2.6 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling realfft v3.5.0 [INFO] [stderr] Compiling rubato v2.0.0 [INFO] [stderr] Compiling oximedia-core v0.1.3 [INFO] [stderr] Compiling oximedia-audio v0.1.3 [INFO] [stderr] Compiling oximedia-io v0.1.3 [INFO] [stderr] Compiling oximedia-codec v0.1.3 [INFO] [stderr] Compiling oximedia-dedup v0.1.3 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 10s [INFO] running `Command { std: "docker" "inspect" "2f3068ea079819501bfd27a65a51bd16ad837f9efe2707ba73c582db726177d9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2f3068ea079819501bfd27a65a51bd16ad837f9efe2707ba73c582db726177d9", kill_on_drop: false }` [INFO] [stdout] 2f3068ea079819501bfd27a65a51bd16ad837f9efe2707ba73c582db726177d9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] eced317ad162f0e74c3a5749db4af607737b89c909a9b992f84d1cbfaa3a5b80 [INFO] running `Command { std: "docker" "start" "-a" "eced317ad162f0e74c3a5749db4af607737b89c909a9b992f84d1cbfaa3a5b80", kill_on_drop: false }` [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling oximedia-core v0.1.3 [INFO] [stderr] Compiling png v0.18.1 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling oximedia-io v0.1.3 [INFO] [stderr] Compiling oximedia-audio v0.1.3 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling oximedia-codec v0.1.3 [INFO] [stderr] Compiling oximedia-cv v0.1.3 [INFO] [stderr] Compiling oximedia-dedup v0.1.3 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 51.77s [INFO] running `Command { std: "docker" "inspect" "eced317ad162f0e74c3a5749db4af607737b89c909a9b992f84d1cbfaa3a5b80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eced317ad162f0e74c3a5749db4af607737b89c909a9b992f84d1cbfaa3a5b80", kill_on_drop: false }` [INFO] [stdout] eced317ad162f0e74c3a5749db4af607737b89c909a9b992f84d1cbfaa3a5b80 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 9d744ea4caf2af73dc4c0e617fa2197363f3b5916c06b016b4384c43260d6a37 [INFO] running `Command { std: "docker" "start" "-a" "9d744ea4caf2af73dc4c0e617fa2197363f3b5916c06b016b4384c43260d6a37", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oximedia_dedup-6ff9acb6bbd4b64a) [INFO] [stdout] [INFO] [stdout] running 626 tests [INFO] [stdout] test bloom_filter::tests::test_bloom_clear ... ok [INFO] [stdout] test bloom_filter::tests::test_bloom_different_fpr_different_hashes ... ok [INFO] [stdout] test bloom_filter::tests::test_bloom_estimated_count_after_inserts ... ok [INFO] [stdout] test bloom_filter::tests::test_bloom_estimated_count_zero_initially ... ok [INFO] [stdout] test audio::tests::test_audio_duration ... ok [INFO] [stdout] test bloom_filter::tests::test_bloom_insert_and_contains ... ok [INFO] [stdout] test bloom_filter::tests::test_bloom_new_non_empty ... ok [INFO] [stdout] test bloom_filter::tests::test_near_dup_first_occurrence_not_duplicate ... ok [INFO] [stdout] test bloom_filter::tests::test_near_dup_estimated_unique_count ... ok [INFO] [stdout] test audio::tests::test_downsample ... ok [INFO] [stdout] test bloom_filter::tests::test_bloom_initially_empty ... ok [INFO] [stdout] test bloom_filter::tests::test_bloom_multiple_inserts ... ok [INFO] [stdout] test audio::tests::test_window_functions ... ok [INFO] [stdout] test bloom_filter::tests::test_pipeline_all_unique ... ok [INFO] [stdout] test bloom_filter::tests::test_pipeline_config_default ... ok [INFO] [stdout] test bloom_filter::tests::test_pipeline_empty ... ok [INFO] [stdout] test bloom_filter::tests::test_pipeline_all_identical ... ok [INFO] [stdout] test bloom_filter::tests::test_pipeline_mixed ... ok [INFO] [stdout] test bloom_filter::tests::test_near_dup_new ... ok [INFO] [stdout] test bloom_filter::tests::test_near_dup_reset_clears_state ... ok [INFO] [stdout] test bloom_filter::tests::test_pipeline_near_duplicates ... ok [INFO] [stdout] test bloom_filter::tests::test_pipeline_result_bloom_rejection_rate ... ok [INFO] [stdout] test bloom_filter::tests::test_pipeline_result_empty_total ... ok [INFO] [stdout] test bloom_filter::tests::test_prescreen_all_unique ... ok [INFO] [stdout] test bloom_filter::tests::test_prescreen_candidate_rate ... ok [INFO] [stdout] test bloom_filter::tests::test_prescreen_empty_input ... ok [INFO] [stdout] test bloom_filter::tests::test_prescreen_perceptual_hashes_all_different ... ok [INFO] [stdout] test bloom_filter::tests::test_prescreen_perceptual_hashes_identical ... ok [INFO] [stdout] test bloom_filter::tests::test_near_dup_second_occurrence_is_duplicate ... ok [INFO] [stdout] test audio::tests::test_to_mono ... ok [INFO] [stdout] test cluster::tests::test_builder_groups_by_threshold ... ok [INFO] [stdout] test cluster::tests::test_builder_separate_clusters ... ok [INFO] [stdout] test cluster::tests::test_cluster_add_member ... ok [INFO] [stdout] test cluster::tests::test_cluster_average_similarity ... ok [INFO] [stdout] test cluster::tests::test_cluster_average_similarity_empty_edges ... ok [INFO] [stdout] test cluster::tests::test_cluster_new ... ok [INFO] [stdout] test cluster::tests::test_cluster_select_representative_single ... ok [INFO] [stdout] test cluster::tests::test_cluster_single_member_not_duplicate ... ok [INFO] [stdout] test cluster::tests::test_cluster_summary_empty ... ok [INFO] [stdout] test cluster::tests::test_cluster_summary_with_clusters ... ok [INFO] [stdout] test cluster::tests::test_merge_clusters ... ok [INFO] [stdout] test cluster::tests::test_similarity_pair_new ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_chain ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_edges_attached ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_empty ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_long_chain ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_selects_representative ... ok [INFO] [stdout] test bloom_filter::tests::test_near_dup_multiple_unique_items ... ok [INFO] [stdout] test cluster::tests::test_cluster_select_representative_two ... ok [INFO] [stdout] test bloom_filter::tests::test_prescreen_result_rates_sum_to_one ... ok [INFO] [stdout] test bloom_filter::tests::test_prescreen_with_duplicates ... ok [INFO] [stdout] test cluster::tests::test_builder_with_strategy_complete_linkage ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_star_topology ... ok [INFO] [stdout] test content_id::tests::test_audio_code_similarity_disjoint ... ok [INFO] [stdout] test content_id::tests::test_audio_code_similarity_empty ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_threshold_filters ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_single_pair ... ok [INFO] [stdout] test content_id::tests::test_content_id_different_inputs ... ok [INFO] [stdout] test content_id::tests::test_content_id_empty_data ... ok [INFO] [stdout] test content_id::tests::test_content_id_display ... ok [INFO] [stdout] test content_id::tests::test_content_id_generate_length ... ok [INFO] [stdout] test content_id::tests::test_registry_empty ... ok [INFO] [stdout] test content_id::tests::test_registry_find_by_audio_match ... ok [INFO] [stdout] test content_id::tests::test_registry_find_by_visual_match ... ok [INFO] [stdout] test content_id::tests::test_registry_multiple_unique ... ok [INFO] [stdout] test content_id::tests::test_registry_register_and_lookup ... ok [INFO] [stdout] test content_id::tests::test_registry_stats_initial ... ok [INFO] [stdout] test content_signature::robust_tests::test_radial_variance_different_images ... ok [INFO] [stdout] test content_signature::robust_tests::test_radial_variance_self_similarity ... ok [INFO] [stdout] test bloom_filter::tests::test_bloom_larger_capacity_more_bits ... ok [INFO] [stdout] test audio::tests::test_audio_creation ... ok [INFO] [stdout] test content_signature::robust_tests::test_radial_variance_uniform_image ... ok [INFO] [stdout] test content_id::tests::test_registry_find_by_audio_no_match ... ok [INFO] [stdout] test cluster::tests::test_transitive_groups_from_pairs_convenience ... ok [INFO] [stdout] test cluster::tests::test_transitive_closure_two_components ... ok [INFO] [stdout] test content_id::tests::test_content_id_deterministic ... ok [INFO] [stdout] test content_id::tests::test_registry_duplicate_not_stored ... ok [INFO] [stdout] test content_signature::robust_tests::test_robust_signature_different ... ok [INFO] [stdout] test content_signature::robust_tests::test_robust_signature_duration_reject ... ok [INFO] [stdout] test content_signature::robust_tests::test_robust_signature_no_signals ... ok [INFO] [stdout] test content_signature::robust_tests::test_spectral_peaks_empty ... ok [INFO] [stdout] test content_signature::robust_tests::test_spectral_peaks_identical ... ok [INFO] [stdout] test content_signature::robust_tests::test_robust_signature_identical ... ok [INFO] [stdout] test content_signature::robust_tests::test_spectral_peaks_no_overlap ... ok [INFO] [stdout] test content_signature::robust_tests::test_spectral_peaks_truncation ... ok [INFO] [stdout] test content_signature::robust_tests::test_temporal_rhythm_constant ... ok [INFO] [stdout] test content_signature::robust_tests::test_robust_signature_signal_count ... ok [INFO] [stdout] test content_signature::tests::test_database_find_matches ... ok [INFO] [stdout] test content_signature::tests::test_database_lookup_missing ... ok [INFO] [stdout] test content_signature::tests::test_database_match_count ... ok [INFO] [stdout] test content_signature::tests::test_database_remove_asset ... ok [INFO] [stdout] test content_signature::robust_tests::test_robust_signature_watermark_resilience ... ok [INFO] [stdout] test content_signature::robust_tests::test_temporal_rhythm_empty ... ok [INFO] [stdout] test content_id::tests::test_content_id_generate_hex_chars ... ok [INFO] [stdout] test content_signature::robust_tests::test_robust_signature_partial_signals ... ok [INFO] [stdout] test content_signature::robust_tests::test_temporal_rhythm_self_similarity ... ok [INFO] [stdout] test content_signature::tests::test_database_store_and_lookup ... ok [INFO] [stdout] test content_signature::tests::test_sig_type_is_perceptual_audio ... ok [INFO] [stdout] test content_signature::tests::test_sig_type_not_perceptual_crypto ... ok [INFO] [stdout] test content_signature::tests::test_sig_type_supports_exact_match ... ok [INFO] [stdout] test content_signature::tests::test_signature_exact_match_different ... ok [INFO] [stdout] test content_signature::tests::test_signature_exact_match_identical ... ok [INFO] [stdout] test content_signature::tests::test_signature_perceptual_exceeds_tolerance ... ok [INFO] [stdout] test content_signature::tests::test_signature_type_mismatch ... ok [INFO] [stdout] test cross_format::tests::test_add_batch ... ok [INFO] [stdout] test cross_format::tests::test_audio_fingerprint_similarity_different ... ok [INFO] [stdout] test cross_format::tests::test_audio_fingerprint_similarity_missing ... ok [INFO] [stdout] test cross_format::tests::test_audio_fingerprint_similarity_identical ... ok [INFO] [stdout] test cross_format::tests::test_cross_format_config_normalised_weights ... ok [INFO] [stdout] test cross_format::tests::test_detector_audio_only_content ... ok [INFO] [stdout] test cross_format::tests::test_detector_duration_too_different ... ok [INFO] [stdout] test cross_format::tests::test_detector_find_groups ... ok [INFO] [stdout] test cross_format::tests::test_detector_empty_pool ... ok [INFO] [stdout] test cross_format::tests::test_detector_identical_content_different_format ... ok [INFO] [stdout] test cross_format::tests::test_detector_partial_signals ... ok [INFO] [stdout] test cross_format::tests::test_detector_single_item ... ok [INFO] [stdout] test cross_format::tests::test_detector_two_separate_groups ... ok [INFO] [stdout] test cross_format::tests::test_duration_similarity_close ... ok [INFO] [stdout] test cross_format::tests::test_duration_similarity_identical ... ok [INFO] [stdout] test cross_format::tests::test_duration_similarity_missing ... ok [INFO] [stdout] test cross_format::tests::test_duration_similarity_too_far ... ok [INFO] [stdout] test cross_format::tests::test_detector_same_format_not_matched ... ok [INFO] [stdout] test content_signature::tests::test_signature_perceptual_within_tolerance ... ok [INFO] [stdout] test content_signature::robust_tests::test_spectral_peaks_tolerance ... ok [INFO] [stdout] test content_signature::tests::test_sig_type_is_perceptual_visual ... ok [INFO] [stdout] test content_signature::tests::test_sig_type_label_nonempty ... ok [INFO] [stdout] test cross_format::tests::test_format_info_builders ... ok [INFO] [stdout] test cross_format::tests::test_format_info_creation ... ok [INFO] [stdout] test cross_format::tests::test_item_count ... ok [INFO] [stdout] test cross_format::tests::test_phash_similarity_close ... ok [INFO] [stdout] test cross_format::tests::test_matches_sorted_by_confidence ... ok [INFO] [stdout] test cross_format::tests::test_phash_similarity_too_far ... ok [INFO] [stdout] test cross_format::tests::test_resolution_similarity_partial ... ok [INFO] [stdout] test cross_format::tests::test_resolution_similarity_missing ... ok [INFO] [stdout] test cross_format::tests::test_resolution_similarity_exact ... ok [INFO] [stdout] test cross_format::tests::test_resolution_similarity_near_identical ... ok [INFO] [stdout] test cross_format::tests::test_phash_similarity_identical ... ok [INFO] [stdout] test cross_format::tests::test_resolution_similarity_different ... ok [INFO] [stdout] test cross_format::tests::test_signal_scores_populated ... ok [INFO] [stdout] test dedup_cache::tests::test_cache_stats_default ... ok [INFO] [stdout] test cross_format::tests::test_is_different_format ... ok [INFO] [stdout] test dedup_cache::tests::test_hash_cache_basic ... ok [INFO] [stdout] test dedup_cache::tests::test_hash_cache_clear ... ok [INFO] [stdout] test dedup_cache::tests::test_hash_cache_eviction ... ok [INFO] [stdout] test dedup_cache::tests::test_lru_cache_insert_and_get ... ok [INFO] [stdout] test dedup_cache::tests::test_lru_cache_stats ... ok [INFO] [stdout] test dedup_cache::tests::test_lru_cache_update_existing ... ok [INFO] [stdout] test dedup_cache::tests::test_cache_stats_display ... ok [INFO] [stdout] test dedup_cache::tests::test_lru_cache_clear ... ok [INFO] [stdout] test dedup_index::tests::test_add_or_increment_existing_entry ... ok [INFO] [stdout] test dedup_index::tests::test_add_or_increment_new_entry ... ok [INFO] [stdout] test dedup_cache::tests::test_cache_stats_reset ... ok [INFO] [stdout] test dedup_index::tests::test_clear ... ok [INFO] [stdout] test dedup_cache::tests::test_lru_cache_access_promotes ... ok [INFO] [stdout] test dedup_cache::tests::test_lru_cache_eviction ... ok [INFO] [stdout] test audio::tests::test_extract ... ok [INFO] [stdout] test dedup_index::tests::test_duplicate_rate ... ok [INFO] [stdout] test dedup_index::tests::test_entry_hash_hex ... ok [INFO] [stdout] test dedup_index::tests::test_entry_is_duplicate_false_when_once ... ok [INFO] [stdout] test dedup_index::tests::test_entry_is_duplicate_true_when_multiple ... ok [INFO] [stdout] test dedup_index::tests::test_entry_space_savings_correct ... ok [INFO] [stdout] test dedup_index::tests::test_find_by_hash_found ... ok [INFO] [stdout] test dedup_index::tests::test_find_by_hash_not_found ... ok [INFO] [stdout] test dedup_index::tests::test_find_by_id ... ok [INFO] [stdout] test audio::tests::test_waveform_similarity ... ok [INFO] [stdout] test dedup_cache::tests::test_cache_stats_hit_rate ... ok [INFO] [stdout] test dedup_index::tests::test_most_common_ordering ... ok [INFO] [stdout] test dedup_index::tests::test_total_insertions ... ok [INFO] [stdout] test dedup_policy::tests::test_action_description_nonempty ... ok [INFO] [stdout] test dedup_index::tests::test_index_new_empty ... ok [INFO] [stdout] test dedup_policy::tests::test_action_is_destructive_quarantine ... ok [INFO] [stdout] test dedup_policy::tests::test_decision_requires_review_destructive_near_dup ... ok [INFO] [stdout] test dedup_policy::tests::test_action_not_destructive_symlink ... ok [INFO] [stdout] test dedup_policy::tests::test_decision_requires_review_for_review_action ... ok [INFO] [stdout] test dedup_policy::tests::test_action_not_destructive_keep ... ok [INFO] [stdout] test dedup_policy::tests::test_decision_skip_no_review ... ok [INFO] [stdout] test dedup_policy::tests::test_group_policy_too_few_files ... ok [INFO] [stdout] test dedup_policy::tests::test_group_decision_reason_contains_criterion ... ok [INFO] [stdout] test dedup_policy::tests::test_group_policy_default ... ok [INFO] [stdout] test dedup_policy::tests::test_keep_criterion_all_variants_non_destructive ... ok [INFO] [stdout] test dedup_policy::tests::test_keep_criterion_longest_path ... ok [INFO] [stdout] test dedup_policy::tests::test_policy_config_strict_mode_toggle ... ok [INFO] [stdout] test dedup_policy::tests::test_keep_criterion_shortest_path ... ok [INFO] [stdout] test dedup_policy::tests::test_policy_config_defaults ... ok [INFO] [stdout] test dedup_policy::tests::test_policy_exact_duplicate ... ok [INFO] [stdout] test dedup_policy::tests::test_policy_near_duplicate ... ok [INFO] [stdout] test dedup_policy::tests::test_policy_protect_original ... ok [INFO] [stdout] test dedup_report::tests::test_dedup_stat_as_u64 ... ok [INFO] [stdout] test dedup_policy::tests::test_policy_skip_below_threshold ... ok [INFO] [stdout] test dedup_report::tests::test_dedup_stat_as_f64 ... ok [INFO] [stdout] test dedup_report::tests::test_dedup_stat_name_bytes ... ok [INFO] [stdout] test dedup_report::tests::test_dedup_stat_name_ratio ... ok [INFO] [stdout] test dedup_report::tests::test_dedup_stat_name_count ... ok [INFO] [stdout] test dedup_report::tests::test_dedup_stat_name_label ... ok [INFO] [stdout] test dedup_report::tests::test_estimate_savings_empty ... ok [INFO] [stdout] test dedup_report::tests::test_estimate_savings_from_summary ... ok [INFO] [stdout] test dedup_report::tests::test_estimate_savings_nonexistent_files ... ok [INFO] [stdout] test dedup_policy::tests::test_decision_no_review_for_exact_destructive ... ok [INFO] [stdout] test dedup_report::tests::test_estimate_savings_single_file_group_skipped ... ok [INFO] [stdout] test dedup_report::tests::test_report_add_and_get_stat ... ok [INFO] [stdout] test dedup_report::tests::test_report_generate_summary ... ok [INFO] [stdout] test dedup_report::tests::test_report_overwrite_stat ... ok [INFO] [stdout] test dedup_report::tests::test_report_stat_names_sorted ... ok [INFO] [stdout] test dedup_report::tests::test_savings_summary_description ... ok [INFO] [stdout] test dedup_index::tests::test_remove_by_hash ... ok [INFO] [stdout] test dedup_index::tests::test_total_space_savings ... ok [INFO] [stdout] test dedup_report::tests::test_savings_summary_recovery_ratio ... ok [INFO] [stdout] test dedup_index::tests::test_find_duplicates ... ok [INFO] [stdout] test dedup_index::tests::test_remove_nonexistent_returns_false ... ok [INFO] [stdout] test dedup_report::tests::test_format_bytes_compact ... ok [INFO] [stdout] test dedup_policy::tests::test_action_is_destructive_delete ... ok [INFO] [stdout] test dedup_index::tests::test_entry_space_savings_zero_when_once ... ok [INFO] [stdout] test dedup_report::tests::test_estimate_savings_with_temp_files ... ok [INFO] [stdout] test dedup_report::tests::test_multiple_groups_savings ... ok [INFO] [stdout] test dedup_report::tests::test_report_stat_count ... ok [INFO] [stdout] test dedup_report::tests::test_summary_description_contains_percentage ... ok [INFO] [stdout] test dedup_report::tests::test_summary_duplication_ratio ... ok [INFO] [stdout] test dedup_report::tests::test_summary_duplication_ratio_zero_bytes ... ok [INFO] [stdout] test dedup_report::tests::test_summary_space_saved_bytes ... ok [INFO] [stdout] test dedup_report_ext::tests::test_most_common_ext ... ok [INFO] [stdout] test dedup_report_ext::tests::test_recoverable_bytes ... ok [INFO] [stdout] test dedup_report_ext::tests::test_report_builder_basic ... ok [INFO] [stdout] test dedup_report_ext::tests::test_report_builder_min_group_size ... ok [INFO] [stdout] test dedup_report_ext::tests::test_report_builder_title ... ok [INFO] [stdout] test dedup_report::tests::test_savings_summary_recovery_ratio_zero ... ok [INFO] [stdout] test dedup_stats::tests::test_action_recommendation_critical ... ok [INFO] [stdout] test dedup_stats::tests::test_action_recommendation_suggestion ... ok [INFO] [stdout] test dedup_report_ext::tests::test_empty_report ... ok [INFO] [stdout] test dedup_stats::tests::test_action_severity_ordering ... ok [INFO] [stdout] test dedup_stats::tests::test_action_recommendation_info ... ok [INFO] [stdout] test dedup_stats::tests::test_group_stats_compute ... ok [INFO] [stdout] test dedup_stats::tests::test_similarity_histogram_clamp ... ok [INFO] [stdout] test dedup_stats::tests::test_similarity_histogram_mode ... ok [INFO] [stdout] test dedup_report_ext::tests::test_summary_text ... ok [INFO] [stdout] test dedup_stats::tests::test_generate_recommendations ... ok [INFO] [stdout] test dedup_report_ext::tests::test_filter_by_path ... ok [INFO] [stdout] test dedup_report_ext::tests::test_format_breakdown ... ok [INFO] [stdout] test dedup_stats::tests::test_space_savings_report_summary ... ok [INFO] [stdout] test dedup_stats::tests::test_space_savings_report_zero_total ... ok [INFO] [stdout] test dedup_stats::tests::test_similarity_histogram_record_and_total ... ok [INFO] [stdout] test dedup_stats::tests::test_group_stats_missing_representative ... ok [INFO] [stdout] test dedup_report_ext::tests::test_duplicate_entry_extension ... ok [INFO] [stdout] test frame_hash::tests::test_hamming_distance_algorithm_mismatch ... ok [INFO] [stdout] test dedup_stats::tests::test_space_savings_report_add_and_finalise ... ok [INFO] [stdout] test frame_hash::tests::test_frame_hash_byte_len ... ok [INFO] [stdout] test frame_hash::tests::test_hamming_distance_length_mismatch ... ok [INFO] [stdout] test frame_hash::tests::test_hamming_distance_one_bit ... ok [INFO] [stdout] test frame_hash::tests::test_hamming_distance_identical ... ok [INFO] [stdout] test frame_hash::tests::test_hash_algorithm_bit_length ... ok [INFO] [stdout] test frame_hash::tests::test_hamming_distance_all_different ... ok [INFO] [stdout] test frame_hash::tests::test_hash_algorithm_is_perceptual ... ok [INFO] [stdout] test frame_hash::tests::test_store_contains_and_remove ... ok [INFO] [stdout] test frame_hash::tests::test_store_find_similar ... ok [INFO] [stdout] test frame_hash::tests::test_store_insert_and_count ... ok [INFO] [stdout] test frame_hash::tests::test_store_find_similar_sorted_by_distance ... ok [INFO] [stdout] test fuzzy_match::tests::test_bigram_similarity_similar ... ok [INFO] [stdout] test fuzzy_match::tests::test_bigram_similarity_identical ... ok [INFO] [stdout] test frame_hash::tests::test_is_similar_false ... ok [INFO] [stdout] test frame_hash::tests::test_hash_algorithm_name ... ok [INFO] [stdout] test fuzzy_match::tests::test_edit_distance_bytes ... ok [INFO] [stdout] test fuzzy_match::tests::test_edit_distance_similarity ... ok [INFO] [stdout] test dedup_report_ext::tests::test_size_distribution ... ok [INFO] [stdout] test dedup_report_ext::tests::test_report_builder_min_file_size ... ok [INFO] [stdout] test frame_hash::tests::test_is_similar_true ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_matcher_identical ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_matcher_is_match ... ok [INFO] [stdout] test fuzzy_match::tests::test_edit_distance_strings_basic ... ok [INFO] [stdout] test fuzzy_match::tests::test_edit_distance_strings_identical ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_matcher_custom_weights ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_matcher_default ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_matcher_empty_strings ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_matcher_different_movies ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_matcher_find_matching_pairs ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_normalize_basic ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_normalize_codec_tags ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_matcher_same_content_different_codec ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_normalize_preserves_year ... ok [INFO] [stdout] test fuzzy_match::tests::test_fuzzy_score_clamp ... ok [INFO] [stdout] test fuzzy_match::tests::test_fuzzy_score_is_exact ... ok [INFO] [stdout] test fuzzy_match::tests::test_fuzzy_score_threshold ... ok [INFO] [stdout] test fuzzy_match::tests::test_fuzzy_score_weighted_average ... ok [INFO] [stdout] test fuzzy_match::tests::test_fuzzy_score_average ... ok [INFO] [stdout] test fuzzy_match::tests::test_hamming_distance_different ... ok [INFO] [stdout] test fuzzy_match::tests::test_hamming_similarity ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_normalize_strips_directory ... ok [INFO] [stdout] test fuzzy_match::tests::test_filename_normalize_strips_extension ... ok [INFO] [stdout] test fuzzy_match::tests::test_token_matcher_case_insensitive ... ok [INFO] [stdout] test fuzzy_match::tests::test_token_matcher_identical ... ok [INFO] [stdout] test fuzzy_match::tests::test_token_matcher_partial ... ok [INFO] [stdout] test hash::tests::test_compute_data_hash ... ok [INFO] [stdout] test hash::tests::test_chunk_index ... ok [INFO] [stdout] test fuzzy_match::tests::test_remove_noise_token_boundary ... ok [INFO] [stdout] test hash::tests::test_chunker ... ok [INFO] [stdout] test fuzzy_match::tests::test_hamming_distance_equal ... ok [INFO] [stdout] test fuzzy_match::tests::test_hamming_distance_length_mismatch ... ok [INFO] [stdout] test hash::tests::test_hamming_distance ... ok [INFO] [stdout] test hash::tests::test_hash_hex ... ok [INFO] [stdout] test hash::tests::test_rolling_hash ... ok [INFO] [stdout] test hash::tests::test_hash_similarity ... ok [INFO] [stdout] test hash_store::tests::test_clear ... ok [INFO] [stdout] test hash_store::tests::test_dedup_ratio_no_dupes ... ok [INFO] [stdout] test hash::tests::test_dedup_ratio ... ok [INFO] [stdout] test hash_store::tests::test_duplicate_bytes ... ok [INFO] [stdout] test hash_store::tests::test_dedup_ratio_empty ... ok [INFO] [stdout] test hash_store::tests::test_duplicate_count ... ok [INFO] [stdout] test hash_store::tests::test_duplicate_groups ... ok [INFO] [stdout] test hash_store::tests::test_new_store_empty ... ok [INFO] [stdout] test hash_store::tests::test_remove_nonexistent ... ok [INFO] [stdout] test hash_store::tests::test_remove ... ok [INFO] [stdout] test hash_store::tests::test_with_capacity ... ok [INFO] [stdout] test hash_store::tests::test_insert_and_lookup ... ok [INFO] [stdout] test incremental::tests::test_clear_index ... ok [INFO] [stdout] test incremental::tests::test_file_change_needs_processing ... ok [INFO] [stdout] test hash_store::tests::test_get_entries ... ok [INFO] [stdout] test fuzzy_match::tests::test_remove_noise_token_standalone ... ok [INFO] [stdout] test incremental::tests::test_commit_updates_scan_count ... ok [INFO] [stdout] test incremental::tests::test_commit_file_with_hash ... ok [INFO] [stdout] test incremental::tests::test_classify_unchanged_file ... ok [INFO] [stdout] test incremental::tests::test_file_state_from_path ... ok [INFO] [stdout] test incremental::tests::test_file_change_labels ... ok [INFO] [stdout] test incremental::tests::test_json_roundtrip ... ok [INFO] [stdout] test incremental::tests::test_processing_ratio ... ok [INFO] [stdout] test incremental::tests::test_merge_indices ... ok [INFO] [stdout] test incremental::tests::test_processing_ratio_empty ... ok [INFO] [stdout] test incremental::tests::test_file_state_matches ... ok [INFO] [stdout] test incremental::tests::test_incremental_index_new_empty ... ok [INFO] [stdout] test incremental::tests::test_prune_deleted ... ok [INFO] [stdout] test incremental::tests::test_full_incremental_workflow ... ok [INFO] [stdout] test incremental::tests::test_scan_detects_deleted_files ... ok [INFO] [stdout] test lsh_index::tests::test_bit_lsh_deduplicated_candidates ... ok [INFO] [stdout] test lsh_index::tests::test_bit_lsh_distant_hashes_not_paired ... ok [INFO] [stdout] test lsh_index::tests::test_bit_lsh_identical_hashes_found ... ok [INFO] [stdout] test lsh_index::tests::test_bit_lsh_insert_and_self_query ... ok [INFO] [stdout] test incremental::tests::test_scan_mixed_files ... ok [INFO] [stdout] test incremental::tests::test_tracked_paths ... ok [INFO] [stdout] test lsh_index::tests::test_bit_lsh_creation ... ok [INFO] [stdout] test lsh_index::tests::test_bit_lsh_many_items ... ok [INFO] [stdout] test incremental::tests::test_classify_new_file ... ok [INFO] [stdout] test incremental::tests::test_classify_modified_file ... ok [INFO] [stdout] test incremental::tests::test_save_and_load_file ... ok [INFO] [stdout] test lsh_index::tests::test_bit_lsh_near_duplicates_within_distance ... ok [INFO] [stdout] test lsh_index::tests::test_bucket_stats_empty ... ok [INFO] [stdout] test lsh_index::tests::test_group_by_lsh_pairs_empty ... ok [INFO] [stdout] test hash_store::tests::test_dedup_ratio_all_dupes ... ok [INFO] [stdout] test lsh_index::tests::test_insert_multiple_tables ... ok [INFO] [stdout] test lsh_index::tests::test_group_by_lsh_pairs_transitive ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_dedup_pass_empty ... ok [INFO] [stdout] test lsh_index::tests::test_group_by_lsh_pairs_two_groups ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_approximate_neighbors_k_limit ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_dedup_pass_identical ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_dedup_pass_near_duplicates ... ok [INFO] [stdout] test lsh_index::tests::test_bucket_stats_after_inserts ... ok [INFO] [stdout] test lsh_index::tests::test_bucket_stats_avg_max ... ok [INFO] [stdout] test lsh_index::tests::test_group_by_lsh_pairs_single_pair ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_bucket_insert_and_size ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_dedup_pass_distant_not_paired ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_bucket_items ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_bucket_size_empty ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_dedup_pass_single ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_dedup_result_num_pairs ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_index_creation ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_query_returns_sorted ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_group_duplicates_all_are_duplicates_when_representative_absent ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_similar_vectors_in_same_bucket ... ok [INFO] [stdout] test lsh_index::tests::test_unit_vectors_different_dimensions ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_group_new_and_len ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_index_insert_and_query_self ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_default_delete ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_keep_highest_quality_from_candidates ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_empty_candidates_returns_none ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_group_duplicates_excludes_representative ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_keep_largest_from_candidates ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_keep_newest_from_candidates ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_keep_smallest_from_candidates ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_resolve_empty_group ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_keep_oldest_from_candidates ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_dedup_pass_many_items_sparse ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_group_empty ... ok [INFO] [stdout] test merge_strategy::tests::test_is_preferred_path ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_strategy_and_link_mode_accessors ... ok [INFO] [stdout] test merge_strategy::tests::test_keep_highest_quality ... ok [INFO] [stdout] test merge_strategy::tests::test_bytes_saved ... ok [INFO] [stdout] test merge_strategy::tests::test_keep_largest ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_resolver_resolve_filesystem_fallback ... ok [INFO] [stdout] test merge_strategy::tests::test_empty_candidates ... ok [INFO] [stdout] test merge_strategy::group_resolver_tests::test_group_is_representative ... ok [INFO] [stdout] test merge_strategy::tests::test_keep_oldest ... ok [INFO] [stdout] test merge_strategy::tests::test_hardlink_mode ... ok [INFO] [stdout] test merge_strategy::tests::test_keep_newest ... ok [INFO] [stdout] test merge_strategy::tests::test_single_candidate ... ok [INFO] [stdout] test merge_strategy::tests::test_keep_smallest ... ok [INFO] [stdout] test merge_strategy::tests::test_strategy_label ... ok [INFO] [stdout] test merge_strategy::tests::test_symlink_mode ... ok [INFO] [stdout] test metadata::tests::test_aspect_ratio ... ok [INFO] [stdout] test metadata::tests::test_duration_comparison ... ok [INFO] [stdout] test metadata::tests::test_codec_comparison ... ok [INFO] [stdout] test metadata::tests::test_filename_comparison ... ok [INFO] [stdout] test metadata::tests::test_filename_comparison_different_content ... ok [INFO] [stdout] test metadata::tests::test_filename_comparison_uhd_vs_hd ... ok [INFO] [stdout] test metadata::tests::test_filename_comparison_audio_codecs_stripped ... ok [INFO] [stdout] test metadata::tests::test_find_metadata_duplicates ... ok [INFO] [stdout] test metadata::tests::test_filename_comparison_strips_codec_tags ... ok [INFO] [stdout] test metadata::tests::test_fuzzy_search ... ok [INFO] [stdout] test metadata::tests::test_filename_comparison_strips_release_markers ... ok [INFO] [stdout] test metadata::tests::test_filename_extraction ... ok [INFO] [stdout] test metadata::tests::test_levenshtein_distance ... ok [INFO] [stdout] test metadata::tests::test_metadata_quality ... ok [INFO] [stdout] test metadata::tests::test_resolution_comparison ... ok [INFO] [stdout] test metadata::tests::test_size_comparison ... ok [INFO] [stdout] test near_duplicate::tests::test_lsh_empty_index ... ok [INFO] [stdout] test metadata::tests::test_metadata_similarity ... ok [INFO] [stdout] test metadata::tests::test_metadata_comparison_uses_fuzzy_filename ... ok [INFO] [stdout] test near_duplicate::tests::test_minhash_deterministic ... ok [INFO] [stdout] test metadata::tests::test_metadata_creation ... ok [INFO] [stdout] test near_duplicate::tests::test_lsh_identical_item_found ... ok [INFO] [stdout] test near_duplicate::tests::test_minhash_disjoint_sets_low_similarity ... ok [INFO] [stdout] test near_duplicate::tests::test_lsh_different_item_not_found_high_threshold ... ok [INFO] [stdout] test near_duplicate::tests::test_lsh_multiple_items ... ok [INFO] [stdout] test metadata::tests::test_resolution ... ok [INFO] [stdout] test near_duplicate::tests::test_lsh_len ... ok [INFO] [stdout] test near_duplicate::tests::test_minhash_identical_sets_max_similarity ... ok [INFO] [stdout] test near_duplicate::tests::test_simhash_hamming_same ... ok [INFO] [stdout] test near_duplicate::tests::test_simhash_identical_features_equal ... ok [INFO] [stdout] test near_duplicate::tests::test_simhash_similarity_range ... ok [INFO] [stdout] test perceptual_hash::tests::test_ahash_at_resolution_empty ... ok [INFO] [stdout] test perceptual_hash::tests::test_ahash_at_resolution_default_matches ... ok [INFO] [stdout] test near_duplicate::tests::test_simhash_all_ones ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_ahash_uniform_produces_all_ones ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_ahash_deterministic ... ok [INFO] [stdout] test near_duplicate::tests::test_simhash_empty ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_ahash_empty ... ok [INFO] [stdout] test near_duplicate::tests::test_simhash_hamming_range ... ok [INFO] [stdout] test near_duplicate::tests::test_simhash_deterministic ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_dhash_deterministic ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_dhash_empty ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_dhash_64_bits ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_whash_deterministic ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_multi_hash ... ok [INFO] [stdout] test near_duplicate::tests::test_minhash_empty_shingles ... ok [INFO] [stdout] test perceptual_hash::tests::test_deduplicator_new ... ok [INFO] [stdout] test perceptual_hash::tests::test_dhash_at_resolution_clamped ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_whash_empty ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_whash_similar_to_self ... ok [INFO] [stdout] test perceptual_hash::tests::test_dhash_at_resolution_default_matches ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_whash_uniform_gray ... ok [INFO] [stdout] test near_duplicate::tests::test_minhash_partial_overlap ... ok [INFO] [stdout] test perceptual_hash::tests::test_dhash_at_resolution_higher ... ok [INFO] [stdout] test perceptual_hash::tests::test_find_duplicates_none ... ok [INFO] [stdout] test perceptual_hash::tests::test_display ... ok [INFO] [stdout] test perceptual_hash::tests::test_dhash_at_resolution_empty ... ok [INFO] [stdout] test perceptual_hash::tests::test_hamming_distance_same ... ok [INFO] [stdout] test perceptual_hash::tests::test_hash_algo_bits ... ok [INFO] [stdout] test perceptual_hash::tests::test_hash_algo_name ... ok [INFO] [stdout] test perceptual_hash::tests::test_is_duplicate_identical ... ok [INFO] [stdout] test perceptual_hash::tests::test_compute_dhash_uniform_gray ... ok [INFO] [stdout] test perceptual_hash::tests::test_find_duplicates_empty ... ok [INFO] [stdout] test perceptual_hash::tests::test_multi_hash_similarity_empty ... ok [INFO] [stdout] test perceptual_hash::tests::test_multi_hash_similarity_different ... ok [INFO] [stdout] test perceptual_hash::tests::test_multi_hash_similarity_identical ... ok [INFO] [stdout] test perceptual_hash::tests::test_find_duplicates_all_same ... ok [INFO] [stdout] test perceptual_hash::tests::test_find_clusters_basic ... ok [INFO] [stdout] test perceptual_hash::tests::test_hamming_distance_all_different ... ok [INFO] [stdout] test perceptual_hash::tests::test_similarity_maximally_different ... ok [INFO] [stdout] test perceptual_hash::tests::test_similarity_identical ... ok [INFO] [stdout] test phash::tests::test_audio_fingerprint_empty ... ok [INFO] [stdout] test perceptual_hash::tests::test_similarity_range ... ok [INFO] [stdout] test perceptual_hash::tests::test_to_hex_length ... ok [INFO] [stdout] test audio::tests::test_fingerprint ... ok [INFO] [stdout] test perceptual_hash::tests::test_is_duplicate_maximally_different ... ok [INFO] [stdout] test phash::tests::test_gray_frame_from_rgb ... ok [INFO] [stdout] test phash::tests::test_compute_phash_rgb_wrong_size ... ok [INFO] [stdout] test phash::tests::test_detect_frozen_empty ... ok [INFO] [stdout] test phash::tests::test_detect_frozen_segments ... ok [INFO] [stdout] test phash::tests::test_compute_phash_rgb ... ok [INFO] [stdout] test phash::tests::test_phash_near_duplicate ... ok [INFO] [stdout] test phash::tests::test_phash_invalid_hex ... ok [INFO] [stdout] test phash::tests::test_fingerprint_comparison ... ok [INFO] [stdout] test phash::tests::test_phash_within_distance ... ok [INFO] [stdout] test phash::tests::test_phash_identical_frames_zero_distance ... ok [INFO] [stdout] test phash::tests::test_phash_hex_roundtrip ... ok [INFO] [stdout] test phash::tests::test_sliding_window_no_duplicates ... ok [INFO] [stdout] test progress::tests::test_callback_reporter ... ok [INFO] [stdout] test progress::tests::test_callback_reporter_cancellation ... ok [INFO] [stdout] test progress::tests::test_logging_reporter_captures_events ... ok [INFO] [stdout] test progress::tests::test_logging_reporter_error_event ... ok [INFO] [stdout] test progress::tests::test_multi_reporter ... ok [INFO] [stdout] test phash::tests::test_audio_fingerprint_similarity_symmetric ... ok [INFO] [stdout] test phash::tests::test_sliding_window_identical_sequence ... ok [INFO] [stdout] test progress::tests::test_null_reporter ... ok [INFO] [stdout] test phash::tests::test_phash_different_frames_nonzero_distance ... ok [INFO] [stdout] test phash::tests::test_audio_fingerprint_non_empty ... ok [INFO] [stdout] test phash::tests::test_sliding_window_empty ... ok [INFO] [stdout] test phash::tests::test_phash_similarity_range ... ok [INFO] [stdout] test phash::tests::test_sliding_window_single ... ok [INFO] [stdout] test phash::tests::test_audio_fingerprint_different_signals_lower_similarity ... ok [INFO] [stdout] test progress::tests::test_progress_event_percentage ... ok [INFO] [stdout] test progress::tests::test_progress_event_percentage_batch ... ok [INFO] [stdout] test progress::tests::test_progress_tracker_batch ... ok [INFO] [stdout] test progress::tests::test_progress_tracker_error_reporting ... ok [INFO] [stdout] test progress::tests::test_progress_tracker_lifecycle ... ok [INFO] [stdout] test progress::tests::test_run_completed_event ... ok [INFO] [stdout] test progress::tests::test_throttled_reporter_throttles_items ... ok [INFO] [stdout] test progress::tests::test_throttled_reporter_forwards_phase_events ... ok [INFO] [stdout] test report::tests::test_duplicate_group ... ok [INFO] [stdout] test report::tests::test_add_group ... ok [INFO] [stdout] test report::tests::test_format_bytes ... ok [INFO] [stdout] test report::tests::test_filter_by_similarity ... ok [INFO] [stdout] test report::tests::test_html_export ... ok [INFO] [stdout] test report::tests::test_json_export ... ok [INFO] [stdout] test report::tests::test_report_creation ... ok [INFO] [stdout] test report::tests::test_similarity_score ... ok [INFO] [stdout] test rolling_hash::tests::test_buzhash_deterministic ... ok [INFO] [stdout] test rolling_hash::tests::test_chunk_boundary_equality ... ok [INFO] [stdout] test rolling_hash::tests::test_buzhash_new ... ok [INFO] [stdout] test report::tests::test_sort_by_similarity ... ok [INFO] [stdout] test rolling_hash::tests::test_chunker_config_default ... ok [INFO] [stdout] test rolling_hash::tests::test_chunker_config_large ... ok [INFO] [stdout] test rolling_hash::tests::test_chunker_config_small ... ok [INFO] [stdout] test rolling_hash::tests::test_content_chunker_max_chunk ... ok [INFO] [stdout] test rolling_hash::tests::test_chunk_bytes_convenience ... ok [INFO] [stdout] test rolling_hash::tests::test_buzhash_reset ... ok [INFO] [stdout] test segment_dedup::tests::test_config_default ... ok [INFO] [stdout] test segment_dedup::tests::test_add_segment_duplicate_increments_total_not_unique ... ok [INFO] [stdout] test phash::tests::test_audio_fingerprint_same_signal_high_similarity ... ok [INFO] [stdout] test segment_dedup::tests::test_add_segment_unique_count ... ok [INFO] [stdout] test segment_dedup::tests::test_config_window_size_frames ... ok [INFO] [stdout] test segment_dedup::tests::test_find_duplicates_empty ... ok [INFO] [stdout] test segment_dedup::tests::test_find_duplicates_no_dups ... ok [INFO] [stdout] test segment_dedup::tests::test_find_duplicates_with_dups ... ok [INFO] [stdout] test segment_dedup::tests::test_multiple_sources_multiple_segments ... ok [INFO] [stdout] test segment_dedup::tests::test_segment_hash_hamming_tolerance ... ok [INFO] [stdout] test segment_dedup::tests::test_segment_hash_from_bytes ... ok [INFO] [stdout] test progress::tests::test_progress_event_no_percentage_for_phase ... ok [INFO] [stdout] test rolling_hash::tests::test_content_chunker_small_input ... ok [INFO] [stdout] test rolling_hash::tests::test_buzhash_different_input ... ok [INFO] [stdout] test phash::tests::test_audio_fingerprint_hamming_symmetry ... ok [INFO] [stdout] test rolling_hash::tests::test_chunker_config_boundary_mask ... ok [INFO] [stdout] test segment_dedup::tests::test_segment_hash_is_match_exact ... ok [INFO] [stdout] test segment_dedup::tests::test_segment_hash_no_match_different_frames ... ok [INFO] [stdout] test similarity_index::tests::test_linear_index_all_pairs ... ok [INFO] [stdout] test similarity_index::tests::test_linear_index_excludes_self ... ok [INFO] [stdout] test segment_dedup::tests::test_with_config_preserves_config ... ok [INFO] [stdout] test segment_dedup::tests::test_segment_record_fields ... ok [INFO] [stdout] test similarity_index::tests::test_bucket_index_insert_and_query ... ok [INFO] [stdout] test similarity_index::tests::test_bucket_index_miss ... ok [INFO] [stdout] test similarity_index::tests::test_hamming_one_bit ... ok [INFO] [stdout] test similarity_index::tests::test_index_entry_with_size ... ok [INFO] [stdout] test similarity_index::tests::test_linear_index_insert_and_len ... ok [INFO] [stdout] test similarity_index::tests::test_linear_index_query_finds_near ... ok [INFO] [stdout] test similarity_index::tests::test_similarity_partial ... ok [INFO] [stdout] test similarity_index::tests::test_linear_index_remove ... ok [INFO] [stdout] test similarity_index::tests::test_similarity_identical ... ok [INFO] [stdout] test similarity_index::tests::test_similarity_zero_bits ... ok [INFO] [stdout] test tests::test_config_bloom_defaults ... ok [INFO] [stdout] test tests::test_config_lsh_defaults ... ok [INFO] [stdout] test tests::test_config_default ... ok [INFO] [stdout] test tests::test_detection_strategy ... ok [INFO] [stdout] test similarity_index::tests::test_hamming_identical ... ok [INFO] [stdout] test rolling_hash::tests::test_content_chunker_reset ... ok [INFO] [stdout] test report::tests::test_html_escape ... ok [INFO] [stdout] test video_dedup::tests::test_clusters_chain ... ok [INFO] [stdout] test video_dedup::tests::test_clusters_empty_pairs ... ok [INFO] [stdout] test video_dedup::tests::test_clusters_single_pair ... ok [INFO] [stdout] test video_dedup::tests::test_clusters_two_separate ... ok [INFO] [stdout] test video_dedup::tests::test_detector_identical_pair ... ok [INFO] [stdout] test video_dedup::tests::test_detector_no_match_below_threshold ... ok [INFO] [stdout] test video_dedup::tests::test_detector_single ... ok [INFO] [stdout] test video_dedup::tests::test_keyframe_similarity_disjoint ... ok [INFO] [stdout] test video_dedup::tests::test_keyframe_similarity_empty_both ... ok [INFO] [stdout] test video_dedup::tests::test_keyframe_similarity_identical ... ok [INFO] [stdout] test video_dedup::tests::test_keyframe_similarity_partial ... ok [INFO] [stdout] test video_dedup::tests::test_temporal_hash_deterministic ... ok [INFO] [stdout] test video_dedup::tests::test_temporal_hash_empty ... ok [INFO] [stdout] test video_dedup::tests::test_temporal_hash_order_sensitive ... ok [INFO] [stdout] test video_dedup::tests::test_trimmed_identical ... ok [INFO] [stdout] test video_dedup::tests::test_detector_empty ... ok [INFO] [stdout] test video_dedup::tests::test_trimmed_no_match ... ok [INFO] [stdout] test video_dedup::tests::test_trimmed_offset ... ok [INFO] [stdout] test video_segment_dedup::tests::test_deduplicator_empty ... ok [INFO] [stdout] test video_segment_dedup::tests::test_deduplicator_query_without_indexing ... ok [INFO] [stdout] test video_segment_dedup::tests::test_deduplicator_single_video_no_matches ... ok [INFO] [stdout] test video_segment_dedup::tests::test_deduplicator_time_offset_computed ... ok [INFO] [stdout] test video_segment_dedup::tests::test_deduplicator_identical_videos_match ... ok [INFO] [stdout] test video_segment_dedup::tests::test_from_frame_data_different_inputs_differ ... ok [INFO] [stdout] test video_segment_dedup::tests::test_from_frame_data_empty ... ok [INFO] [stdout] test video_segment_dedup::tests::test_hamming_distance_all_differ ... ok [INFO] [stdout] test video_segment_dedup::tests::test_hamming_distance_identical ... ok [INFO] [stdout] test video_segment_dedup::tests::test_match_segments_completely_different ... ok [INFO] [stdout] test video_segment_dedup::tests::test_match_segments_half_different ... ok [INFO] [stdout] test video_segment_dedup::tests::test_match_segments_identical ... ok [INFO] [stdout] test video_segment_dedup::tests::test_from_frame_data_deterministic ... ok [INFO] [stdout] test video_segment_dedup::tests::test_match_segments_ignores_frame_count ... ok [INFO] [stdout] test video_segment_dedup::tests::test_match_segments_near_identical ... ok [INFO] [stdout] test video_segment_dedup::tests::test_matcher_compare_too_short ... ok [INFO] [stdout] test video_segment_dedup::tests::test_ms_per_frame ... ok [INFO] [stdout] test video_segment_dedup::tests::test_matcher_find_best_alignment_empty_sequences ... ok [INFO] [stdout] test video_segment_dedup::tests::test_ms_per_frame_zero_frames ... ok [INFO] [stdout] test video_segment_dedup::tests::test_temporal_window_from_fingerprints ... ok [INFO] [stdout] test video_segment_dedup::tests::test_matcher_find_best_alignment_identical ... ok [INFO] [stdout] test video_segment_dedup::tests::test_segment_fingerprint_new ... ok [INFO] [stdout] test video_segment_dedup::tests::test_temporal_window_similarity_different_lengths ... ok [INFO] [stdout] test visual::tests::test_dhash ... ok [INFO] [stdout] test audio::tests::test_spectrogram ... ok [INFO] [stdout] test video_segment_dedup::tests::test_temporal_window_similarity_identical ... ok [INFO] [stdout] test video_segment_dedup::tests::test_temporal_window_similarity_empty ... ok [INFO] [stdout] test visual::tests::test_histogram ... ok [INFO] [stdout] test visual::tests::test_histogram_comparison ... ok [INFO] [stdout] test visual::tests::test_grayscale_conversion ... ok [INFO] [stdout] test visual::tests::test_image_creation ... ok [INFO] [stdout] test visual::tests::test_whash ... ok [INFO] [stdout] test visual::tests::test_hash_similarity ... ok [INFO] [stdout] test visual::tests::test_image_resize ... ok [INFO] [stdout] test visual::tests::test_whash_deterministic ... ok [INFO] [stdout] test visual::tests::test_whash_different ... ok [INFO] [stdout] test visual::tests::test_whash_identical ... ok [INFO] [stdout] test video_segment_dedup::tests::test_matcher_compare_identical_sequences ... ok [INFO] [stdout] test visual::tests::test_ahash ... ok [INFO] [stdout] test visual::tests::test_feature_extraction ... ok [INFO] [stdout] test lsh_index::tests::test_lsh_dedup_pass_comparison_ratio ... ok [INFO] [stdout] test visual::tests::test_feature_matching ... ok [INFO] [stdout] test visual::tests::test_ssim ... ok [INFO] [stdout] test audio::tests::test_mfcc ... ok [INFO] [stdout] test visual::tests::test_phash ... ok [INFO] [stdout] test audio::tests::test_spectral_similarity ... ok [INFO] [stdout] test audio::tests::test_fingerprint_similarity ... ok [INFO] [stdout] test visual::tests::test_compare_images_includes_whash ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 626 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 38.15s [INFO] [stdout] [INFO] [stderr] Doc-tests oximedia_dedup [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test src/progress.rs - progress (line 9) ... ok [INFO] [stdout] test src/lib.rs - (line 24) ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- src/lib.rs - (line 24) stdout ---- [INFO] [stdout] error[E0432]: unresolved import `oximedia_dedup::DuplicateDetector` [INFO] [stdout] --> src/lib.rs:26:22 [INFO] [stdout] | [INFO] [stdout] 26 | use oximedia_dedup::{DuplicateDetector, DetectionStrategy, DedupConfig}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ no `DuplicateDetector` in the root [INFO] [stdout] | [INFO] [stdout] note: found an item that was configured out [INFO] [stdout] --> src/lib.rs:419:12 [INFO] [stdout] | [INFO] [stdout] 418 | #[cfg(feature = "sqlite")] [INFO] [stdout] | ------------------ the item is gated behind the `sqlite` feature [INFO] [stdout] 419 | pub struct DuplicateDetector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] error: aborting due to 1 previous error [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0432`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] src/lib.rs - (line 24) [INFO] [stdout] [INFO] [stdout] test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s [INFO] [stdout] [INFO] [stderr] error: doctest failed, to rerun pass `--doc` [INFO] running `Command { std: "docker" "inspect" "9d744ea4caf2af73dc4c0e617fa2197363f3b5916c06b016b4384c43260d6a37", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9d744ea4caf2af73dc4c0e617fa2197363f3b5916c06b016b4384c43260d6a37", kill_on_drop: false }` [INFO] [stdout] 9d744ea4caf2af73dc4c0e617fa2197363f3b5916c06b016b4384c43260d6a37