[INFO] fetching crate oximedia-caption-gen 0.1.5...
[INFO] testing oximedia-caption-gen-0.1.5 against 1.95.0 for beta-1.96-2
[INFO] extracting crate oximedia-caption-gen 0.1.5 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate oximedia-caption-gen 0.1.5
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate oximedia-caption-gen 0.1.5
[INFO] tweaked toml for crates.io crate oximedia-caption-gen 0.1.5 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate oximedia-caption-gen 0.1.5 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate oximedia-caption-gen 0.1.5 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded oxionnx-cuda v0.1.2
[INFO] [stderr]   Downloaded oxicuda-memory v0.1.4
[INFO] [stderr]   Downloaded oxionnx-core v0.1.2
[INFO] [stderr]   Downloaded oxionnx-proto v0.1.2
[INFO] [stderr]   Downloaded oxicuda-launch v0.1.4
[INFO] [stderr]   Downloaded oxicuda-driver v0.1.4
[INFO] [stderr]   Downloaded oxionnx v0.1.2
[INFO] [stderr]   Downloaded oxicuda-ptx v0.1.4
[INFO] [stderr]   Downloaded oxicuda-blas v0.1.4
[INFO] [stderr]   Downloaded oxionnx-ops v0.1.2
[INFO] [stderr]   Downloaded oxicuda-dnn v0.1.4
[INFO] [stderr]   Downloaded oximedia-ml v0.1.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 53522246ce5a3a1fe59c72ea69e336f88cc8242c5ca0ce67803dd61028c36d3f
[INFO] running `Command { std: "docker" "start" "-a" "53522246ce5a3a1fe59c72ea69e336f88cc8242c5ca0ce67803dd61028c36d3f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "53522246ce5a3a1fe59c72ea69e336f88cc8242c5ca0ce67803dd61028c36d3f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "53522246ce5a3a1fe59c72ea69e336f88cc8242c5ca0ce67803dd61028c36d3f", kill_on_drop: false }`
[INFO] [stdout] 53522246ce5a3a1fe59c72ea69e336f88cc8242c5ca0ce67803dd61028c36d3f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1f8d60f08fdc03b8238b6db6dfb29bc505122f10cf5cb7abf8cc19d3497f9087
[INFO] running `Command { std: "docker" "start" "-a" "1f8d60f08fdc03b8238b6db6dfb29bc505122f10cf5cb7abf8cc19d3497f9087", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling oximedia-caption-gen v0.1.5 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.88s
[INFO] running `Command { std: "docker" "inspect" "1f8d60f08fdc03b8238b6db6dfb29bc505122f10cf5cb7abf8cc19d3497f9087", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1f8d60f08fdc03b8238b6db6dfb29bc505122f10cf5cb7abf8cc19d3497f9087", kill_on_drop: false }`
[INFO] [stdout] 1f8d60f08fdc03b8238b6db6dfb29bc505122f10cf5cb7abf8cc19d3497f9087
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 92b87bac7a40840d27afd7e55d68a1e8b54141c9248af674a21ae12196df18e3
[INFO] running `Command { std: "docker" "start" "-a" "92b87bac7a40840d27afd7e55d68a1e8b54141c9248af674a21ae12196df18e3", kill_on_drop: false }`
[INFO] [stderr]    Compiling oximedia-caption-gen v0.1.5 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.97s
[INFO] running `Command { std: "docker" "inspect" "92b87bac7a40840d27afd7e55d68a1e8b54141c9248af674a21ae12196df18e3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "92b87bac7a40840d27afd7e55d68a1e8b54141c9248af674a21ae12196df18e3", kill_on_drop: false }`
[INFO] [stdout] 92b87bac7a40840d27afd7e55d68a1e8b54141c9248af674a21ae12196df18e3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] fb97df0c9acfe28cd8cc76dab3887c15f275d5d062743ab859d1e34321ddb8d3
[INFO] running `Command { std: "docker" "start" "-a" "fb97df0c9acfe28cd8cc76dab3887c15f275d5d062743ab859d1e34321ddb8d3", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oximedia_caption_gen-8d310ec7d7e5e687)
[INFO] [stdout] 
[INFO] [stdout] running 470 tests
[INFO] [stdout] test alignment::tests::align_to_frames_correct_frame_numbers_at_30fps ... ok
[INFO] [stdout] test alignment::tests::align_to_frames_segment_level ... ok
[INFO] [stdout] test alignment::tests::align_to_frames_batch_basic ... ok
[INFO] [stdout] test alignment::tests::align_to_frames_same_start_frame_merges_words ... ok
[INFO] [stdout] test alignment::tests::alignment_error_display_empty_transcript ... ok
[INFO] [stdout] test alignment::tests::alignment_error_display_invalid_timestamp ... ok
[INFO] [stdout] test alignment::tests::build_caption_blocks_default_position_bottom ... ok
[INFO] [stdout] test alignment::tests::align_to_frames_word_level ... ok
[INFO] [stdout] test alignment::tests::align_to_frames_rejects_zero_fps ... ok
[INFO] [stdout] test alignment::tests::build_caption_blocks_basic ... ok
[INFO] [stdout] test alignment::tests::build_caption_blocks_speaker_id_preserved ... ok
[INFO] [stdout] test alignment::tests::build_caption_blocks_with_overlapping_word_timestamps ... ok
[INFO] [stdout] test alignment::tests::align_to_frames_batch_rejects_zero_fps ... ok
[INFO] [stdout] test alignment::tests::merge_short_segments_merges_short_prefix ... ok
[INFO] [stdout] test alignment::tests::merge_short_segments_merges_short_suffix ... ok
[INFO] [stdout] test alignment::tests::build_caption_blocks_respects_max_lines ... ok
[INFO] [stdout] test alignment::tests::align_to_frames_rejects_negative_fps ... ok
[INFO] [stdout] test alignment::tests::merge_short_segments_no_op_if_all_long_enough ... ok
[INFO] [stdout] test alignment::tests::merge_short_segments_empty ... ok
[INFO] [stdout] test alignment::tests::caption_block_char_count ... ok
[INFO] [stdout] test alignment::tests::split_long_segments_words_assigned_to_subsegments ... ok
[INFO] [stdout] test alignment::tests::word_timestamp_fields_accessible ... ok
[INFO] [stdout] test alignment::tests::round_trip_split_then_merge_preserves_text ... ok
[INFO] [stdout] test alignment::tests::split_long_segments_no_op_if_short ... ok
[INFO] [stdout] test alignment::tests::split_long_segments_preserves_total_duration ... ok
[INFO] [stdout] test alignment::tests::split_text_sentence_boundary_preferred ... ok
[INFO] [stdout] test alignment::tests::merge_short_segments_span_extends ... ok
[INFO] [stdout] test alignment::tests::word_timestamp_with_word_confidence ... ok
[INFO] [stdout] test alignment::tests::split_long_segments_respects_max_chars ... ok
[INFO] [stdout] test alignment::tests::split_text_word_boundary_fallback ... ok
[INFO] [stdout] test alignment::tests::transcript_segment_duration ... ok
[INFO] [stdout] test autopunct::tests::test_adds_period_at_end ... ok
[INFO] [stdout] test autopunct::tests::test_capitalises_after_exclamation_space ... ok
[INFO] [stdout] test alignment::tests::split_long_segments_by_duration ... ok
[INFO] [stdout] test autopunct::tests::test_capitalises_after_period_space ... ok
[INFO] [stdout] test autopunct::tests::test_capitalises_after_question_space ... ok
[INFO] [stdout] test autopunct::tests::test_empty_returns_empty ... ok
[INFO] [stdout] test autopunct::tests::test_multiple_sentences ... ok
[INFO] [stdout] test autopunct::tests::test_no_double_period ... ok
[INFO] [stdout] test autopunct::tests::test_capitalises_first_char ... ok
[INFO] [stdout] test alignment::tests::build_caption_blocks_preserves_timestamps ... ok
[INFO] [stdout] test burn_in::tests::default_config_white_text ... ok
[INFO] [stdout] test autopunct::tests::test_existing_exclamation_no_extra_period ... ok
[INFO] [stdout] test burn_in::tests::glyph_for_non_ascii_returns_question_mark ... ok
[INFO] [stdout] test burn_in::tests::glyph_for_space_is_blank ... ok
[INFO] [stdout] test burn_in::tests::render_frame_custom_position ... ok
[INFO] [stdout] test burn_in::tests::render_frame_zero_width_no_panic ... ok
[INFO] [stdout] test autopunct::tests::test_already_capitalised ... ok
[INFO] [stdout] test autopunct::tests::test_existing_question_mark_no_extra_period ... ok
[INFO] [stdout] test burn_in::tests::default_config_has_bottom_position ... ok
[INFO] [stdout] test burn_in::tests::render_frame_bottom_position ... ok
[INFO] [stdout] test burn_in::tests::render_frame_empty_text_no_change ... ok
[INFO] [stdout] test burn_in::tests::render_frame_middle_position ... ok
[INFO] [stdout] test burn_in::tests::render_frame_top_position ... ok
[INFO] [stdout] test autopunct::tests::test_single_word ... ok
[INFO] [stdout] test burn_in::tests::render_frame_undersized_buffer_no_panic ... ok
[INFO] [stdout] test burn_in::tests::render_frame_zero_height_no_panic ... ok
[INFO] [stdout] test caption_diff::tests::diff_both_empty_returns_empty ... ok
[INFO] [stdout] test caption_diff::tests::diff_identical_tracks_all_equal ... ok
[INFO] [stdout] test caption_diff::tests::diff_changed_text_is_replace_or_delete_insert ... ok
[INFO] [stdout] test caption_diff::tests::diff_op_symbol ... ok
[INFO] [stdout] test caption_diff::tests::diff_right_empty_all_deletes ... ok
[INFO] [stdout] test caption_diff::tests::diff_same_text_different_timing_reports_shift ... ok
[INFO] [stdout] test caption_diff::tests::diff_left_empty_all_inserts ... ok
[INFO] [stdout] test caption_diff::tests::summarise_identical_similarity_one ... ok
[INFO] [stdout] test caption_diff::tests::diff_missing_block_in_right_is_delete ... ok
[INFO] [stdout] test caption_diff::tests::normalise_text_joins_lines ... ok
[INFO] [stdout] test caption_diff::tests::timing_shifts_ignores_unshifted_blocks ... ok
[INFO] [stdout] test caption_diff::tests::summarise_all_different_similarity_zero ... ok
[INFO] [stdout] test caption_format_adapter::tests::invalid_timestamp_zero_zero_is_allowed ... ok
[INFO] [stdout] test caption_diff::tests::text_changes_excludes_equal_and_shifted ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_blocks_separated_by_blank_line ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_empty_track_produces_empty_string ... ok
[INFO] [stdout] test caption_diff::tests::timing_shifts_detects_shifted_blocks ... ok
[INFO] [stdout] test caption_format_adapter::tests::custom_position_block_vtt_has_position_setting ... ok
[INFO] [stdout] test caption_format_adapter::tests::invalid_timestamp_returns_error ... ok
[INFO] [stdout] test caption_format_adapter::tests::output_format_variants_are_eq ... ok
[INFO] [stdout] test caption_diff::tests::diff_extra_block_in_right_is_insert ... ok
[INFO] [stdout] test burn_in::tests::render_frame_writes_pixels ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_multiple_blocks ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_output_sequence_numbers_sequential ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_timestamp_large_hours ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_single_block ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_timestamp_mixed ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_timestamp_sub_second ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_timestamp_one_hour ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_unicode_text_preserved ... ok
[INFO] [stdout] test caption_format_adapter::tests::ttml_empty_track_produces_valid_xml_skeleton ... ok
[INFO] [stdout] test caption_format_adapter::tests::ttml_escapes_xml_special_chars ... ok
[INFO] [stdout] test caption_format_adapter::tests::ttml_block_xml_id_uses_block_id ... ok
[INFO] [stdout] test caption_format_adapter::tests::ttml_has_p_element_with_timestamps ... ok
[INFO] [stdout] test caption_format_adapter::tests::ttml_has_tt_element ... ok
[INFO] [stdout] test caption_format_adapter::tests::ttml_multi_line_uses_br_element ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_bottom_position_no_cue_setting ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_timestamp_zero ... ok
[INFO] [stdout] test caption_format_adapter::tests::ttml_has_xml_declaration ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_empty_track_has_webvtt_header_only ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_timestamp_mixed ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_cue_identifier_present ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_timestamp_sub_second ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_timestamp_uses_dot_separator ... ok
[INFO] [stdout] test caption_format_adapter::tests::xml_escape_all_specials ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_starts_with_webvtt_header ... ok
[INFO] [stdout] test caption_format_adapter::tests::xml_escape_plain_text_unchanged ... ok
[INFO] [stdout] test caption_style_guide::tests::audience_max_cps_ordering ... ok
[INFO] [stdout] test burn_in::tests::render_frame_multiline_text ... ok
[INFO] [stdout] test caption_style_guide::tests::gap_too_short_detected ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_uses_dot_separator_in_timestamps ... ok
[INFO] [stdout] test caption_style_guide::tests::line_too_long_detected ... ok
[INFO] [stdout] test caption_style_guide::tests::compliance_score_perfect ... ok
[INFO] [stdout] test caption_style_guide::tests::missing_capitalisation_detected ... ok
[INFO] [stdout] test caption_style_guide::tests::compliance_score_partial ... ok
[INFO] [stdout] test caption_style_guide::tests::overlap_detected ... ok
[INFO] [stdout] test caption_format_adapter::tests::vtt_top_position_adds_line_cue_setting ... ok
[INFO] [stdout] test caption_style_guide::tests::custom_audience_respected ... ok
[INFO] [stdout] test caption_format_adapter::tests::srt_two_line_block_emits_two_lines ... ok
[INFO] [stdout] test caption_style_guide::tests::too_many_lines_detected ... ok
[INFO] [stdout] test caption_style_guide::tests::terminal_punctuation_required_by_children_guide ... ok
[INFO] [stdout] test caption_style_guide::tests::valid_broadcast_block_no_violations ... ok
[INFO] [stdout] test caption_style_guide::tests::violation_description_non_empty ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::clamp_block_exactly_at_range_start_included ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::clamp_block_exactly_at_range_end_excluded ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::clamp_invalid_range_returns_empty ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::clamp_removes_out_of_range_blocks ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::clamp_renumbers_blocks ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::clamp_trims_overlapping_blocks ... ok
[INFO] [stdout] test caption_style_guide::tests::duration_too_short_detected ... ok
[INFO] [stdout] test caption_style_guide::tests::duration_too_long_detected ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::edl_remap_block_spans_cut_is_split ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::edl_remap_drops_blocks_outside_edl ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::edl_remap_invalid_entry_returns_error ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::edl_remap_multiple_blocks_multiple_edl_entries ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::edl_remap_simple ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::error_display_invalid_edl_range ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::edl_remap_shifts_destination ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::edl_remap_reassigns_sequential_ids ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::shift_drops_blocks_with_zero_duration_after_shift ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::error_display_invalid_factor ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::shift_clamps_to_zero ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::shift_empty_input_returns_empty ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::shift_negative_offset_moves_earlier ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::shift_multiple_blocks_all_shifted ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::shift_positive_offset_moves_later ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::snap_to_frame_already_on_frame ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_factor_quarter_compresses_timestamps ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_around_factor_one_is_noop ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_factor_two_doubles_timestamps ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_factor_half_halves_timestamps ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::shift_preserves_block_text_and_id ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_around_anchor_in_middle ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::snap_to_frame_invalid_fps_returns_error ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::shift_zero_offset_is_noop ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::snap_to_frame_25fps ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_negative_factor_returns_error ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_preserves_number_of_blocks ... ok
[INFO] [stdout] test diarization::tests::assign_speakers_assigns_overlapping_speaker ... ok
[INFO] [stdout] test diarization::tests::crosstalk_detector_with_tolerance_filters_small_overlap ... ok
[INFO] [stdout] test diarization::tests::crosstalk_detector_with_tolerance_keeps_large_overlap ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_zero_factor_returns_error ... ok
[INFO] [stdout] test caption_style_guide::tests::reading_speed_exceeded_for_children ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_factor_one_is_noop ... ok
[INFO] [stdout] test diarization::tests::diarization_result_total_speech_ms ... ok
[INFO] [stdout] test diarization::tests::assign_speakers_no_overlap_unchanged ... ok
[INFO] [stdout] test diarization::tests::dominant_speaker_basic ... ok
[INFO] [stdout] test diarization::tests::dominant_speaker_empty ... ok
[INFO] [stdout] test diarization::tests::assign_speakers_with_five_simultaneous_speakers ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::stretch_around_anchor_at_start ... ok
[INFO] [stdout] test diarization::tests::find_overlapping_turns_detects_overlap ... ok
[INFO] [stdout] test diarization::tests::format_speaker_label_with_name ... ok
[INFO] [stdout] test diarization::tests::merge_consecutive_empty ... ok
[INFO] [stdout] test diarization::tests::format_speaker_label_without_name ... ok
[INFO] [stdout] test diarization::tests::find_overlapping_turns_none ... ok
[INFO] [stdout] test diarization::tests::merge_with_large_gap_merges_far_turns ... ok
[INFO] [stdout] test diarization::tests::speaker_gender_variants_accessible ... ok
[INFO] [stdout] test diarization::tests::merge_consecutive_different_speakers_not_merged ... ok
[INFO] [stdout] test diarization::tests::speaker_stats_avg_turn ... ok
[INFO] [stdout] test diarization::tests::merge_consecutive_sorts_before_merge ... ok
[INFO] [stdout] test diarization::tests::find_overlapping_turns_multiple_overlaps ... ok
[INFO] [stdout] test diarization::tests::speaker_stats_basic ... ok
[INFO] [stdout] test diarization::tests::merge_consecutive_large_gap_not_merged ... ok
[INFO] [stdout] test diarization::tests::merge_with_gap_zero_does_not_merge ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::error_display_invalid_fps ... ok
[INFO] [stdout] test caption_timing_adjuster::tests::snap_to_frame_30fps ... ok
[INFO] [stdout] test diarization::tests::speaker_turn_duration ... ok
[INFO] [stdout] test diarization::tests::merge_consecutive_same_speaker_small_gap ... ok
[INFO] [stdout] test diarization::tests::speaker_turn_overlap_false_separate ... ok
[INFO] [stdout] test diarization::tests::speaker_turn_overlap_true ... ok
[INFO] [stdout] test diarization::tests::voice_activity_ratio_full_coverage ... ok
[INFO] [stdout] test diarization::tests::voice_activity_ratio_half_coverage ... ok
[INFO] [stdout] test diarization::tests::voice_activity_ratio_overlapping_turns_not_double_counted ... ok
[INFO] [stdout] test diarization::tests::voice_activity_ratio_zero_duration ... ok
[INFO] [stdout] test forced_narrative::tests::all_lines_bracketed_partial_false ... ok
[INFO] [stdout] test diarization::tests::speaker_turn_overlap_false_adjacent ... ok
[INFO] [stdout] test forced_narrative::tests::classifier_empty_track_returns_empty ... ok
[INFO] [stdout] test forced_narrative::tests::classifier_confidence_threshold_rejects_low_confidence ... ok
[INFO] [stdout] test forced_narrative::tests::classifier_filter_non_normal ... ok
[INFO] [stdout] test forced_narrative::tests::bracketed_partial_bracket_is_false ... ok
[INFO] [stdout] test forced_narrative::tests::classifier_filter_non_normal_empty_track ... ok
[INFO] [stdout] test forced_narrative::tests::classifier_full_track ... ok
[INFO] [stdout] test forced_narrative::tests::bracketed_round_brackets ... ok
[INFO] [stdout] test burn_in::tests::render_frame_with_outline ... ok
[INFO] [stdout] test forced_narrative::tests::classifier_promote_speaker_id ... ok
[INFO] [stdout] test forced_narrative::tests::classify_empty_block_is_normal ... ok
[INFO] [stdout] test forced_narrative::tests::all_lines_bracketed_true ... ok
[INFO] [stdout] test forced_narrative::tests::classify_round_bracket_sound_effect ... ok
[INFO] [stdout] test forced_narrative::tests::annotation_fields_accessible ... ok
[INFO] [stdout] test forced_narrative::tests::classify_normal_speech ... ok
[INFO] [stdout] test forced_narrative::tests::bracketed_normal_text_is_false ... ok
[INFO] [stdout] test forced_narrative::tests::classify_sound_effect_generic_brackets ... ok
[INFO] [stdout] test forced_narrative::tests::bracketed_square_brackets ... ok
[INFO] [stdout] test forced_narrative::tests::classify_on_screen_text ... ok
[INFO] [stdout] test forced_narrative::tests::classify_mixed_bracket_lines_not_sound_effect ... ok
[INFO] [stdout] test forced_narrative::tests::classify_speaker_label ... ok
[INFO] [stdout] test forced_narrative::tests::fn_sdh_kind_equality ... ok
[INFO] [stdout] test forced_narrative::tests::classifier_mark_forced_multiple_blocks ... ok
[INFO] [stdout] test forced_narrative::tests::fn_sdh_classifier_default_min_confidence_is_0_60 ... ok
[INFO] [stdout] test forced_narrative::tests::classifier_forced_override ... ok
[INFO] [stdout] test forced_narrative::tests::classify_sound_effect_with_keyword ... ok
[INFO] [stdout] test forced_narrative::tests::classify_on_screen_text_with_numbers_and_commas ... ok
[INFO] [stdout] test forced_narrative::tests::on_screen_text_all_caps_short ... ok
[INFO] [stdout] test forced_narrative::tests::on_screen_text_lowercase_is_false ... ok
[INFO] [stdout] test forced_narrative::tests::on_screen_text_with_period_is_false ... ok
[INFO] [stdout] test forced_narrative::tests::speaker_label_detected_bracketed ... ok
[INFO] [stdout] test forced_narrative::tests::speaker_label_detected_simple ... ok
[INFO] [stdout] test forced_narrative::tests::track_stats_all_sound_effects ... ok
[INFO] [stdout] test forced_narrative::tests::track_stats_counts_correctly ... ok
[INFO] [stdout] test forced_narrative::tests::track_stats_empty_ratio_is_zero ... ok
[INFO] [stdout] test forced_narrative::tests::track_stats_sdh_ratio ... ok
[INFO] [stdout] test language_detect::tests::detect_arabic_text ... ok
[INFO] [stdout] test forced_narrative::tests::speaker_label_not_detected_for_normal_colon ... ok
[INFO] [stdout] test language_detect::tests::detect_japanese_text ... ok
[INFO] [stdout] test language_detect::tests::detect_french_text ... ok
[INFO] [stdout] test language_detect::tests::detect_english_text ... ok
[INFO] [stdout] test language_detect::tests::detect_from_segments_concatenates ... ok
[INFO] [stdout] test language_detect::tests::detect_returns_unknown_for_short_text ... ok
[INFO] [stdout] test language_detect::tests::detect_german_text ... ok
[INFO] [stdout] test language_detect::tests::detect_spanish_text ... ok
[INFO] [stdout] test language_detect::tests::alternatives_present ... ok
[INFO] [stdout] test language_detect::tests::detection_result_reliability ... ok
[INFO] [stdout] test language_detect::tests::hints_arabic_rtl ... ok
[INFO] [stdout] test language_detect::tests::hints_english_defaults ... ok
[INFO] [stdout] test language_detect::tests::hints_german_wider_line ... ok
[INFO] [stdout] test language_detect::tests::hints_japanese_cjk ... ok
[INFO] [stdout] test language_detect::tests::language_code_display ... ok
[INFO] [stdout] test language_detect::tests::language_code_is_cjk ... ok
[INFO] [stdout] test language_detect::tests::language_code_is_rtl_arabic ... ok
[INFO] [stdout] test language_detect::tests::language_code_is_unknown ... ok
[INFO] [stdout] test language_detect::tests::trigrams_counts_repeats ... ok
[INFO] [stdout] test line_breaking::tests::adjust_duration_extends_for_long_text ... ok
[INFO] [stdout] test language_detect::tests::trigrams_empty_string ... ok
[INFO] [stdout] test line_breaking::tests::adjust_duration_respects_min ... ok
[INFO] [stdout] test line_breaking::tests::audience_profile_children_have_longer_min_display ... ok
[INFO] [stdout] test line_breaking::tests::adjust_duration_zero_max_cps_returns_min ... ok
[INFO] [stdout] test line_breaking::tests::balance_factor_empty_lines_is_zero ... ok
[INFO] [stdout] test line_breaking::tests::balance_factor_equal_lines_is_zero ... ok
[INFO] [stdout] test line_breaking::tests::balance_factor_unequal_lines_nonzero ... ok
[INFO] [stdout] test line_breaking::tests::balance_factor_single_line_is_zero ... ok
[INFO] [stdout] test line_breaking::tests::cjk_break_long_text_splits_at_char_boundary ... ok
[INFO] [stdout] test line_breaking::tests::compute_cps_basic ... ok
[INFO] [stdout] test line_breaking::tests::compute_cps_zero_duration_returns_zero ... ok
[INFO] [stdout] test line_breaking::tests::compute_cps_empty_text ... ok
[INFO] [stdout] test line_breaking::tests::cps_cache_clear_removes_all_entries ... ok
[INFO] [stdout] test line_breaking::tests::audience_profile_children_have_lower_cps ... ok
[INFO] [stdout] test line_breaking::tests::cps_cache_returns_same_value_twice ... ok
[INFO] [stdout] test line_breaking::tests::cjk_break_short_text_unchanged ... ok
[INFO] [stdout] test line_breaking::tests::cps_cache_stores_entry ... ok
[INFO] [stdout] test line_breaking::tests::greedy_and_optimal_produce_identical_single_line ... ok
[INFO] [stdout] test line_breaking::tests::greedy_break_empty_string ... ok
[INFO] [stdout] test language_detect::tests::trigrams_basic ... ok
[INFO] [stdout] test line_breaking::tests::greedy_break_long_word_gets_own_line ... ok
[INFO] [stdout] test line_breaking::tests::greedy_and_optimal_identical_for_single_word_per_line ... ok
[INFO] [stdout] test line_breaking::tests::greedy_break_wraps_at_limit ... ok
[INFO] [stdout] test line_breaking::tests::language_aware_break_cjk_detected ... ok
[INFO] [stdout] test line_breaking::tests::language_aware_break_latin_uses_greedy ... ok
[INFO] [stdout] test line_breaking::tests::optimal_break_reference_output_known_case ... ok
[INFO] [stdout] test line_breaking::tests::optimal_break_single_line ... ok
[INFO] [stdout] test line_breaking::tests::optimal_break_no_line_exceeds_max_width ... ok
[INFO] [stdout] test line_breaking::tests::reading_speed_too_fast_for_children ... ok
[INFO] [stdout] test line_breaking::tests::line_break_config_hard_max_chars_constrains_effective ... ok
[INFO] [stdout] test line_breaking::tests::reading_speed_ok_for_audience_children ... ok
[INFO] [stdout] test line_breaking::tests::optimal_break_preserves_all_words ... ok
[INFO] [stdout] test line_breaking::tests::optimal_break_empty_string ... ok
[INFO] [stdout] test line_breaking::tests::reading_speed_ok_slow_enough ... ok
[INFO] [stdout] test line_breaking::tests::optimal_break_more_balanced_than_greedy ... ok
[INFO] [stdout] test line_breaking::tests::reading_speed_ok_too_fast ... ok
[INFO] [stdout] test line_breaking::tests::line_break_config_default_broadcast_values ... ok
[INFO] [stdout] test line_breaking::tests::greedy_break_preserves_all_words ... ok
[INFO] [stdout] test line_breaking::tests::greedy_break_single_word_fits ... ok
[INFO] [stdout] test line_breaking::tests::greedy_break_two_words_fit_on_one_line ... ok
[INFO] [stdout] test line_breaking::tests::greedy_break_multiple_lines ... ok
[INFO] [stdout] test line_breaking::tests::rebalance_lines_preserves_all_words ... ok
[INFO] [stdout] test line_breaking::tests::rebalance_lines_produces_at_most_same_balance_factor ... ok
[INFO] [stdout] test line_breaking::tests::rebalance_lines_single_line_unchanged ... ok
[INFO] [stdout] test multi_language::tests::bilingual_block_duration ... ok
[INFO] [stdout] test multi_language::tests::merge_empty_secondary_when_no_overlap ... ok
[INFO] [stdout] test multi_language::tests::merge_empty_primary_returns_empty ... ok
[INFO] [stdout] test multi_language::tests::merge_preserves_timestamps ... ok
[INFO] [stdout] test multi_language::tests::merge_pairs_overlapping_blocks ... ok
[INFO] [stdout] test multi_language::tests::render_interleaved ... ok
[INFO] [stdout] test multi_language::tests::render_primary_top ... ok
[INFO] [stdout] test multi_language::tests::merge_picks_best_overlapping_secondary ... ok
[INFO] [stdout] test multi_language::tests::split_omits_blocks_with_empty_side ... ok
[INFO] [stdout] test multi_language::tests::render_primary_bottom_secondary_on_top ... ok
[INFO] [stdout] test multi_language::tests::split_primary_side ... ok
[INFO] [stdout] test multi_language::tests::sync_no_warnings_for_balanced_blocks ... ok
[INFO] [stdout] test multi_language::tests::split_secondary_side ... ok
[INFO] [stdout] test multi_language::tests::render_side_by_side ... ok
[INFO] [stdout] test multi_language::tests::to_caption_block_preserves_id_and_timestamps ... ok
[INFO] [stdout] test multi_language::tests::sync_warn_empty_secondary ... ok
[INFO] [stdout] test multi_language_sync::tests::active_at_outside_returns_empty ... ok
[INFO] [stdout] test multi_language_sync::tests::anchors_sorted_on_input ... ok
[INFO] [stdout] test multi_language_sync::tests::average_timing_offset_none_for_different_lengths ... ok
[INFO] [stdout] test multi_language::tests::sync_warn_secondary_too_long ... ok
[INFO] [stdout] test multi_language_sync::tests::active_at_returns_correct_blocks ... ok
[INFO] [stdout] test multi_language_sync::tests::average_timing_offset_same_tracks_is_zero ... ok
[INFO] [stdout] test multi_language_sync::tests::sync_single_segment_identity ... ok
[INFO] [stdout] test multi_language_sync::tests::interleave_tracks_sorted_by_start ... ok
[INFO] [stdout] test multi_language_sync::tests::two_language_tracks_synced ... ok
[INFO] [stdout] test multilang::tests::builder_add_track ... ok
[INFO] [stdout] test multi_language_sync::tests::requires_at_least_two_anchors ... ok
[INFO] [stdout] test multilang::tests::builder_creates_empty_multilang ... ok
[INFO] [stdout] test multilang::tests::builder_add_track_replaces_existing ... ok
[INFO] [stdout] test multi_language_sync::tests::lang_track_total_chars ... ok
[INFO] [stdout] test multilang::tests::caption_entry_duration ... ok
[INFO] [stdout] test multilang::tests::builder_add_two_tracks ... ok
[INFO] [stdout] test multilang::tests::lang_code_valid_zh ... ok
[INFO] [stdout] test multilang::tests::merge_timing_basic_overlap ... ok
[INFO] [stdout] test multilang::tests::lang_code_invalid_one_letter ... ok
[INFO] [stdout] test multilang::tests::merge_timing_ids_renumbered ... ok
[INFO] [stdout] test multilang::tests::lang_code_invalid_three_letters ... ok
[INFO] [stdout] test multilang::tests::lang_code_invalid_uppercase ... ok
[INFO] [stdout] test multilang::tests::lang_code_valid_en ... ok
[INFO] [stdout] test multilang::tests::lang_code_valid_ja ... ok
[INFO] [stdout] test multilang::tests::lang_code_try_from_str ... ok
[INFO] [stdout] test multi_language_sync::tests::empty_tracks_returns_error ... ok
[INFO] [stdout] test multilang::tests::caption_entry_duration_zero_on_equal_timestamps ... ok
[INFO] [stdout] test multilang::tests::lang_code_display ... ok
[INFO] [stdout] test multilang::tests::lang_code_invalid_digit ... ok
[INFO] [stdout] test multilang::tests::lang_code_invalid_empty ... ok
[INFO] [stdout] test multilang::tests::merge_timing_missing_primary_returns_error ... ok
[INFO] [stdout] test multilang::tests::merge_timing_picks_best_overlap ... ok
[INFO] [stdout] test multilang::tests::to_srt_basic ... ok
[INFO] [stdout] test multilang::tests::to_srt_missing_language_returns_error ... ok
[INFO] [stdout] test multilang::tests::to_srt_empty_track_returns_empty_string ... ok
[INFO] [stdout] test multilang::tests::to_srt_timestamp_format ... ok
[INFO] [stdout] test phoneme_timing::tests::align_hello_produces_phonemes ... ok
[INFO] [stdout] test phoneme_timing::tests::align_words_batch_skips_invalid ... ok
[INFO] [stdout] test phoneme_timing::tests::count_syllables_hello ... ok
[INFO] [stdout] test phoneme_timing::tests::average_phoneme_duration_nonzero ... ok
[INFO] [stdout] test phoneme_timing::tests::invalid_timestamp_returns_error ... ok
[INFO] [stdout] test phoneme_timing::tests::grapheme_heuristic_unknown_word ... ok
[INFO] [stdout] test phoneme_timing::tests::no_stop_closure_when_disabled ... ok
[INFO] [stdout] test phoneme_timing::tests::phonemes_cover_full_word_duration ... ok
[INFO] [stdout] test phoneme_timing::tests::stop_closure_splits_stop_phoneme ... ok
[INFO] [stdout] test phoneme_timing::tests::vowel_phonemes_returns_only_vowels ... ok
[INFO] [stdout] test profanity::tests::test_add_word ... ok
[INFO] [stdout] test profanity::tests::test_censored_length_matches_word_length ... ok
[INFO] [stdout] test profanity::tests::test_contains_profanity_false ... ok
[INFO] [stdout] test profanity::tests::test_contains_profanity_true ... ok
[INFO] [stdout] test profanity::tests::test_filter_case_insensitive ... ok
[INFO] [stdout] test profanity::tests::test_filter_empty_text ... ok
[INFO] [stdout] test profanity::tests::test_filter_empty_wordlist ... ok
[INFO] [stdout] test profanity::tests::test_filter_no_partial_match ... ok
[INFO] [stdout] test profanity::tests::test_filter_replaces_blocked_word ... ok
[INFO] [stdout] test profanity::tests::test_filter_word_at_boundary ... ok
[INFO] [stdout] test punctuation_restoration::tests::capitalise_first_already_upper ... ok
[INFO] [stdout] test punctuation_restoration::tests::adds_period_at_end ... ok
[INFO] [stdout] test punctuation_restoration::tests::capitalise_first_basic ... ok
[INFO] [stdout] test punctuation_restoration::tests::capitalise_first_empty ... ok
[INFO] [stdout] test punctuation_restoration::tests::config_default_values ... ok
[INFO] [stdout] test punctuation_restoration::tests::empty_text_returns_empty ... ok
[INFO] [stdout] test punctuation_restoration::tests::exclamatory_word_gets_exclamation_mark ... ok
[INFO] [stdout] test punctuation_restoration::tests::how_question_gets_question_mark ... ok
[INFO] [stdout] test punctuation_restoration::tests::no_capitalisation_when_disabled ... ok
[INFO] [stdout] test phoneme_timing::tests::lexicon_word_phonemes_correct_category ... ok
[INFO] [stdout] test punctuation_restoration::tests::restores_capitalisation_of_first_word ... ok
[INFO] [stdout] test multilang::tests::merge_timing_missing_secondary_returns_error ... ok
[INFO] [stdout] test punctuation_restoration::tests::segment_with_long_gap_adds_boundary ... ok
[INFO] [stdout] test multilang::tests::merge_timing_no_overlap_excluded ... ok
[INFO] [stdout] test punctuation_restoration::tests::inserts_comma_after_however ... ok
[INFO] [stdout] test punctuation_restoration::tests::inserts_comma_after_well ... ok
[INFO] [stdout] test punctuation_restoration::tests::no_comma_insertion_when_disabled ... ok
[INFO] [stdout] test punctuation_restoration::tests::segment_no_gap_no_mid_boundary ... ok
[INFO] [stdout] test punctuation_restoration::tests::track_empty_input_returns_empty ... ok
[INFO] [stdout] test punctuation_restoration::tests::question_starter_gets_question_mark ... ok
[INFO] [stdout] test reading_speed::tests::test_adult_preset_wps ... ok
[INFO] [stdout] test reading_speed::tests::test_children_limit_stricter ... ok
[INFO] [stdout] test reading_speed::tests::test_compute_wps_zero_duration_returns_none ... ok
[INFO] [stdout] test profanity::tests::test_filter_preserves_non_blocked_text ... ok
[INFO] [stdout] test reading_speed::tests::test_compute_wps_basic ... ok
[INFO] [stdout] test punctuation_restoration::tests::segment_preserves_timestamps ... ok
[INFO] [stdout] test reading_speed::tests::test_exactly_at_limit ... ok
[INFO] [stdout] test reading_speed::tests::test_children_preset_wps ... ok
[INFO] [stdout] test reading_speed::tests::test_exceeds_limit ... ok
[INFO] [stdout] test reading_speed::tests::test_bbc_preset_wps ... ok
[INFO] [stdout] test reading_speed::tests::test_compute_wps_empty_returns_none ... ok
[INFO] [stdout] test reading_speed::tests::test_validator_check_method ... ok
[INFO] [stdout] test reading_speed::tests::test_within_limit ... ok
[INFO] [stdout] test style_generator::tests::black_has_zero_luminance ... ok
[INFO] [stdout] test reading_speed::tests::test_zero_duration_ok ... ok
[INFO] [stdout] test style_generator::tests::bright_frame_uses_dark_text ... ok
[INFO] [stdout] test reading_speed::tests::test_min_duration_ms ... ok
[INFO] [stdout] test style_generator::tests::centre_zone_is_avoided_when_alternatives_exist ... ok
[INFO] [stdout] test style_generator::tests::complex_frame_enables_text_outline ... ok
[INFO] [stdout] test punctuation_restoration::tests::track_each_segment_gets_period ... ok
[INFO] [stdout] test style_generator::tests::complex_frame_increases_font_size ... ok
[INFO] [stdout] test reading_speed::tests::test_empty_text_ok ... ok
[INFO] [stdout] test reading_speed::tests::test_min_duration_ms_empty ... ok
[INFO] [stdout] test punctuation_restoration::tests::segment_without_words_falls_back_to_text_restoration ... ok
[INFO] [stdout] test burn_in::tests::render_frame_large_font_scale ... ok
[INFO] [stdout] test style_generator::tests::complex_frame_uses_solid_box ... ok
[INFO] [stdout] test style_generator::tests::contrast_ratio_is_symmetric ... ok
[INFO] [stdout] test style_generator::tests::dark_frame_uses_white_text ... ok
[INFO] [stdout] test style_generator::tests::font_size_clamped_to_minimum ... ok
[INFO] [stdout] test style_generator::tests::font_size_scales_with_frame_height ... ok
[INFO] [stdout] test style_generator::tests::frame_analysis_is_bright_threshold ... ok
[INFO] [stdout] test style_generator::tests::frame_analysis_is_complex_threshold ... ok
[INFO] [stdout] test style_generator::tests::identical_colours_minimum_contrast ... ok
[INFO] [stdout] test style_generator::tests::low_contrast_pair_fails_aa ... ok
[INFO] [stdout] test style_generator::tests::meets_wcag_aaa_for_black_and_white_pair ... ok
[INFO] [stdout] test style_generator::tests::preferred_zone_falls_back_to_bottom_third ... ok
[INFO] [stdout] test style_generator::tests::reason_string_is_non_empty ... ok
[INFO] [stdout] test style_generator::tests::red_has_expected_luminance ... ok
[INFO] [stdout] test style_generator::tests::suggestion_always_meets_wcag_aa ... ok
[INFO] [stdout] test style_generator::tests::suggestion_contrast_ratio_at_least_one ... ok
[INFO] [stdout] test style_generator::tests::white_has_unit_luminance ... ok
[INFO] [stdout] test style_generator::tests::white_on_black_maximum_contrast ... ok
[INFO] [stdout] test style_generator::tests::white_on_black_meets_both_aa_and_aaa ... ok
[INFO] [stdout] test style_presets::tests::test_all_presets_bottom_centred ... ok
[INFO] [stdout] test style_presets::tests::test_all_presets_have_names ... ok
[INFO] [stdout] test style_presets::tests::test_bbc_max_chars_per_line ... ok
[INFO] [stdout] test style_presets::tests::test_bbc_text_color_white ... ok
[INFO] [stdout] test style_presets::tests::test_contrast_ratio_positive ... ok
[INFO] [stdout] test style_presets::tests::test_netflix_preset_font_size ... ok
[INFO] [stdout] test style_presets::tests::test_wcag_contrast_ratio_aaaa ... ok
[INFO] [stdout] test style_presets::tests::test_wcag_fully_opaque_background ... ok
[INFO] [stdout] test translate::tests::test_language_name_known ... ok
[INFO] [stdout] test translate::tests::test_language_name_unknown ... ok
[INFO] [stdout] test translate::tests::test_translate_stub_empty_text ... ok
[INFO] [stdout] test translate::tests::test_translate_stub_format ... ok
[INFO] [stdout] test translate::tests::test_translate_stub_unknown_lang ... ok
[INFO] [stdout] test translate::tests::test_translate_stub_uppercase_lang_normalised ... ok
[INFO] [stdout] test translate::tests::test_translate_track_preserves_timing ... ok
[INFO] [stdout] test wcag::tests::compliance_score_never_below_zero ... ok
[INFO] [stdout] test wcag::tests::compliance_score_no_violations ... ok
[INFO] [stdout] test wcag::tests::compliance_score_one_aa_violation ... ok
[INFO] [stdout] test wcag::tests::coverage_fails_on_empty_blocks_with_long_content ... ok
[INFO] [stdout] test style_presets::tests::test_netflix_preset_max_lines ... ok
[INFO] [stdout] test wcag::tests::coverage_fails_on_large_interior_gap ... ok
[INFO] [stdout] test wcag::tests::coverage_passes_small_trailing_gap ... ok
[INFO] [stdout] test wcag::tests::coverage_passes_with_no_gaps ... ok
[INFO] [stdout] test wcag::tests::cps_fails_fast_text ... ok
[INFO] [stdout] test wcag::tests::cps_passes_slow_text ... ok
[INFO] [stdout] test wcag::tests::cps_zero_duration_passes ... ok
[INFO] [stdout] test wcag::tests::gap_duration_detects_violation ... ok
[INFO] [stdout] test wcag::tests::gap_duration_multiple_violations ... ok
[INFO] [stdout] test wcag::tests::gap_duration_no_violations_when_close ... ok
[INFO] [stdout] test wcag::tests::live_latency_fails_over_limit ... ok
[INFO] [stdout] test wcag::tests::coverage_fails_large_leading_gap ... ok
[INFO] [stdout] test wcag::tests::compliance_score_one_a_violation ... ok
[INFO] [stdout] test wcag::tests::live_latency_passes_at_limit ... ok
[INFO] [stdout] test wcag::tests::live_latency_passes_under_limit ... ok
[INFO] [stdout] test wcag::tests::min_duration_fails_short_block ... ok
[INFO] [stdout] test wcag::tests::min_duration_passes ... ok
[INFO] [stdout] test wcag::tests::min_duration_passes_at_exactly_min ... ok
[INFO] [stdout] test wcag::tests::run_all_checks_clean_content ... ok
[INFO] [stdout] test wcag::tests::run_all_checks_detects_short_block ... ok
[INFO] [stdout] test wcag::tests::sign_language_always_none ... ok
[INFO] [stdout] test wcag::tests::wcag_level_ordering ... ok
[INFO] [stdout] test wcag::tests::wcag_violation_display ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 470 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/ml_integration.rs (/opt/rustwide/target/debug/deps/ml_integration-793b2b5a6d3eaaa4)
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests oximedia_caption_gen
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] test src/multilang.rs - multilang::MultiLangCaptionBuilder (line 226) - compile ... ok
[INFO] [stdout] test src/translate.rs - translate (line 10) ... ok
[INFO] [stdout] test src/burn_in.rs - burn_in (line 9) ... ok
[INFO] [stdout] test src/caption_diff.rs - caption_diff (line 11) ... ok
[INFO] [stdout] test src/caption_format_adapter.rs - caption_format_adapter (line 14) ... ok
[INFO] [stdout] test src/reading_speed.rs - reading_speed (line 17) ... ok
[INFO] [stdout] test src/multi_language_sync.rs - multi_language_sync (line 20) ... ok
[INFO] [stdout] test src/phoneme_timing.rs - phoneme_timing (line 11) ... ok
[INFO] [stdout] test src/style_presets.rs - style_presets (line 14) ... ok
[INFO] [stdout] test src/profanity.rs - profanity (line 9) ... ok
[INFO] [stdout] test src/caption_style_guide.rs - caption_style_guide (line 16) ... ok
[INFO] [stdout] test src/autopunct.rs - autopunct (line 15) ... ok
[INFO] [stdout] test src/style_generator.rs - style_generator (line 14) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "fb97df0c9acfe28cd8cc76dab3887c15f275d5d062743ab859d1e34321ddb8d3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fb97df0c9acfe28cd8cc76dab3887c15f275d5d062743ab859d1e34321ddb8d3", kill_on_drop: false }`
[INFO] [stdout] fb97df0c9acfe28cd8cc76dab3887c15f275d5d062743ab859d1e34321ddb8d3
