[INFO] cloning repository https://github.com/abhinav20sep/codenav [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/abhinav20sep/codenav" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabhinav20sep%2Fcodenav", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabhinav20sep%2Fcodenav'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 012b6b59fd25116b517e204b2a2f0891fe7b85ac [INFO] testing abhinav20sep/codenav against 1.97.0-beta.6 for beta-1.98-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabhinav20sep%2Fcodenav" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/abhinav20sep/codenav [INFO] finished tweaking git repo https://github.com/abhinav20sep/codenav [INFO] tweaked toml for git repo https://github.com/abhinav20sep/codenav written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/abhinav20sep/codenav on toolchain 1.97.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/abhinav20sep/codenav 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded plist v1.8.0 [INFO] [stderr] Downloaded deranged v0.5.6 [INFO] [stderr] Downloaded onig v6.5.1 [INFO] [stderr] Downloaded native-tls v0.2.16 [INFO] [stderr] Downloaded security-framework-sys v2.16.0 [INFO] [stderr] Downloaded tempfile v3.25.0 [INFO] [stderr] Downloaded ctor v0.6.3 [INFO] [stderr] Downloaded alga v0.9.3 [INFO] [stderr] Downloaded ctor-proc-macro v0.0.7 [INFO] [stderr] Downloaded ordered-float v5.1.0 [INFO] [stderr] Downloaded security-framework v3.6.0 [INFO] [stderr] Downloaded simba v0.9.1 [INFO] [stderr] Downloaded clap v4.5.58 [INFO] [stderr] Downloaded sprs v0.11.4 [INFO] [stderr] Downloaded graphina v0.3.0-alpha.4 [INFO] [stderr] Downloaded tree-sitter v0.25.10 [INFO] [stderr] Downloaded clap_builder v4.5.58 [INFO] [stderr] Downloaded ndarray v0.17.2 [INFO] [stderr] Downloaded tree-sitter-rust v0.24.0 [INFO] [stderr] Downloaded rustls v0.23.36 [INFO] [stderr] Downloaded regex-syntax v0.8.9 [INFO] [stderr] Downloaded nalgebra v0.33.2 [INFO] [stderr] Downloaded onig_sys v69.9.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf [INFO] running `Command { std: "docker" "start" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling syn v2.0.115 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling matrixmultiply v0.3.10 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling tree-sitter-language v0.1.7 [INFO] [stderr] Compiling futures-task v0.3.31 [INFO] [stderr] Compiling rayon v1.11.0 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling num-complex v0.2.4 [INFO] [stderr] Compiling bytemuck v1.25.0 [INFO] [stderr] Compiling rawpointer v0.2.1 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling native-tls v0.2.16 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling regex-syntax v0.8.9 [INFO] [stderr] Compiling deranged v0.5.6 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling safe_arch v0.7.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling dtor-proc-macro v0.0.6 [INFO] [stderr] Compiling num-conv v0.2.0 [INFO] [stderr] Compiling wide v0.7.33 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Compiling virtue v0.0.18 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling dtor v0.1.1 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling approx v0.3.2 [INFO] [stderr] Compiling approx v0.5.1 [INFO] [stderr] Compiling bincode_derive v2.0.1 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling alga v0.9.3 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling ndarray v0.17.2 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling onig_sys v69.9.1 [INFO] [stderr] Compiling tree-sitter-rust v0.24.0 [INFO] [stderr] Compiling quick-xml v0.38.4 [INFO] [stderr] Compiling fixedbitset v0.5.7 [INFO] [stderr] Compiling ctor-proc-macro v0.0.7 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Compiling iri-string v0.7.10 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling simba v0.9.1 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling unty v0.0.4 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling clap_builder v4.5.58 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling lru v0.12.5 [INFO] [stderr] Compiling compact_str v0.8.1 [INFO] [stderr] Compiling ctor v0.6.3 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling yaml-rust v0.4.5 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling ordered-float v5.1.0 [INFO] [stderr] Compiling tree-sitter v0.25.10 [INFO] [stderr] Compiling encoding_rs v0.8.35 [INFO] [stderr] Compiling streaming-iterator v0.1.9 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling nalgebra-macros v0.2.2 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling onig v6.5.1 [INFO] [stderr] Compiling sprs v0.11.4 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling nalgebra v0.33.2 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling clap v4.5.58 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling ratatui v0.29.0 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling petgraph v0.8.3 [INFO] [stderr] Compiling plist v1.8.0 [INFO] [stderr] Compiling bincode v2.0.1 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling bincode v1.3.3 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling syntect v5.3.0 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling graphina v0.3.0-alpha.4 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling codenav v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 32s [INFO] running `Command { std: "docker" "inspect" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling codenav v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 6.48s [INFO] running `Command { std: "docker" "inspect" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.35s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/codenav-e731e9677d38e505) [INFO] [stdout] [INFO] [stdout] running 176 tests [INFO] [stdout] test ai::client::tests::test_anthropic_api_response_empty_content ... ok [INFO] [stdout] test ai::client::tests::test_anthropic_api_response_no_text_field ... ok [INFO] [stdout] test ai::client::tests::test_anthropic_api_response_parsing ... ok [INFO] [stdout] test ai::client::tests::test_effective_base_url_defaults ... ok [INFO] [stdout] test ai::client::tests::test_effective_model_defaults ... ok [INFO] [stdout] test ai::client::tests::test_from_config_no_ai_flag ... ok [INFO] [stdout] test ai::client::tests::test_from_config_no_key ... ok [INFO] [stdout] test ai::client::tests::test_openai_response_empty_choices ... ok [INFO] [stdout] test ai::client::tests::test_message_serialization ... ok [INFO] [stdout] test ai::diagrams::tests::test_deterministic_mermaid_empty_node ... ok [INFO] [stdout] test ai::diagrams::tests::test_deterministic_mermaid_no_matching_entities ... ok [INFO] [stdout] test ai::diagrams::tests::test_deterministic_mermaid_no_flow_analysis ... ok [INFO] [stdout] test ai::diagrams::tests::test_diagram_cache_load_nonexistent ... ok [INFO] [stdout] test ai::diagrams::tests::test_diagram_cache_overwrite ... ok [INFO] [stdout] test ai::diagrams::tests::test_diagram_cache_default_empty ... ok [INFO] [stdout] test ai::client::tests::test_openai_response_parsing ... ok [INFO] [stdout] test ai::diagrams::tests::test_diagram_cache_serialization_roundtrip ... ok [INFO] [stdout] test ai::diagrams::tests::test_diagram_cache_save_load_roundtrip ... ok [INFO] [stdout] test ai::diagrams::tests::test_diagram_cache_insert_get ... ok [INFO] [stdout] test ai::client::tests::test_effective_base_url_user_override ... ok [INFO] [stdout] test ai::diagrams::tests::test_diagram_cache_load_corrupted ... ok [INFO] [stdout] test ai::explain::tests::test_cache_default_is_empty ... ok [INFO] [stdout] test ai::explain::tests::test_cache_insert_and_get ... ok [INFO] [stdout] test ai::explain::tests::test_cache_load_corrupted_json_returns_default ... ok [INFO] [stdout] test ai::explain::tests::test_cache_load_nonexistent_returns_default ... ok [INFO] [stdout] test ai::explain::tests::test_cache_multiple_entries ... ok [INFO] [stdout] test ai::explain::tests::test_cache_overwrite ... ok [INFO] [stdout] test ai::explain::tests::test_cache_serialization_roundtrip ... ok [INFO] [stdout] test ai::prompts::tests::test_build_explain_prompt_empty_fields ... ok [INFO] [stdout] test ai::prompts::tests::test_build_explain_prompt_structure ... ok [INFO] [stdout] test ai::prompts::tests::test_build_explain_prompt_with_special_chars ... ok [INFO] [stdout] test ai::prompts::tests::test_build_tree_gen_prompt_contains_summaries ... ok [INFO] [stdout] test ai::prompts::tests::test_build_tree_gen_prompt_empty_summaries ... ok [INFO] [stdout] test ai::prompts::tests::test_build_tree_gen_prompt_json_schema_example ... ok [INFO] [stdout] test ai::prompts::tests::test_diagram_system_prompt_has_mermaid ... ok [INFO] [stdout] test ai::explain::tests::test_cache_save_and_load_roundtrip ... ok [INFO] [stdout] test ai::prompts::tests::test_explanation_system_prompt_has_pedagogy ... ok [INFO] [stdout] test ai::prompts::tests::test_tree_gen_system_prompt_has_rules ... ok [INFO] [stdout] test ai::tree_gen::tests::test_build_concept_summaries_basic ... ok [INFO] [stdout] test ai::tree_gen::tests::test_build_concept_summaries_empty ... ok [INFO] [stdout] test ai::diagrams::tests::test_open_mermaid_external_writes_files ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_direct ... ok [INFO] [stdout] test ai::diagrams::tests::test_open_mermaid_external_sanitizes_name ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_fence_with_invalid_json ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_from_fence_with_lang_tag ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_from_json_fence ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_from_plain_fence ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_from_preamble ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_invalid ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_malformed ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_with_whitespace ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_nested_braces ... ok [INFO] [stdout] test app::tests::test_ai_loading_state ... ok [INFO] [stdout] test app::tests::test_build_conversation_context_empty ... ok [INFO] [stdout] test ai::tree_gen::tests::test_extract_json_empty_response ... ok [INFO] [stdout] test app::tests::test_build_conversation_context_with_concept ... ok [INFO] [stdout] test app::tests::test_collapse_leaf_jumps_to_parent ... ok [INFO] [stdout] test app::tests::test_concept_tree_state_collapse_expand ... ok [INFO] [stdout] test app::tests::test_concept_tree_state_next_prev_leaf ... ok [INFO] [stdout] test app::tests::test_concept_tree_state_visible_nodes ... ok [INFO] [stdout] test app::tests::test_dynamic_node_created_under_correct_parent ... ok [INFO] [stdout] test app::tests::test_expand_leaf_is_noop ... ok [INFO] [stdout] test app::tests::test_explanation_cache_used_on_navigate ... ok [INFO] [stdout] test app::tests::test_extract_topic_empty_name ... ok [INFO] [stdout] test app::tests::test_extract_topic_incomplete_marker ... ok [INFO] [stdout] test app::tests::test_extract_topic_marker_in_middle ... ok [INFO] [stdout] test app::tests::test_extract_topic_name_only ... ok [INFO] [stdout] test app::tests::test_extract_topic_whitespace_handling ... ok [INFO] [stdout] test app::tests::test_extract_topic_with_name_and_desc ... ok [INFO] [stdout] test app::tests::test_extract_topic_no_marker ... ok [INFO] [stdout] test app::tests::test_full_conversation_flow_without_api ... ok [INFO] [stdout] test app::tests::test_focus_cycling_freebrowse_mode ... ok [INFO] [stdout] test app::tests::test_focus_cycling_learning_mode ... ok [INFO] [stdout] test app::tests::test_move_up_down_boundaries ... ok [INFO] [stdout] test app::tests::test_next_leaf_auto_expands_collapsed_subtree ... ok [INFO] [stdout] test app::tests::test_input_buffer_editing ... ok [INFO] [stdout] test app::tests::test_mode_toggle ... ok [INFO] [stdout] test app::tests::test_next_leaf_deeply_nested ... ok [INFO] [stdout] test app::tests::test_navigate_to_concept_clears_conversation ... ok [INFO] [stdout] test app::tests::test_input_mode_transitions ... ok [INFO] [stdout] test app::tests::test_request_ai_explanation_no_key ... ok [INFO] [stdout] test app::tests::test_poll_ai_explanation_different_concept ... ok [INFO] [stdout] test app::tests::test_poll_ai_response_conversation ... ok [INFO] [stdout] test app::tests::test_poll_ai_explanation_result ... ok [INFO] [stdout] test app::tests::test_poll_ai_response_disconnected ... ok [INFO] [stdout] test app::tests::test_poll_ai_response_error_message ... ok [INFO] [stdout] test app::tests::test_poll_ai_response_no_pending ... ok [INFO] [stdout] test app::tests::test_poll_ai_response_with_topic_suggestion ... ok [INFO] [stdout] test app::tests::test_prev_leaf_auto_expands_collapsed_subtree ... ok [INFO] [stdout] test app::tests::test_selected_node_id_out_of_bounds ... ok [INFO] [stdout] test app::tests::test_provider_aware_error_message ... ok [INFO] [stdout] test app::tests::test_settings_cycle_provider ... ok [INFO] [stdout] test app::tests::test_settings_edit_model ... ok [INFO] [stdout] test app::tests::test_settings_keys_dont_leak_to_app ... ok [INFO] [stdout] test app::tests::test_submit_question_dynamic_node_accept ... ok [INFO] [stdout] test app::tests::test_submit_question_dynamic_node_accept_yes_full ... ok [INFO] [stdout] test app::tests::test_settings_save_applies_config ... ok [INFO] [stdout] test app::tests::test_settings_open_close ... ok [INFO] [stdout] test app::tests::test_settings_navigate_fields ... ok [INFO] [stdout] test app::tests::test_submit_question_empty_input_ignored ... ok [INFO] [stdout] test config::tests::test_ai_available_custom_localhost ... ok [INFO] [stdout] test app::tests::test_submit_question_without_ai_key ... ok [INFO] [stdout] test config::tests::test_ai_available_no_key ... ok [INFO] [stdout] test app::tests::test_settings_field_cycling ... ok [INFO] [stdout] test app::tests::test_submit_question_dynamic_node_reject ... ok [INFO] [stdout] test config::tests::test_ai_available_ollama_no_key ... ok [INFO] [stdout] test config::tests::test_ai_available_with_config_key ... ok [INFO] [stdout] test config::tests::test_ai_available_with_no_ai_flag ... ok [INFO] [stdout] test config::tests::test_config_load_nonexistent_path ... ok [INFO] [stdout] test config::tests::test_default_config ... ok [INFO] [stdout] test config::tests::test_effective_api_key_from_config ... ok [INFO] [stdout] test config::tests::test_provider_display ... ok [INFO] [stdout] test config::tests::test_backward_compat_no_provider_field ... ok [INFO] [stdout] test config::tests::test_provider_env_var_name ... ok [INFO] [stdout] test config::tests::test_effective_api_key_per_provider ... ok [INFO] [stdout] test config::tests::test_provider_serialization_roundtrip ... ok [INFO] [stdout] test config::tests::test_provider_all ... ok [INFO] [stdout] test config::tests::test_config_serialization_roundtrip ... ok [INFO] [stdout] test config::tests::test_effective_api_key_empty_config_no_env ... ok [INFO] [stdout] test config::tests::test_config_save_and_reload ... ok [INFO] [stdout] test config::tests::test_provider_cycling ... ok [INFO] [stdout] test config::tests::test_provider_default_is_openrouter ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_add_dynamic_node ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_leaf_count_all_leaves ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_add_dynamic_node_to_nonexistent_parent ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_from_flat_concepts_empty ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_node_accessors ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_dynamic_nodes_save_load_roundtrip ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_walk_preorder_single_node ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_merge_dynamic_nodes_dedup ... ok [INFO] [stdout] test knowledge::storage::tests::test_persisted_progress_serialization ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_from_flat_concepts_multiple_directories ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_from_flat_concepts_same_directory_grouping ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_from_flat_concepts_single_concept ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_merge_dynamic_nodes_new ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_leaf_count ... ok [INFO] [stdout] test knowledge::storage::tests::test_recompute_progress_capped_at_total ... ok [INFO] [stdout] test knowledge::storage::tests::test_recompute_progress_none_visited ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_dynamic_nodes_save_empty_does_nothing ... ok [INFO] [stdout] test knowledge::storage::tests::test_recompute_progress_one_complete ... ok [INFO] [stdout] test knowledge::storage::tests::test_recompute_progress_partial ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_save_load_roundtrip ... ok [INFO] [stdout] test knowledge::concept_tree::tests::test_walk_preorder ... ok [INFO] [stdout] test knowledge::storage::tests::test_recompute_progress_all_complete ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_above_window ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_at_bottom_boundary ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_below_window ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_at_top_boundary ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_height_one ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_zero_height ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_one_past_bottom ... ok [INFO] [stdout] test ui::widgets::flow_diagram::tests::test_generate_mermaid_no_matching_flows ... ok [INFO] [stdout] test knowledge::storage::tests::test_visited_to_records_and_back ... ok [INFO] [stderr] xdg-open: file '/tmp/codenav_Test_Concept.html' does not exist [INFO] [stdout] test ui::widgets::flow_diagram::tests::test_generate_mermaid_empty_entities ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_empty ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_exact_width ... ok [INFO] [stdout] test ui::widgets::flow_diagram::tests::test_generate_mermaid_no_flow_data ... ok [INFO] [stdout] test ui::widgets::flow_diagram::tests::test_render_ascii_flow_empty_entities ... ok [INFO] [stdout] test ui::widgets::flow_diagram::tests::test_render_ascii_flow_no_flow_data ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_in_view ... ok [INFO] [stdout] test ui::widgets::concept_tree::tests::test_clamp_scroll_selected_zero ... ok [INFO] [stdout] test ui::widgets::flow_diagram::tests::test_render_ascii_flow_no_matching_flows ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_multiline_input ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_needs_wrap ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_multiline_with_wrapping ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_trailing_newline ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_single_long_word ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_width_one ... ok [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_zero_width ... ok [INFO] [stderr] xdg-open: file '/tmp/codenav_My_Special_Name_.html' does not exist [INFO] [stdout] test ui::widgets::tutor_panel::tests::test_wrap_text_short_line ... ok [INFO] [stdout] test ai::client::tests::test_from_config_with_key ... ok [INFO] [stdout] test ai::client::tests::test_create_client_openai_provider ... ok [INFO] [stdout] test ai::client::tests::test_create_client_ollama_no_key ... ok [INFO] [stdout] test ai::client::tests::test_from_parts ... ok [INFO] [stdout] test ai::client::tests::test_create_client_custom_localhost_no_key ... ok [INFO] [stdout] test ai::client::tests::test_from_config_custom_model_and_url ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 176 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.33s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf", kill_on_drop: false }` [INFO] [stdout] 4a732e4945421bc31ad473034be10d484e09b51fbf860c166ef48b01586a0acf