[INFO] cloning repository https://github.com/natsume-stack/deepseek-codewhale-desktop
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/natsume-stack/deepseek-codewhale-desktop" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnatsume-stack%2Fdeepseek-codewhale-desktop", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnatsume-stack%2Fdeepseek-codewhale-desktop'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0c70a400dc9be3000272607496181b7b1b0ec780
[INFO] checking natsume-stack/deepseek-codewhale-desktop against e4d5758286bf2cf6f415802f2cf861747a7c6c8c for pr-152972
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnatsume-stack%2Fdeepseek-codewhale-desktop" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/natsume-stack/deepseek-codewhale-desktop
[INFO] finished tweaking git repo https://github.com/natsume-stack/deepseek-codewhale-desktop
[INFO] tweaked toml for git repo https://github.com/natsume-stack/deepseek-codewhale-desktop written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/natsume-stack/deepseek-codewhale-desktop on toolchain e4d5758286bf2cf6f415802f2cf861747a7c6c8c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e4d5758286bf2cf6f415802f2cf861747a7c6c8c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/natsume-stack/deepseek-codewhale-desktop 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" "+e4d5758286bf2cf6f415802f2cf861747a7c6c8c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef
[INFO] running `Command { std: "docker" "start" "1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef", 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" "1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef" "/opt/rustwide/cargo-home/bin/cargo" "+e4d5758286bf2cf6f415802f2cf861747a7c6c8c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef", 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" "1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef" "/opt/rustwide/cargo-home/bin/cargo" "+e4d5758286bf2cf6f415802f2cf861747a7c6c8c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling rustls v0.23.42
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking serde_json v1.0.151
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking regex-automata v0.4.16
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking regex v1.13.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[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 displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking futures-util v0.3.33
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking serde v1.0.229
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking hyper v1.11.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking codewhale-server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: cannot find macro `json` in this scope
[INFO] [stdout]     --> src/agent/react_engine.rs:1092:17
[INFO] [stdout]      |
[INFO] [stdout] 1092 |         let v = json!({"tool": "read_file", "args": {"path": "src/lib.rs"}});
[INFO] [stdout]      |                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: macro `crate::routes::git::tests::json` exists but is inaccessible
[INFO] [stdout] help: consider importing this macro
[INFO] [stdout]      |
[INFO] [stdout] 1057 +     use serde_json::json;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `McpBridge` and `McpToolWrapper`
[INFO] [stdout]   --> src/agent/tools/mod.rs:31:22
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use mcp_bridge::{McpBridge, McpToolWrapper};
[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: `PersistentShell`
[INFO] [stdout]   --> src/agent/tools/mod.rs:33:27
[INFO] [stdout]    |
[INFO] [stdout] 33 |     global_shell_manager, PersistentShell, PersistentShellExecTool, ShellSessionCloseTool,
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `McpBridge` and `McpToolWrapper`
[INFO] [stdout]   --> src/agent/tools/mod.rs:31:22
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use mcp_bridge::{McpBridge, McpToolWrapper};
[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: `PersistentShell`
[INFO] [stdout]   --> src/agent/tools/mod.rs:33:27
[INFO] [stdout]    |
[INFO] [stdout] 33 |     global_shell_manager, PersistentShell, PersistentShellExecTool, ShellSessionCloseTool,
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/routes/chat.rs:476:21
[INFO] [stdout]     |
[INFO] [stdout] 476 |                 let mut new_messages = match sessions
[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/routes/chat.rs:476:21
[INFO] [stdout]     |
[INFO] [stdout] 476 |                 let mut new_messages = match sessions
[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: value assigned to `step_observation` is never read
[INFO] [stdout]    --> src/agent/react_engine.rs:489:40
[INFO] [stdout]     |
[INFO] [stdout] 489 |             let mut step_observation = String::new();
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 520 |                     step_observation = format!(
[INFO] [stdout]     |                     ---------------- `step_observation` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `step_observation` is never read
[INFO] [stdout]    --> src/agent/react_engine.rs:489:40
[INFO] [stdout]     |
[INFO] [stdout] 489 |             let mut step_observation = String::new();
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 520 |                     step_observation = format!(
[INFO] [stdout]     |                     ---------------- `step_observation` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `perm_cfg` is assigned to, but never used
[INFO] [stdout]    --> src/routes/chat.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut perm_cfg = state.permission_config().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_perm_cfg` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `perm_cfg` is never read
[INFO] [stdout]    --> src/routes/chat.rs:132:9
[INFO] [stdout]     |
[INFO] [stdout] 132 |         perm_cfg.level = crate::config::PermissionLevel::ReadOnly;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stat`
[INFO] [stdout]    --> src/routes/git.rs:692:13
[INFO] [stdout]     |
[INFO] [stdout] 692 |         let stat = " src/api/users.rs | 5 +-\n";
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_stat`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `perm_cfg` is assigned to, but never used
[INFO] [stdout]    --> src/routes/chat.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut perm_cfg = state.permission_config().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_perm_cfg` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `perm_cfg` is never read
[INFO] [stdout]    --> src/routes/chat.rs:132:9
[INFO] [stdout]     |
[INFO] [stdout] 132 |         perm_cfg.level = crate::config::PermissionLevel::ReadOnly;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `codewhale-server` (bin "codewhale-server" test) due to 1 previous error; 7 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: variant `Rejected` is never constructed
[INFO] [stdout]   --> src/agent/mode_router.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum ModeDecision {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 28 |     Rejected(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ModeDecision` 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: function `is_approval_approved` is never used
[INFO] [stdout]   --> src/agent/mode_router.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn is_approval_approved(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_config` and `register_tool` are never used
[INFO] [stdout]    --> src/agent/react_engine.rs:122:18
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl AgentRuntime {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn update_config(&self, cfg: DeepSeekConfig) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn register_tool(&self, tool: SharedTool) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_running` is never used
[INFO] [stdout]   --> src/agent/state_machine.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl TaskState {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_running(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StateTransition` is never constructed
[INFO] [stdout]    --> src/agent/state_machine.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct StateTransition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_resumable` and `is_iteration_exhausted` are never used
[INFO] [stdout]    --> src/agent/task_store.rs:97:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl AgentTask {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn is_resumable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn is_iteration_exhausted(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `delete` and `load_from_disk` are never used
[INFO] [stdout]    --> src/agent/task_store.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl TaskStore {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn delete(&self, id: Uuid) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub fn load_from_disk(&self) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `len` and `is_empty` are never used
[INFO] [stdout]    --> src/agent/task_store.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 293 | impl TaskStore {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 294 |     /// 当前内存中任务总数。
[INFO] [stdout] 295 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_artifact` is never used
[INFO] [stdout]    --> src/agent/tool_protocol.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl ToolResult {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn with_artifact(mut self, artifact: ToolArtifact) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `task_id`, `session_id`, and `working_dir` are never read
[INFO] [stdout]    --> src/agent/tool_protocol.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct ExecutionContext {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 135 |     /// 当前任务 ID。
[INFO] [stdout] 136 |     pub task_id: Uuid,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 137 |     /// 关联会话 ID。
[INFO] [stdout] 138 |     pub session_id: Uuid,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub working_dir: PathBuf,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExecutionContext` 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: associated function `new` is never used
[INFO] [stdout]    --> src/agent/tool_protocol.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | impl ExecutionContext {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 148 |     /// 创建一个新的上下文,working_dir 默认等于 project_root。
[INFO] [stdout] 149 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Permission` is never constructed
[INFO] [stdout]    --> src/agent/tool_protocol.rs:178:5
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub enum ToolError {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 178 |     Permission {
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ToolError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_cancelled` is never used
[INFO] [stdout]    --> src/agent/tool_protocol.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | impl ToolError {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 197 |     /// 是否为用户主动取消。
[INFO] [stdout] 198 |     pub fn is_cancelled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpBridge` is never constructed
[INFO] [stdout]   --> src/agent/tools/mcp_bridge.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct McpBridge {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `list_tools`, and `make_wrapper` are never used
[INFO] [stdout]   --> src/agent/tools/mcp_bridge.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl McpBridge {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 30 |     pub fn new(mcp_store: Arc<McpStore>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub async fn list_tools(&self) -> Vec<McpToolWrapper> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn make_wrapper(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpToolWrapper` is never constructed
[INFO] [stdout]   --> src/agent/tools/mcp_bridge.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct McpToolWrapper {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `full_name` and `leak_string` are never used
[INFO] [stdout]   --> src/agent/tools/mcp_bridge.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | impl McpToolWrapper {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 81 |     /// 完整工具名: "mcp.{plugin_id}.{tool_name}"
[INFO] [stdout] 82 |     fn full_name(&self) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     fn leak_string(s: String) -> &'static str {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `created_at` is never read
[INFO] [stdout]   --> src/agent/tools/persistent_shell.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct PersistentShell {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub created_at: chrono::DateTime<chrono::Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `close_all` is never used
[INFO] [stdout]    --> src/agent/tools/persistent_shell.rs:367:18
[INFO] [stdout]     |
[INFO] [stdout] 332 | impl ShellSessionManager {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub async fn close_all(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `build_context` and `compress_history` are never used
[INFO] [stdout]    --> src/cache.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl PrefixCache {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn build_context(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn compress_history(&mut self, max_messages: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get` and `save` are never used
[INFO] [stdout]    --> src/cache.rs:302:18
[INFO] [stdout]     |
[INFO] [stdout] 297 | impl CacheStore {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 302 |     pub async fn get(&self, session_id: &str) -> Option<PrefixCache> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub async fn save(&self, cache: PrefixCache) {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_ignored_dir` is never used
[INFO] [stdout]    --> src/config.rs:397:8
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub fn is_ignored_dir(name: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `enable_cache` is never read
[INFO] [stdout]    --> src/deepseek.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct ChatRequest {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub enable_cache: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reject_hunk` is never used
[INFO] [stdout]    --> src/diff.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub fn reject_hunk(old: &str, _hunk: &Hunk) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_xml` and `from_json` are never used
[INFO] [stdout]    --> src/dsml.rs:36:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl DsmlToolCall {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  35 |     /// 序列化为 DSML XML 标签。
[INFO] [stdout]  36 |     pub fn to_xml(&self) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn from_json(json: &str) -> AppResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_read_file` is never used
[INFO] [stdout]    --> src/dsml.rs:184:8
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub fn build_read_file(path: &str) -> DsmlToolCall {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_write_file` is never used
[INFO] [stdout]    --> src/dsml.rs:194:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub fn build_write_file(path: &str, content: &str) -> DsmlToolCall {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_shell` is never used
[INFO] [stdout]    --> src/dsml.rs:204:8
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub fn build_shell(command: &str) -> DsmlToolCall {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_git_commit` is never used
[INFO] [stdout]    --> src/dsml.rs:214:8
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub fn build_git_commit(message: &str, conventional: bool) -> DsmlToolCall {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_git_pr_review` is never used
[INFO] [stdout]    --> src/dsml.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn build_git_pr_review(pr_number: u32) -> DsmlToolCall {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_permission` is never used
[INFO] [stdout]    --> src/dsml.rs:239:8
[INFO] [stdout]     |
[INFO] [stdout] 239 | pub fn check_permission(call: &DsmlToolCall, level: PermissionLevel) -> (bool, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `permission_to_str` is never used
[INFO] [stdout]    --> src/dsml.rs:254:4
[INFO] [stdout]     |
[INFO] [stdout] 254 | fn permission_to_str(p: PermissionLevel) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `permission_granted` is never used
[INFO] [stdout]    --> src/dsml.rs:272:4
[INFO] [stdout]     |
[INFO] [stdout] 272 | fn permission_granted(current: PermissionLevel, required: PermissionLevel) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xml_escape` is never used
[INFO] [stdout]    --> src/dsml.rs:283:4
[INFO] [stdout]     |
[INFO] [stdout] 283 | fn xml_escape(s: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `build_cache_summary` is never used
[INFO] [stdout]    --> src/mcp.rs:342:18
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl McpStore {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub async fn build_cache_summary(&self) -> String {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HarvestedTool` is never constructed
[INFO] [stdout]   --> src/r1_harvest.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct HarvestedTool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `harvest_tools` is never used
[INFO] [stdout]   --> src/r1_harvest.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn harvest_tools(reasoning: &str) -> Vec<HarvestedTool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_dsml` is never used
[INFO] [stdout]   --> src/r1_harvest.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn to_dsml(tool: &HarvestedTool) -> String {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `harvest_json_fenced` is never used
[INFO] [stdout]   --> src/r1_harvest.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn harvest_json_fenced(reasoning: &str) -> Vec<HarvestedTool> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `harvest_xml_style` is never used
[INFO] [stdout]    --> src/r1_harvest.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn harvest_xml_style(reasoning: &str) -> Vec<HarvestedTool> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_xml_tool` is never used
[INFO] [stdout]    --> src/r1_harvest.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn parse_xml_tool(block: &str) -> Option<HarvestedTool> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `harvest_natural_language` is never used
[INFO] [stdout]    --> src/r1_harvest.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn harvest_natural_language(reasoning: &str) -> Vec<HarvestedTool> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_xml` is never used
[INFO] [stdout]    --> src/r1_harvest.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn escape_xml(s: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_context` is never used
[INFO] [stdout]    --> src/routes/../rag.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub fn format_context(recall: &RagRecall) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_project_root` and `save_cache` are never used
[INFO] [stdout]    --> src/session.rs:111:18
[INFO] [stdout]     |
[INFO] [stdout]  57 | impl SessionManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn set_project_root(&self, id: &str, root: PathBuf) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub async fn save_cache(&self, id: &str, cache: PrefixCache) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `build_cache_summary` is never used
[INFO] [stdout]    --> src/skills.rs:218:18
[INFO] [stdout]     |
[INFO] [stdout]  99 | impl SkillStore {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub async fn build_cache_summary(&self) -> String {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Complexity` is never used
[INFO] [stdout]   --> src/smart_router.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum Complexity {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RouteDecision` is never constructed
[INFO] [stdout]   --> src/smart_router.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct RouteDecision {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `route` is never used
[INFO] [stdout]   --> src/smart_router.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn route(message: &str, _context: &str) -> RouteDecision {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConcurrencyLimiter` is never constructed
[INFO] [stdout]    --> src/smart_router.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct ConcurrencyLimiter {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `acquire`, `max`, and `available_permits` are never used
[INFO] [stdout]    --> src/smart_router.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl ConcurrencyLimiter {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 173 |     pub fn new(max: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn acquire(&self) -> AppResult<SemaphorePermit<'_>> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn max(&self) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn available_permits(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ShellExec` is never constructed
[INFO] [stdout]    --> src/state.rs:266:5
[INFO] [stdout]     |
[INFO] [stdout] 256 | pub enum PendingAction {
[INFO] [stdout]     |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 266 |     ShellExec {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PendingAction` 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: function `repair_truncated_json` is never used
[INFO] [stdout]   --> src/tool_repair.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn repair_truncated_json(s: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repair_deep_nested` is never used
[INFO] [stdout]   --> src/tool_repair.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn repair_deep_nested(args: Value) -> Value {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `flatten_value` is never used
[INFO] [stdout]   --> src/tool_repair.rs:91:4
[INFO] [stdout]    |
[INFO] [stdout] 91 | fn flatten_value(v: Value, prefix: Option<String>, depth: usize) -> Value {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_storm_calls` is never used
[INFO] [stdout]    --> src/tool_repair.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn detect_storm_calls(history: &[Value]) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repair_tool_call` is never used
[INFO] [stdout]    --> src/tool_repair.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn repair_tool_call(raw: &str, history: &[Value]) -> AppResult<Value> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `git_readonly` is never used
[INFO] [stdout]    --> src/tools.rs:142:14
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub async fn git_readonly(root: &Path, args: Vec<String>) -> AppResult<CommandResult> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsml_read_file` is never used
[INFO] [stdout]    --> src/tools.rs:608:8
[INFO] [stdout]     |
[INFO] [stdout] 608 | pub fn dsml_read_file(path: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsml_write_file` is never used
[INFO] [stdout]    --> src/tools.rs:613:8
[INFO] [stdout]     |
[INFO] [stdout] 613 | pub fn dsml_write_file(path: &str, content: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsml_shell` is never used
[INFO] [stdout]    --> src/tools.rs:618:8
[INFO] [stdout]     |
[INFO] [stdout] 618 | pub fn dsml_shell(command: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef", kill_on_drop: false }`
[INFO] [stdout] 1bfccebe1c526b67182efb437ea820581378f09b47b171ba0b6b0ebc38722eef
