[INFO] cloning repository https://github.com/jiayan-xu/agent-core
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jiayan-xu/agent-core" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjiayan-xu%2Fagent-core", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjiayan-xu%2Fagent-core'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0dc276a8ea5527a9e7767981105b051caf26db1f
[INFO] checking jiayan-xu/agent-core against f4dd856795debe636f2ba39a900f162f5abeb7e8 for pr-160904
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjiayan-xu%2Fagent-core" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jiayan-xu/agent-core
[INFO] finished tweaking git repo https://github.com/jiayan-xu/agent-core
[INFO] tweaked toml for git repo https://github.com/jiayan-xu/agent-core written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jiayan-xu/agent-core on toolchain f4dd856795debe636f2ba39a900f162f5abeb7e8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jiayan-xu/agent-core 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" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "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/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790
[INFO] running `Command { std: "docker" "start" "e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790" "/opt/rustwide/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790" "/opt/rustwide/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling cfg-expr v0.15.8
[INFO] [stderr]    Compiling cc v1.2.65
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling x11 v2.21.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling gtk v0.18.2
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling time-macros v0.2.31
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking serde_json v1.0.150
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking toml_datetime v0.6.3
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]    Compiling dlopen2_derive v0.4.3
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking pxfm v0.1.29
[INFO] [stderr]    Compiling wry v0.49.0
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking winnow v0.5.40
[INFO] [stderr]     Checking dlopen2 v0.7.0
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking axum-core v0.5.6
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking time v0.3.53
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking open v5.3.6
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking toml_edit v0.20.2
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]    Compiling gtk3-macros v0.18.2
[INFO] [stderr]     Checking toml v0.8.2
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]    Compiling proc-macro-crate v2.0.2
[INFO] [stderr]     Checking h2 v0.4.15
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]    Compiling glib-macros v0.18.5
[INFO] [stderr]    Compiling system-deps v6.2.2
[INFO] [stderr]    Compiling glib-sys v0.18.1
[INFO] [stderr]    Compiling gobject-sys v0.18.0
[INFO] [stderr]    Compiling gio-sys v0.18.1
[INFO] [stderr]    Compiling gdk-sys v0.18.2
[INFO] [stderr]    Compiling cairo-sys-rs v0.18.2
[INFO] [stderr]    Compiling pango-sys v0.18.0
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.18.0
[INFO] [stderr]    Compiling atk-sys v0.18.2
[INFO] [stderr]    Compiling gtk-sys v0.18.2
[INFO] [stderr]    Compiling soup3-sys v0.5.0
[INFO] [stderr]    Compiling javascriptcore-rs-sys v1.1.1
[INFO] [stderr]    Compiling webkit2gtk-sys v2.0.1
[INFO] [stderr]    Compiling gdkx11-sys v0.18.2
[INFO] [stderr]     Checking gdkwayland-sys v0.18.2
[INFO] [stderr]     Checking glib v0.18.5
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking rusqlite v0.32.1
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking axum v0.8.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking gio v0.18.4
[INFO] [stderr]     Checking cairo-rs v0.18.5
[INFO] [stderr]     Checking atk v0.18.2
[INFO] [stderr]     Checking javascriptcore-rs v1.1.2
[INFO] [stderr]     Checking gdk-pixbuf v0.18.5
[INFO] [stderr]     Checking pango v0.18.3
[INFO] [stderr]     Checking soup3 v0.5.0
[INFO] [stderr]     Checking gdk v0.18.2
[INFO] [stderr]     Checking gdkx11 v0.18.2
[INFO] [stderr]     Checking webkit2gtk v2.0.1
[INFO] [stderr]     Checking tao v0.31.1
[INFO] [stderr]     Checking agent_core v0.10.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `CONSOLIDATE_MIN_OBS_CHARS_DEFAULT`
[INFO] [stdout]   --> src/consolidate_eval.rs:25:49
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::agent::{AgentCore, PatternReplyKind, CONSOLIDATE_MIN_OBS_CHARS_DEFAULT, PATTERN_BUDGET};
[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: `AtomicPtr` and `Ordering`
[INFO] [stdout]   --> src/sandbox.rs:18:25
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::sync::atomic::{AtomicPtr, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicPtr` and `Ordering`
[INFO] [stdout]   --> src/sandbox.rs:18:25
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::sync::atomic::{AtomicPtr, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/multiagent.rs:127:34
[INFO] [stdout]     |
[INFO] [stdout] 127 |         let _ = self.total_bytes.fetch_update(
[INFO] [stdout]     |                                  ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 127 -         let _ = self.total_bytes.fetch_update(
[INFO] [stdout] 127 +         let _ = self.total_bytes.try_update(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/multiagent.rs:207:38
[INFO] [stdout]     |
[INFO] [stdout] 207 |             let _ = self.total_bytes.fetch_update(
[INFO] [stdout]     |                                      ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 207 -             let _ = self.total_bytes.fetch_update(
[INFO] [stdout] 207 +             let _ = self.total_bytes.try_update(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::fs::OpenOptionsExt`
[INFO] [stdout]    --> src/multiagent.rs:263:17
[INFO] [stdout]     |
[INFO] [stdout] 263 |             use std::os::unix::fs::OpenOptionsExt;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/multiagent.rs:127:34
[INFO] [stdout]     |
[INFO] [stdout] 127 |         let _ = self.total_bytes.fetch_update(
[INFO] [stdout]     |                                  ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 127 -         let _ = self.total_bytes.fetch_update(
[INFO] [stdout] 127 +         let _ = self.total_bytes.try_update(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/multiagent.rs:207:38
[INFO] [stdout]     |
[INFO] [stdout] 207 |             let _ = self.total_bytes.fetch_update(
[INFO] [stdout]     |                                      ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 207 -             let _ = self.total_bytes.fetch_update(
[INFO] [stdout] 207 +             let _ = self.total_bytes.try_update(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::fs::OpenOptionsExt`
[INFO] [stdout]    --> src/multiagent.rs:263:17
[INFO] [stdout]     |
[INFO] [stdout] 263 |             use std::os::unix::fs::OpenOptionsExt;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/agent.rs:6844:13
[INFO] [stdout]      |
[INFO] [stdout] 6844 |         let mut push = |line: &str, facts: &mut Vec<String>| {
[INFO] [stdout]      |             ----^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/agent.rs:6844:13
[INFO] [stdout]      |
[INFO] [stdout] 6844 |         let mut push = |line: &str, facts: &mut Vec<String>| {
[INFO] [stdout]      |             ----^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `kind`
[INFO] [stdout]      --> src/agent.rs:16336:23
[INFO] [stdout]       |
[INFO] [stdout] 16336 |         let (text, k, kind) = AgentCore::truncate_json_records(raw, 20);
[INFO] [stdout]       |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_kind`
[INFO] [stdout]       |
[INFO] [stdout]       = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `kind`
[INFO] [stdout]      --> src/agent.rs:16349:23
[INFO] [stdout]       |
[INFO] [stdout] 16349 |         let (text, k, kind) = AgentCore::truncate_json_records(raw, 40);
[INFO] [stdout]       |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_kind`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `kind4`
[INFO] [stdout]      --> src/agent.rs:16372:25
[INFO] [stdout]       |
[INFO] [stdout] 16372 |         let (text4, k4, kind4) = AgentCore::truncate_json_records("[1,2,3]", 100);
[INFO] [stdout]       |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_kind4`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/boundary.rs:2583:13
[INFO] [stdout]      |
[INFO] [stdout] 2583 |         let mut boundary = ComplianceBoundary::new(None);
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/boundary.rs:2618:13
[INFO] [stdout]      |
[INFO] [stdout] 2618 |         let mut boundary = ComplianceBoundary::new(Some(vec!["query_sql".to_string()]));
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/boundary.rs:2709:13
[INFO] [stdout]      |
[INFO] [stdout] 2709 |         let mut boundary = ComplianceBoundary::new(None);
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/boundary.rs:2817:13
[INFO] [stdout]      |
[INFO] [stdout] 2817 |         let mut classifier = b.classifier.lock().unwrap();
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/boundary.rs:2832:13
[INFO] [stdout]      |
[INFO] [stdout] 2832 |         let mut boundary = ComplianceBoundary::new(None);
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/boundary.rs:2874:13
[INFO] [stdout]      |
[INFO] [stdout] 2874 |         let mut boundary = ComplianceBoundary::new(None);
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tool_name`, `messages_before`, `session_id`, `trace_id`, and `captured_at_ms` are never read
[INFO] [stdout]    --> src/agent.rs:280:16
[INFO] [stdout]     |
[INFO] [stdout] 278 | pub(crate) struct MutationSnapshot {
[INFO] [stdout]     |                   ---------------- fields in this struct
[INFO] [stdout] 279 |     /// 触发快照的写工具名
[INFO] [stdout] 280 |     pub(crate) tool_name: String,
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 281 |     /// 捕获时该 run 的消息列表（含系统 prompt 与已执行工具结果）
[INFO] [stdout] 282 |     pub(crate) messages_before: Vec<crate::llm::Message>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 283 |     pub(crate) session_id: String,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 284 |     pub(crate) trace_id: String,
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 285 |     pub(crate) captured_at_ms: u64,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MutationSnapshot` 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 `sub_agents`, `sub_agent_seq`, and `sub_agents_file` are never read
[INFO] [stdout]    --> src/agent.rs:445:16
[INFO] [stdout]     |
[INFO] [stdout] 368 | pub struct AgentCore {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub(crate) sub_agents: std::sync::Arc<tokio::sync::Mutex<crate::persistent_subagent::SubAgentRegistry>>,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 446 |     /// 子 agent id 序列号（单调递增，spawn 时分配）
[INFO] [stdout] 447 |     pub(crate) sub_agent_seq: std::sync::atomic::AtomicU64,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 450 |     pub(crate) sub_agents_file: String,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `take_mutation_snapshot`, `sub_agent_spawn`, `sub_agent_send`, `sub_agent_list`, and `sub_agent_take_inbox` are never used
[INFO] [stdout]      --> src/agent.rs:9419:25
[INFO] [stdout]       |
[INFO] [stdout]  1567 | impl AgentCore {
[INFO] [stdout]       | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  9419 |     pub(crate) async fn take_mutation_snapshot(
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10398 |     pub(crate) async fn sub_agent_spawn(
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10433 |     pub(crate) async fn sub_agent_send(
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10466 |     pub(crate) async fn sub_agent_list(&self) -> Vec<serde_json::Value> {
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10490 |     pub(crate) async fn sub_agent_take_inbox(
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `http`
[INFO] [stdout]    --> src/mcp_client.rs:706:32
[INFO] [stdout]     |
[INFO] [stdout] 706 |         if let McpClient::Http(ref http) = client {
[INFO] [stdout]     |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_http`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::http::StatusCode`
[INFO] [stdout]   --> src/handlers/approval.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use axum::http::StatusCode;
[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: `axum::http::StatusCode`
[INFO] [stdout]   --> src/handlers/approval.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use axum::http::StatusCode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tool_name`, `messages_before`, and `captured_at_ms` are never read
[INFO] [stdout]    --> src/agent.rs:280:16
[INFO] [stdout]     |
[INFO] [stdout] 278 | pub(crate) struct MutationSnapshot {
[INFO] [stdout]     |                   ---------------- fields in this struct
[INFO] [stdout] 279 |     /// 触发快照的写工具名
[INFO] [stdout] 280 |     pub(crate) tool_name: String,
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 281 |     /// 捕获时该 run 的消息列表（含系统 prompt 与已执行工具结果）
[INFO] [stdout] 282 |     pub(crate) messages_before: Vec<crate::llm::Message>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub(crate) captured_at_ms: u64,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MutationSnapshot` 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 `sub_agents`, `sub_agent_seq`, and `sub_agents_file` are never read
[INFO] [stdout]    --> src/agent.rs:445:16
[INFO] [stdout]     |
[INFO] [stdout] 368 | pub struct AgentCore {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub(crate) sub_agents: std::sync::Arc<tokio::sync::Mutex<crate::persistent_subagent::SubAgentRegistry>>,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 446 |     /// 子 agent id 序列号（单调递增，spawn 时分配）
[INFO] [stdout] 447 |     pub(crate) sub_agent_seq: std::sync::atomic::AtomicU64,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 450 |     pub(crate) sub_agents_file: String,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `take_mutation_snapshot`, `sub_agent_spawn`, `sub_agent_send`, `sub_agent_list`, and `sub_agent_take_inbox` are never used
[INFO] [stdout]      --> src/agent.rs:9419:25
[INFO] [stdout]       |
[INFO] [stdout]  1567 | impl AgentCore {
[INFO] [stdout]       | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  9419 |     pub(crate) async fn take_mutation_snapshot(
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10398 |     pub(crate) async fn sub_agent_spawn(
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10433 |     pub(crate) async fn sub_agent_send(
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10466 |     pub(crate) async fn sub_agent_list(&self) -> Vec<serde_json::Value> {
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10490 |     pub(crate) async fn sub_agent_take_inbox(
[INFO] [stdout]       |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: overflow evaluating the requirement `{async block@src/handlers/chat.rs:114:22: 114:32}: Send`
[INFO] [stdout]    --> src/handlers/chat.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 | /         tokio::spawn(async move {
[INFO] [stdout] 115 | |             // 解串行：克隆 Arc 后释放锁，chat() 并发执行
[INFO] [stdout] 116 | |             let agent = {
[INFO] [stdout] 117 | |                 let g = st_clone.agent.lock().await;
[INFO] [stdout] ...   |
[INFO] [stdout] 136 | |             let _ = tx.send(Ok(SseEvent::default().data("").event("done")));
[INFO] [stdout] 137 | |         });
[INFO] [stdout]     | |__________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: which requires `{coroutine witness@src/handlers/chat.rs:114:22: 114:32}: Send`
[INFO] [stdout]     = note: which requires `impl Future<Output = std::string::String>: Send`
[INFO] [stdout]     = note: which requires `{async fn body of AgentCore::chat()}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::chat::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `{async block@AgentCore::chat::{closure#0}::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::chat::{closure#0}::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `impl Future<Output = std::string::String>: Send`
[INFO] [stdout]     = note: which requires `{async fn body of AgentCore::chat_inner()}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::chat_inner::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `impl Future<Output = std::string::String>: Send`
[INFO] [stdout]     = note: which requires `{async fn body of AgentCore::execute_chat()}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::execute_chat::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `impl Future<Output = std::string::String>: Send`
[INFO] [stdout]     = note: which requires `{async fn body of AgentCore::llm_loop()}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::llm_loop::{closure#0}}: Send`
[INFO] [stdout]     = note: and so on...
[INFO] [stdout]     = help: consider adding a manual `impl` of auto traits like `Send` for intermediate types, if auto traits are involved
[INFO] [stdout]     = help: or consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`agent_core`)
[INFO] [stdout]     = note: this lint is attached to the whole crate and can't be disabled on a per-function basis
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #159228 <https://github.com/rust-lang/rust/issues/159228>
[INFO] [stdout]     = note: `#[warn(recursion_depth_exceeding_limit)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: overflow evaluating the requirement `{async block@src/handlers/chat.rs:114:22: 114:32}: Send`
[INFO] [stdout]    --> src/handlers/chat.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 | /         tokio::spawn(async move {
[INFO] [stdout] 115 | |             // 解串行：克隆 Arc 后释放锁，chat() 并发执行
[INFO] [stdout] 116 | |             let agent = {
[INFO] [stdout] 117 | |                 let g = st_clone.agent.lock().await;
[INFO] [stdout] ...   |
[INFO] [stdout] 136 | |             let _ = tx.send(Ok(SseEvent::default().data("").event("done")));
[INFO] [stdout] 137 | |         });
[INFO] [stdout]     | |__________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: which requires `{coroutine witness@src/handlers/chat.rs:114:22: 114:32}: Send`
[INFO] [stdout]     = note: which requires `impl Future<Output = std::string::String>: Send`
[INFO] [stdout]     = note: which requires `{async fn body of AgentCore::chat()}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::chat::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `{async block@AgentCore::chat::{closure#0}::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::chat::{closure#0}::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `impl Future<Output = std::string::String>: Send`
[INFO] [stdout]     = note: which requires `{async fn body of AgentCore::chat_inner()}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::chat_inner::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `impl Future<Output = std::string::String>: Send`
[INFO] [stdout]     = note: which requires `{async fn body of AgentCore::execute_chat()}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::execute_chat::{closure#0}}: Send`
[INFO] [stdout]     = note: which requires `impl Future<Output = std::string::String>: Send`
[INFO] [stdout]     = note: which requires `{async fn body of AgentCore::llm_loop()}: Send`
[INFO] [stdout]     = note: which requires `{coroutine witness@AgentCore::llm_loop::{closure#0}}: Send`
[INFO] [stdout]     = note: and so on...
[INFO] [stdout]     = help: consider adding a manual `impl` of auto traits like `Send` for intermediate types, if auto traits are involved
[INFO] [stdout]     = help: or consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`agent_core`)
[INFO] [stdout]     = note: this lint is attached to the whole crate and can't be disabled on a per-function basis
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #159228 <https://github.com/rust-lang/rust/issues/159228>
[INFO] [stdout]     = note: `#[warn(recursion_depth_exceeding_limit)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `member_depts` is never used
[INFO] [stdout]    --> src/auth.rs:379:21
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub(crate) async fn member_depts(st: &Arc<AppState>, agent_id: &str) -> HashSet<String> {
[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 `member_depts` is never used
[INFO] [stdout]    --> src/auth.rs:379:21
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub(crate) async fn member_depts(st: &Arc<AppState>, agent_id: &str) -> HashSet<String> {
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `open`
[INFO] [stderr]  --> Cargo.toml:8:1
[INFO] [stderr]   |
[INFO] [stderr] 8 | open = "5"
[INFO] [stderr]   | ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `open`
[INFO] [stderr] warning: `agent_core` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 08s
[INFO] running `Command { std: "docker" "inspect" "e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790", kill_on_drop: false }`
[INFO] [stdout] e5cb231d7085c92f4fbc75d7d0786e20378bcbd4696e4a0c22ba80f67d715790
