[INFO] fetching crate phonetik 0.3.2... [INFO] testing phonetik-0.3.2 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-2 [INFO] extracting crate phonetik 0.3.2 into /workspace/builds/worker-4-tc2/source [INFO] started tweaking crates.io crate phonetik 0.3.2 [INFO] finished tweaking crates.io crate phonetik 0.3.2 [INFO] tweaked toml for crates.io crate phonetik 0.3.2 written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate phonetik 0.3.2 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 phonetik 0.3.2 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-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 1c9788dec69fa3eb81b60a2cacb76f3da0676ea7ef3d62f293f3af8793e092e0 [INFO] running `Command { std: "docker" "start" "-a" "1c9788dec69fa3eb81b60a2cacb76f3da0676ea7ef3d62f293f3af8793e092e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1c9788dec69fa3eb81b60a2cacb76f3da0676ea7ef3d62f293f3af8793e092e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1c9788dec69fa3eb81b60a2cacb76f3da0676ea7ef3d62f293f3af8793e092e0", kill_on_drop: false }` [INFO] [stdout] 1c9788dec69fa3eb81b60a2cacb76f3da0676ea7ef3d62f293f3af8793e092e0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 545745cf1d50890e72dcbc4e5a22ea732caa9b53cb61ce7ce9539c4e79b5a0d6 [INFO] running `Command { std: "docker" "start" "-a" "545745cf1d50890e72dcbc4e5a22ea732caa9b53cb61ce7ce9539c4e79b5a0d6", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling atomic-waker v1.1.2 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling mime v0.3.17 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling phonetik v0.3.2 (/opt/rustwide/workdir) [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.86s [INFO] running `Command { std: "docker" "inspect" "545745cf1d50890e72dcbc4e5a22ea732caa9b53cb61ce7ce9539c4e79b5a0d6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "545745cf1d50890e72dcbc4e5a22ea732caa9b53cb61ce7ce9539c4e79b5a0d6", kill_on_drop: false }` [INFO] [stdout] 545745cf1d50890e72dcbc4e5a22ea732caa9b53cb61ce7ce9539c4e79b5a0d6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 12307ad05c5364e5df5a1d4d15ad49f844bb964d1c0f1a6ac9c600df5247cc77 [INFO] running `Command { std: "docker" "start" "-a" "12307ad05c5364e5df5a1d4d15ad49f844bb964d1c0f1a6ac9c600df5247cc77", kill_on_drop: false }` [INFO] [stderr] Compiling phonetik v0.3.2 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 3.90s [INFO] running `Command { std: "docker" "inspect" "12307ad05c5364e5df5a1d4d15ad49f844bb964d1c0f1a6ac9c600df5247cc77", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "12307ad05c5364e5df5a1d4d15ad49f844bb964d1c0f1a6ac9c600df5247cc77", kill_on_drop: false }` [INFO] [stdout] 12307ad05c5364e5df5a1d4d15ad49f844bb964d1c0f1a6ac9c600df5247cc77 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 2534e9d3a694185cae83539bc02ff23182952faa5afbf6cde4854f7a72bc8adc [INFO] running `Command { std: "docker" "start" "-a" "2534e9d3a694185cae83539bc02ff23182952faa5afbf6cde4854f7a72bc8adc", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/phonetik-94b3e53fd6e4538c) [INFO] [stdout] [INFO] [stdout] running 221 tests [INFO] [stdout] test coda_groups::tests::extract_nucleus_coda_empty_coda ... ok [INFO] [stdout] test coda_groups::tests::extract_nucleus_coda_no_stressed_vowel ... ok [INFO] [stdout] test coda_groups::tests::extract_nucleus_coda_secondary_stress_fallback ... ok [INFO] [stdout] test coda_groups::tests::extract_nucleus_coda_primary_stress ... ok [INFO] [stdout] test compare::tests::best_similarity_picks_highest ... ok [INFO] [stdout] test compare::tests::completely_different_words ... ok [INFO] [stdout] test compare::tests::empty_slices ... ok [INFO] [stdout] test compare::tests::similar_words_have_high_score ... ok [INFO] [stdout] test dict::tests::count_syllables_delegates_correctly ... ok [INFO] [stdout] test compare::tests::identical_words_have_similarity_one ... ok [INFO] [stdout] test dict::tests::g_drop_negative_cases ... ok [INFO] [stdout] test dict::tests::g_drop_positive_cases ... ok [INFO] [stdout] test dict::tests::normalize_g_drop_rewrites_apostrophe ... ok [INFO] [stdout] test dict::tests::patch_g_drop_no_ng_unchanged ... ok [INFO] [stdout] test dict::tests::patch_g_drop_patches_stressed_ih2_to_ah2 ... ok [INFO] [stdout] test dict::tests::patch_g_drop_replaces_ng_with_n ... ok [INFO] [stdout] test dict::tests::normalize_preserves_apostrophe_and_hyphen ... ok [INFO] [stdout] test dict::tests::normalize_strips_other_punctuation ... ok [INFO] [stdout] test dict::tests::normalize_uppercases ... ok [INFO] [stdout] test distance::tests::argument_order_irrelevant ... ok [INFO] [stdout] test distance::tests::asymmetric_lengths_exercises_both_roles ... ok [INFO] [stdout] test dict::tests::patch_g_drop_single_ng ... ok [INFO] [stdout] test dict::tests::patch_g_drop_also_patches_ih_to_ah ... ok [INFO] [stdout] test distance::tests::heap_fallback_path ... ok [INFO] [stdout] test distance::tests::heap_path_multiple_edits ... ok [INFO] [stdout] test distance::tests::identical_slices ... ok [INFO] [stdout] test distance::tests::insertion_heavy_stack ... ok [INFO] [stdout] test distance::tests::mixed_ops_known_distance ... ok [INFO] [stdout] test distance::tests::multiple_edits_stack_path ... ok [INFO] [stdout] test distance::tests::one_empty ... ok [INFO] [stdout] test distance::tests::single_deletion ... ok [INFO] [stdout] test distance::tests::both_empty ... ok [INFO] [stdout] test distance::tests::completely_different ... ok [INFO] [stdout] test distance::tests::deletion_heavy_stack ... ok [INFO] [stdout] test dict::tests::normalize_non_g_drop_apostrophe_preserved ... ok [INFO] [stdout] test dict::tests::patch_g_drop_empty_vec ... ok [INFO] [stdout] test distance::tests::heap_deletion_heavy ... ok [INFO] [stdout] test dict::tests::normalize_empty ... ok [INFO] [stdout] test distance::tests::single_element_slices ... ok [INFO] [stdout] test distance::tests::single_insertion ... ok [INFO] [stdout] test distance::tests::single_substitution ... ok [INFO] [stdout] test distance::tests::stack_boundary_at_cap_minus_one ... ok [INFO] [stdout] test distance::tests::stack_boundary_exact_cap ... ok [INFO] [stdout] test dict::tests::lookup_known_word ... ok [INFO] [stdout] test dict::tests::lookup_case_insensitive ... ok [INFO] [stdout] test dict::tests::dict_loads_with_entries ... ok [INFO] [stdout] test dict::tests::lookup_nonexistent_word ... ok [INFO] [stdout] test dict::tests::lookup_g_drop_word_returns_patched_phonemes ... ok [INFO] [stdout] test dict::tests::get_keys_matches_entry_count ... ok [INFO] [stdout] test dict::tests::lookup_word_with_multiple_variants ... ok [INFO] [stdout] test coda_groups::tests::build_produces_nonempty_groups ... ok [INFO] [stdout] test mcp::tests::analyze_document_too_many_lines ... ok [INFO] [stdout] test mcp::tests::rhymes_uses_default_limit ... ok [INFO] [stdout] test mcp::tests::compare_unknown_word ... ok [INFO] [stdout] test mcp::tests::rhymes_returns_results ... ok [INFO] [stdout] test mcp::tests::notifications_return_no_response ... ok [INFO] [stdout] test mcp::tests::compare_rhyming_pair ... ok [INFO] [stdout] test meter::tests::compare_different_lengths ... ok [INFO] [stdout] test meter::tests::compare_different_patterns ... ok [INFO] [stdout] test meter::tests::compare_identical_patterns ... ok [INFO] [stdout] test meter::tests::detect_anapestic_trimeter ... ok [INFO] [stdout] test meter::tests::detect_empty_input ... ok [INFO] [stdout] test meter::tests::detect_trochaic_tetrameter ... ok [INFO] [stdout] test meter::tests::irregularity_reduces_score ... ok [INFO] [stdout] test meter::tests::detect_iambic_pentameter ... ok [INFO] [stdout] test mcp::tests::lookup_missing_word_param ... ok [INFO] [stdout] test mcp::tests::initialize_returns_capabilities ... ok [INFO] [stdout] test mcp::tests::lookup_unknown_word_returns_tool_error ... ok [INFO] [stdout] test mcp::tests::parse_error_returns_error ... ok [INFO] [stdout] test phoneme::tests::boundary_id_120_is_out_of_range ... ok [INFO] [stdout] test phoneme::tests::consonant_ids_are_sequential ... ok [INFO] [stdout] test phoneme::tests::decode_all_returns_static_strs ... ok [INFO] [stdout] test phoneme::tests::consonants_have_no_stress_variants ... ok [INFO] [stdout] test phoneme::tests::count_syllables_by_vowels ... ok [INFO] [stdout] test phoneme::tests::encode_all_and_decode_to_strings ... ok [INFO] [stdout] test phoneme::tests::encode_invalid_inputs ... ok [INFO] [stdout] test phoneme::tests::encode_stress_zero_arm_explicit ... ok [INFO] [stdout] test phoneme::tests::encode_strings_owned ... ok [INFO] [stdout] test phoneme::tests::extract_stresses_from_phonemes ... ok [INFO] [stdout] test phoneme::tests::is_valid_base_short_input ... ok [INFO] [stdout] test phoneme::tests::is_valid_base_strips_digit ... ok [INFO] [stdout] test phoneme::tests::is_valid_known_good_and_bad ... ok [INFO] [stdout] test phoneme::tests::is_vowel_base_fn ... ok [INFO] [stdout] test phoneme::tests::is_vowel_fn ... ok [INFO] [stdout] test phoneme::tests::roundtrip_all_consonants ... ok [INFO] [stdout] test phoneme::tests::decode_invalid_ids ... ok [INFO] [stdout] test phoneme::tests::stress_fn ... ok [INFO] [stdout] test phoneme::tests::stress_of_table ... ok [INFO] [stdout] test phoneme::tests::stress_offset_math ... ok [INFO] [stdout] test phoneme::tests::strip_all_mixed_sequence ... ok [INFO] [stdout] test phoneme::tests::roundtrip_all_vowels_all_stresses ... ok [INFO] [stdout] test phoneme::tests::stripped_table ... ok [INFO] [stdout] test phoneme::tests::strip_fn ... ok [INFO] [stdout] test phoneme::tests::stripped_table_stress2_boundary ... ok [INFO] [stdout] test rhyme::tests::best_rhyme_picks_strongest_variant ... ok [INFO] [stdout] test rhyme::tests::best_rhyme_skips_first_pair ... ok [INFO] [stdout] test rhyme::tests::both_empty_phonemes ... ok [INFO] [stdout] test rhyme::tests::both_unstressed_penalizes_confidence ... ok [INFO] [stdout] test phoneme::tests::is_vowel_table_covers_all_stresses ... ok [INFO] [stdout] test rhyme::tests::compute_tail_similarity_identical ... ok [INFO] [stdout] test rhyme::tests::compute_tail_similarity_empty ... ok [INFO] [stdout] test mcp::tests::analyze_document_returns_summary ... ok [INFO] [stdout] test rhyme::tests::compute_tail_similarity_partial ... ok [INFO] [stdout] test rhyme::tests::consonants_only ... ok [INFO] [stdout] test rhyme::tests::ending_consonants_match_fn ... ok [INFO] [stdout] test rhyme::tests::ending_consonants_match_too_short ... ok [INFO] [stdout] test rhyme::tests::ending_rhyme_fallback_rescues_low_confidence ... ok [INFO] [stdout] test rhyme::tests::get_rhyme_tail_any_vowel_finds_last ... ok [INFO] [stdout] test rhyme::tests::get_rhyme_tail_primary_stress ... ok [INFO] [stdout] test rhyme::tests::get_rhyme_tail_secondary_stress ... ok [INFO] [stdout] test rhyme::tests::identity_rhyme_same_word ... ok [INFO] [stdout] test rhyme::tests::is_suffix_consonant_start_rejected ... ok [INFO] [stdout] test rhyme::tests::is_suffix_empty_shorter ... ok [INFO] [stdout] test rhyme::tests::moderate_similarity_near_or_slant ... ok [INFO] [stdout] test rhyme::tests::near_rhyme_same_nucleus_different_coda ... ok [INFO] [stdout] test rhyme::tests::no_rhyme_completely_different ... ok [INFO] [stdout] test rhyme::tests::low_similarity_classified_as_none ... ok [INFO] [stdout] test rhyme::tests::one_empty_phonemes ... ok [INFO] [stdout] test rhyme::tests::one_stressed_one_not_no_penalty ... ok [INFO] [stdout] test rhyme::tests::perfect_rhyme_cat_bat ... ok [INFO] [stdout] test rhyme::tests::round4_fn ... ok [INFO] [stdout] test rhyme::tests::suffix_rhyme_different_length_tails ... ok [INFO] [stdout] test rhyme::tests::suffix_rhyme_short_is_suffix_of_long ... ok [INFO] [stdout] test rhyme::tests::slant_rhyme_same_coda_different_vowel ... ok [INFO] [stdout] test rhyme::tests::is_suffix_fn ... ok [INFO] [stdout] test rhyme::tests::get_rhyme_tail_no_match ... ok [INFO] [stdout] test mcp::tests::lookup_known_word ... ok [INFO] [stdout] test rhyme_index::tests::group_count_is_substantial ... ok [INFO] [stdout] test rhyme_index::tests::lookup_known_rhyme_group ... ok [INFO] [stdout] test rhyme_index::tests::lookup_excludes_query_word ... ok [INFO] [stdout] test rhyme_index::tests::add_word_overlay ... ok [INFO] [stdout] test rhyme_index::tests::lookup_nonexistent_word ... ok [INFO] [stdout] test rhymemap::tests::pattern_ids_are_sequential ... ok [INFO] [stdout] test rhymemap::tests::analyze_empty_lines ... ok [INFO] [stdout] test mcp::tests::analyze_document_with_rhyme_map ... ok [INFO] [stdout] test rhymemap::tests::tokenize_handles_hyphens_and_g_drops ... ok [INFO] [stdout] test mcp::tests::empty_lines_are_skipped_by_run_stdio ... ok [INFO] [stdout] test rhymemap::tests::analyze_finds_patterns_in_rhyming_couplet ... ok [INFO] [stdout] test rhymemap::tests::max_patterns_option_caps_output ... ok [INFO] [stdout] test rhymemap::tests::analyze_words_are_tracked ... ok [INFO] [stdout] test rhymemap::tests::unknown_words_marked ... ok [INFO] [stdout] test rhymemap::tests::patterns_sorted_by_score_desc ... ok [INFO] [stdout] test mcp::tests::scan_detects_meter ... ok [INFO] [stdout] test near_index::tests::neighbor_count_is_substantial ... ok [INFO] [stdout] test mcp::tests::unknown_tool_returns_error ... ok [INFO] [stdout] test near_index::tests::lookup_returns_near_rhymes ... ok [INFO] [stdout] test mcp::tests::unknown_method_returns_error ... ok [INFO] [stdout] test near_index::tests::lookup_nonexistent_word ... ok [INFO] [stdout] test mcp::tests::unknown_method_notification_is_silent ... ok [INFO] [stdout] test mcp::tests::tools_list_returns_all_tools ... ok [INFO] [stdout] test near_index::tests::lookup_respects_limit ... ok [INFO] [stdout] test server::tests::document_returns_summary_and_lines ... ok [INFO] [stdout] test server::tests::compare_happy_path ... ok [INFO] [stdout] test server::tests::compare_unknown_word_404 ... ok [INFO] [stdout] test server::tests::rhymemap_empty_lines_400 ... ok [INFO] [stdout] test server::tests::document_too_many_lines_400 ... ok [INFO] [stdout] test server::tests::health_returns_ok_and_dictionary_entries ... ok [INFO] [stdout] test server::tests::rhymemap_too_many_lines_400 ... ok [INFO] [stdout] test server::tests::compare_missing_params_400 ... ok [INFO] [stdout] test stress::tests::estimate_stresses_monosyllabic ... ok [INFO] [stdout] test stress::tests::estimate_stresses_multisyllabic ... ok [INFO] [stdout] test stress::tests::estimate_stresses_no_vowels ... ok [INFO] [stdout] test stress::tests::function_word_list_is_sorted ... ok [INFO] [stdout] test stress::tests::is_g_drop_apostrophe_fn ... ok [INFO] [stdout] test stress::tests::analyze_binary_pattern_is_zero_or_one ... ok [INFO] [stdout] test stress::tests::analyze_unknown_word_marked ... ok [INFO] [stdout] test stress::tests::analyze_known_words ... ok [INFO] [stdout] test stress::tests::tokenize_empty_string ... ok [INFO] [stdout] test stress::tests::analyze_empty_line ... ok [INFO] [stdout] test stress::tests::tokenize_preserves_apostrophe_contractions ... ok [INFO] [stdout] test stress::tests::tokenize_simple_words ... ok [INFO] [stdout] test stress::tests::tokenize_strips_punctuation ... ok [INFO] [stdout] test stress::tests::tokenize_g_drop_apostrophe ... ok [INFO] [stdout] test syllable::tests::build_syllables_uses_gap_boundaries ... ok [INFO] [stdout] test syllable::tests::find_nuclei_falls_back_for_words_without_vowels ... ok [INFO] [stdout] test syllable::tests::find_nuclei_handles_basic_words_and_silent_e ... ok [INFO] [stdout] test syllable::tests::format_line_joins_words ... ok [INFO] [stdout] test syllable::tests::merge_nuclei_reduces_to_target ... ok [INFO] [stdout] test syllable::tests::split_empty_and_single_syllable_words ... ok [INFO] [stdout] test syllable::tests::split_nuclei_expands_wide_nucleus ... ok [INFO] [stdout] test syllable::tests::split_nuclei_stops_when_nuclei_too_narrow ... ok [INFO] [stdout] test syllable::tests::split_basic_multi_syllable_words ... ok [INFO] [stdout] test syllable::tests::stress_display_uses_case_and_hyphens ... ok [INFO] [stdout] test syllable::tests::vowel_detection_is_case_insensitive ... ok [INFO] [stdout] test stress::tests::dictionary_mode_preserves_all_stress ... ok [INFO] [stdout] test stress::tests::spoken_mode_is_default ... ok [INFO] [stdout] test stress::tests::spoken_mode_demotes_function_words ... ok [INFO] [stdout] test server::tests::scan_single_line ... ok [INFO] [stdout] test tests::estimate_syllable_count_fn ... ok [INFO] [stdout] test tests::format_stress_visual_fn ... ok [INFO] [stdout] test server::tests::rhymes_respects_limit_cap ... ok [INFO] [stdout] test stress::tests::stressed_display_is_nonempty_for_known_words ... ok [INFO] [stdout] test server::tests::scan_requires_line1 ... ok [INFO] [stdout] test slant_index::tests::lookup_respects_limit ... ok [INFO] [stdout] test server::tests::syllables_unknown_404 ... ok [INFO] [stdout] test slant_index::tests::lookup_nonexistent_word ... ok [INFO] [stdout] test server::tests::syllable_counts_batch ... ok [INFO] [stdout] test slant_index::tests::coda_count_is_substantial ... ok [INFO] [stdout] test tests::clone_shares_data ... ok [INFO] [stdout] test slant_index::tests::lookup_returns_slant_rhymes ... ok [INFO] [stdout] test slant_index::tests::matches_sorted_by_confidence_desc ... ok [INFO] [stdout] test tests::compare_unknown_word_returns_none ... ok [INFO] [stdout] test tests::compare_rhyming_pair ... ok [INFO] [stdout] test tests::rhymes_deduplicates ... ok [INFO] [stdout] test tests::tokenize_words_fn ... ok [INFO] [stdout] test tests::lookup_unknown_word ... ok [INFO] [stdout] test tests::default_impl_works ... ok [INFO] [stdout] test tests::contains_known_and_unknown ... ok [INFO] [stdout] test tests::perfect_rhymes_known_pair ... ok [INFO] [stdout] test tests::rhymes_returns_perfect_first ... ok [INFO] [stdout] test tests::near_rhymes_returns_results ... ok [INFO] [stdout] test tests::lookup_returns_word_info ... ok [INFO] [stdout] test tests::rhymes_respects_limit ... ok [INFO] [stdout] test tests::scan_empty_line ... ok [INFO] [stdout] test tests::rhyme_map_finds_patterns ... ok [INFO] [stdout] test tests::scan_iambic_pentameter ... ok [INFO] [stdout] test tests::slant_rhymes_returns_results ... ok [INFO] [stdout] test tests::syllable_count_known_word ... ok [INFO] [stdout] test tests::syllable_counts_batch ... ok [INFO] [stdout] test tests::syllable_count_unknown_falls_back_to_estimate ... ok [INFO] [stdout] test tests::word_count_is_substantial ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 221 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 58.22s [INFO] [stdout] [INFO] [stderr] Running unittests src/mcp_main.rs (/opt/rustwide/target/debug/deps/phonetik_mcp-2457e563526956c2) [INFO] [stdout] [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] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/phonetik_server-d7ab12bfa7b2255e) [INFO] [stdout] [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] [stderr] Doc-tests phonetik [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test src/lib.rs - (line 9) ... ok [INFO] [stdout] test src/lib.rs - Phonetik::scan (line 331) ... ok [INFO] [stdout] test src/lib.rs - Phonetik::lookup (line 158) ... ok [INFO] [stdout] test src/lib.rs - Phonetik::rhymes (line 222) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.45s [INFO] [stdout] [INFO] [stdout] all doctests ran in 5.72s; merged doctests compilation took 1.26s [INFO] running `Command { std: "docker" "inspect" "2534e9d3a694185cae83539bc02ff23182952faa5afbf6cde4854f7a72bc8adc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2534e9d3a694185cae83539bc02ff23182952faa5afbf6cde4854f7a72bc8adc", kill_on_drop: false }` [INFO] [stdout] 2534e9d3a694185cae83539bc02ff23182952faa5afbf6cde4854f7a72bc8adc