[INFO] fetching crate product-farm-llm-evaluator 0.2.0...
[INFO] testing product-farm-llm-evaluator-0.2.0 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate product-farm-llm-evaluator 0.2.0 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate product-farm-llm-evaluator 0.2.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate product-farm-llm-evaluator 0.2.0
[INFO] tweaked toml for crates.io crate product-farm-llm-evaluator 0.2.0 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate product-farm-llm-evaluator 0.2.0 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate product-farm-llm-evaluator 0.2.0 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d26622d4e95fccb5e742e926c91546b161ff1be0150ec8ed097d7a85a082f65d
[INFO] running `Command { std: "docker" "start" "-a" "d26622d4e95fccb5e742e926c91546b161ff1be0150ec8ed097d7a85a082f65d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d26622d4e95fccb5e742e926c91546b161ff1be0150ec8ed097d7a85a082f65d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d26622d4e95fccb5e742e926c91546b161ff1be0150ec8ed097d7a85a082f65d", kill_on_drop: false }`
[INFO] [stdout] d26622d4e95fccb5e742e926c91546b161ff1be0150ec8ed097d7a85a082f65d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 43477163fb46976fe955b3d2f6aaadad11dc0facb36a057a3e6a853c46e088a4
[INFO] running `Command { std: "docker" "start" "-a" "43477163fb46976fe955b3d2f6aaadad11dc0facb36a057a3e6a853c46e088a4", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling rust_decimal v1.39.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.7
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling tracing-core v0.1.35
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling tracing v0.1.43
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling product-farm-core v0.2.0
[INFO] [stderr]    Compiling product-farm-llm-evaluator v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `LlmEvaluatorConfig` and `OutputFormat`
[INFO] [stdout]  --> src/claude.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::config::{LlmEvaluatorConfig, OutputFormat};
[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 import: `crate::parsing`
[INFO] [stdout]  --> src/claude.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::parsing;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `info`
[INFO] [stdout]   --> src/claude.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info};
[INFO] [stdout]    |               ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LlmEvaluatorConfig` and `OutputFormat`
[INFO] [stdout]  --> src/ollama.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::config::{LlmEvaluatorConfig, OutputFormat};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::parsing`
[INFO] [stdout]  --> src/ollama.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::parsing;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]   --> src/ollama.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_to_value` is never used
[INFO] [stdout]    --> src/claude.rs:429:4
[INFO] [stdout]     |
[INFO] [stdout] 429 | fn json_to_value(json: serde_json::Value) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_to_value` is never used
[INFO] [stdout]    --> src/ollama.rs:403:4
[INFO] [stdout]     |
[INFO] [stdout] 403 | fn json_to_value(json: serde_json::Value) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InstructionDetector` is never constructed
[INFO] [stdout]    --> src/prompt.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | struct InstructionDetector {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `has_complete_json_format_instruction`, `has_output_only_instruction`, `has_complete_constraint_instructions`, and `has_complete_datatype_instructions` are never used
[INFO] [stdout]    --> src/prompt.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl InstructionDetector {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 156 |     fn new(template: &str) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn has_complete_json_format_instruction(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn has_output_only_instruction(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     fn has_complete_constraint_instructions(&self, context: &RuleEvaluationContext) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn has_complete_datatype_instructions(&self, context: &RuleEvaluationContext) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NUMBER_REGEX` is never used
[INFO] [stdout]   --> src/parsing.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static NUMBER_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `BOOLEAN_TRUE_REGEX` is never used
[INFO] [stdout]   --> src/parsing.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | static BOOLEAN_TRUE_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `BOOLEAN_FALSE_REGEX` is never used
[INFO] [stdout]   --> src/parsing.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | static BOOLEAN_FALSE_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_number` is never used
[INFO] [stdout]   --> src/parsing.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn parse_number(text: &str) -> LlmEvaluatorResult<f64> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_boolean` is never used
[INFO] [stdout]   --> src/parsing.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn parse_boolean(text: &str) -> LlmEvaluatorResult<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate_for_error` is never used
[INFO] [stdout]    --> src/parsing.rs:105:4
[INFO] [stdout]     |
[INFO] [stdout] 105 | fn truncate_for_error(text: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.88s
[INFO] running `Command { std: "docker" "inspect" "43477163fb46976fe955b3d2f6aaadad11dc0facb36a057a3e6a853c46e088a4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "43477163fb46976fe955b3d2f6aaadad11dc0facb36a057a3e6a853c46e088a4", kill_on_drop: false }`
[INFO] [stdout] 43477163fb46976fe955b3d2f6aaadad11dc0facb36a057a3e6a853c46e088a4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 437aab1725f63a64d903916359c286e5d532777c95556a391046356cf8fac906
[INFO] running `Command { std: "docker" "start" "-a" "437aab1725f63a64d903916359c286e5d532777c95556a391046356cf8fac906", kill_on_drop: false }`
[INFO] [stdout] warning: unused imports: `LlmEvaluatorConfig` and `OutputFormat`
[INFO] [stdout]  --> src/claude.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::config::{LlmEvaluatorConfig, OutputFormat};
[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 import: `crate::parsing`
[INFO] [stdout]  --> src/claude.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::parsing;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `info`
[INFO] [stdout]   --> src/claude.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info};
[INFO] [stdout]    |               ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LlmEvaluatorConfig` and `OutputFormat`
[INFO] [stdout]  --> src/ollama.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::config::{LlmEvaluatorConfig, OutputFormat};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::parsing`
[INFO] [stdout]  --> src/ollama.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::parsing;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]   --> src/ollama.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_to_value` is never used
[INFO] [stdout]    --> src/claude.rs:429:4
[INFO] [stdout]     |
[INFO] [stdout] 429 | fn json_to_value(json: serde_json::Value) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_to_value` is never used
[INFO] [stdout]    --> src/ollama.rs:403:4
[INFO] [stdout]     |
[INFO] [stdout] 403 | fn json_to_value(json: serde_json::Value) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InstructionDetector` is never constructed
[INFO] [stdout]    --> src/prompt.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | struct InstructionDetector {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `has_complete_json_format_instruction`, `has_output_only_instruction`, `has_complete_constraint_instructions`, and `has_complete_datatype_instructions` are never used
[INFO] [stdout]    --> src/prompt.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl InstructionDetector {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 156 |     fn new(template: &str) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn has_complete_json_format_instruction(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn has_output_only_instruction(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     fn has_complete_constraint_instructions(&self, context: &RuleEvaluationContext) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn has_complete_datatype_instructions(&self, context: &RuleEvaluationContext) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NUMBER_REGEX` is never used
[INFO] [stdout]   --> src/parsing.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static NUMBER_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `BOOLEAN_TRUE_REGEX` is never used
[INFO] [stdout]   --> src/parsing.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | static BOOLEAN_TRUE_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `BOOLEAN_FALSE_REGEX` is never used
[INFO] [stdout]   --> src/parsing.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | static BOOLEAN_FALSE_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_number` is never used
[INFO] [stdout]   --> src/parsing.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn parse_number(text: &str) -> LlmEvaluatorResult<f64> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_boolean` is never used
[INFO] [stdout]   --> src/parsing.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn parse_boolean(text: &str) -> LlmEvaluatorResult<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate_for_error` is never used
[INFO] [stdout]    --> src/parsing.rs:105:4
[INFO] [stdout]     |
[INFO] [stdout] 105 | fn truncate_for_error(text: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling product-farm-llm-evaluator v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `ParallelLlmExecutor`
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     ParallelLlmExecutor, RetryConfig, RuleMetadata,
[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: `AtomicUsize` and `Ordering`
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:20:25
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::sync::atomic::{AtomicUsize, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `skip_if_no_ollama`
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | macro_rules! skip_if_no_ollama {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LlmEvaluator` and `Value`
[INFO] [stdout]   --> tests/integration_test.rs:18:25
[INFO] [stdout]    |
[INFO] [stdout] 18 | use product_farm_core::{LlmEvaluator, Value};
[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: `AttributeInfo`, `ParallelLlmExecutor`, `PromptBuilder`, `RuleEvaluationContext`, and `RuleMetadata`
[INFO] [stdout]   --> tests/integration_test.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     ParallelLlmExecutor, ParallelExecutorConfig, RuleMetadata, RetryConfig,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^                          ^^^^^^^^^^^^
[INFO] [stdout] 22 |     PromptBuilder, RuleEvaluationContext, AttributeInfo,
[INFO] [stdout]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> tests/integration_test.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `skip_if_no_ollama`
[INFO] [stdout]   --> tests/integration_test.rs:54:14
[INFO] [stdout]    |
[INFO] [stdout] 54 | macro_rules! skip_if_no_ollama {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `evaluator`
[INFO] [stdout]   --> tests/integration_test.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let evaluator = OllamaLlmEvaluator::localhost(test_model());
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_evaluator`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TEST_MODEL` is never used
[INFO] [stdout]   --> tests/integration_test.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const DEFAULT_TEST_MODEL: &str = "qwen3:4b-instruct-2507-q4_K_M";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_model` is never used
[INFO] [stdout]   --> tests/integration_test.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn test_model() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_executor_config` is never used
[INFO] [stdout]   --> tests/integration_test.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn test_executor_config() -> ParallelExecutorConfig {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ollama_available` is never used
[INFO] [stdout]   --> tests/integration_test.rs:41:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | async fn ollama_available() -> bool {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `evaluator`
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let evaluator = OllamaLlmEvaluator::localhost(test_model());
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_evaluator`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TEST_MODEL` is never used
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const DEFAULT_TEST_MODEL: &str = "qwen3:4b-instruct-2507-q4_K_M";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_model` is never used
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn test_model() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ollama_available` is never used
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | async fn ollama_available() -> bool {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_executor_config` is never used
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn test_executor_config(max_concurrency: usize) -> ParallelExecutorConfig {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_10_llm_rules` is never used
[INFO] [stdout]   --> tests/concurrent_stress_test.rs:76:4
[INFO] [stdout]    |
[INFO] [stdout] 76 | fn generate_10_llm_rules() -> Vec<(String, RuleMetadata, HashMap<String, Value>)> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LlmEvaluatorConfig` and `OutputFormat`
[INFO] [stdout]  --> src/claude.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::config::{LlmEvaluatorConfig, OutputFormat};
[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 import: `crate::parsing`
[INFO] [stdout]  --> src/claude.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::parsing;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `info`
[INFO] [stdout]   --> src/claude.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info};
[INFO] [stdout]    |               ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LlmEvaluatorConfig` and `OutputFormat`
[INFO] [stdout]  --> src/ollama.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::config::{LlmEvaluatorConfig, OutputFormat};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::parsing`
[INFO] [stdout]  --> src/ollama.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::parsing;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]   --> src/ollama.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `evaluator`
[INFO] [stdout]    --> src/ollama.rs:442:13
[INFO] [stdout]     |
[INFO] [stdout] 442 |         let evaluator = OllamaLlmEvaluator::localhost("llama3.2");
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_evaluator`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_to_value` is never used
[INFO] [stdout]    --> src/ollama.rs:403:4
[INFO] [stdout]     |
[INFO] [stdout] 403 | fn json_to_value(json: serde_json::Value) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InstructionDetector` is never constructed
[INFO] [stdout]    --> src/prompt.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | struct InstructionDetector {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `has_complete_json_format_instruction`, `has_output_only_instruction`, `has_complete_constraint_instructions`, and `has_complete_datatype_instructions` are never used
[INFO] [stdout]    --> src/prompt.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl InstructionDetector {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 156 |     fn new(template: &str) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn has_complete_json_format_instruction(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn has_output_only_instruction(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     fn has_complete_constraint_instructions(&self, context: &RuleEvaluationContext) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn has_complete_datatype_instructions(&self, context: &RuleEvaluationContext) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2.76s
[INFO] running `Command { std: "docker" "inspect" "437aab1725f63a64d903916359c286e5d532777c95556a391046356cf8fac906", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "437aab1725f63a64d903916359c286e5d532777c95556a391046356cf8fac906", kill_on_drop: false }`
[INFO] [stdout] 437aab1725f63a64d903916359c286e5d532777c95556a391046356cf8fac906
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 3dd731c836002d3731942a00f474182cc2446b41d2e27a5ac72d241ed2a3b089
[INFO] running `Command { std: "docker" "start" "-a" "3dd731c836002d3731942a00f474182cc2446b41d2e27a5ac72d241ed2a3b089", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `LlmEvaluatorConfig` and `OutputFormat`
[INFO] [stderr]  --> src/claude.rs:5:21
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::config::{LlmEvaluatorConfig, OutputFormat};
[INFO] [stderr]   |                     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::parsing`
[INFO] [stderr]  --> src/claude.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use crate::parsing;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `debug` and `info`
[INFO] [stderr]   --> src/claude.rs:11:15
[INFO] [stderr]    |
[INFO] [stderr] 11 | use tracing::{debug, info};
[INFO] [stderr]    |               ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `LlmEvaluatorConfig` and `OutputFormat`
[INFO] [stderr]  --> src/ollama.rs:6:21
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::config::{LlmEvaluatorConfig, OutputFormat};
[INFO] [stderr]   |                     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::parsing`
[INFO] [stderr]  --> src/ollama.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use crate::parsing;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stderr]   --> src/ollama.rs:12:15
[INFO] [stderr]    |
[INFO] [stderr] 12 | use tracing::{debug, info, warn};
[INFO] [stderr]    |               ^^^^^  ^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `json_to_value` is never used
[INFO] [stderr]    --> src/claude.rs:429:4
[INFO] [stderr]     |
[INFO] [stderr] 429 | fn json_to_value(json: serde_json::Value) -> Value {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `json_to_value` is never used
[INFO] [stderr]    --> src/ollama.rs:403:4
[INFO] [stderr]     |
[INFO] [stderr] 403 | fn json_to_value(json: serde_json::Value) -> Value {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InstructionDetector` is never constructed
[INFO] [stderr]    --> src/prompt.rs:150:8
[INFO] [stderr]     |
[INFO] [stderr] 150 | struct InstructionDetector {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `has_complete_json_format_instruction`, `has_output_only_instruction`, `has_complete_constraint_instructions`, and `has_complete_datatype_instructions` are never used
[INFO] [stderr]    --> src/prompt.rs:156:8
[INFO] [stderr]     |
[INFO] [stderr] 155 | impl InstructionDetector {
[INFO] [stderr]     | ------------------------ associated items in this implementation
[INFO] [stderr] 156 |     fn new(template: &str) -> Self {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 164 |     fn has_complete_json_format_instruction(&self) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 177 |     fn has_output_only_instruction(&self) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 195 |     fn has_complete_constraint_instructions(&self, context: &RuleEvaluationContext) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 221 |     fn has_complete_datatype_instructions(&self, context: &RuleEvaluationContext) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `NUMBER_REGEX` is never used
[INFO] [stderr]   --> src/parsing.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 12 | static NUMBER_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `BOOLEAN_TRUE_REGEX` is never used
[INFO] [stderr]   --> src/parsing.rs:17:8
[INFO] [stderr]    |
[INFO] [stderr] 17 | static BOOLEAN_TRUE_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `BOOLEAN_FALSE_REGEX` is never used
[INFO] [stderr]   --> src/parsing.rs:21:8
[INFO] [stderr]    |
[INFO] [stderr] 21 | static BOOLEAN_FALSE_REGEX: Lazy<Regex> = Lazy::new(|| {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_number` is never used
[INFO] [stderr]   --> src/parsing.rs:32:8
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub fn parse_number(text: &str) -> LlmEvaluatorResult<f64> {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_boolean` is never used
[INFO] [stderr]   --> src/parsing.rs:57:8
[INFO] [stderr]    |
[INFO] [stderr] 57 | pub fn parse_boolean(text: &str) -> LlmEvaluatorResult<bool> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `truncate_for_error` is never used
[INFO] [stderr]    --> src/parsing.rs:105:4
[INFO] [stderr]     |
[INFO] [stderr] 105 | fn truncate_for_error(text: &str) -> String {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `evaluator`
[INFO] [stderr]    --> src/ollama.rs:442:13
[INFO] [stderr]     |
[INFO] [stderr] 442 |         let evaluator = OllamaLlmEvaluator::localhost("llama3.2");
[INFO] [stderr]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_evaluator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `json_to_value` is never used
[INFO] [stderr]    --> src/ollama.rs:403:4
[INFO] [stderr]     |
[INFO] [stderr] 403 | fn json_to_value(json: serde_json::Value) -> Value {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `product-farm-llm-evaluator` (lib) generated 16 warnings (run `cargo fix --lib -p product-farm-llm-evaluator` to apply 6 suggestions)
[INFO] [stderr] warning: `product-farm-llm-evaluator` (lib test) generated 10 warnings (8 duplicates) (run `cargo fix --lib -p product-farm-llm-evaluator --tests` to apply 1 suggestion)
[INFO] [stderr] warning: unused imports: `LlmEvaluator` and `Value`
[INFO] [stderr]   --> tests/integration_test.rs:18:25
[INFO] [stderr]    |
[INFO] [stderr] 18 | use product_farm_core::{LlmEvaluator, Value};
[INFO] [stderr]    |                         ^^^^^^^^^^^^  ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AttributeInfo`, `ParallelLlmExecutor`, `PromptBuilder`, `RuleEvaluationContext`, and `RuleMetadata`
[INFO] [stderr]   --> tests/integration_test.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 |     ParallelLlmExecutor, ParallelExecutorConfig, RuleMetadata, RetryConfig,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^                          ^^^^^^^^^^^^
[INFO] [stderr] 22 |     PromptBuilder, RuleEvaluationContext, AttributeInfo,
[INFO] [stderr]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> tests/integration_test.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused macro definition: `skip_if_no_ollama`
[INFO] [stderr]   --> tests/integration_test.rs:54:14
[INFO] [stderr]    |
[INFO] [stderr] 54 | macro_rules! skip_if_no_ollama {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `evaluator`
[INFO] [stderr]   --> tests/integration_test.rs:42:9
[INFO] [stderr]    |
[INFO] [stderr] 42 |     let evaluator = OllamaLlmEvaluator::localhost(test_model());
[INFO] [stderr]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_evaluator`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DEFAULT_TEST_MODEL` is never used
[INFO] [stderr]   --> tests/integration_test.rs:12:7
[INFO] [stderr]    |
[INFO] [stderr] 12 | const DEFAULT_TEST_MODEL: &str = "qwen3:4b-instruct-2507-q4_K_M";
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_model` is never used
[INFO] [stderr]   --> tests/integration_test.rs:14:4
[INFO] [stderr]    |
[INFO] [stderr] 14 | fn test_model() -> String {
[INFO] [stderr]    |    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_executor_config` is never used
[INFO] [stderr]   --> tests/integration_test.rs:27:4
[INFO] [stderr]    |
[INFO] [stderr] 27 | fn test_executor_config() -> ParallelExecutorConfig {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `ollama_available` is never used
[INFO] [stderr]   --> tests/integration_test.rs:41:10
[INFO] [stderr]    |
[INFO] [stderr] 41 | async fn ollama_available() -> bool {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ParallelLlmExecutor`
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 |     ParallelLlmExecutor, RetryConfig, RuleMetadata,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AtomicUsize` and `Ordering`
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:20:25
[INFO] [stderr]    |
[INFO] [stderr] 20 | use std::sync::atomic::{AtomicUsize, Ordering};
[INFO] [stderr]    |                         ^^^^^^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::sync::Arc;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused macro definition: `skip_if_no_ollama`
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:43:14
[INFO] [stderr]    |
[INFO] [stderr] 43 | macro_rules! skip_if_no_ollama {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `evaluator`
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:32:9
[INFO] [stderr]    |
[INFO] [stderr] 32 |     let evaluator = OllamaLlmEvaluator::localhost(test_model());
[INFO] [stderr]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_evaluator`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DEFAULT_TEST_MODEL` is never used
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:24:7
[INFO] [stderr]    |
[INFO] [stderr] 24 | const DEFAULT_TEST_MODEL: &str = "qwen3:4b-instruct-2507-q4_K_M";
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_model` is never used
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:26:4
[INFO] [stderr]    |
[INFO] [stderr] 26 | fn test_model() -> String {
[INFO] [stderr]    |    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `ollama_available` is never used
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:31:10
[INFO] [stderr]    |
[INFO] [stderr] 31 | async fn ollama_available() -> bool {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_executor_config` is never used
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:56:4
[INFO] [stderr]    |
[INFO] [stderr] 56 | fn test_executor_config(max_concurrency: usize) -> ParallelExecutorConfig {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `generate_10_llm_rules` is never used
[INFO] [stderr]   --> tests/concurrent_stress_test.rs:76:4
[INFO] [stderr]    |
[INFO] [stderr] 76 | fn generate_10_llm_rules() -> Vec<(String, RuleMetadata, HashMap<String, Value>)> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `product-farm-llm-evaluator` (test "integration_test") generated 9 warnings (run `cargo fix --test "integration_test" -p product-farm-llm-evaluator` to apply 4 suggestions)
[INFO] [stderr] warning: `product-farm-llm-evaluator` (test "concurrent_stress_test") generated 10 warnings (run `cargo fix --test "concurrent_stress_test" -p product-farm-llm-evaluator` to apply 4 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.27s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/product_farm_llm_evaluator-234cf3117dc50ef9)
[INFO] [stdout] 
[INFO] [stdout] running 37 tests
[INFO] [stdout] test claude::tests::test_json_to_value_primitives ... ok
[INFO] [stdout] test config::tests::test_config_builder ... ok
[INFO] [stdout] test config::tests::test_config_new ... ok
[INFO] [stdout] test config::tests::test_config_serialization ... ok
[INFO] [stdout] test config::tests::test_render_prompt_with_json ... ok
[INFO] [stdout] test config::tests::test_render_prompt_with_outputs ... ok
[INFO] [stdout] test config::tests::test_config_temperature_clamped ... ok
[INFO] [stdout] test env_config::tests::test_config_summary ... ok
[INFO] [stdout] test config::tests::test_output_format_serialization ... ok
[INFO] [stdout] test env_config::tests::test_default_concurrency ... ok
[INFO] [stdout] test env_config::tests::test_max_concurrency_for_provider ... ok
[INFO] [stdout] test env_config::tests::test_retry_backoff_calculation ... ok
[INFO] [stdout] test config::tests::test_config_map_roundtrip ... ok
[INFO] [stdout] test env_config::tests::test_effective_temperature_override ... ok
[INFO] [stdout] test env_config::tests::test_default_provider_is_ollama ... ok
[INFO] [stdout] test executor::tests::test_config_builder_methods ... ok
[INFO] [stdout] test executor::tests::test_context_sharing ... ok
[INFO] [stdout] test executor::tests::test_parallel_executor_config_defaults ... ok
[INFO] [stdout] test executor::tests::test_parallel_executor_config_unlimited ... ok
[INFO] [stdout] test executor::tests::test_config_without_retries ... ok
[INFO] [stdout] test executor::tests::test_retry_config_backoff ... ok
[INFO] [stdout] test ollama::tests::test_ollama_evaluator_creation ... ok
[INFO] [stdout] test ollama::tests::test_ollama_localhost ... ok
[INFO] [stdout] test executor::tests::test_rule_metadata_from_inputs ... ok
[INFO] [stdout] test parsing::tests::test_parse_boolean_negation ... ok
[INFO] [stdout] test config::tests::test_render_prompt_simple ... ok
[INFO] [stdout] test prompt::tests::test_attribute_info_builder ... ok
[INFO] [stdout] test parsing::tests::test_parse_number_no_number ... ok
[INFO] [stdout] test prompt::tests::test_prompt_builder_default ... ok
[INFO] [stdout] test prompt::tests::test_prompt_builder_custom_template ... ok
[INFO] [stdout] test prompt::tests::test_prompt_token_optimization ... ok
[INFO] [stdout] test parsing::tests::test_parse_number_simple ... ok
[INFO] [stdout] test parsing::tests::test_parse_boolean_with_context ... ok
[INFO] [stdout] test parsing::tests::test_parse_number_avoids_concatenation ... ok
[INFO] [stdout] test parsing::tests::test_parse_number_in_text ... ok
[INFO] [stdout] test parsing::tests::test_parse_number_negative ... ok
[INFO] [stderr]      Running tests/concurrent_stress_test.rs (/opt/rustwide/target/debug/deps/concurrent_stress_test-f0fe1268aca65301)
[INFO] [stdout] test parsing::tests::test_parse_boolean_simple ... ok
[INFO] [stderr]      Running tests/integration_test.rs (/opt/rustwide/target/debug/deps/integration_test-1be8dd33d9a2ee2d)
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests product_farm_llm_evaluator
[INFO] [stdout] test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/lib.rs - (line 34) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "3dd731c836002d3731942a00f474182cc2446b41d2e27a5ac72d241ed2a3b089", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3dd731c836002d3731942a00f474182cc2446b41d2e27a5ac72d241ed2a3b089", kill_on_drop: false }`
[INFO] [stdout] 3dd731c836002d3731942a00f474182cc2446b41d2e27a5ac72d241ed2a3b089
