[INFO] cloning repository https://github.com/ReinhardGraf/llmfit
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ReinhardGraf/llmfit" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FReinhardGraf%2Fllmfit", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FReinhardGraf%2Fllmfit'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 064fa68e6f0a32537469ed6e3c6cd3d756d8e039
[INFO] testing ReinhardGraf/llmfit against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FReinhardGraf%2Fllmfit" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ReinhardGraf/llmfit
[INFO] finished tweaking git repo https://github.com/ReinhardGraf/llmfit
[INFO] tweaked toml for git repo https://github.com/ReinhardGraf/llmfit written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ReinhardGraf/llmfit on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ReinhardGraf/llmfit 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.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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] f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9
[INFO] running `Command { std: "docker" "start" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9", 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" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9", 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" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling lru v0.16.4
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling serde_yml v0.0.12
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling pxfm v0.1.29
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling ureq-proto v0.6.0
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling libyml v0.0.5
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling bytecount v0.6.9
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling sysinfo v0.38.4
[INFO] [stderr]    Compiling papergrid v0.17.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling which v8.0.2
[INFO] [stderr]    Compiling testing_table v0.3.0
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling llmfit v0.9.20 (/opt/rustwide/workdir/llmfit-tui)
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr] warning: llmfit@0.9.20: llmfit-web/dist not found. Falling back to placeholder embedded dashboard. Run `npm ci && npm run build` in llmfit-web.
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling tabled_derive v0.11.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling tabled v0.20.0
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.12
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling ureq v3.3.0
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling llmfit-core v0.9.20 (/opt/rustwide/workdir/llmfit-core)
[INFO] [stdout] warning: fields `n_routed_experts` and `num_local_experts` are never read
[INFO] [stdout]    --> llmfit-core/src/update.rs:333:5
[INFO] [stdout]     |
[INFO] [stdout] 309 | struct HfConfig {
[INFO] [stdout]     |        -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 333 |     n_routed_experts: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 334 |     #[serde(default)]
[INFO] [stdout] 335 |     num_local_experts: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `HfConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `dm_history_scroll` is never read
[INFO] [stdout]    --> llmfit-tui/src/tui_app.rs:545:9
[INFO] [stdout]     |
[INFO] [stdout] 443 | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 545 |     pub dm_history_scroll: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 26s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9", 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" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling assert_cmd v2.2.1
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling llmfit v0.9.20 (/opt/rustwide/workdir/llmfit-tui)
[INFO] [stderr] warning: llmfit@0.9.20: llmfit-web/dist not found. Falling back to placeholder embedded dashboard. Run `npm ci && npm run build` in llmfit-web.
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling llmfit-core v0.9.20 (/opt/rustwide/workdir/llmfit-core)
[INFO] [stdout] warning: fields `n_routed_experts` and `num_local_experts` are never read
[INFO] [stdout]    --> llmfit-core/src/update.rs:333:5
[INFO] [stdout]     |
[INFO] [stdout] 309 | struct HfConfig {
[INFO] [stdout]     |        -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 333 |     n_routed_experts: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 334 |     #[serde(default)]
[INFO] [stdout] 335 |     num_local_experts: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `HfConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `n_routed_experts` and `num_local_experts` are never read
[INFO] [stdout]    --> llmfit-core/src/update.rs:333:5
[INFO] [stdout]     |
[INFO] [stdout] 309 | struct HfConfig {
[INFO] [stdout]     |        -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 333 |     n_routed_experts: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 334 |     #[serde(default)]
[INFO] [stdout] 335 |     num_local_experts: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `HfConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `dm_history_scroll` is never read
[INFO] [stdout]    --> llmfit-tui/src/tui_app.rs:545:9
[INFO] [stdout]     |
[INFO] [stdout] 443 | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 545 |     pub dm_history_scroll: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `dm_history_scroll` is never read
[INFO] [stdout]    --> llmfit-tui/src/tui_app.rs:545:9
[INFO] [stdout]     |
[INFO] [stdout] 443 | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 545 |     pub dm_history_scroll: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 29.45s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9", 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" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: fields `n_routed_experts` and `num_local_experts` are never read
[INFO] [stderr]    --> llmfit-core/src/update.rs:333:5
[INFO] [stderr]     |
[INFO] [stderr] 309 | struct HfConfig {
[INFO] [stderr]     |        -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 333 |     n_routed_experts: Option<u32>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 334 |     #[serde(default)]
[INFO] [stderr] 335 |     num_local_experts: Option<u32>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `HfConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `llmfit-core` (lib) generated 1 warning
[INFO] [stderr] warning: `llmfit-core` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]    Compiling llmfit v0.9.20 (/opt/rustwide/workdir/llmfit-tui)
[INFO] [stderr] warning: llmfit@0.9.20: llmfit-web/dist not found. Falling back to placeholder embedded dashboard. Run `npm ci && npm run build` in llmfit-web.
[INFO] [stderr] warning: field `dm_history_scroll` is never read
[INFO] [stderr]    --> llmfit-tui/src/tui_app.rs:545:9
[INFO] [stderr]     |
[INFO] [stderr] 443 | pub struct App {
[INFO] [stderr]     |            --- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 545 |     pub dm_history_scroll: usize,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `llmfit` (bin "llmfit" test) generated 1 warning
[INFO] [stderr] warning: `llmfit` (bin "llmfit") generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 16.04s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/llmfit-30d3c23195907b4f)
[INFO] [stdout] 
[INFO] [stdout] running 20 tests
[INFO] [stdout] test display::tests::llamacpp_command_includes_conversation_for_chat_and_instruct ... ok
[INFO] [stdout] test display::tests::llamacpp_command_omits_conversation_for_embeddings ... ok
[INFO] [stdout] test display::tests::llamacpp_command_omits_tensor_parallel_suggestion ... ok
[INFO] [stdout] test display::tests::llamacpp_command_uses_cpu_only_ngl_zero ... ok
[INFO] [stdout] test display::tests::llamacpp_command_uses_effective_context ... ok
[INFO] [stdout] test tests::selector_prefers_exact_match ... ok
[INFO] [stdout] test tests::generic_selector_prefers_exact_match_for_models ... ok
[INFO] [stdout] test display::tests::fit_json_includes_effective_context_length ... ok
[INFO] [stdout] test display::tests::llamacpp_command_includes_conversation_for_tool_use ... ok
[INFO] [stdout] test tests::selector_errors_on_ambiguous_partial ... ok
[INFO] [stdout] test tests::fit_filter_runnable_excludes_too_tight ... ok
[INFO] [stdout] test display::tests::llamacpp_offload_ngl_args_use_fit_only_when_supported ... ok
[INFO] [stdout] test serve_api::tests::existing_api_route_response_shape_is_preserved ... ok
[INFO] [stdout] test serve_api::tests::system_endpoint_applies_hardware_overrides ... ok
[INFO] [stdout] test serve_api::tests::root_serves_index_html ... ok
[INFO] [stdout] test serve_api::tests::unknown_api_paths_do_not_fallback_to_html ... ok
[INFO] [stdout] test serve_api::tests::unknown_non_api_routes_fallback_to_index ... ok
[INFO] [stdout] test serve_api::tests::invalid_cpu_override_returns_bad_request ... ok
[INFO] [stdout] test serve_api::tests::assets_route_serves_embedded_file_with_content_type ... ok
[INFO] [stdout] test serve_api::tests::models_endpoint_returns_effective_simulated_system ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_smoke.rs (/opt/rustwide/target/debug/deps/cli_smoke-90e231b8473a3b7b)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test cpu_cores_parser_rejects_zero ... ok
[INFO] [stdout] test help_includes_project_description ... ok
[INFO] [stdout] test version_matches_package_version ... ok
[INFO] [stdout] test system_json_has_expected_shape ... ok
[INFO] [stdout] test list_json_returns_non_empty_catalog ... ok
[INFO] [stdout] test fit_json_obeys_limit_and_contains_models_field ... ok
[INFO] [stdout] test fit_json_returns_empty_models_when_no_perfect_matches ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/llmfit_core-9d54461431aaf97d)
[INFO] [stdout] 
[INFO] [stdout] running 358 tests
[INFO] [stdout] test bench::tests::test_summary_empty_runs ... ok
[INFO] [stdout] test bench::tests::test_summary_multiple_runs ... ok
[INFO] [stdout] test bench::tests::test_summary_single_run ... ok
[INFO] [stdout] test bench::tests::test_summary_min_max_correctness ... ok
[INFO] [stdout] test bench::tests::test_summary_identical_runs ... ok
[INFO] [stdout] test fit::tests::test_context_score ... ok
[INFO] [stdout] test fit::tests::test_awq_on_rocm_always_compatible ... ok
[INFO] [stdout] test fit::tests::test_bandwidth_estimation_rtx4090_faster_than_rtx3060 ... ok
[INFO] [stdout] test fit::tests::test_estimate_tps_mlx_faster_than_llamacpp ... ok
[INFO] [stdout] test fit::tests::test_bandwidth_estimation_t4_7b_f16_realistic ... ok
[INFO] [stdout] test fit::tests::test_bandwidth_estimation_unknown_gpu_uses_fallback ... ok
[INFO] [stdout] test fit::tests::test_bandwidth_estimation_rtx4090_27b_q4_realistic ... ok
[INFO] [stdout] test fit::tests::test_awq_on_pascal_incompatible ... ok
[INFO] [stdout] test fit::tests::test_awq_compatible_on_turing_and_newer ... ok
[INFO] [stdout] test fit::tests::test_bandwidth_estimation_cpu_only_ignores_bandwidth ... ok
[INFO] [stdout] test fit::tests::test_fit_score_exceeds_available ... ok
[INFO] [stdout] test fit::tests::test_fit_score_tight ... ok
[INFO] [stdout] test fit::tests::test_estimate_tps_run_mode_penalties ... ok
[INFO] [stdout] test fit::tests::test_fit_score_under_utilized ... ok
[INFO] [stdout] test fit::tests::test_fit_score_sweet_spot ... ok
[INFO] [stdout] test fit::tests::test_model_fit_gpu_path ... ok
[INFO] [stdout] test fit::tests::test_analyze_defaults_llamacpp_on_cuda ... ok
[INFO] [stdout] test fit::tests::test_dense_model_uses_quant_in_path_selection ... ok
[INFO] [stdout] test fit::tests::test_gguf_on_volta_still_compatible ... ok
[INFO] [stdout] test fit::tests::test_awq_incompatible_on_volta_v100 ... ok
[INFO] [stdout] test fit::tests::test_analyze_with_context_limit_reduces_memory_estimate ... ok
[INFO] [stdout] test fit::tests::test_estimate_tps_moe_uses_active_parameters ... ok
[INFO] [stdout] test fit::tests::test_gptq_incompatible_on_volta_v100 ... ok
[INFO] [stdout] test fit::tests::test_analyze_selects_mlx_on_apple_silicon ... ok
[INFO] [stdout] test fit::tests::test_dense_estimates_unchanged_by_moe_fix ... ok
[INFO] [stdout] test fit::tests::test_estimate_tps_moe_without_active_parameters_falls_back_to_total ... ok
[INFO] [stdout] test fit::tests::test_model_fit_cpu_offload ... ok
[INFO] [stdout] test fit::tests::test_model_fit_cpu_only ... ok
[INFO] [stdout] test fit::tests::test_prequantized_requires_cuda_or_rocm ... ok
[INFO] [stdout] test fit::tests::test_model_fit_unified_memory ... ok
[INFO] [stdout] test fit::tests::test_quality_score_quant_penalty ... ok
[INFO] [stdout] test fit::tests::test_model_fit_utilization ... ok
[INFO] [stdout] test fit::tests::test_moe_offload_positive_for_unknown_gpu ... ok
[INFO] [stdout] test fit::tests::test_quality_score_by_params ... ok
[INFO] [stdout] test fit::tests::test_moe_offload_faster_on_older_gpu_with_slower_vram ... ok
[INFO] [stdout] test fit::tests::test_moe_offload_realistic_speed_rx6900xt ... ok
[INFO] [stdout] test fit::tests::test_moe_gpu_mode_uses_active_params ... ok
[INFO] [stdout] test fit::tests::test_moe_offload_gpu_mode_does_scale_with_gpu_bandwidth ... ok
[INFO] [stdout] test fit::tests::test_score_fit_cpu_caps_at_marginal ... ok
[INFO] [stdout] test fit::tests::test_moe_gpu_estimates_within_20pct_of_benchmarks ... ok
[INFO] [stdout] test fit::tests::test_score_fit_gpu_good ... ok
[INFO] [stdout] test fit::tests::test_moe_offload_analyze_matches_estimate_tps ... ok
[INFO] [stdout] test fit::tests::test_moe_two_component_model_matches_all_quants ... ok
[INFO] [stdout] test fit::tests::test_score_fit_gpu_marginal ... ok
[INFO] [stdout] test fit::tests::test_score_fit_moe_offload ... ok
[INFO] [stdout] test fit::tests::test_model_fit_too_tight ... ok
[INFO] [stdout] test fit::tests::test_score_fit_cpu_offload_caps_at_good ... ok
[INFO] [stdout] test fit::tests::test_rank_models_separates_runnable_from_too_tight ... ok
[INFO] [stdout] test fit::tests::test_score_fit_too_tight ... ok
[INFO] [stdout] test fit::tests::test_sort_by_release_date ... ok
[INFO] [stdout] test fit::tests::test_sort_by_tps ... ok
[INFO] [stdout] test fit::tests::test_speed_score_normalized ... ok
[INFO] [stdout] test fit::tests::test_moe_offload_increases_with_smaller_active_params ... ok
[INFO] [stdout] test fit::tests::test_moe_offload_must_use_active_params_not_total ... ok
[INFO] [stdout] test fit::tests::test_moe_speed_ordering_matches_active_params ... ok
[INFO] [stdout] test fit::tests::test_score_fit_gpu_perfect ... ok
[INFO] [stdout] test fit::tests::test_weighted_score_composition ... ok
[INFO] [stdout] test fit::tests::test_moe_offload_tries_lower_quantization ... ok
[INFO] [stdout] test hardware::tests::test_bandwidth_rtx_20_series ... ok
[INFO] [stdout] test hardware::tests::test_bandwidth_rtx_50_series ... ok
[INFO] [stdout] test hardware::tests::test_bandwidth_amd_rx_6000 ... ok
[INFO] [stdout] test hardware::tests::test_amd_unified_memory_apu_detection ... ok
[INFO] [stdout] test hardware::tests::test_bandwidth_amd_rdna4 ... ok
[INFO] [stdout] test fit::tests::test_rank_models_by_fit ... ok
[INFO] [stdout] test hardware::tests::test_gpu_backend_labels ... ok
[INFO] [stdout] test hardware::tests::test_estimate_vram_rtx_professional ... ok
[INFO] [stdout] test hardware::tests::test_gpu_bandwidth_amd ... ok
[INFO] [stdout] test hardware::tests::test_bandwidth_amd_cdna ... ok
[INFO] [stdout] test hardware::tests::test_gpu_bandwidth_apple_silicon ... ok
[INFO] [stdout] test hardware::tests::test_bandwidth_gtx_16_series ... ok
[INFO] [stdout] test hardware::tests::test_compute_capability_unknown_returns_none ... ok
[INFO] [stdout] test hardware::tests::test_estimate_vram_gb10 ... ok
[INFO] [stdout] test hardware::tests::test_gpu_bandwidth_known_gpus ... ok
[INFO] [stdout] test hardware::tests::test_bandwidth_apple_silicon_all ... ok
[INFO] [stdout] test hardware::tests::test_gpu_bandwidth_unknown_returns_none ... ok
[INFO] [stdout] test hardware::tests::test_gpu_override_multi_gpu_scales_total ... ok
[INFO] [stdout] test hardware::tests::test_gpu_override_updates_existing_gpu ... ok
[INFO] [stdout] test hardware::tests::test_compute_capability_nvidia_generations ... ok
[INFO] [stdout] test hardware::tests::test_cpu_core_override ... ok
[INFO] [stdout] test hardware::tests::test_is_same_gpu_name_uses_normalized_exact_match ... ok
[INFO] [stdout] test hardware::tests::test_is_software_vulkan_device ... ok
[INFO] [stdout] test hardware::tests::test_normalize_gpu_name_for_dedupe ... ok
[INFO] [stdout] test hardware::tests::test_gpu_override_creates_synthetic_gpu_when_none ... ok
[INFO] [stdout] test hardware::tests::test_is_integrated_gpu_name ... ok
[INFO] [stdout] test hardware::tests::test_is_same_gpu_name_amd_rocm_vs_vulkan_radv ... ok
[INFO] [stdout] test hardware::tests::test_is_integrated_gpu_name_amd ... ok
[INFO] [stdout] test hardware::tests::test_is_integrated_gpu_name_nvidia ... ok
[INFO] [stdout] test hardware::tests::test_extract_gpu_model_numbers ... ok
[INFO] [stdout] test hardware::tests::test_parse_memory_size_bare_number ... ok
[INFO] [stdout] test hardware::tests::test_parse_memory_size_empty ... ok
[INFO] [stdout] test hardware::tests::test_parse_memory_size_fractional ... ok
[INFO] [stdout] test hardware::tests::test_parse_memory_size_gb ... ok
[INFO] [stdout] test hardware::tests::test_parse_memory_size_mb ... ok
[INFO] [stdout] test hardware::tests::test_parse_memory_size_whitespace ... ok
[INFO] [stdout] test hardware::tests::test_parse_cpu_name_from_cpuinfo_prefers_model_name ... ok
[INFO] [stdout] test hardware::tests::test_parse_extended_tegra_unified_memory ... ok
[INFO] [stdout] test hardware::tests::test_parse_extended_multi_gpu_discrete ... ok
[INFO] [stdout] test hardware::tests::test_parse_memory_size_invalid_suffix ... ok
[INFO] [stdout] test hardware::tests::test_prefer_discrete_gpus_filters_integrated ... ok
[INFO] [stdout] test hardware::tests::test_parse_memory_size_tb ... ok
[INFO] [stdout] test hardware::tests::test_parse_nvidia_smi_gb10_gets_vram_estimate ... ok
[INFO] [stdout] test hardware::tests::test_parse_extended_discrete_gpu_not_unified ... ok
[INFO] [stdout] test hardware::tests::test_parse_nvidia_smi_does_not_sum_multi_gpu_vram ... ok
[INFO] [stdout] test hardware::tests::test_parse_nvidia_smi_keeps_distinct_models ... ok
[INFO] [stdout] test hardware::tests::test_parse_cpu_name_from_cpuinfo_uses_hardware_fallback ... ok
[INFO] [stdout] test hardware::tests::test_ram_override_unified_memory_updates_gpu ... ok
[INFO] [stdout] test hardware::tests::test_bandwidth_nvidia_professional ... ok
[INFO] [stdout] test hardware::tests::test_ram_override_updates_ram_values ... ok
[INFO] [stdout] test hardware::tests::test_prefer_discrete_gpus_keeps_igpu_only ... ok
[INFO] [stdout] test hardware::tests::test_quant_min_compute_capability ... ok
[INFO] [stdout] test hardware::tests::test_parse_vulkan_device_names_from_gpu_id_lines ... ok
[INFO] [stdout] test hardware::tests::test_windows_physical_total_ram_returns_none_on_non_windows ... ok
[INFO] [stdout] test hardware::tests::test_parse_vulkan_device_names_from_summary_output ... ok
[INFO] [stdout] test models::tests::test_attention_layout_compressible_fraction ... ok
[INFO] [stdout] test models::tests::test_best_quant_for_budget ... ok
[INFO] [stdout] test models::tests::test_best_quant_with_mlx_hierarchy ... ok
[INFO] [stdout] test models::tests::test_capability_infer_none ... ok
[INFO] [stdout] test models::tests::test_capability_infer_vision ... ok
[INFO] [stdout] test models::tests::test_catalog_has_significant_gguf_coverage ... ignored
[INFO] [stdout] test models::tests::test_capability_infer_tool_use ... ok
[INFO] [stdout] test models::tests::test_capability_preserves_explicit ... ok
[INFO] [stdout] test models::tests::test_effective_attention_layout_prefers_explicit ... ok
[INFO] [stdout] test models::tests::test_estimate_memory_with_kv_q8_smaller_than_fp16 ... ok
[INFO] [stdout] test models::tests::test_estimate_memory_gb ... ok
[INFO] [stdout] test models::tests::test_infer_attention_layout_dense_returns_none ... ok
[INFO] [stdout] test models::tests::test_awq_gptq_quant_values ... ok
[INFO] [stdout] test models::tests::test_gguf_source_deserialization ... ok
[INFO] [stdout] test models::tests::test_gguf_sources_default_to_empty ... ok
[INFO] [stdout] test models::tests::test_model_format_prequantized ... ok
[INFO] [stdout] test models::tests::test_infer_attention_layout_qwen3_next ... ok
[INFO] [stdout] test models::tests::test_infer_heads_from_name_deepseek ... ok
[INFO] [stdout] test models::tests::test_infer_heads_from_name_llama ... ok
[INFO] [stdout] test models::tests::test_infer_heads_from_name_qwen ... ok
[INFO] [stdout] test models::tests::test_kv_cache_fallback_when_metadata_missing ... ok
[INFO] [stdout] test models::tests::test_kv_cache_precise_formula_matches_hand_calc ... ok
[INFO] [stdout] test models::tests::test_kv_cache_scales_with_quant ... ok
[INFO] [stdout] test models::tests::test_kv_quant_from_str_round_trip ... ok
[INFO] [stdout] test models::tests::test_supports_tp_always_true_for_1 ... ok
[INFO] [stdout] test models::tests::test_dedupe_hf_entries_merges_duplicate_metadata ... ok
[INFO] [stdout] test models::tests::test_supports_tp_with_inferred_heads ... ok
[INFO] [stdout] test models::tests::test_quant_speed_multiplier ... ok
[INFO] [stdout] test models::tests::test_params_b_from_string ... ok
[INFO] [stdout] test models::tests::test_turboquant_full_attention_uses_compressed_rate ... ok
[INFO] [stdout] test models::tests::test_quant_bpp ... ok
[INFO] [stdout] test models::tests::test_quant_quality_penalty ... ok
[INFO] [stdout] test models::tests::test_supports_tp_with_explicit_heads ... ok
[INFO] [stdout] test models::tests::test_mlx_quant_bpp_values ... ok
[INFO] [stdout] test models::tests::test_moe_active_vram_gb ... ok
[INFO] [stdout] test models::tests::test_moe_offloaded_ram_gb ... ok
[INFO] [stdout] test models::tests::test_params_b_from_millions ... ok
[INFO] [stdout] test models::tests::test_ud_quant_mappings ... ok
[INFO] [stdout] test models::tests::test_use_case_from_model_embedding ... ok
[INFO] [stdout] test models::tests::test_use_case_from_model_coding ... ok
[INFO] [stdout] test models::tests::test_use_case_from_model_reasoning ... ok
[INFO] [stdout] test plan::tests::test_build_path_estimate_cpu_offload_on_unified_is_infeasible ... ok
[INFO] [stdout] test plan::tests::test_build_path_estimate_cpu_only_no_vram ... ok
[INFO] [stdout] test plan::tests::test_build_path_estimate_gpu ... ok
[INFO] [stdout] test plan::tests::test_default_gpu_backend_falls_back_to_cuda ... ok
[INFO] [stdout] test plan::tests::test_default_gpu_backend_uses_system_when_gpu ... ok
[INFO] [stdout] test plan::tests::test_estimate_model_plan_gpu_path_feasible ... ok
[INFO] [stdout] test plan::tests::test_estimate_model_plan ... ok
[INFO] [stdout] test plan::tests::test_estimate_model_plan_has_three_run_paths ... ok
[INFO] [stdout] test models::tests::test_turboquant_hybrid_only_compresses_full_attention ... ok
[INFO] [stdout] test models::tests::test_params_b_from_raw ... ok
[INFO] [stdout] test models::tests::test_valid_tp_sizes_48_heads ... ok
[INFO] [stdout] test plan::tests::test_estimate_model_plan_invalid_quant_errors ... ok
[INFO] [stdout] test plan::tests::test_estimate_model_plan_negative_tps_errors ... ok
[INFO] [stdout] test plan::tests::test_estimate_model_plan_uses_model_quant_when_none ... ok
[INFO] [stdout] test plan::tests::test_estimate_model_plan_zero_context_errors ... ok
[INFO] [stdout] test plan::tests::test_estimate_tps_cpu_offload_slower_than_gpu ... ok
[INFO] [stdout] test plan::tests::test_estimate_tps_gpu_faster_than_cpu ... ok
[INFO] [stdout] test plan::tests::test_estimate_tps_more_cores_helps ... ok
[INFO] [stdout] test plan::tests::test_estimate_tps_with_known_gpu_uses_bandwidth ... ok
[INFO] [stdout] test plan::tests::test_evaluate_current_no_gpu_uses_cpu ... ok
[INFO] [stdout] test plan::tests::test_evaluate_current_with_gpu ... ok
[INFO] [stdout] test plan::tests::test_fit_level_for_too_tight ... ok
[INFO] [stdout] test plan::tests::test_minimum_cores_no_target_returns_default ... ok
[INFO] [stdout] test plan::tests::test_fit_level_for_gpu_perfect ... ok
[INFO] [stdout] test plan::tests::test_minimum_cores_with_reachable_target ... ok
[INFO] [stdout] test plan::tests::test_normalize_awq_gptq_quants ... ok
[INFO] [stdout] test plan::tests::test_fit_level_for_gpu_marginal ... ok
[INFO] [stdout] test plan::tests::test_fit_level_for_gpu_good ... ok
[INFO] [stdout] test plan::tests::test_plan_includes_kv_alternatives_for_all_options ... ok
[INFO] [stdout] test plan::tests::test_plan_run_path_labels ... ok
[INFO] [stdout] test plan::tests::test_evaluate_current_too_tight_when_no_memory ... ok
[INFO] [stdout] test plan::tests::test_plan_run_path_to_run_mode ... ok
[INFO] [stdout] test plan::tests::test_plan_with_q4_kv_reduces_total_memory ... ok
[INFO] [stdout] test plan::tests::test_fit_level_for_cpu_only_always_marginal ... ok
[INFO] [stdout] test plan::tests::test_minimum_cores_unreachable_target_returns_none ... ok
[INFO] [stdout] test plan::tests::test_plan_with_turboquant_on_non_cuda_errors ... ok
[INFO] [stdout] test plan::tests::test_fit_level_for_cpu_offload_caps_at_good ... ok
[INFO] [stdout] test plan::tests::test_plan_with_turboquant_on_cuda_succeeds ... ok
[INFO] [stdout] test plan::tests::test_normalize_quant_all_supported ... ok
[INFO] [stdout] test plan::tests::test_normalize_quant_whitespace_handling ... ok
[INFO] [stdout] test plan::tests::test_plan_has_upgrade_deltas ... ok
[INFO] [stdout] test plan::tests::test_kv_alternatives_mark_turboquant_unsupported_off_cuda ... ok
[INFO] [stdout] test plan::tests::test_normalize_quant ... ok
[INFO] [stdout] test plan::tests::test_resolve_model_selector ... ok
[INFO] [stdout] test plan::tests::test_resolve_model_selector_ambiguous ... ok
[INFO] [stdout] test models::tests::test_valid_tp_sizes_32_8 ... ok
[INFO] [stdout] test plan::tests::test_resolve_model_selector_partial_match ... ok
[INFO] [stdout] test providers::tests::test_candidates_for_coder_model ... ok
[INFO] [stdout] test providers::tests::test_collect_shard_set_does_not_mix_groups ... ok
[INFO] [stdout] test providers::tests::test_deepseek_coder_mapping ... ok
[INFO] [stdout] test providers::tests::test_fallback_ollama_moe_candidate ... ok
[INFO] [stdout] test providers::tests::test_gguf_candidates_fallback_covers_major_providers ... ok
[INFO] [stdout] test providers::tests::test_docker_mr_candidates_includes_ai_prefix ... ok
[INFO] [stdout] test providers::tests::test_docker_mr_candidates_unknown_returns_empty ... ok
[INFO] [stdout] test providers::tests::test_docker_mr_pull_tag_returns_ai_prefixed ... ok
[INFO] [stdout] test providers::tests::test_gguf_candidates_known_mapping_returns_single ... ok
[INFO] [stdout] test plan::tests::test_resolve_model_selector_empty_errors ... ok
[INFO] [stdout] test providers::tests::test_has_docker_mr_mapping_known ... ok
[INFO] [stdout] test providers::tests::test_has_docker_mr_mapping_unknown ... ok
[INFO] [stdout] test providers::tests::test_gguf_pull_tag_known ... ok
[INFO] [stdout] test providers::tests::test_has_ollama_mapping_known ... ok
[INFO] [stdout] test providers::tests::test_has_gguf_mapping_matches_known_models ... ok
[INFO] [stdout] test providers::tests::test_fallback_ollama_candidates_match_installed ... ok
[INFO] [stdout] test providers::tests::test_has_vllm_mapping ... ok
[INFO] [stdout] test plan::tests::test_resolve_model_selector_not_found ... ok
[INFO] [stdout] test providers::tests::test_candidates_for_base_model ... ok
[INFO] [stdout] test providers::tests::test_collect_shard_set_returns_none_for_non_shard ... ok
[INFO] [stdout] test providers::tests::test_has_ollama_mapping_unknown ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_gguf_candidates_generates_common_patterns ... ok
[INFO] [stdout] test providers::tests::test_gguf_pull_tag_unknown ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_lmstudio_candidates_full_repo ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_lmstudio_candidates_strips_suffixes ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_gguf_candidates_strips_owner ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_mlx_candidates ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_lmstudio_candidates_bare_name ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_mlx_candidates_bare_model_name ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_mlx_candidates_gemma3 ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_mlx_candidates_llama4 ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_mlx_candidates_normalizes_explicit_mlx_repo ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_mlx_fallback_generates_mlx_infix_candidates ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_mlx_candidates_no_duplicates ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_ollama_candidates_multiple_models ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_mlx_candidates_qwen35 ... ok
[INFO] [stdout] test providers::tests::test_collect_shard_set_returns_all_shards_sorted ... ok
[INFO] [stdout] test providers::tests::test_docker_mr_catalog_parses ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_ollama_candidates_unknown_generates_fallback ... ok
[INFO] [stdout] test providers::tests::test_installed_variant_suffix_matches_ollama_candidate ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_docker_mr_not_installed ... ok
[INFO] [stdout] test providers::tests::test_installed_hf_name_direct_match ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_docker_mr_exact ... ok
[INFO] [stdout] test providers::tests::test_hf_name_to_vllm_candidates ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_llamacpp_exact ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_docker_mr_variant_suffix ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_llamacpp_not_installed ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_mlx ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_llamacpp_stripped_suffixes ... ok
[INFO] [stdout] test providers::tests::test_is_wildcard_bind_address_ipv4 ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_vllm ... ok
[INFO] [stdout] test providers::tests::test_is_wildcard_bind_address_ipv6 ... ok
[INFO] [stdout] test providers::tests::test_lmstudio_gguf_resolve_url_format ... ok
[INFO] [stdout] test providers::tests::test_is_wildcard_bind_address_rejects_routable_hosts ... ok
[INFO] [stdout] test providers::tests::test_lmstudio_pull_tag_empty_returns_none ... ok
[INFO] [stdout] test providers::tests::test_lmstudio_pull_tag_passes_through_full_url ... ok
[INFO] [stdout] test providers::tests::test_lmstudio_pull_tag_leaves_catalog_short_name_unchanged ... ok
[INFO] [stdout] test providers::tests::test_lookup_gguf_repo_known_mappings ... ok
[INFO] [stdout] test providers::tests::test_mlx_cache_scan_parsing ... ok
[INFO] [stdout] test providers::tests::test_lookup_gguf_repo_unknown_returns_none ... ok
[INFO] [stdout] test providers::tests::test_normalize_docker_mr_host_rejects_unsupported_scheme ... ok
[INFO] [stdout] test providers::tests::test_mlx_pull_tag_prefers_4bit ... ok
[INFO] [stdout] test providers::tests::test_llama_mapping ... ok
[INFO] [stdout] test providers::tests::test_normalize_docker_mr_host_with_scheme ... ok
[INFO] [stdout] test providers::tests::test_mlx_pull_tag_fallback ... ok
[INFO] [stdout] test providers::tests::test_normalize_ollama_host_rejects_unsupported_scheme ... ok
[INFO] [stdout] test providers::tests::test_mlx_pull_tag_prefers_explicit_repo_id ... ok
[INFO] [stdout] test providers::tests::test_normalize_docker_mr_host_without_scheme ... ok
[INFO] [stdout] test providers::tests::test_normalize_ollama_host_with_scheme ... ok
[INFO] [stdout] test providers::tests::test_normalize_vllm_host_empty ... ok
[INFO] [stdout] test providers::tests::test_normalize_vllm_host_rejects_unsupported_scheme ... ok
[INFO] [stdout] test providers::tests::test_normalize_vllm_host_without_scheme ... ok
[INFO] [stdout] test providers::tests::test_normalize_vllm_host_with_scheme ... ok
[INFO] [stdout] test providers::tests::test_normalize_ollama_host_without_scheme ... ok
[INFO] [stdout] test providers::tests::test_ollama_installed_matches_exact ... ok
[INFO] [stdout] test providers::tests::test_ollama_installed_matches_variant_suffix ... ok
[INFO] [stdout] test providers::tests::test_ollama_installed_no_match ... ok
[INFO] [stdout] test providers::tests::test_ollama_pull_tag_known ... ok
[INFO] [stdout] test providers::tests::test_ollama_pull_tag_unknown ... ok
[INFO] [stdout] test providers::tests::test_parse_shard_info_rejects_non_shards ... ok
[INFO] [stdout] test providers::tests::test_parse_shard_info_basic ... ok
[INFO] [stdout] test providers::tests::test_parse_repo_gguf_entries_filters_unsafe_paths ... ok
[INFO] [stdout] test providers::tests::test_parse_repo_gguf_entries_valid ... ok
[INFO] [stdout] test providers::tests::test_parse_repo_gguf_entries_missing_size_defaults_to_zero ... ok
[INFO] [stdout] test providers::tests::test_parse_shard_info_smoke ... ok
[INFO] [stdout] test providers::tests::test_parse_repo_gguf_entries_skips_non_gguf ... ok
[INFO] [stdout] test providers::tests::test_select_best_gguf_empty_list ... ok
[INFO] [stdout] test providers::tests::test_select_best_gguf_nothing_fits ... ok
[INFO] [stdout] test providers::tests::test_qwen_coder_14b_matches_coder_entry ... ok
[INFO] [stdout] test providers::tests::test_qwen_base_does_not_match_coder ... ok
[INFO] [stdout] test providers::tests::test_select_best_gguf_shard_group_respects_budget ... ok
[INFO] [stdout] test providers::tests::test_select_best_gguf_prefers_higher_quality ... ok
[INFO] [stdout] test providers::tests::test_split_name_and_size_no_size ... ok
[INFO] [stdout] test providers::tests::test_split_name_and_size_basic ... ok
[INFO] [stdout] test providers::tests::test_select_best_gguf_picks_shard_group ... ok
[INFO] [stdout] test providers::tests::test_split_name_and_size_deepseek ... ok
[INFO] [stdout] test providers::tests::test_split_name_and_size_fractional ... ok
[INFO] [stdout] test providers::tests::test_select_best_gguf_prefers_shard_group_over_lower_quant ... ok
[INFO] [stdout] test providers::tests::test_select_best_gguf_respects_budget ... ok
[INFO] [stdout] test providers::tests::test_urlencoding_ascii ... ok
[INFO] [stdout] test providers::tests::test_urlencoding_empty ... ok
[INFO] [stdout] test providers::tests::test_urlencoding_special_chars ... ok
[INFO] [stdout] test providers::tests::test_split_name_and_size_moe ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_filename_rejects_non_basename_forms ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_filename_absolute ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_repo_path_rejects_absolute ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_filename_traversal ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_filename_empty ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_repo_path_rejects_backslash ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_filename_valid ... ok
[INFO] [stdout] test providers::tests::test_is_model_installed_mlx_with_owner_prefixed_repo_id ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_filename_bad_extension ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_filename_subdirectory ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_repo_path_rejects_empty ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_repo_path_rejects_traversal ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_repo_path_rejects_non_gguf ... ok
[INFO] [stdout] test quality::tests::test_compute_routing_picks_best ... ok
[INFO] [stdout] test providers::tests::test_vllm_pull_tag ... ok
[INFO] [stdout] test quality::tests::test_compute_runner_ups ... ok
[INFO] [stdout] test providers::tests::test_validate_gguf_repo_path_valid ... ok
[INFO] [stdout] test quality::tests::test_compute_routing_single_model ... ok
[INFO] [stdout] test quality::tests::test_extract_code_block ... ok
[INFO] [stdout] test quality::tests::test_extract_code_block_no_fence ... ok
[INFO] [stdout] test update::tests::test_estimate_ram_dense ... ok
[INFO] [stdout] test update::tests::test_estimate_ram_moe ... ok
[INFO] [stdout] test update::tests::test_extract_dense_model ... ok
[INFO] [stdout] test update::tests::test_hfconfig_parses_deepseek_shared_expert_derivation ... ok
[INFO] [stdout] test quality::tests::test_load_quality_config ... ok
[INFO] [stdout] test update::tests::test_extract_fractional_param ... ok
[INFO] [stdout] test update::tests::test_extract_moe_nx_model ... ok
[INFO] [stdout] test update::tests::test_hfconfig_parses_moe_fields ... ok
[INFO] [stdout] test update::tests::test_hfconfig_parses_nested_text_config ... ok
[INFO] [stdout] test update::tests::test_infer_use_case_coding ... ok
[INFO] [stdout] test update::tests::test_hfconfig_parses_shared_experts ... ok
[INFO] [stdout] test update::tests::test_infer_context_length_keywords ... ok
[INFO] [stdout] test quality::tests::test_evaluate_response_clamp ... ok
[INFO] [stdout] test update::tests::test_infer_context_length_llama3 ... ok
[INFO] [stdout] test update::tests::test_parse_param_str_invalid ... ok
[INFO] [stdout] test quality::tests::test_evaluate_response_negative_clamp ... ok
[INFO] [stdout] test update::tests::test_parse_param_str_billions ... ok
[INFO] [stdout] test quality::tests::test_evaluate_response_negate ... ok
[INFO] [stdout] test update::tests::test_parse_param_str_millions ... ok
[INFO] [stdout] test update::tests::test_infer_use_case_embedding ... ok
[INFO] [stdout] test providers::tests::test_lmstudio_pull_tag_is_idempotent ... ok
[INFO] [stdout] test providers::tests::test_lmstudio_pull_tag_resolves_gguf_url ... ok
[INFO] [stdout] test models::tests::test_catalog_gguf_sources_have_valid_repos ... ok
[INFO] [stdout] test quality::tests::test_evaluate_response_basic_match ... ok
[INFO] [stdout] test models::tests::test_model_database_new ... ok
[INFO] [stdout] test models::tests::test_models_fitting_system ... ok
[INFO] [stdout] test models::tests::test_catalog_popular_models_have_gguf_sources ... ok
[INFO] [stdout] test quality::tests::test_default_quality_config_loads ... ok
[INFO] [stdout] test models::tests::test_find_model ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 357 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.22s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests llmfit_core
[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] running `Command { std: "docker" "inspect" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9", kill_on_drop: false }`
[INFO] [stdout] f5a9d4b0a515d37a394a00c169cb303b48465a73cfd6cf8cf632ad63cce50df9
