[INFO] cloning repository https://github.com/xlwh/prom-agent
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/xlwh/prom-agent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxlwh%2Fprom-agent", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxlwh%2Fprom-agent'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4b9fb67b9f1a4a8acdc2bc4ee8a053e71727ffdf
[INFO] testing xlwh/prom-agent 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%2Fxlwh%2Fprom-agent" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/xlwh/prom-agent
[INFO] finished tweaking git repo https://github.com/xlwh/prom-agent
[INFO] tweaked toml for git repo https://github.com/xlwh/prom-agent written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/xlwh/prom-agent 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/xlwh/prom-agent 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090
[INFO] running `Command { std: "docker" "start" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090", 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" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090" "/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" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090", 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" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090" "/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.184
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling winnow v1.0.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling snap v1.1.1
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling opentelemetry v0.27.1
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling itertools v0.12.1
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling pin-project v1.1.11
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling prometheus-parse v0.2.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling prost-derive v0.13.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling tokio v1.51.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling prost v0.13.5
[INFO] [stderr]    Compiling prost-types v0.13.5
[INFO] [stderr]    Compiling opentelemetry_sdk v0.27.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tower v0.4.13
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-timeout v0.5.2
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling tonic v0.12.3
[INFO] [stderr]    Compiling opentelemetry-proto v0.27.0
[INFO] [stderr]    Compiling prom-agent v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/ai_collector/openai.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AILabels` and `normalize_metric_name`
[INFO] [stdout]  --> src/ai_collector/mod.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use normalizer::{normalize_metric_name, AILabels};
[INFO] [stdout]   |                      ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/collector/textfile.rs:1:146
[INFO] [stdout]   |
[INFO] [stdout] 1 | ...trait::async_trait; use std::fs; use std::path::Path; use std::sync::Arc; use tokio::sync::watch; use tracing;
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/config/mod.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing`
[INFO] [stdout]  --> src/cost/pricing.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/quality/alert.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AlertSeverity`
[INFO] [stdout]  --> src/quality/scorer.rs:5:28
[INFO] [stdout]   |
[INFO] [stdout] 5 | use super::{default_rules, AlertSeverity, QualityMetric, QualityReport, QualityRule, QualityRuleConfig, RuleResult, RuleType};
[INFO] [stdout]   |                            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AlertConfig` and `AlertManager`
[INFO] [stdout]  --> src/quality/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use alert::{AlertConfig, AlertManager, AlertSeverity};
[INFO] [stdout]   |                 ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `QualityScore` and `QualityScorer`
[INFO] [stdout]  --> src/quality/mod.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use scorer::{QualityScore, QualityScorer};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuthType` and `QueueConfig`
[INFO] [stdout]  --> src/remote_write/client.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::{AuthConfig, AuthType, EndpointConfig, RemoteWriteConfig, QueueConfig};
[INFO] [stdout]   |                                 ^^^^^^^^                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json`
[INFO] [stdout]  --> src/server/handlers.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde_json;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng`
[INFO] [stdout]    --> src/collector/mod.rs:213:29
[INFO] [stdout]     |
[INFO] [stdout] 213 |         let mut rng = rand::thread_rng();
[INFO] [stdout]     |                             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/collector/mod.rs:214:13
[INFO] [stdout]     |
[INFO] [stdout] 214 |         rng.gen_range(0.0..1.0)
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `otlp_handle`
[INFO] [stdout]    --> src/main.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let otlp_handle = if let Some(otlp_cfg) = &config.otlp {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_otlp_handle`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ai_collector_handle`
[INFO] [stdout]    --> src/main.rs:326:9
[INFO] [stdout]     |
[INFO] [stdout] 326 |     let ai_collector_handle = {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_collector_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `scrape_interval_secs` and `labels` are never read
[INFO] [stdout]   --> src/ai_collector/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct AICollectorConfig {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub scrape_interval_secs: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     pub labels: HashMap<String, String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AICollectorConfig` has derived impls for the traits `Clone` and `Debug`, but these are 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 `metric_type` is never read
[INFO] [stdout]   --> src/ai_collector/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct AIMetric {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub metric_type: AIMetricType,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AIMetric` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Gauge` and `Histogram` are never constructed
[INFO] [stdout]   --> src/ai_collector/mod.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum AIMetricType {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 37 |     Counter,
[INFO] [stdout] 38 |     Gauge,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 39 |     Histogram,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AIMetricType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Other` is never constructed
[INFO] [stdout]   --> src/ai_collector/mod.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub enum AICollectorError {
[INFO] [stdout]    |          ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 96 |     Other(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AICollectorError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_enabled` is never used
[INFO] [stdout]   --> src/ai_collector/manager.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl AICollectorManager {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn set_enabled(&self, enabled: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_status` and `with_endpoint` are never used
[INFO] [stdout]   --> src/ai_collector/normalizer.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl AILabels {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn with_status(mut self, status: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn with_endpoint(mut self, endpoint: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_interval` is never used
[INFO] [stdout]   --> src/collector/mod.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub trait Collector: Send + Sync {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 27 |     fn get_interval(&self) -> Duration;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_load` is never read
[INFO] [stdout]    --> src/collector/mod.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub struct LoadMonitor {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] 177 |     last_load: f64,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_filters` is never used
[INFO] [stdout]   --> src/collector/network.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl NetCollector {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn with_filters(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reload_rx` is never read
[INFO] [stdout]  --> src/collector/textfile.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TextfileCollector {
[INFO] [stdout]   |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     reload_rx: Option<watch::Receiver<()>>,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_reload` is never used
[INFO] [stdout]   --> src/collector/textfile.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TextfileCollector {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn with_reload(enabled: bool, directory: &str, reload_rx: watch::Receiver<()>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_config`, `reload`, and `load_from_env` are never used
[INFO] [stdout]    --> src/config/mod.rs:343:18
[INFO] [stdout]     |
[INFO] [stdout] 342 | impl ConfigManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 343 |     pub async fn new(config_path: Option<&str>) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub async fn update_config(&self, new_config: Config) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub async fn reload(&self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |     fn load_from_env(mut config: Config) -> Config {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `alert_callback` is never read
[INFO] [stdout]   --> src/cost/budget.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct BudgetManager {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     alert_callback: Option<Arc<dyn Fn(&str) + Send + Sync>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cost/budget.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl BudgetManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn with_alert_callback(mut self, callback: Arc<dyn Fn(&str) + Send + Sync>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn add_cost(&self, cost_usd: f64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn trigger_alert(&self, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn reset_daily(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn reset_monthly(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn is_over_budget(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pricing_table` and `total_cost` are never read
[INFO] [stdout]   --> src/cost/calculator.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct CostCalculator {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout]  8 |     pricing_table: PricingTable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]  9 |     records: RwLock<Vec<CostRecord>>,
[INFO] [stdout] 10 |     total_cost: RwLock<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_and_record`, `get_total_cost`, `get_summary_by_time_range`, and `clear_records` are never used
[INFO] [stdout]    --> src/cost/calculator.rs:22:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl CostCalculator {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn calculate_and_record(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn get_total_cost(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn get_summary_by_time_range(&self, start_ms: i64, end_ms: i64) -> CostSummary {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn clear_records(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_cost` and `calculate_cost_with_cache` are never used
[INFO] [stdout]   --> src/cost/pricing.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl ModelPricing {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn calculate_cost(&self, input_tokens: u64, output_tokens: u64) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn calculate_cost_with_cache(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_custom`, `get`, `list`, and `update` are never used
[INFO] [stdout]    --> src/cost/pricing.rs:71:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl PricingTable {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn with_custom(pricing: HashMap<String, ModelPricing>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn get(&self, model: &str) -> Option<ModelPricing> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn list(&self) -> HashMap<String, ModelPricing> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn update(&self, model: &str, pricing: ModelPricing) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SamplePool` is never constructed
[INFO] [stdout]   --> src/model/sample.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct SamplePool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/model/sample.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl SamplePool {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  79 |     pub fn new(max_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn get(&mut self, metric_name: &str, value: f64, timestamp_ms: i64) -> Sample {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn recycle(&mut self, sample: Sample) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn recycle_batch(&mut self, samples: Vec<Sample>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn resize(&mut self, new_max_size: usize) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn size(&self) -> usize {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SAMPLE_POOL` is never used
[INFO] [stdout]    --> src/model/sample.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | static SAMPLE_POOL: OnceLock<Arc<std::sync::Mutex<SamplePool>>> = OnceLock::new();
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sample_pool` is never used
[INFO] [stdout]    --> src/model/sample.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn get_sample_pool() -> &'static Arc<std::sync::Mutex<SamplePool>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ProtobufDecode`, `InvalidMetricType`, `MissingField`, `Grpc`, and `Http` are never constructed
[INFO] [stdout]   --> src/otlp/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum OtlpError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 11 |     #[error("Protobuf decode error: {0}")]
[INFO] [stdout] 12 |     ProtobufDecode(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     InvalidMetricType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     MissingField(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     Grpc(String),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     Http(String),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OtlpError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OtlpMetrics` is never constructed
[INFO] [stdout]   --> src/otlp/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct OtlpMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_label_mapping` is never used
[INFO] [stdout]   --> src/otlp/converter.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl OtlpToPromConverter {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn with_label_mapping(mut self, mappings: HashMap<String, String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `convert_request` is never used
[INFO] [stdout]    --> src/otlp/receiver.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl OtlpReceiver {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn convert_request(&self, request: &ExportMetricsServiceRequest) -> Vec<Sample> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `author` is never read
[INFO] [stdout]   --> src/plugin/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PluginMetadata {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub author: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PluginMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `configure` is never used
[INFO] [stdout]   --> src/plugin/mod.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub trait Plugin: Send + Sync {
[INFO] [stdout]    |           ------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 47 |     fn configure(&mut self, config: HashMap<String, String>) -> Result<(), PluginError>;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Parse`, `Timeout`, and `Other` are never constructed
[INFO] [stdout]   --> src/plugin/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub enum PluginError {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 59 |     Parse(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     Timeout,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     Other(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PluginError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PluginConfig` is never constructed
[INFO] [stdout]  --> src/plugin/config.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct PluginConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PluginDefinition` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct PluginDefinition {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpPluginConfig` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct HttpPluginConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpAuth` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct HttpAuth {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecPluginConfig` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct ExecPluginConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScriptPluginConfig` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct ScriptPluginConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unregister`, `set_enabled`, `configure_plugin`, and `get_plugin` are never used
[INFO] [stdout]    --> src/plugin/manager.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl PluginManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn unregister(&mut self, name: &str) -> Result<(), PluginError> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn set_enabled(&self, enabled: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn configure_plugin(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_plugin(&self, name: &str) -> Option<PluginInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout_secs` is never read
[INFO] [stdout]   --> src/plugin/plugins/http.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct HttpPlugin {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     timeout_secs: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_headers`, `set_body`, `set_timeout`, and `set_labels` are never used
[INFO] [stdout]   --> src/plugin/plugins/http.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl HttpPlugin {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_headers(&mut self, headers: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn set_body(&mut self, body: String) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_args`, `set_env`, `set_work_dir`, `set_timeout`, and `set_labels` are never used
[INFO] [stdout]   --> src/plugin/plugins/exec.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl ExecPlugin {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_args(&mut self, args: Vec<String>) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn set_env(&mut self, env: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn set_work_dir(&mut self, work_dir: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout_secs` is never read
[INFO] [stdout]   --> src/plugin/plugins/script.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct ScriptPlugin {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     timeout_secs: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_args`, `set_env`, `set_work_dir`, `set_timeout`, and `set_labels` are never used
[INFO] [stdout]   --> src/plugin/plugins/script.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ScriptPlugin {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn set_args(&mut self, args: Vec<String>) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn set_env(&mut self, env: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn set_work_dir(&mut self, work_dir: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityMetric` is never constructed
[INFO] [stdout]   --> src/quality/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct QualityMetric {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityReport` is never constructed
[INFO] [stdout]   --> src/quality/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct QualityReport {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleResult` is never constructed
[INFO] [stdout]   --> src/quality/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct RuleResult {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AlertSeverity` is never used
[INFO] [stdout]  --> src/quality/alert.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum AlertSeverity {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AlertConfig` is never constructed
[INFO] [stdout]   --> src/quality/alert.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct AlertConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Alert` is never constructed
[INFO] [stdout]   --> src/quality/alert.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Alert {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AlertManager` is never constructed
[INFO] [stdout]   --> src/quality/alert.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct AlertManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/quality/alert.rs:59:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl AlertManager {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  59 |     pub fn new(config: AlertConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn trigger(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     fn send_alert(&self, alert: &Alert) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn acknowledge(&mut self, alert_id: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn get_active_alerts(&self) -> Vec<&Alert> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn get_all_alerts(&self) -> &[Alert] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn clear_acknowledged(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RuleType` is never used
[INFO] [stdout]  --> src/quality/rules.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum RuleType {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Severity` is never used
[INFO] [stdout]   --> src/quality/rules.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum Severity {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityRuleConfig` is never constructed
[INFO] [stdout]   --> src/quality/rules.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct QualityRuleConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityRule` is never constructed
[INFO] [stdout]   --> src/quality/rules.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct QualityRule {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/quality/rules.rs:68:12
[INFO] [stdout]     |
[INFO] [stdout]  67 | impl QualityRule {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  68 |     pub fn new(config: QualityRuleConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn name(&self) -> &str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn rule_type(&self) -> RuleType {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn severity(&self) -> AlertSeverity {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn evaluate(&self, metrics: &[QualityMetric]) -> RuleResult {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     fn evaluate_response_time(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     fn evaluate_token_efficiency(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn evaluate_error_rate(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     fn evaluate_throughput(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     fn evaluate_custom(&self, _metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn weight(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_rules` is never used
[INFO] [stdout]    --> src/quality/rules.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn default_rules() -> Vec<QualityRuleConfig> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityScore` is never constructed
[INFO] [stdout]  --> src/quality/scorer.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct QualityScore {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityScorer` is never constructed
[INFO] [stdout]   --> src/quality/scorer.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct QualityScorer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/quality/scorer.rs:21:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl QualityScorer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  21 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn with_rules(rules: Vec<QualityRuleConfig>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn add_rule(&self, config: QualityRuleConfig) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub fn record_metric(&self, metric: QualityMetric) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn evaluate(&self) -> QualityReport {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     fn generate_recommendations(&self, results: &[RuleResult]) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn get_score_history(&self, limit: usize) -> Vec<QualityScore> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn clear_metrics(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_persistence_size` and `clear_persistence` are never used
[INFO] [stdout]    --> src/remote_write/client.rs:415:18
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl RemoteWriteClient {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 415 |     pub async fn get_persistence_size(&self) -> u64 {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub async fn clear_persistence(&self) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_storage_size` is never used
[INFO] [stdout]    --> src/remote_write/persistence.rs:387:18
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl PersistenceStorage {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub async fn get_storage_size(&self) -> u64 {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_compression_algorithm` is never used
[INFO] [stdout]   --> src/remote_write/proto/encoding.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn get_compression_algorithm() -> CompressionAlgorithm {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 59.72s
[INFO] running `Command { std: "docker" "inspect" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090", 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" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090" "/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 prom-agent v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/ai_collector/openai.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AILabels` and `normalize_metric_name`
[INFO] [stdout]  --> src/ai_collector/mod.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use normalizer::{normalize_metric_name, AILabels};
[INFO] [stdout]   |                      ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/collector/textfile.rs:1:146
[INFO] [stdout]   |
[INFO] [stdout] 1 | ...trait::async_trait; use std::fs; use std::path::Path; use std::sync::Arc; use tokio::sync::watch; use tracing;
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/config/mod.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing`
[INFO] [stdout]  --> src/cost/pricing.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/quality/alert.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AlertSeverity`
[INFO] [stdout]  --> src/quality/scorer.rs:5:28
[INFO] [stdout]   |
[INFO] [stdout] 5 | use super::{default_rules, AlertSeverity, QualityMetric, QualityReport, QualityRule, QualityRuleConfig, RuleResult, RuleType};
[INFO] [stdout]   |                            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AlertConfig` and `AlertManager`
[INFO] [stdout]  --> src/quality/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use alert::{AlertConfig, AlertManager, AlertSeverity};
[INFO] [stdout]   |                 ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `QualityScore` and `QualityScorer`
[INFO] [stdout]  --> src/quality/mod.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use scorer::{QualityScore, QualityScorer};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuthType` and `QueueConfig`
[INFO] [stdout]  --> src/remote_write/client.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::{AuthConfig, AuthType, EndpointConfig, RemoteWriteConfig, QueueConfig};
[INFO] [stdout]   |                                 ^^^^^^^^                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json`
[INFO] [stdout]  --> src/server/handlers.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde_json;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng`
[INFO] [stdout]    --> src/collector/mod.rs:213:29
[INFO] [stdout]     |
[INFO] [stdout] 213 |         let mut rng = rand::thread_rng();
[INFO] [stdout]     |                             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/collector/mod.rs:214:13
[INFO] [stdout]     |
[INFO] [stdout] 214 |         rng.gen_range(0.0..1.0)
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `otlp_handle`
[INFO] [stdout]    --> src/main.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let otlp_handle = if let Some(otlp_cfg) = &config.otlp {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_otlp_handle`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ai_collector_handle`
[INFO] [stdout]    --> src/main.rs:326:9
[INFO] [stdout]     |
[INFO] [stdout] 326 |     let ai_collector_handle = {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_collector_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `scrape_interval_secs` and `labels` are never read
[INFO] [stdout]   --> src/ai_collector/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct AICollectorConfig {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub scrape_interval_secs: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     pub labels: HashMap<String, String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AICollectorConfig` has derived impls for the traits `Clone` and `Debug`, but these are 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 `metric_type` is never read
[INFO] [stdout]   --> src/ai_collector/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct AIMetric {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub metric_type: AIMetricType,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AIMetric` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Gauge` and `Histogram` are never constructed
[INFO] [stdout]   --> src/ai_collector/mod.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum AIMetricType {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 37 |     Counter,
[INFO] [stdout] 38 |     Gauge,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 39 |     Histogram,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AIMetricType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Other` is never constructed
[INFO] [stdout]   --> src/ai_collector/mod.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub enum AICollectorError {
[INFO] [stdout]    |          ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 96 |     Other(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AICollectorError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_enabled` is never used
[INFO] [stdout]   --> src/ai_collector/manager.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl AICollectorManager {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn set_enabled(&self, enabled: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_status` and `with_endpoint` are never used
[INFO] [stdout]   --> src/ai_collector/normalizer.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl AILabels {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn with_status(mut self, status: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn with_endpoint(mut self, endpoint: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_interval` is never used
[INFO] [stdout]   --> src/collector/mod.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub trait Collector: Send + Sync {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 27 |     fn get_interval(&self) -> Duration;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_load` is never read
[INFO] [stdout]    --> src/collector/mod.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub struct LoadMonitor {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] 177 |     last_load: f64,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_filters` is never used
[INFO] [stdout]   --> src/collector/network.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl NetCollector {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn with_filters(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reload_rx` is never read
[INFO] [stdout]  --> src/collector/textfile.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TextfileCollector {
[INFO] [stdout]   |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     reload_rx: Option<watch::Receiver<()>>,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_reload` is never used
[INFO] [stdout]   --> src/collector/textfile.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TextfileCollector {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn with_reload(enabled: bool, directory: &str, reload_rx: watch::Receiver<()>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_config`, `reload`, and `load_from_env` are never used
[INFO] [stdout]    --> src/config/mod.rs:343:18
[INFO] [stdout]     |
[INFO] [stdout] 342 | impl ConfigManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 343 |     pub async fn new(config_path: Option<&str>) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub async fn update_config(&self, new_config: Config) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub async fn reload(&self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |     fn load_from_env(mut config: Config) -> Config {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `alert_callback` is never read
[INFO] [stdout]   --> src/cost/budget.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct BudgetManager {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     alert_callback: Option<Arc<dyn Fn(&str) + Send + Sync>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cost/budget.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl BudgetManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn with_alert_callback(mut self, callback: Arc<dyn Fn(&str) + Send + Sync>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn add_cost(&self, cost_usd: f64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn trigger_alert(&self, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn reset_daily(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn reset_monthly(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn is_over_budget(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pricing_table` and `total_cost` are never read
[INFO] [stdout]   --> src/cost/calculator.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct CostCalculator {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout]  8 |     pricing_table: PricingTable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]  9 |     records: RwLock<Vec<CostRecord>>,
[INFO] [stdout] 10 |     total_cost: RwLock<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_and_record`, `get_total_cost`, `get_summary_by_time_range`, and `clear_records` are never used
[INFO] [stdout]    --> src/cost/calculator.rs:22:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl CostCalculator {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn calculate_and_record(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn get_total_cost(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn get_summary_by_time_range(&self, start_ms: i64, end_ms: i64) -> CostSummary {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn clear_records(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate_cost_with_cache` is never used
[INFO] [stdout]   --> src/cost/pricing.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl ModelPricing {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn calculate_cost_with_cache(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_custom`, `list`, and `update` are never used
[INFO] [stdout]    --> src/cost/pricing.rs:71:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl PricingTable {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn with_custom(pricing: HashMap<String, ModelPricing>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn list(&self) -> HashMap<String, ModelPricing> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn update(&self, model: &str, pricing: ModelPricing) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SamplePool` is never constructed
[INFO] [stdout]   --> src/model/sample.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct SamplePool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/model/sample.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl SamplePool {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  79 |     pub fn new(max_size: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn get(&mut self, metric_name: &str, value: f64, timestamp_ms: i64) -> Sample {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn recycle(&mut self, sample: Sample) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn recycle_batch(&mut self, samples: Vec<Sample>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn resize(&mut self, new_max_size: usize) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn size(&self) -> usize {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SAMPLE_POOL` is never used
[INFO] [stdout]    --> src/model/sample.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | static SAMPLE_POOL: OnceLock<Arc<std::sync::Mutex<SamplePool>>> = OnceLock::new();
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sample_pool` is never used
[INFO] [stdout]    --> src/model/sample.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn get_sample_pool() -> &'static Arc<std::sync::Mutex<SamplePool>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ProtobufDecode`, `InvalidMetricType`, `MissingField`, `Grpc`, and `Http` are never constructed
[INFO] [stdout]   --> src/otlp/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum OtlpError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 11 |     #[error("Protobuf decode error: {0}")]
[INFO] [stdout] 12 |     ProtobufDecode(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     InvalidMetricType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     MissingField(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     Grpc(String),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     Http(String),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OtlpError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OtlpMetrics` is never constructed
[INFO] [stdout]   --> src/otlp/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct OtlpMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_label_mapping` is never used
[INFO] [stdout]   --> src/otlp/converter.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl OtlpToPromConverter {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn with_label_mapping(mut self, mappings: HashMap<String, String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `convert_request` is never used
[INFO] [stdout]    --> src/otlp/receiver.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl OtlpReceiver {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn convert_request(&self, request: &ExportMetricsServiceRequest) -> Vec<Sample> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `author` is never read
[INFO] [stdout]   --> src/plugin/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PluginMetadata {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub author: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PluginMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `configure` is never used
[INFO] [stdout]   --> src/plugin/mod.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub trait Plugin: Send + Sync {
[INFO] [stdout]    |           ------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 47 |     fn configure(&mut self, config: HashMap<String, String>) -> Result<(), PluginError>;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Parse`, `Timeout`, and `Other` are never constructed
[INFO] [stdout]   --> src/plugin/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub enum PluginError {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 59 |     Parse(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     Timeout,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     Other(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PluginError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PluginConfig` is never constructed
[INFO] [stdout]  --> src/plugin/config.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct PluginConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PluginDefinition` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct PluginDefinition {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpPluginConfig` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct HttpPluginConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpAuth` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct HttpAuth {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecPluginConfig` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct ExecPluginConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScriptPluginConfig` is never constructed
[INFO] [stdout]   --> src/plugin/config.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct ScriptPluginConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unregister`, `set_enabled`, `configure_plugin`, and `get_plugin` are never used
[INFO] [stdout]    --> src/plugin/manager.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl PluginManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn unregister(&mut self, name: &str) -> Result<(), PluginError> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn set_enabled(&self, enabled: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn configure_plugin(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_plugin(&self, name: &str) -> Option<PluginInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout_secs` is never read
[INFO] [stdout]   --> src/plugin/plugins/http.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct HttpPlugin {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     timeout_secs: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_headers`, `set_body`, `set_timeout`, and `set_labels` are never used
[INFO] [stdout]   --> src/plugin/plugins/http.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl HttpPlugin {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_headers(&mut self, headers: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn set_body(&mut self, body: String) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_args`, `set_env`, `set_work_dir`, `set_timeout`, and `set_labels` are never used
[INFO] [stdout]   --> src/plugin/plugins/exec.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl ExecPlugin {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_args(&mut self, args: Vec<String>) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn set_env(&mut self, env: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn set_work_dir(&mut self, work_dir: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout_secs` is never read
[INFO] [stdout]   --> src/plugin/plugins/script.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct ScriptPlugin {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     timeout_secs: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_args`, `set_env`, `set_work_dir`, `set_timeout`, and `set_labels` are never used
[INFO] [stdout]   --> src/plugin/plugins/script.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ScriptPlugin {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn set_args(&mut self, args: Vec<String>) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn set_env(&mut self, env: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn set_work_dir(&mut self, work_dir: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityMetric` is never constructed
[INFO] [stdout]   --> src/quality/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct QualityMetric {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityReport` is never constructed
[INFO] [stdout]   --> src/quality/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct QualityReport {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleResult` is never constructed
[INFO] [stdout]   --> src/quality/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct RuleResult {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AlertSeverity` is never used
[INFO] [stdout]  --> src/quality/alert.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum AlertSeverity {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AlertConfig` is never constructed
[INFO] [stdout]   --> src/quality/alert.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct AlertConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Alert` is never constructed
[INFO] [stdout]   --> src/quality/alert.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Alert {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AlertManager` is never constructed
[INFO] [stdout]   --> src/quality/alert.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct AlertManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/quality/alert.rs:59:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl AlertManager {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  59 |     pub fn new(config: AlertConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn trigger(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     fn send_alert(&self, alert: &Alert) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn acknowledge(&mut self, alert_id: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn get_active_alerts(&self) -> Vec<&Alert> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn get_all_alerts(&self) -> &[Alert] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn clear_acknowledged(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RuleType` is never used
[INFO] [stdout]  --> src/quality/rules.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum RuleType {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Severity` is never used
[INFO] [stdout]   --> src/quality/rules.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum Severity {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityRuleConfig` is never constructed
[INFO] [stdout]   --> src/quality/rules.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct QualityRuleConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityRule` is never constructed
[INFO] [stdout]   --> src/quality/rules.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct QualityRule {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/quality/rules.rs:68:12
[INFO] [stdout]     |
[INFO] [stdout]  67 | impl QualityRule {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  68 |     pub fn new(config: QualityRuleConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn name(&self) -> &str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn rule_type(&self) -> RuleType {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn severity(&self) -> AlertSeverity {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn evaluate(&self, metrics: &[QualityMetric]) -> RuleResult {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     fn evaluate_response_time(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     fn evaluate_token_efficiency(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn evaluate_error_rate(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     fn evaluate_throughput(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     fn evaluate_custom(&self, _metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn weight(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_rules` is never used
[INFO] [stdout]    --> src/quality/rules.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn default_rules() -> Vec<QualityRuleConfig> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityScore` is never constructed
[INFO] [stdout]  --> src/quality/scorer.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct QualityScore {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QualityScorer` is never constructed
[INFO] [stdout]   --> src/quality/scorer.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct QualityScorer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/quality/scorer.rs:21:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl QualityScorer {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  21 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn with_rules(rules: Vec<QualityRuleConfig>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn add_rule(&self, config: QualityRuleConfig) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub fn record_metric(&self, metric: QualityMetric) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn evaluate(&self) -> QualityReport {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     fn generate_recommendations(&self, results: &[RuleResult]) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn get_score_history(&self, limit: usize) -> Vec<QualityScore> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn clear_metrics(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_persistence_size` and `clear_persistence` are never used
[INFO] [stdout]    --> src/remote_write/client.rs:415:18
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl RemoteWriteClient {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 415 |     pub async fn get_persistence_size(&self) -> u64 {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub async fn clear_persistence(&self) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_storage_size` is never used
[INFO] [stdout]    --> src/remote_write/persistence.rs:387:18
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl PersistenceStorage {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub async fn get_storage_size(&self) -> u64 {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_compression_algorithm` is never used
[INFO] [stdout]   --> src/remote_write/proto/encoding.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn get_compression_algorithm() -> CompressionAlgorithm {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 8.62s
[INFO] running `Command { std: "docker" "inspect" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090", 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" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]  --> src/ai_collector/openai.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::collections::HashMap;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AILabels` and `normalize_metric_name`
[INFO] [stderr]  --> src/ai_collector/mod.rs:8:22
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub use normalizer::{normalize_metric_name, AILabels};
[INFO] [stderr]   |                      ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]  --> src/collector/textfile.rs:1:146
[INFO] [stderr]   |
[INFO] [stderr] 1 | ...trait::async_trait; use std::fs; use std::path::Path; use std::sync::Arc; use tokio::sync::watch; use tracing;
[INFO] [stderr]   |                                                              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Path`
[INFO] [stderr]  --> src/config/mod.rs:4:17
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::path::{Path, PathBuf};
[INFO] [stderr]   |                 ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tracing`
[INFO] [stderr]  --> src/cost/pricing.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing;
[INFO] [stderr]   |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]  --> src/quality/alert.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::sync::Arc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AlertSeverity`
[INFO] [stderr]  --> src/quality/scorer.rs:5:28
[INFO] [stderr]   |
[INFO] [stderr] 5 | use super::{default_rules, AlertSeverity, QualityMetric, QualityReport, QualityRule, QualityRuleConfig, RuleResult, RuleType};
[INFO] [stderr]   |                            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AlertConfig` and `AlertManager`
[INFO] [stderr]  --> src/quality/mod.rs:5:17
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub use alert::{AlertConfig, AlertManager, AlertSeverity};
[INFO] [stderr]   |                 ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `QualityScore` and `QualityScorer`
[INFO] [stderr]  --> src/quality/mod.rs:7:18
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use scorer::{QualityScore, QualityScorer};
[INFO] [stderr]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AuthType` and `QueueConfig`
[INFO] [stderr]  --> src/remote_write/client.rs:1:33
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::config::{AuthConfig, AuthType, EndpointConfig, RemoteWriteConfig, QueueConfig};
[INFO] [stderr]   |                                 ^^^^^^^^                                     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde_json`
[INFO] [stderr]  --> src/server/handlers.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use serde_json;
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng`
[INFO] [stderr]    --> src/collector/mod.rs:213:29
[INFO] [stderr]     |
[INFO] [stderr] 213 |         let mut rng = rand::thread_rng();
[INFO] [stderr]     |                             ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stderr]    --> src/collector/mod.rs:214:13
[INFO] [stderr]     |
[INFO] [stderr] 214 |         rng.gen_range(0.0..1.0)
[INFO] [stderr]     |             ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `otlp_handle`
[INFO] [stderr]    --> src/main.rs:168:9
[INFO] [stderr]     |
[INFO] [stderr] 168 |     let otlp_handle = if let Some(otlp_cfg) = &config.otlp {
[INFO] [stderr]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_otlp_handle`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ai_collector_handle`
[INFO] [stderr]    --> src/main.rs:326:9
[INFO] [stderr]     |
[INFO] [stderr] 326 |     let ai_collector_handle = {
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_collector_handle`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `scrape_interval_secs` and `labels` are never read
[INFO] [stderr]   --> src/ai_collector/mod.rs:19:9
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub struct AICollectorConfig {
[INFO] [stderr]    |            ----------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 19 |     pub scrape_interval_secs: u64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 20 |     pub labels: HashMap<String, String>,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AICollectorConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `metric_type` is never read
[INFO] [stderr]   --> src/ai_collector/mod.rs:29:9
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub struct AIMetric {
[INFO] [stderr]    |            -------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 29 |     pub metric_type: AIMetricType,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AIMetric` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Gauge` and `Histogram` are never constructed
[INFO] [stderr]   --> src/ai_collector/mod.rs:38:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub enum AIMetricType {
[INFO] [stderr]    |          ------------ variants in this enum
[INFO] [stderr] 37 |     Counter,
[INFO] [stderr] 38 |     Gauge,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 39 |     Histogram,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AIMetricType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Other` is never constructed
[INFO] [stderr]   --> src/ai_collector/mod.rs:96:5
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub enum AICollectorError {
[INFO] [stderr]    |          ---------------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 96 |     Other(String),
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AICollectorError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `set_enabled` is never used
[INFO] [stderr]   --> src/ai_collector/manager.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl AICollectorManager {
[INFO] [stderr]    | ----------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 38 |     pub fn set_enabled(&self, enabled: bool) {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `with_status` and `with_endpoint` are never used
[INFO] [stderr]   --> src/ai_collector/normalizer.rs:81:12
[INFO] [stderr]    |
[INFO] [stderr] 63 | impl AILabels {
[INFO] [stderr]    | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 81 |     pub fn with_status(mut self, status: &str) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 86 |     pub fn with_endpoint(mut self, endpoint: &str) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_interval` is never used
[INFO] [stderr]   --> src/collector/mod.rs:27:8
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub trait Collector: Send + Sync {
[INFO] [stderr]    |           --------- method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 27 |     fn get_interval(&self) -> Duration;
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `last_load` is never read
[INFO] [stderr]    --> src/collector/mod.rs:177:5
[INFO] [stderr]     |
[INFO] [stderr] 176 | pub struct LoadMonitor {
[INFO] [stderr]     |            ----------- field in this struct
[INFO] [stderr] 177 |     last_load: f64,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `with_filters` is never used
[INFO] [stderr]   --> src/collector/network.rs:24:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl NetCollector {
[INFO] [stderr]    | ----------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 24 |     pub fn with_filters(
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `reload_rx` is never read
[INFO] [stderr]  --> src/collector/textfile.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub struct TextfileCollector {
[INFO] [stderr]   |            ----------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 8 |     reload_rx: Option<watch::Receiver<()>>,
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `with_reload` is never used
[INFO] [stderr]   --> src/collector/textfile.rs:22:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl TextfileCollector {
[INFO] [stderr]    | ---------------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub fn with_reload(enabled: bool, directory: &str, reload_rx: watch::Receiver<()>) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `update_config`, `reload`, and `load_from_env` are never used
[INFO] [stderr]    --> src/config/mod.rs:343:18
[INFO] [stderr]     |
[INFO] [stderr] 342 | impl ConfigManager {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr] 343 |     pub async fn new(config_path: Option<&str>) -> Self {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 380 |     pub async fn update_config(&self, new_config: Config) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 396 |     pub async fn reload(&self) {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 535 |     fn load_from_env(mut config: Config) -> Config {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `alert_callback` is never read
[INFO] [stderr]   --> src/cost/budget.rs:55:5
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub struct BudgetManager {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 55 |     alert_callback: Option<Arc<dyn Fn(&str) + Send + Sync>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/cost/budget.rs:70:12
[INFO] [stderr]     |
[INFO] [stderr]  58 | impl BudgetManager {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  70 |     pub fn with_alert_callback(mut self, callback: Arc<dyn Fn(&str) + Send + Sync>) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  75 |     pub fn add_cost(&self, cost_usd: f64) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 126 |     fn trigger_alert(&self, message: &str) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 172 |     pub fn reset_daily(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 178 |     pub fn reset_monthly(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 184 |     pub fn is_over_budget(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 207 |     pub fn enabled(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `pricing_table` and `total_cost` are never read
[INFO] [stderr]   --> src/cost/calculator.rs:8:5
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub struct CostCalculator {
[INFO] [stderr]    |            -------------- fields in this struct
[INFO] [stderr]  8 |     pricing_table: PricingTable,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]  9 |     records: RwLock<Vec<CostRecord>>,
[INFO] [stderr] 10 |     total_cost: RwLock<f64>,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `calculate_and_record`, `get_total_cost`, `get_summary_by_time_range`, and `clear_records` are never used
[INFO] [stderr]    --> src/cost/calculator.rs:22:12
[INFO] [stderr]     |
[INFO] [stderr]  13 | impl CostCalculator {
[INFO] [stderr]     | ------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  22 |     pub fn calculate_and_record(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  76 |     pub fn get_total_cost(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 126 |     pub fn get_summary_by_time_range(&self, start_ms: i64, end_ms: i64) -> CostSummary {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 174 |     pub fn clear_records(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `calculate_cost_with_cache` is never used
[INFO] [stderr]   --> src/cost/pricing.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | impl ModelPricing {
[INFO] [stderr]    | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 38 |     pub fn calculate_cost_with_cache(
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `with_custom`, `list`, and `update` are never used
[INFO] [stderr]    --> src/cost/pricing.rs:71:12
[INFO] [stderr]     |
[INFO] [stderr]  63 | impl PricingTable {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  71 |     pub fn with_custom(pricing: HashMap<String, ModelPricing>) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 162 |     pub fn list(&self) -> HashMap<String, ModelPricing> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 166 |     pub fn update(&self, model: &str, pricing: ModelPricing) -> bool {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SamplePool` is never constructed
[INFO] [stderr]   --> src/model/sample.rs:72:12
[INFO] [stderr]    |
[INFO] [stderr] 72 | pub struct SamplePool {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/model/sample.rs:79:12
[INFO] [stderr]     |
[INFO] [stderr]  78 | impl SamplePool {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr]  79 |     pub fn new(max_size: usize) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  87 |     pub fn get(&mut self, metric_name: &str, value: f64, timestamp_ms: i64) -> Sample {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub fn recycle(&mut self, sample: Sample) {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 115 |     pub fn recycle_batch(&mut self, samples: Vec<Sample>) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn resize(&mut self, new_max_size: usize) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 130 |     pub fn clear(&mut self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 135 |     pub fn size(&self) -> usize {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `SAMPLE_POOL` is never used
[INFO] [stderr]    --> src/model/sample.rs:140:8
[INFO] [stderr]     |
[INFO] [stderr] 140 | static SAMPLE_POOL: OnceLock<Arc<std::sync::Mutex<SamplePool>>> = OnceLock::new();
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_sample_pool` is never used
[INFO] [stderr]    --> src/model/sample.rs:142:8
[INFO] [stderr]     |
[INFO] [stderr] 142 | pub fn get_sample_pool() -> &'static Arc<std::sync::Mutex<SamplePool>> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `ProtobufDecode`, `InvalidMetricType`, `MissingField`, `Grpc`, and `Http` are never constructed
[INFO] [stderr]   --> src/otlp/mod.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub enum OtlpError {
[INFO] [stderr]    |          --------- variants in this enum
[INFO] [stderr] 11 |     #[error("Protobuf decode error: {0}")]
[INFO] [stderr] 12 |     ProtobufDecode(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 15 |     InvalidMetricType,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 18 |     MissingField(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 21 |     Grpc(String),
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 24 |     Http(String),
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `OtlpError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `OtlpMetrics` is never constructed
[INFO] [stderr]   --> src/otlp/mod.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub struct OtlpMetrics {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `with_label_mapping` is never used
[INFO] [stderr]   --> src/otlp/converter.rs:37:12
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl OtlpToPromConverter {
[INFO] [stderr]    | ------------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 37 |     pub fn with_label_mapping(mut self, mappings: HashMap<String, String>) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `convert_request` is never used
[INFO] [stderr]    --> src/otlp/receiver.rs:182:12
[INFO] [stderr]     |
[INFO] [stderr]  40 | impl OtlpReceiver {
[INFO] [stderr]     | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 182 |     pub fn convert_request(&self, request: &ExportMetricsServiceRequest) -> Vec<Sample> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `author` is never read
[INFO] [stderr]   --> src/plugin/mod.rs:33:9
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct PluginMetadata {
[INFO] [stderr]    |            -------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 33 |     pub author: String,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PluginMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `configure` is never used
[INFO] [stderr]   --> src/plugin/mod.rs:47:8
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub trait Plugin: Send + Sync {
[INFO] [stderr]    |           ------ method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 47 |     fn configure(&mut self, config: HashMap<String, String>) -> Result<(), PluginError>;
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Parse`, `Timeout`, and `Other` are never constructed
[INFO] [stderr]   --> src/plugin/mod.rs:59:5
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub enum PluginError {
[INFO] [stderr]    |          ----------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 59 |     Parse(String),
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 74 |     Timeout,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 77 |     Other(String),
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PluginError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PluginConfig` is never constructed
[INFO] [stderr]  --> src/plugin/config.rs:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub struct PluginConfig {
[INFO] [stderr]   |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PluginDefinition` is never constructed
[INFO] [stderr]   --> src/plugin/config.rs:11:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct PluginDefinition {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HttpPluginConfig` is never constructed
[INFO] [stderr]   --> src/plugin/config.rs:36:12
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub struct HttpPluginConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HttpAuth` is never constructed
[INFO] [stderr]   --> src/plugin/config.rs:49:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub struct HttpAuth {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ExecPluginConfig` is never constructed
[INFO] [stderr]   --> src/plugin/config.rs:58:12
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub struct ExecPluginConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ScriptPluginConfig` is never constructed
[INFO] [stderr]   --> src/plugin/config.rs:69:12
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub struct ScriptPluginConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `unregister`, `set_enabled`, `configure_plugin`, and `get_plugin` are never used
[INFO] [stderr]    --> src/plugin/manager.rs:38:12
[INFO] [stderr]     |
[INFO] [stderr]  13 | impl PluginManager {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  38 |     pub fn unregister(&mut self, name: &str) -> Result<(), PluginError> {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  51 |     pub fn set_enabled(&self, enabled: bool) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     pub async fn configure_plugin(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 127 |     pub async fn get_plugin(&self, name: &str) -> Option<PluginInfo> {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `timeout_secs` is never read
[INFO] [stderr]   --> src/plugin/plugins/http.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr]  9 | pub struct HttpPlugin {
[INFO] [stderr]    |            ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 15 |     timeout_secs: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `set_headers`, `set_body`, `set_timeout`, and `set_labels` are never used
[INFO] [stderr]   --> src/plugin/plugins/http.rs:51:12
[INFO] [stderr]    |
[INFO] [stderr] 21 | impl HttpPlugin {
[INFO] [stderr]    | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 51 |     pub fn set_headers(&mut self, headers: HashMap<String, String>) {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     pub fn set_body(&mut self, body: String) {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 59 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `set_args`, `set_env`, `set_work_dir`, `set_timeout`, and `set_labels` are never used
[INFO] [stderr]   --> src/plugin/plugins/exec.rs:39:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | impl ExecPlugin {
[INFO] [stderr]    | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn set_args(&mut self, args: Vec<String>) {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 43 |     pub fn set_env(&mut self, env: HashMap<String, String>) {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn set_work_dir(&mut self, work_dir: String) {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 51 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `timeout_secs` is never read
[INFO] [stderr]   --> src/plugin/plugins/script.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr]  8 | pub struct ScriptPlugin {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 15 |     timeout_secs: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `set_args`, `set_env`, `set_work_dir`, `set_timeout`, and `set_labels` are never used
[INFO] [stderr]   --> src/plugin/plugins/script.rs:41:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl ScriptPlugin {
[INFO] [stderr]    | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 41 |     pub fn set_args(&mut self, args: Vec<String>) {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 45 |     pub fn set_env(&mut self, env: HashMap<String, String>) {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 |     pub fn set_work_dir(&mut self, work_dir: String) {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 53 |     pub fn set_timeout(&mut self, timeout_secs: u64) {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub fn set_labels(&mut self, labels: HashMap<String, String>) {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `QualityMetric` is never constructed
[INFO] [stderr]   --> src/quality/mod.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct QualityMetric {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `QualityReport` is never constructed
[INFO] [stderr]   --> src/quality/mod.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub struct QualityReport {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RuleResult` is never constructed
[INFO] [stderr]   --> src/quality/mod.rs:36:12
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub struct RuleResult {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AlertSeverity` is never used
[INFO] [stderr]  --> src/quality/alert.rs:6:10
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub enum AlertSeverity {
[INFO] [stderr]   |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AlertConfig` is never constructed
[INFO] [stderr]   --> src/quality/alert.rs:19:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct AlertConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Alert` is never constructed
[INFO] [stderr]   --> src/quality/alert.rs:42:12
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub struct Alert {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AlertManager` is never constructed
[INFO] [stderr]   --> src/quality/alert.rs:52:12
[INFO] [stderr]    |
[INFO] [stderr] 52 | pub struct AlertManager {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/quality/alert.rs:59:12
[INFO] [stderr]     |
[INFO] [stderr]  58 | impl AlertManager {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr]  59 |     pub fn new(config: AlertConfig) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  73 |     pub fn trigger(
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 108 |     fn send_alert(&self, alert: &Alert) {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 138 |     pub fn acknowledge(&mut self, alert_id: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 148 |     pub fn get_active_alerts(&self) -> Vec<&Alert> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 152 |     pub fn get_all_alerts(&self) -> &[Alert] {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 156 |     pub fn clear_acknowledged(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 160 |     pub fn enabled(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `RuleType` is never used
[INFO] [stderr]  --> src/quality/rules.rs:6:10
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub enum RuleType {
[INFO] [stderr]   |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Severity` is never used
[INFO] [stderr]   --> src/quality/rules.rs:15:10
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub enum Severity {
[INFO] [stderr]    |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `QualityRuleConfig` is never constructed
[INFO] [stderr]   --> src/quality/rules.rs:28:12
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub struct QualityRuleConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `QualityRule` is never constructed
[INFO] [stderr]   --> src/quality/rules.rs:63:12
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub struct QualityRule {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/quality/rules.rs:68:12
[INFO] [stderr]     |
[INFO] [stderr]  67 | impl QualityRule {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  68 |     pub fn new(config: QualityRuleConfig) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  72 |     pub fn name(&self) -> &str {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  76 |     pub fn enabled(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  80 |     pub fn rule_type(&self) -> RuleType {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  90 |     pub fn severity(&self) -> AlertSeverity {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  98 |     pub fn evaluate(&self, metrics: &[QualityMetric]) -> RuleResult {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 118 |     fn evaluate_response_time(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 149 |     fn evaluate_token_efficiency(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 186 |     fn evaluate_error_rate(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 212 |     fn evaluate_throughput(&self, metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 238 |     fn evaluate_custom(&self, _metrics: &[QualityMetric]) -> (bool, f64, String) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 242 |     pub fn weight(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `default_rules` is never used
[INFO] [stderr]    --> src/quality/rules.rs:247:8
[INFO] [stderr]     |
[INFO] [stderr] 247 | pub fn default_rules() -> Vec<QualityRuleConfig> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `QualityScore` is never constructed
[INFO] [stderr]  --> src/quality/scorer.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct QualityScore {
[INFO] [stderr]   |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `QualityScorer` is never constructed
[INFO] [stderr]   --> src/quality/scorer.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub struct QualityScorer {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/quality/scorer.rs:21:12
[INFO] [stderr]     |
[INFO] [stderr]  20 | impl QualityScorer {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr]  21 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  29 |     pub fn with_rules(rules: Vec<QualityRuleConfig>) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  38 |     pub fn add_rule(&self, config: QualityRuleConfig) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  44 |     pub fn record_metric(&self, metric: QualityMetric) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  53 |     pub fn evaluate(&self) -> QualityReport {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 124 |     fn generate_recommendations(&self, results: &[RuleResult]) -> Vec<String> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 162 |     pub fn get_score_history(&self, limit: usize) -> Vec<QualityScore> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 167 |     pub fn clear_metrics(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_persistence_size` and `clear_persistence` are never used
[INFO] [stderr]    --> src/remote_write/client.rs:415:18
[INFO] [stderr]     |
[INFO] [stderr]  31 | impl RemoteWriteClient {
[INFO] [stderr]     | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 415 |     pub async fn get_persistence_size(&self) -> u64 {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 423 |     pub async fn clear_persistence(&self) -> Result<(), String> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_storage_size` is never used
[INFO] [stderr]    --> src/remote_write/persistence.rs:387:18
[INFO] [stderr]     |
[INFO] [stderr]  35 | impl PersistenceStorage {
[INFO] [stderr]     | ----------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 387 |     pub async fn get_storage_size(&self) -> u64 {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_compression_algorithm` is never used
[INFO] [stderr]   --> src/remote_write/proto/encoding.rs:54:8
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub fn get_compression_algorithm() -> CompressionAlgorithm {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `prom-agent` (bin "prom-agent" test) generated 76 warnings (run `cargo fix --bin "prom-agent" -p prom-agent --tests` to apply 13 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.37s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/prom_agent-8963275228ecdb6a)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test cost::pricing::tests::test_calculate_cost ... ok
[INFO] [stdout] test otlp::converter::tests::test_apply_prefix ... ok
[INFO] [stdout] test otlp::converter::tests::test_convert_timestamp ... ok
[INFO] [stdout] test cost::pricing::tests::test_pricing_table_get ... ok
[INFO] [stdout] test ai_collector::normalizer::tests::test_normalize_metric_name ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- ai_collector::normalizer::tests::test_normalize_metric_name stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'ai_collector::normalizer::tests::test_normalize_metric_name' (1203) panicked at src/ai_collector/normalizer.rs:126:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: "ai_cost_usd_total_usd"
[INFO] [stdout]  right: "ai_cost_usd_total"
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x61ad23c5e961 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x61ad23c5e961 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x61ad23c5e961 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x61ad23c5e961 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x61ad23c732ba - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x61ad23c732ba - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x61ad23c62e1c - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x61ad23c62e1c - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x61ad23c3d0d6 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61ad23c3d0d6 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61ad23c56b89 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x61ad23bea650 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x61ad23bea650 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x61ad23c56d42 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x61ad23c56d42 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x61ad23c3d182 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x61ad23c34ae9 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61ad23c3dd7d - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x61ad23c739ec - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x61ad23c73903 - core[6883ba1bc0fe4ed1]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x61ad23bd61ce - core[6883ba1bc0fe4ed1]::panicking::assert_failed::<alloc[55a36b64bcbf2c0d]::string::String, &str>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x61ad23bdb6b9 - prom_agent[ea29e275dc863b77]::ai_collector::normalizer::tests::test_normalize_metric_name
[INFO] [stdout]                                at /opt/rustwide/workdir/src/ai_collector/normalizer.rs:126:9
[INFO] [stdout]   22:     0x61ad23bd6717 - prom_agent[ea29e275dc863b77]::ai_collector::normalizer::tests::test_normalize_metric_name::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/ai_collector/normalizer.rs:123:36
[INFO] [stdout]   23:     0x61ad23bdd596 - <prom_agent[ea29e275dc863b77]::ai_collector::normalizer::tests::test_normalize_metric_name::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x61ad23bdd98b - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x61ad23bdd98b - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   26:     0x61ad23beafd5 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   27:     0x61ad23beafd5 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x61ad23beafd5 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x61ad23beafd5 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x61ad23beafd5 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x61ad23beafd5 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   32:     0x61ad23beafd5 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   33:     0x61ad23be5a84 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   34:     0x61ad23be5a84 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x61ad23bee122 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x61ad23bee122 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x61ad23bee122 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x61ad23bee122 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x61ad23bee122 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x61ad23bee122 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x61ad23bee122 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x61ad23c5e1ef - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   43:     0x61ad23c5e1ef - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x75cf6e54eaa4 - <unknown>
[INFO] [stdout]   45:     0x75cf6e5dba64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     ai_collector::normalizer::tests::test_normalize_metric_name
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 4 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin prom-agent`
[INFO] running `Command { std: "docker" "inspect" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090", kill_on_drop: false }`
[INFO] [stdout] e299cfb3ed6ed8cfaa97b2559208fb15d5a9abcfc51f36df91e3254168d39090
