[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
