[INFO] cloning repository https://github.com/yhc007/rust-agent
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/yhc007/rust-agent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyhc007%2Frust-agent", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyhc007%2Frust-agent'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 50470c00a948fb4007b1c5648e5b532ece6bae58
[INFO] testing yhc007/rust-agent against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyhc007%2Frust-agent" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/yhc007/rust-agent
[INFO] finished tweaking git repo https://github.com/yhc007/rust-agent
[INFO] tweaked toml for git repo https://github.com/yhc007/rust-agent written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/yhc007/rust-agent on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/yhc007/rust-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded grep-matcher v0.1.8
[INFO] [stderr]   Downloaded eventsource-stream v0.2.3
[INFO] [stderr]   Downloaded grep-searcher v0.1.16
[INFO] [stderr]   Downloaded grep-regex v0.1.14
[INFO] [stderr]   Downloaded tree-sitter-bash v0.23.3
[INFO] [stderr]   Downloaded minijinja v2.19.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a6d18550101ded3257057c824f09ec4226a80ad53123547f23572ab0d6601c22
[INFO] running `Command { std: "docker" "start" "-a" "a6d18550101ded3257057c824f09ec4226a80ad53123547f23572ab0d6601c22", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a6d18550101ded3257057c824f09ec4226a80ad53123547f23572ab0d6601c22", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a6d18550101ded3257057c824f09ec4226a80ad53123547f23572ab0d6601c22", kill_on_drop: false }`
[INFO] [stdout] a6d18550101ded3257057c824f09ec4226a80ad53123547f23572ab0d6601c22
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1dbd666a0cbd52dd9e3dbc777ff8e2fc0a07b1cf49eef38774cb66a81723ef32
[INFO] running `Command { std: "docker" "start" "-a" "1dbd666a0cbd52dd9e3dbc777ff8e2fc0a07b1cf49eef38774cb66a81723ef32", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling indexmap v2.13.1
[INFO] [stderr]    Compiling tree-sitter-language v0.1.7
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling grep-matcher v0.1.8
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling notify-types v1.0.1
[INFO] [stderr]    Compiling streaming-iterator v0.1.9
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling memo-map v0.3.3
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]    Compiling tree-sitter v0.24.7
[INFO] [stderr]    Compiling tree-sitter-bash v0.23.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling encoding_rs_io v0.1.7
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling inotify v0.10.2
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling memmap2 v0.9.10
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling notify v7.0.0
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling eventsource-stream v0.2.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling grep-searcher v0.1.16
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling grep-regex v0.1.14
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling minijinja v2.19.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling rust-agent v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `json`
[INFO] [stdout]   --> src/api/openai_compat.rs:37:18
[INFO] [stdout]    |
[INFO] [stdout] 37 | use serde_json::{json, 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 import: `serde_json::Value`
[INFO] [stdout]   --> src/tools/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fmt`
[INFO] [stdout]  --> src/main.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing_subscriber::{fmt, EnvFilter};
[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: `json`
[INFO] [stdout]   --> src/api/openai_compat.rs:37:18
[INFO] [stdout]    |
[INFO] [stdout] 37 | use serde_json::{json, Value};
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StreamEvent`
[INFO] [stdout]   --> src/api/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     StreamEvent,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PdfKgError`
[INFO] [stdout]   --> src/tools/pdfkg/mod.rs:26:31
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use client::{PdfKgClient, PdfKgError};
[INFO] [stdout]    |                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ToolError` and `ToolResult`
[INFO] [stdout]  --> src/tools/mod.rs:9:40
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use registry::{Tool, ToolRegistry, ToolResult, ToolError, ToolContext};
[INFO] [stdout]   |                                        ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/tools/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `model`, `stop_reason`, and `usage` are never read
[INFO] [stdout]   --> src/api/anthropic.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct CreateMessageResponse {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] 79 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 80 |     pub content: Vec<ContentBlock>,
[INFO] [stdout] 81 |     pub model: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 82 |     pub stop_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 83 |     pub usage: Usage,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CreateMessageResponse` 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: fields `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, and `cache_read_input_tokens` are never read
[INFO] [stdout]   --> src/api/anthropic.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct Usage {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 88 |     pub input_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 89 |     pub output_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 90 |     #[serde(default)]
[INFO] [stdout] 91 |     pub cache_creation_input_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     #[serde(default)]
[INFO] [stdout] 93 |     pub cache_read_input_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Usage` 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: enum `StreamEvent` is never used
[INFO] [stdout]   --> src/api/anthropic.rs:98:10
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub enum StreamEvent {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ContentDelta` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct ContentDelta {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartialMessage` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct PartialMessage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageDeltaData` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct MessageDeltaData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `create_message_stream` and `parse_sse_event` are never used
[INFO] [stdout]    --> src/api/anthropic.rs:161:18
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl AnthropicClient {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub async fn create_message_stream(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     fn parse_sse_event(buffer: &mut String) -> Option<StreamEvent> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `base_url` is never used
[INFO] [stdout]   --> src/api/openai_compat.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl OpenAICompatClient {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn base_url(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_turns` and `token_budget` are never read
[INFO] [stdout]   --> src/config/mod.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub max_turns: u32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 56 |     pub tool_timeout: Duration,
[INFO] [stdout] 57 |     pub token_budget: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: field `session_id` is never read
[INFO] [stdout]   --> src/tools/registry.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct ToolContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub session_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolContext` 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 `get` is never used
[INFO] [stdout]    --> src/tools/registry.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl ToolRegistry {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn get(&self, name: &str) -> Option<Arc<dyn Tool>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemorySystem` is never constructed
[INFO] [stdout]  --> src/memory/mod.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct MemorySystem;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `App` is never constructed
[INFO] [stdout]  --> src/tui/mod.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct App;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 44s
[INFO] running `Command { std: "docker" "inspect" "1dbd666a0cbd52dd9e3dbc777ff8e2fc0a07b1cf49eef38774cb66a81723ef32", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1dbd666a0cbd52dd9e3dbc777ff8e2fc0a07b1cf49eef38774cb66a81723ef32", kill_on_drop: false }`
[INFO] [stdout] 1dbd666a0cbd52dd9e3dbc777ff8e2fc0a07b1cf49eef38774cb66a81723ef32
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 369521e794f6ab818a88693baee25f12a1f74ccdd8d1f6cddd7545d9681781f7
[INFO] running `Command { std: "docker" "start" "-a" "369521e794f6ab818a88693baee25f12a1f74ccdd8d1f6cddd7545d9681781f7", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert_cmd v2.2.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling tree-sitter v0.24.7
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling rust-agent v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `json`
[INFO] [stdout]   --> src/api/openai_compat.rs:37:18
[INFO] [stdout]    |
[INFO] [stdout] 37 | use serde_json::{json, 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 import: `serde_json::Value`
[INFO] [stdout]   --> src/tools/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/tools/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::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 import: `crate::tools::Tool`
[INFO] [stdout]   --> src/tools/pdfkg/mod.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     use crate::tools::Tool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fmt`
[INFO] [stdout]  --> src/main.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing_subscriber::{fmt, EnvFilter};
[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: `json`
[INFO] [stdout]   --> src/api/openai_compat.rs:37:18
[INFO] [stdout]    |
[INFO] [stdout] 37 | use serde_json::{json, Value};
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StreamEvent`
[INFO] [stdout]   --> src/api/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     StreamEvent,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PdfKgError`
[INFO] [stdout]   --> src/tools/pdfkg/mod.rs:26:31
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use client::{PdfKgClient, PdfKgError};
[INFO] [stdout]    |                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ToolError` and `ToolResult`
[INFO] [stdout]  --> src/tools/mod.rs:9:40
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use registry::{Tool, ToolRegistry, ToolResult, ToolError, ToolContext};
[INFO] [stdout]   |                                        ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/tools/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fmt`
[INFO] [stdout]  --> src/main.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing_subscriber::{fmt, EnvFilter};
[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: `StreamEvent`
[INFO] [stdout]   --> src/api/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     StreamEvent,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PdfKgError`
[INFO] [stdout]   --> src/tools/pdfkg/mod.rs:26:31
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use client::{PdfKgClient, PdfKgError};
[INFO] [stdout]    |                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ToolError` and `ToolResult`
[INFO] [stdout]  --> src/tools/mod.rs:9:40
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use registry::{Tool, ToolRegistry, ToolResult, ToolError, ToolContext};
[INFO] [stdout]   |                                        ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/tools/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tools::Tool`
[INFO] [stdout]   --> src/tools/pdfkg/mod.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     use crate::tools::Tool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `model`, `stop_reason`, and `usage` are never read
[INFO] [stdout]   --> src/api/anthropic.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct CreateMessageResponse {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] 79 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 80 |     pub content: Vec<ContentBlock>,
[INFO] [stdout] 81 |     pub model: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 82 |     pub stop_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 83 |     pub usage: Usage,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CreateMessageResponse` 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: fields `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, and `cache_read_input_tokens` are never read
[INFO] [stdout]   --> src/api/anthropic.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct Usage {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 88 |     pub input_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 89 |     pub output_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 90 |     #[serde(default)]
[INFO] [stdout] 91 |     pub cache_creation_input_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     #[serde(default)]
[INFO] [stdout] 93 |     pub cache_read_input_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Usage` 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: enum `StreamEvent` is never used
[INFO] [stdout]   --> src/api/anthropic.rs:98:10
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub enum StreamEvent {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ContentDelta` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct ContentDelta {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartialMessage` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct PartialMessage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageDeltaData` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct MessageDeltaData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `create_message_stream` and `parse_sse_event` are never used
[INFO] [stdout]    --> src/api/anthropic.rs:161:18
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl AnthropicClient {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub async fn create_message_stream(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     fn parse_sse_event(buffer: &mut String) -> Option<StreamEvent> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `base_url` is never used
[INFO] [stdout]   --> src/api/openai_compat.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl OpenAICompatClient {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn base_url(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_turns` and `token_budget` are never read
[INFO] [stdout]   --> src/config/mod.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub max_turns: u32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 56 |     pub tool_timeout: Duration,
[INFO] [stdout] 57 |     pub token_budget: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: field `session_id` is never read
[INFO] [stdout]   --> src/tools/registry.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct ToolContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub session_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolContext` 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 `get` is never used
[INFO] [stdout]    --> src/tools/registry.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl ToolRegistry {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn get(&self, name: &str) -> Option<Arc<dyn Tool>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemorySystem` is never constructed
[INFO] [stdout]  --> src/memory/mod.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct MemorySystem;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `App` is never constructed
[INFO] [stdout]  --> src/tui/mod.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct App;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `stop_reason` are never read
[INFO] [stdout]   --> src/api/anthropic.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct CreateMessageResponse {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] 79 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub stop_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CreateMessageResponse` 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: fields `cache_creation_input_tokens` and `cache_read_input_tokens` are never read
[INFO] [stdout]   --> src/api/anthropic.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct Usage {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub cache_creation_input_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     #[serde(default)]
[INFO] [stdout] 93 |     pub cache_read_input_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Usage` 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: enum `StreamEvent` is never used
[INFO] [stdout]   --> src/api/anthropic.rs:98:10
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub enum StreamEvent {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ContentDelta` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct ContentDelta {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartialMessage` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct PartialMessage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageDeltaData` is never constructed
[INFO] [stdout]    --> src/api/anthropic.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct MessageDeltaData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `create_message_stream` and `parse_sse_event` are never used
[INFO] [stdout]    --> src/api/anthropic.rs:161:18
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl AnthropicClient {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub async fn create_message_stream(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     fn parse_sse_event(buffer: &mut String) -> Option<StreamEvent> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `base_url` is never used
[INFO] [stdout]   --> src/api/openai_compat.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl OpenAICompatClient {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn base_url(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_turns` and `token_budget` are never read
[INFO] [stdout]   --> src/config/mod.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub max_turns: u32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 56 |     pub tool_timeout: Duration,
[INFO] [stdout] 57 |     pub token_budget: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: field `session_id` is never read
[INFO] [stdout]   --> src/tools/registry.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct ToolContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub session_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolContext` 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 `get` is never used
[INFO] [stdout]    --> src/tools/registry.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl ToolRegistry {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn get(&self, name: &str) -> Option<Arc<dyn Tool>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemorySystem` is never constructed
[INFO] [stdout]  --> src/memory/mod.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct MemorySystem;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `App` is never constructed
[INFO] [stdout]  --> src/tui/mod.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct App;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 43.43s
[INFO] running `Command { std: "docker" "inspect" "369521e794f6ab818a88693baee25f12a1f74ccdd8d1f6cddd7545d9681781f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "369521e794f6ab818a88693baee25f12a1f74ccdd8d1f6cddd7545d9681781f7", kill_on_drop: false }`
[INFO] [stdout] 369521e794f6ab818a88693baee25f12a1f74ccdd8d1f6cddd7545d9681781f7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 15ee8103f4be7e878178a6ff2d0c6ab9515faf5825a9aa3042aaf4db3a0a912b
[INFO] running `Command { std: "docker" "start" "-a" "15ee8103f4be7e878178a6ff2d0c6ab9515faf5825a9aa3042aaf4db3a0a912b", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `json`
[INFO] [stderr]   --> src/api/openai_compat.rs:37:18
[INFO] [stderr]    |
[INFO] [stderr] 37 | use serde_json::{json, Value};
[INFO] [stderr]    |                  ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde_json::Value`
[INFO] [stderr]   --> src/tools/mod.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use serde_json::Value;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-agent` (lib) generated 2 warnings (run `cargo fix --lib -p rust-agent` to apply 2 suggestions)
[INFO] [stderr] warning: unused import: `fmt`
[INFO] [stderr]  --> src/main.rs:7:26
[INFO] [stderr]   |
[INFO] [stderr] 7 | use tracing_subscriber::{fmt, EnvFilter};
[INFO] [stderr]   |                          ^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `json`
[INFO] [stderr]   --> src/api/openai_compat.rs:37:18
[INFO] [stderr]    |
[INFO] [stderr] 37 | use serde_json::{json, Value};
[INFO] [stderr]    |                  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `StreamEvent`
[INFO] [stderr]   --> src/api/mod.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 |     StreamEvent,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `PdfKgError`
[INFO] [stderr]   --> src/tools/pdfkg/mod.rs:26:31
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub use client::{PdfKgClient, PdfKgError};
[INFO] [stderr]    |                               ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ToolError` and `ToolResult`
[INFO] [stderr]  --> src/tools/mod.rs:9:40
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use registry::{Tool, ToolRegistry, ToolResult, ToolError, ToolContext};
[INFO] [stderr]   |                                        ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `id`, `model`, `stop_reason`, and `usage` are never read
[INFO] [stderr]   --> src/api/anthropic.rs:79:9
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub struct CreateMessageResponse {
[INFO] [stderr]    |            --------------------- fields in this struct
[INFO] [stderr] 79 |     pub id: String,
[INFO] [stderr]    |         ^^
[INFO] [stderr] 80 |     pub content: Vec<ContentBlock>,
[INFO] [stderr] 81 |     pub model: String,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 82 |     pub stop_reason: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 83 |     pub usage: Usage,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CreateMessageResponse` 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: fields `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, and `cache_read_input_tokens` are never read
[INFO] [stderr]   --> src/api/anthropic.rs:88:9
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub struct Usage {
[INFO] [stderr]    |            ----- fields in this struct
[INFO] [stderr] 88 |     pub input_tokens: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 89 |     pub output_tokens: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 90 |     #[serde(default)]
[INFO] [stderr] 91 |     pub cache_creation_input_tokens: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 92 |     #[serde(default)]
[INFO] [stderr] 93 |     pub cache_read_input_tokens: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Usage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: enum `StreamEvent` is never used
[INFO] [stderr]   --> src/api/anthropic.rs:98:10
[INFO] [stderr]    |
[INFO] [stderr] 98 | pub enum StreamEvent {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ContentDelta` is never constructed
[INFO] [stderr]    --> src/api/anthropic.rs:110:12
[INFO] [stderr]     |
[INFO] [stderr] 110 | pub struct ContentDelta {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PartialMessage` is never constructed
[INFO] [stderr]    --> src/api/anthropic.rs:120:12
[INFO] [stderr]     |
[INFO] [stderr] 120 | pub struct PartialMessage {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MessageDeltaData` is never constructed
[INFO] [stderr]    --> src/api/anthropic.rs:126:12
[INFO] [stderr]     |
[INFO] [stderr] 126 | pub struct MessageDeltaData {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `create_message_stream` and `parse_sse_event` are never used
[INFO] [stderr]    --> src/api/anthropic.rs:161:18
[INFO] [stderr]     |
[INFO] [stderr] 130 | impl AnthropicClient {
[INFO] [stderr]     | -------------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 161 |     pub async fn create_message_stream(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 206 |     fn parse_sse_event(buffer: &mut String) -> Option<StreamEvent> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `base_url` is never used
[INFO] [stderr]   --> src/api/openai_compat.rs:83:12
[INFO] [stderr]    |
[INFO] [stderr] 59 | impl OpenAICompatClient {
[INFO] [stderr]    | ----------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 83 |     pub fn base_url(&self) -> &str {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `max_turns` and `token_budget` are never read
[INFO] [stderr]   --> src/config/mod.rs:55:9
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub struct Config {
[INFO] [stderr]    |            ------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 55 |     pub max_turns: u32,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 56 |     pub tool_timeout: Duration,
[INFO] [stderr] 57 |     pub token_budget: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `session_id` is never read
[INFO] [stderr]   --> src/tools/registry.rs:57:9
[INFO] [stderr]    |
[INFO] [stderr] 53 | pub struct ToolContext {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub session_id: String,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ToolContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `get` is never used
[INFO] [stderr]    --> src/tools/registry.rs:106:12
[INFO] [stderr]     |
[INFO] [stderr]  92 | impl ToolRegistry {
[INFO] [stderr]     | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 106 |     pub fn get(&self, name: &str) -> Option<Arc<dyn Tool>> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MemorySystem` is never constructed
[INFO] [stderr]  --> src/memory/mod.rs:2:12
[INFO] [stderr]   |
[INFO] [stderr] 2 | pub struct MemorySystem;
[INFO] [stderr]   |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `App` is never constructed
[INFO] [stderr]  --> src/tui/mod.rs:2:12
[INFO] [stderr]   |
[INFO] [stderr] 2 | pub struct App;
[INFO] [stderr]   |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-agent` (bin "rust-agent") generated 19 warnings (1 duplicate) (run `cargo fix --bin "rust-agent" -p rust-agent` to apply 5 suggestions)
[INFO] [stderr] warning: unused import: `serde_json::Value`
[INFO] [stderr]   --> src/tools/mod.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use serde_json::Value;
[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::tools::Tool`
[INFO] [stderr]   --> src/tools/pdfkg/mod.rs:67:9
[INFO] [stderr]    |
[INFO] [stderr] 67 |     use crate::tools::Tool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `id` and `stop_reason` are never read
[INFO] [stderr]   --> src/api/anthropic.rs:79:9
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub struct CreateMessageResponse {
[INFO] [stderr]    |            --------------------- fields in this struct
[INFO] [stderr] 79 |     pub id: String,
[INFO] [stderr]    |         ^^
[INFO] [stderr] ...
[INFO] [stderr] 82 |     pub stop_reason: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CreateMessageResponse` 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: fields `cache_creation_input_tokens` and `cache_read_input_tokens` are never read
[INFO] [stderr]   --> src/api/anthropic.rs:91:9
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub struct Usage {
[INFO] [stderr]    |            ----- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 91 |     pub cache_creation_input_tokens: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 92 |     #[serde(default)]
[INFO] [stderr] 93 |     pub cache_read_input_tokens: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Usage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-agent` (lib test) generated 2 warnings (run `cargo fix --lib -p rust-agent --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `rust-agent` (bin "rust-agent" test) generated 19 warnings (17 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.45s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rust_agent-8a5e0c19cc934c58)
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test api::openai_compat::tests::tool_result_splits_into_per_id_tool_messages ... ok
[INFO] [stdout] test engine::tests::mixed_with_dominant_chinese_flagged ... ok
[INFO] [stdout] test api::openai_compat::tests::malformed_arguments_string_surfaces_clear_error ... ok
[INFO] [stdout] test engine::tests::one_or_two_hanja_in_korean_passes ... ok
[INFO] [stdout] test api::openai_compat::tests::openai_response_with_tool_call_becomes_anthropic_tool_use ... ok
[INFO] [stdout] test api::openai_compat::tests::tool_use_round_trips_anthropic_to_openai ... ok
[INFO] [stdout] test engine::tests::pure_chinese_sentence_flagged ... ok
[INFO] [stdout] test engine::tests::pure_english_is_clean ... ok
[INFO] [stdout] test engine::tests::pure_korean_is_clean ... ok
[INFO] [stdout] test tools::pdfkg::tests::from_env_disabled_returns_none ... ok
[INFO] [stdout] test api::openai_compat::tests::tool_def_wraps_in_function_envelope ... ok
[INFO] [stdout] test tools::pdfkg::tests::from_env_default_falls_back_to_localhost ... ok
[INFO] [stdout] test tools::pdfkg::tests::register_adds_six_pdfkg_tools ... ok
[INFO] [stdout] test tools::pdfkg::tests::each_tool_has_object_input_schema_with_required_array ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rust_agent-714ffab0557dfa0f)
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test api::openai_compat::tests::tool_def_wraps_in_function_envelope ... ok
[INFO] [stdout] test api::openai_compat::tests::tool_result_splits_into_per_id_tool_messages ... ok
[INFO] [stdout] test api::openai_compat::tests::openai_response_with_tool_call_becomes_anthropic_tool_use ... ok
[INFO] [stdout] test engine::tests::mixed_with_dominant_chinese_flagged ... ok
[INFO] [stdout] test engine::tests::one_or_two_hanja_in_korean_passes ... ok
[INFO] [stdout] test engine::tests::pure_english_is_clean ... ok
[INFO] [stdout] test api::openai_compat::tests::malformed_arguments_string_surfaces_clear_error ... ok
[INFO] [stdout] test engine::tests::pure_chinese_sentence_flagged ... ok
[INFO] [stdout] test api::openai_compat::tests::tool_use_round_trips_anthropic_to_openai ... ok
[INFO] [stdout] test engine::tests::pure_korean_is_clean ... ok
[INFO] [stdout] test tools::pdfkg::tests::from_env_disabled_returns_none ... ok
[INFO] [stdout] test tools::pdfkg::tests::register_adds_six_pdfkg_tools ... ok
[INFO] [stdout] test tools::pdfkg::tests::each_tool_has_object_input_schema_with_required_array ... ok
[INFO] [stdout] test tools::pdfkg::tests::from_env_default_falls_back_to_localhost ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/pdfkg_integration.rs (/opt/rustwide/target/debug/deps/pdfkg_integration-6034e814db17f2d8)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test get_image_strips_base64_but_provides_bytes_url ... ok
[INFO] [stdout] test list_jobs_returns_json_with_job_summaries ... ok
[INFO] [stdout] test search_pdf_with_missing_query_returns_soft_error ... ok
[INFO] [stdout] test search_pdf_returns_hits_array ... ok
[INFO] [stderr]    Doc-tests rust_agent
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s
[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] running `Command { std: "docker" "inspect" "15ee8103f4be7e878178a6ff2d0c6ab9515faf5825a9aa3042aaf4db3a0a912b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "15ee8103f4be7e878178a6ff2d0c6ab9515faf5825a9aa3042aaf4db3a0a912b", kill_on_drop: false }`
[INFO] [stdout] 15ee8103f4be7e878178a6ff2d0c6ab9515faf5825a9aa3042aaf4db3a0a912b
