[INFO] cloning repository https://github.com/nick-2030/ZeroBot
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nick-2030/ZeroBot" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick-2030%2FZeroBot", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick-2030%2FZeroBot'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 71422224b9b1a4d68d43202d76cc964766504dc9
[INFO] testing nick-2030/ZeroBot against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick-2030%2FZeroBot" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/nick-2030/ZeroBot
[INFO] finished tweaking git repo https://github.com/nick-2030/ZeroBot
[INFO] tweaked toml for git repo https://github.com/nick-2030/ZeroBot written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/nick-2030/ZeroBot on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/nick-2030/ZeroBot already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded basic-cookies v0.1.5
[INFO] [stderr]   Downloaded async-object-pool v0.1.5
[INFO] [stderr]   Downloaded httpmock v0.7.0
[INFO] [stderr]   Downloaded serde_regex v1.1.0
[INFO] [stderr]   Downloaded ena v0.14.4
[INFO] [stderr]   Downloaded agent-client-protocol v0.10.3
[INFO] [stderr]   Downloaded plist v1.8.0
[INFO] [stderr]   Downloaded pulldown-cmark-escape v0.11.0
[INFO] [stderr]   Downloaded agent-client-protocol-schema v0.11.3
[INFO] [stderr]   Downloaded rustyline v14.0.0
[INFO] [stderr]   Downloaded quick-xml v0.38.4
[INFO] [stderr]   Downloaded pulldown-cmark v0.11.3
[INFO] [stderr]   Downloaded zune-jpeg v0.5.13
[INFO] [stderr]   Downloaded pxfm v0.1.28
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722
[INFO] running `Command { std: "docker" "start" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722", 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" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling onig_sys v69.9.1
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling tungstenite v0.24.0
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling async-broadcast v0.7.2
[INFO] [stderr]    Compiling agent-client-protocol-schema v0.11.3
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling prost-derive v0.13.5
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling sha1_smol v1.0.1
[INFO] [stderr]    Compiling pxfm v0.1.28
[INFO] [stderr]    Compiling uuid v1.22.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling prost v0.13.5
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling cron v0.12.1
[INFO] [stderr]    Compiling diffy v0.3.0
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling nibble_vec v0.1.0
[INFO] [stderr]    Compiling quick-xml v0.38.4
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling pulldown-cmark v0.11.3
[INFO] [stderr]    Compiling agent-client-protocol v0.10.3
[INFO] [stderr]    Compiling endian-type v0.1.2
[INFO] [stderr]    Compiling radix_trie v0.2.1
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling plist v1.8.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling compact_str v0.7.1
[INFO] [stderr]    Compiling onig v6.5.1
[INFO] [stderr]    Compiling crossterm v0.27.0
[INFO] [stderr]    Compiling fd-lock v4.0.4
[INFO] [stderr]    Compiling itertools v0.12.1
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling zerobot-core v0.1.0 (/opt/rustwide/workdir/crates/zerobot-core)
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling stability v0.2.1
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling ratatui v0.26.3
[INFO] [stderr]    Compiling rustyline v14.0.0
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling syntect v5.3.0
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling zerobot-sdk v0.2.0 (/opt/rustwide/workdir/crates/zerobot-sdk)
[INFO] [stdout] warning: fields `max_turns` and `max_budget_usd` are never read
[INFO] [stdout]   --> crates/zerobot-sdk/src/engine.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct QueryEngine {
[INFO] [stdout]    |                   ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub(crate) max_turns: Option<usize>,
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 33 |     pub(crate) max_budget_usd: Option<f64>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `permission_mode` and `interaction_handler` are never read
[INFO] [stdout]   --> crates/zerobot-sdk/src/options.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Options {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub(crate) permission_mode: Option<PermissionMode>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub(crate) interaction_handler: Option<Arc<dyn InteractionHandler>>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling zerobot-cli v0.1.0 (/opt/rustwide/workdir/crates/zerobot-cli)
[INFO] [stdout] warning: unused import: `init_logging`
[INFO] [stdout]   --> crates/zerobot-cli/src/main.rs:21:29
[INFO] [stdout]    |
[INFO] [stdout] 21 | use zerobot_core::logging::{init_logging, init_logging_with_stdout};
[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: `Modifier`
[INFO] [stdout]  --> crates/zerobot-cli/src/tui/components/input_line.rs:5:22
[INFO] [stdout]   |
[INFO] [stdout] 5 | use ratatui::style::{Modifier, Style};
[INFO] [stdout]   |                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Modifier`
[INFO] [stdout]  --> crates/zerobot-cli/src/tui/components/status_bar.rs:7:29
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ratatui::style::{Color, Modifier, Style};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scroll_box::ScrollBoxState`
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use scroll_box::ScrollBoxState;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/components/messages.rs:204:5
[INFO] [stdout]     |
[INFO] [stdout] 204 |     label: Option<&str>,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `box_width`
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/mod.rs:836:9
[INFO] [stdout]     |
[INFO] [stdout] 836 |     let box_width = inner_width + 2; // +2 for side borders
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_box_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `usage` and `origin` are never read
[INFO] [stdout]   --> crates/zerobot-cli/src/slash.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct SlashCommandSpec {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub usage: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 24 |     pub origin: SlashCommandOrigin,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SlashCommandSpec` has derived impls for the traits `Debug` and `Clone`, 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: methods `source_tag`, `is_builtin`, and `template` are never used
[INFO] [stdout]   --> crates/zerobot-cli/src/slash.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl SlashCommandSpec {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] 29 |     pub fn source_tag(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_builtin(&self, name: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn template(&self) -> Option<&TemplateCommand> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `commands` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/slash.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl SlashRegistry {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn commands(&self) -> &[SlashCommandSpec] {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WaitingUserInput` and `WaitingApproval` are never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/app.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum Status {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     WaitingUserInput,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     WaitingApproval,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Status` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `input_tokens`, `output_tokens`, `cache_creation`, and `cache_read` are never read
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/app.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct TurnCost {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 63 |     pub input_tokens: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 64 |     pub output_tokens: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 65 |     pub cache_creation: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub cache_read: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TurnCost` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/app.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct AppState {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub usage: Option<TokenUsage>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub overlay_queue: VecDeque<OverlayType>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub slash_page: usize,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 158 |     pub slash_hint: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub todos: Vec<TodoItem>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub last_idle_esc: Option<Instant>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 178 |     pub last_idle_ctrl_c: Option<Instant>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CopyToClipboard`, `OpenExternalEditor`, and `ResumeSession` are never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/command.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum Command {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 17 |     CopyToClipboard(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     /// Open the user's preferred external editor for multi-line input.
[INFO] [stdout] 19 |     OpenExternalEditor,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     /// Resume an existing session by its ID.
[INFO] [stdout] 21 |     ResumeSession { session_id: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Command` 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: trait `Component` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/component.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait Component {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HelpOverlayRenderer` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/help_overlay.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct HelpOverlayRenderer;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/help_overlay.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl HelpOverlayRenderer {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stdout] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HistorySearchRenderer` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/history_search.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct HistorySearchRenderer;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/history_search.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl HistorySearchRenderer {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stdout] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageItem` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/message_item.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct MessageItem;
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/message_item.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MessageItem {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 15 |     pub fn render(_item: &OutputItem, _buf: &mut Buffer, _area: Rect) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewMessagesPill` is never constructed
[INFO] [stdout]  --> crates/zerobot-cli/src/tui/components/new_messages_pill.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct NewMessagesPill;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/new_messages_pill.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl NewMessagesPill {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 12 |     /// Render a centered "N new messages" pill at the bottom of the area.
[INFO] [stdout] 13 |     pub fn render(buf: &mut Buffer, area: Rect, count: usize) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PermissionPrompt` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/permission_prompt.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct PermissionPrompt;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/permission_prompt.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl PermissionPrompt {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 13 |     /// Render a permission prompt block with the given title and options.
[INFO] [stdout] 14 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BASE_FRAMES` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/spinner.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const BASE_FRAMES: &[&str] = &["\u{00B7}", "\u{2722}", "\u{2733}", "\u{2736}", "\u{273B}", "\u{273D}"];
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskList` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/task_list.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TaskList;
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/task_list.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TaskList {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn render(buf: &mut Buffer, area: Rect, state: &AppState) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToolOutput` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/tool_output.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct ToolOutput;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `render_collapsed` and `render_expanded` are never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/tool_output.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl ToolOutput {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout] 14 |     /// Render a collapsed (single-line) tool output summary.
[INFO] [stdout] 15 |     pub fn render_collapsed(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn render_expanded(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserInputOverlayRenderer` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/user_input_overlay.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct UserInputOverlayRenderer;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/user_input_overlay.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl UserInputOverlayRenderer {
[INFO] [stdout]    | ----------------------------- associated function in this implementation
[INFO] [stdout] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stdout] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LineUp`, `LineDown`, `CopySelection`, `ConfirmToggle`, and `Custom` are never constructed
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/keybindings/types.rs:72:5
[INFO] [stdout]     |
[INFO] [stdout]  44 | pub enum KeyAction {
[INFO] [stdout]     |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  72 |     LineUp,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]  73 |     LineDown,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]  74 |     CopySelection,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     ConfirmToggle,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     Custom(String),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `KeyAction` 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 `sticky_prompt` is never read
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct LayoutAreas {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub sticky_prompt: Rect,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LayoutAreas` 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: struct `ScrollBoxState` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/scroll_box.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ScrollBoxState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/scroll_box.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl ScrollBoxState {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn scroll_down(&mut self, lines: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn scroll_up(&mut self, lines: u16) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn scroll_to_top(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn scroll_to_bottom(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn stick_to_bottom(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn visible_range(&self) -> (u16, u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn on_new_content(&mut self, total_lines: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     fn max_offset(&self) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/bottom_area.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl BottomArea {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn render(buf: &mut Buffer, area: Rect, state: &AppState) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render_modal_divider` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/modal_overlay.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ModalOverlay {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn render_modal_divider(buf: &mut Buffer, area: Rect) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tool_call_ids` and `parallel` are never read
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/message.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     ToolBatchStarted {
[INFO] [stdout]    |     ---------------- fields in this variant
[INFO] [stdout] 83 |         tool_call_ids: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 84 |         parallel: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Message` 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 `event` is never read
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/message.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |     HookFinished {
[INFO] [stdout]     |     ------------ field in this variant
[INFO] [stdout] 117 |         event: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Message` 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 `0` is never read
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/message.rs:154:16
[INFO] [stdout]     |
[INFO] [stdout] 154 |     SlashQuery(String),
[INFO] [stdout]     |     ---------- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Message` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 154 -     SlashQuery(String),
[INFO] [stdout] 154 +     SlashQuery(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/message.rs:21:5
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub enum Message {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  21 |     InputClear,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     InputDeleteToEnd,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     InputPaste(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     StickToBottom,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     ClearScreen,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     ShowTurnCost,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     OverlaySelect,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 143 |     /// Confirm the current overlay selection.
[INFO] [stdout] 144 |     OverlayConfirm,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 145 |     /// Cancel/close the overlay.
[INFO] [stdout] 146 |     OverlayCancel,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 147 |     /// Move to the next focusable field in the overlay.
[INFO] [stdout] 148 |     OverlayNextField,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 149 |     /// Input text within an overlay field.
[INFO] [stdout] 150 |     OverlayInput(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     SlashExecute(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     HistorySearch(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 165 |     /// Select a history entry.
[INFO] [stdout] 166 |     HistorySelect,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     SessionLoaded { session_id: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 171 |     /// Rewind the conversation to a specific message.
[INFO] [stdout] 172 |     RewindTo { message_id: String },
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Message` 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: multiple variants are never constructed
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/message.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub enum OverlayKind {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] 182 |     Help,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 183 |     TurnCost,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 184 |     Permission,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 185 |     SlashCommand,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 186 |     History,
[INFO] [stdout] 187 |     Rewind,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 188 |     ConfirmInterrupt,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 189 |     Settings,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OverlayKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `HistorySearch`, `Help`, `MessageSelector`, and `TurnCost` are never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/overlay.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum OverlayType {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 34 |     HistorySearch(HistorySearchOverlay),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 35 |     Help(HelpOverlay),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 36 |     MessageSelector(MessageSelectorOverlay),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     TurnCost(TurnCostOverlay),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayType` 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 `height_needed` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/overlay.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub trait OverlayComponent {
[INFO] [stdout]    |           ---------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn height_needed(&self, width: u16) -> u16;
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message_id` is never read
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/overlay.rs:510:9
[INFO] [stdout]     |
[INFO] [stdout] 509 | pub struct SearchResult {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] 510 |     pub message_id: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SearchResult` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `selected_message_id` is never used
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/overlay.rs:535:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | impl HistorySearchOverlay {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 535 |     pub fn selected_message_id(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tool_border`, `permission`, `plan_mode`, `user_message_bg`, `modal_divider`, and `accent_shimmer` are never read
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/theme.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Theme {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub tool_border: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 23 |     pub permission: Color,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 24 |     pub plan_mode: Color,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 25 |     pub user_message_bg: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub modal_divider: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 29 |     /// Shimmer color for spinner verb highlight
[INFO] [stdout] 30 |     pub accent_shimmer: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5m 03s
[INFO] running `Command { std: "docker" "inspect" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling dirs-sys-next v0.1.2
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling dirs-next v2.0.0
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling tungstenite v0.24.0
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling term v0.7.0
[INFO] [stderr]    Compiling async-channel v2.5.0
[INFO] [stderr]    Compiling async-broadcast v0.7.2
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling bit-vec v0.6.3
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling fixedbitset v0.4.2
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling precomputed-hash v0.1.1
[INFO] [stderr]    Compiling agent-client-protocol v0.10.3
[INFO] [stderr]    Compiling petgraph v0.6.5
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling bit-set v0.5.3
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling ascii-canvas v3.0.0
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling async-lock v3.4.2
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling lalrpop-util v0.20.2
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling piper v0.2.5
[INFO] [stderr]    Compiling ena v0.14.4
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling pico-args v0.5.0
[INFO] [stderr]    Compiling blocking v1.6.2
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling async-signal v0.2.13
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling async-executor v1.14.0
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling async-channel v1.9.0
[INFO] [stderr]    Compiling async-global-executor v2.4.1
[INFO] [stderr]    Compiling async-process v2.5.0
[INFO] [stderr]    Compiling lalrpop v0.20.2
[INFO] [stderr]    Compiling http v0.2.12
[INFO] [stderr]    Compiling kv-log-macro v1.0.7
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling http-body v0.4.6
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling serde_regex v1.1.0
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling levenshtein v1.0.5
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling crossterm v0.27.0
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling zerobot-core v0.1.0 (/opt/rustwide/workdir/crates/zerobot-core)
[INFO] [stderr]    Compiling fd-lock v4.0.4
[INFO] [stderr]    Compiling async-attributes v1.1.2
[INFO] [stderr]    Compiling rustyline v14.0.0
[INFO] [stderr]    Compiling async-std v1.13.2
[INFO] [stderr]    Compiling ratatui v0.26.3
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling async-object-pool v0.1.5
[INFO] [stderr]    Compiling basic-cookies v0.1.5
[INFO] [stderr]    Compiling httpmock v0.7.0
[INFO] [stderr]    Compiling zerobot-sdk v0.2.0 (/opt/rustwide/workdir/crates/zerobot-sdk)
[INFO] [stdout] warning: fields `max_turns` and `max_budget_usd` are never read
[INFO] [stdout]   --> crates/zerobot-sdk/src/engine.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct QueryEngine {
[INFO] [stdout]    |                   ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub(crate) max_turns: Option<usize>,
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 33 |     pub(crate) max_budget_usd: Option<f64>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `permission_mode` and `interaction_handler` are never read
[INFO] [stdout]   --> crates/zerobot-sdk/src/options.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Options {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub(crate) permission_mode: Option<PermissionMode>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub(crate) interaction_handler: Option<Arc<dyn InteractionHandler>>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling zerobot-cli v0.1.0 (/opt/rustwide/workdir/crates/zerobot-cli)
[INFO] [stdout] warning: unused import: `init_logging`
[INFO] [stdout]   --> crates/zerobot-cli/src/main.rs:21:29
[INFO] [stdout]    |
[INFO] [stdout] 21 | use zerobot_core::logging::{init_logging, init_logging_with_stdout};
[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: `Modifier`
[INFO] [stdout]  --> crates/zerobot-cli/src/tui/components/input_line.rs:5:22
[INFO] [stdout]   |
[INFO] [stdout] 5 | use ratatui::style::{Modifier, Style};
[INFO] [stdout]   |                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Modifier`
[INFO] [stdout]  --> crates/zerobot-cli/src/tui/components/status_bar.rs:7:29
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ratatui::style::{Color, Modifier, Style};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scroll_box::ScrollBoxState`
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use scroll_box::ScrollBoxState;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_turns` and `max_budget_usd` are never read
[INFO] [stdout]   --> crates/zerobot-sdk/src/engine.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct QueryEngine {
[INFO] [stdout]    |                   ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub(crate) max_turns: Option<usize>,
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 33 |     pub(crate) max_budget_usd: Option<f64>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `permission_mode` and `interaction_handler` are never read
[INFO] [stdout]   --> crates/zerobot-sdk/src/options.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Options {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub(crate) permission_mode: Option<PermissionMode>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub(crate) interaction_handler: Option<Arc<dyn InteractionHandler>>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/components/messages.rs:204:5
[INFO] [stdout]     |
[INFO] [stdout] 204 |     label: Option<&str>,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `box_width`
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/mod.rs:836:9
[INFO] [stdout]     |
[INFO] [stdout] 836 |     let box_width = inner_width + 2; // +2 for side borders
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_box_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `usage` is never read
[INFO] [stdout]   --> crates/zerobot-cli/src/slash.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct SlashCommandSpec {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub usage: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SlashCommandSpec` has derived impls for the traits `Debug` and `Clone`, 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: methods `is_builtin` and `template` are never used
[INFO] [stdout]   --> crates/zerobot-cli/src/slash.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl SlashCommandSpec {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_builtin(&self, name: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn template(&self) -> Option<&TemplateCommand> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `commands` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/slash.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl SlashRegistry {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn commands(&self) -> &[SlashCommandSpec] {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WaitingUserInput` and `WaitingApproval` are never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/app.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum Status {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     WaitingUserInput,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     WaitingApproval,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Status` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `input_tokens`, `output_tokens`, `cache_creation`, and `cache_read` are never read
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/app.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct TurnCost {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 63 |     pub input_tokens: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 64 |     pub output_tokens: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 65 |     pub cache_creation: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub cache_read: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TurnCost` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/app.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct AppState {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub usage: Option<TokenUsage>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub overlay_queue: VecDeque<OverlayType>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub slash_page: usize,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 158 |     pub slash_hint: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub todos: Vec<TodoItem>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub last_idle_esc: Option<Instant>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 178 |     pub last_idle_ctrl_c: Option<Instant>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CopyToClipboard`, `OpenExternalEditor`, and `ResumeSession` are never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/command.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum Command {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 17 |     CopyToClipboard(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     /// Open the user's preferred external editor for multi-line input.
[INFO] [stdout] 19 |     OpenExternalEditor,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     /// Resume an existing session by its ID.
[INFO] [stdout] 21 |     ResumeSession { session_id: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Command` 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: trait `Component` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/component.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait Component {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HelpOverlayRenderer` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/help_overlay.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct HelpOverlayRenderer;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/help_overlay.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl HelpOverlayRenderer {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stdout] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HistorySearchRenderer` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/history_search.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct HistorySearchRenderer;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/history_search.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl HistorySearchRenderer {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stdout] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageItem` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/message_item.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct MessageItem;
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/message_item.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MessageItem {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 15 |     pub fn render(_item: &OutputItem, _buf: &mut Buffer, _area: Rect) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewMessagesPill` is never constructed
[INFO] [stdout]  --> crates/zerobot-cli/src/tui/components/new_messages_pill.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct NewMessagesPill;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/new_messages_pill.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl NewMessagesPill {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 12 |     /// Render a centered "N new messages" pill at the bottom of the area.
[INFO] [stdout] 13 |     pub fn render(buf: &mut Buffer, area: Rect, count: usize) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PermissionPrompt` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/permission_prompt.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct PermissionPrompt;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/permission_prompt.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl PermissionPrompt {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 13 |     /// Render a permission prompt block with the given title and options.
[INFO] [stdout] 14 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BASE_FRAMES` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/spinner.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const BASE_FRAMES: &[&str] = &["\u{00B7}", "\u{2722}", "\u{2733}", "\u{2736}", "\u{273B}", "\u{273D}"];
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskList` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/task_list.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TaskList;
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/task_list.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TaskList {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn render(buf: &mut Buffer, area: Rect, state: &AppState) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToolOutput` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/tool_output.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct ToolOutput;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `render_collapsed` and `render_expanded` are never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/tool_output.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl ToolOutput {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout] 14 |     /// Render a collapsed (single-line) tool output summary.
[INFO] [stdout] 15 |     pub fn render_collapsed(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn render_expanded(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserInputOverlayRenderer` is never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/user_input_overlay.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct UserInputOverlayRenderer;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/components/user_input_overlay.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl UserInputOverlayRenderer {
[INFO] [stdout]    | ----------------------------- associated function in this implementation
[INFO] [stdout] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stdout] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LineUp`, `LineDown`, `CopySelection`, `ConfirmToggle`, and `Custom` are never constructed
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/keybindings/types.rs:72:5
[INFO] [stdout]     |
[INFO] [stdout]  44 | pub enum KeyAction {
[INFO] [stdout]     |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  72 |     LineUp,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]  73 |     LineDown,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]  74 |     CopySelection,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     ConfirmToggle,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     Custom(String),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `KeyAction` 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: methods `scroll_to_top`, `scroll_to_bottom`, and `stick_to_bottom` are never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/scroll_box.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl ScrollBoxState {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn scroll_to_top(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn scroll_to_bottom(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn stick_to_bottom(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/bottom_area.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl BottomArea {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn render(buf: &mut Buffer, area: Rect, state: &AppState) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `render_modal_divider` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/layout/modal_overlay.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ModalOverlay {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn render_modal_divider(buf: &mut Buffer, area: Rect) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tool_call_ids` and `parallel` are never read
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/message.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     ToolBatchStarted {
[INFO] [stdout]    |     ---------------- fields in this variant
[INFO] [stdout] 83 |         tool_call_ids: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 84 |         parallel: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Message` 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 `event` is never read
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/message.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |     HookFinished {
[INFO] [stdout]     |     ------------ field in this variant
[INFO] [stdout] 117 |         event: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Message` 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 `0` is never read
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/message.rs:154:16
[INFO] [stdout]     |
[INFO] [stdout] 154 |     SlashQuery(String),
[INFO] [stdout]     |     ---------- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Message` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 154 -     SlashQuery(String),
[INFO] [stdout] 154 +     SlashQuery(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/message.rs:21:5
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub enum Message {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  21 |     InputClear,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     InputDeleteToEnd,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     InputPaste(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     StickToBottom,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     ClearScreen,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     ShowTurnCost,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     OverlaySelect,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 143 |     /// Confirm the current overlay selection.
[INFO] [stdout] 144 |     OverlayConfirm,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 145 |     /// Cancel/close the overlay.
[INFO] [stdout] 146 |     OverlayCancel,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 147 |     /// Move to the next focusable field in the overlay.
[INFO] [stdout] 148 |     OverlayNextField,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 149 |     /// Input text within an overlay field.
[INFO] [stdout] 150 |     OverlayInput(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     SlashExecute(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     HistorySearch(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 165 |     /// Select a history entry.
[INFO] [stdout] 166 |     HistorySelect,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     SessionLoaded { session_id: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 171 |     /// Rewind the conversation to a specific message.
[INFO] [stdout] 172 |     RewindTo { message_id: String },
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Message` 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: multiple variants are never constructed
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/message.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub enum OverlayKind {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] 182 |     Help,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 183 |     TurnCost,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 184 |     Permission,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 185 |     SlashCommand,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 186 |     History,
[INFO] [stdout] 187 |     Rewind,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 188 |     ConfirmInterrupt,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 189 |     Settings,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OverlayKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Help`, `MessageSelector`, and `TurnCost` are never constructed
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/overlay.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum OverlayType {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 35 |     Help(HelpOverlay),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 36 |     MessageSelector(MessageSelectorOverlay),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     TurnCost(TurnCostOverlay),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayType` 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 `height_needed` is never used
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/overlay.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub trait OverlayComponent {
[INFO] [stdout]    |           ---------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn height_needed(&self, width: u16) -> u16;
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message_id` is never read
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/overlay.rs:510:9
[INFO] [stdout]     |
[INFO] [stdout] 509 | pub struct SearchResult {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] 510 |     pub message_id: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SearchResult` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `selected_message_id` is never used
[INFO] [stdout]    --> crates/zerobot-cli/src/tui/overlay.rs:535:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | impl HistorySearchOverlay {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 535 |     pub fn selected_message_id(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tool_border`, `permission`, `plan_mode`, `user_message_bg`, `modal_divider`, and `accent_shimmer` are never read
[INFO] [stdout]   --> crates/zerobot-cli/src/tui/theme.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Theme {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub tool_border: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 23 |     pub permission: Color,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 24 |     pub plan_mode: Color,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 25 |     pub user_message_bg: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub modal_divider: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 29 |     /// Shimmer color for spinner verb highlight
[INFO] [stdout] 30 |     pub accent_shimmer: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3m 52s
[INFO] running `Command { std: "docker" "inspect" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: fields `max_turns` and `max_budget_usd` are never read
[INFO] [stderr]   --> crates/zerobot-sdk/src/engine.rs:32:16
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub(crate) struct QueryEngine {
[INFO] [stderr]    |                   ----------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub(crate) max_turns: Option<usize>,
[INFO] [stderr]    |                ^^^^^^^^^
[INFO] [stderr] 33 |     pub(crate) max_budget_usd: Option<f64>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `permission_mode` and `interaction_handler` are never read
[INFO] [stderr]   --> crates/zerobot-sdk/src/options.rs:19:16
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub struct Options {
[INFO] [stderr]    |            ------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 19 |     pub(crate) permission_mode: Option<PermissionMode>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 23 |     pub(crate) interaction_handler: Option<Arc<dyn InteractionHandler>>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `zerobot-sdk` (lib) generated 2 warnings
[INFO] [stderr] warning: `zerobot-sdk` (lib test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: unused import: `init_logging`
[INFO] [stderr]   --> crates/zerobot-cli/src/main.rs:21:29
[INFO] [stderr]    |
[INFO] [stderr] 21 | use zerobot_core::logging::{init_logging, init_logging_with_stdout};
[INFO] [stderr]    |                             ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Modifier`
[INFO] [stderr]  --> crates/zerobot-cli/src/tui/components/input_line.rs:5:22
[INFO] [stderr]   |
[INFO] [stderr] 5 | use ratatui::style::{Modifier, Style};
[INFO] [stderr]   |                      ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Modifier`
[INFO] [stderr]  --> crates/zerobot-cli/src/tui/components/status_bar.rs:7:29
[INFO] [stderr]   |
[INFO] [stderr] 7 | use ratatui::style::{Color, Modifier, Style};
[INFO] [stderr]   |                             ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `scroll_box::ScrollBoxState`
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/layout/mod.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use scroll_box::ScrollBoxState;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `label`
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/components/messages.rs:204:5
[INFO] [stderr]     |
[INFO] [stderr] 204 |     label: Option<&str>,
[INFO] [stderr]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `box_width`
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/mod.rs:836:9
[INFO] [stderr]     |
[INFO] [stderr] 836 |     let box_width = inner_width + 2; // +2 for side borders
[INFO] [stderr]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_box_width`
[INFO] [stderr] 
[INFO] [stderr] warning: field `usage` is never read
[INFO] [stderr]   --> crates/zerobot-cli/src/slash.rs:23:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct SlashCommandSpec {
[INFO] [stderr]    |            ---------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 23 |     pub usage: String,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SlashCommandSpec` has derived impls for the traits `Debug` and `Clone`, 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: methods `is_builtin` and `template` are never used
[INFO] [stderr]   --> crates/zerobot-cli/src/slash.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 28 | impl SlashCommandSpec {
[INFO] [stderr]    | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 38 |     pub fn is_builtin(&self, name: &str) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub fn template(&self) -> Option<&TemplateCommand> {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `commands` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/slash.rs:89:12
[INFO] [stderr]    |
[INFO] [stderr] 61 | impl SlashRegistry {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 89 |     pub fn commands(&self) -> &[SlashCommandSpec] {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `WaitingUserInput` and `WaitingApproval` are never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/app.rs:47:5
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub enum Status {
[INFO] [stderr]    |          ------ variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 47 |     WaitingUserInput,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 48 |     WaitingApproval,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Status` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `input_tokens`, `output_tokens`, `cache_creation`, and `cache_read` are never read
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/app.rs:63:9
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub struct TurnCost {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] 63 |     pub input_tokens: u64,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 64 |     pub output_tokens: u64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 65 |     pub cache_creation: u64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 66 |     pub cache_read: u64,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TurnCost` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/app.rs:137:9
[INFO] [stderr]     |
[INFO] [stderr] 114 | pub struct AppState {
[INFO] [stderr]     |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 137 |     pub usage: Option<TokenUsage>,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 149 |     pub overlay_queue: VecDeque<OverlayType>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 157 |     pub slash_page: usize,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 158 |     pub slash_hint: String,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 166 |     pub todos: Vec<TodoItem>,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 177 |     pub last_idle_esc: Option<Instant>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 178 |     pub last_idle_ctrl_c: Option<Instant>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `CopyToClipboard`, `OpenExternalEditor`, and `ResumeSession` are never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/command.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub enum Command {
[INFO] [stderr]    |          ------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 17 |     CopyToClipboard(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 18 |     /// Open the user's preferred external editor for multi-line input.
[INFO] [stderr] 19 |     OpenExternalEditor,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 20 |     /// Resume an existing session by its ID.
[INFO] [stderr] 21 |     ResumeSession { session_id: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: trait `Component` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/component.rs:13:11
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub trait Component {
[INFO] [stderr]    |           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HelpOverlayRenderer` is never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/help_overlay.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct HelpOverlayRenderer;
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/help_overlay.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl HelpOverlayRenderer {
[INFO] [stderr]    | ------------------------ associated function in this implementation
[INFO] [stderr] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stderr] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HistorySearchRenderer` is never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/history_search.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct HistorySearchRenderer;
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/history_search.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl HistorySearchRenderer {
[INFO] [stderr]    | -------------------------- associated function in this implementation
[INFO] [stderr] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stderr] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MessageItem` is never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/message_item.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct MessageItem;
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/message_item.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl MessageItem {
[INFO] [stderr]    | ---------------- associated function in this implementation
[INFO] [stderr] 15 |     pub fn render(_item: &OutputItem, _buf: &mut Buffer, _area: Rect) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `NewMessagesPill` is never constructed
[INFO] [stderr]  --> crates/zerobot-cli/src/tui/components/new_messages_pill.rs:9:12
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub struct NewMessagesPill;
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/new_messages_pill.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl NewMessagesPill {
[INFO] [stderr]    | -------------------- associated function in this implementation
[INFO] [stderr] 12 |     /// Render a centered "N new messages" pill at the bottom of the area.
[INFO] [stderr] 13 |     pub fn render(buf: &mut Buffer, area: Rect, count: usize) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PermissionPrompt` is never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/permission_prompt.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct PermissionPrompt;
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/permission_prompt.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl PermissionPrompt {
[INFO] [stderr]    | --------------------- associated function in this implementation
[INFO] [stderr] 13 |     /// Render a permission prompt block with the given title and options.
[INFO] [stderr] 14 |     pub fn render(
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `BASE_FRAMES` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/spinner.rs:16:7
[INFO] [stderr]    |
[INFO] [stderr] 16 | const BASE_FRAMES: &[&str] = &["\u{00B7}", "\u{2722}", "\u{2733}", "\u{2736}", "\u{273B}", "\u{273D}"];
[INFO] [stderr]    |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TaskList` is never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/task_list.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct TaskList;
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/task_list.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl TaskList {
[INFO] [stderr]    | ------------- associated function in this implementation
[INFO] [stderr] 13 |     pub fn render(buf: &mut Buffer, area: Rect, state: &AppState) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ToolOutput` is never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/tool_output.rs:11:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct ToolOutput;
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `render_collapsed` and `render_expanded` are never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/tool_output.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | impl ToolOutput {
[INFO] [stderr]    | --------------- associated functions in this implementation
[INFO] [stderr] 14 |     /// Render a collapsed (single-line) tool output summary.
[INFO] [stderr] 15 |     pub fn render_collapsed(
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 50 |     pub fn render_expanded(
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `UserInputOverlayRenderer` is never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/user_input_overlay.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct UserInputOverlayRenderer;
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/components/user_input_overlay.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl UserInputOverlayRenderer {
[INFO] [stderr]    | ----------------------------- associated function in this implementation
[INFO] [stderr] 15 |     /// Placeholder render — real rendering is handled by `OverlayComponent::render`.
[INFO] [stderr] 16 |     pub fn render(_buf: &mut Buffer, _area: Rect) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `LineUp`, `LineDown`, `CopySelection`, `ConfirmToggle`, and `Custom` are never constructed
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/keybindings/types.rs:72:5
[INFO] [stderr]     |
[INFO] [stderr]  44 | pub enum KeyAction {
[INFO] [stderr]     |          --------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr]  72 |     LineUp,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr]  73 |     LineDown,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr]  74 |     CopySelection,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  87 |     ConfirmToggle,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 104 |     Custom(String),
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `KeyAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `scroll_to_top`, `scroll_to_bottom`, and `stick_to_bottom` are never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/layout/scroll_box.rs:57:12
[INFO] [stderr]    |
[INFO] [stderr] 24 | impl ScrollBoxState {
[INFO] [stderr]    | ------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub fn scroll_to_top(&mut self) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn scroll_to_bottom(&mut self) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 69 |     pub fn stick_to_bottom(&mut self) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/layout/bottom_area.rs:27:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | impl BottomArea {
[INFO] [stderr]    | --------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 27 |     pub fn render(buf: &mut Buffer, area: Rect, state: &AppState) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `render_modal_divider` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/layout/modal_overlay.rs:39:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl ModalOverlay {
[INFO] [stderr]    | ----------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn render_modal_divider(buf: &mut Buffer, area: Rect) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `tool_call_ids` and `parallel` are never read
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/message.rs:83:9
[INFO] [stderr]    |
[INFO] [stderr] 82 |     ToolBatchStarted {
[INFO] [stderr]    |     ---------------- fields in this variant
[INFO] [stderr] 83 |         tool_call_ids: Vec<String>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 84 |         parallel: bool,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Message` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `event` is never read
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/message.rs:117:9
[INFO] [stderr]     |
[INFO] [stderr] 116 |     HookFinished {
[INFO] [stderr]     |     ------------ field in this variant
[INFO] [stderr] 117 |         event: String,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Message` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/message.rs:154:16
[INFO] [stderr]     |
[INFO] [stderr] 154 |     SlashQuery(String),
[INFO] [stderr]     |     ---------- ^^^^^^
[INFO] [stderr]     |     |
[INFO] [stderr]     |     field in this variant
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Message` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]     |
[INFO] [stderr] 154 -     SlashQuery(String),
[INFO] [stderr] 154 +     SlashQuery(()),
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: multiple variants are never constructed
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/message.rs:21:5
[INFO] [stderr]     |
[INFO] [stderr]   8 | pub enum Message {
[INFO] [stderr]     |          ------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr]  21 |     InputClear,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  25 |     InputDeleteToEnd,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  31 |     InputPaste(String),
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  43 |     StickToBottom,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  51 |     ClearScreen,
[INFO] [stderr]     |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  59 |     ShowTurnCost,
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 142 |     OverlaySelect,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] 143 |     /// Confirm the current overlay selection.
[INFO] [stderr] 144 |     OverlayConfirm,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr] 145 |     /// Cancel/close the overlay.
[INFO] [stderr] 146 |     OverlayCancel,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] 147 |     /// Move to the next focusable field in the overlay.
[INFO] [stderr] 148 |     OverlayNextField,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 149 |     /// Input text within an overlay field.
[INFO] [stderr] 150 |     OverlayInput(String),
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 158 |     SlashExecute(String),
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 164 |     HistorySearch(String),
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] 165 |     /// Select a history entry.
[INFO] [stderr] 166 |     HistorySelect,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 170 |     SessionLoaded { session_id: String },
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] 171 |     /// Rewind the conversation to a specific message.
[INFO] [stderr] 172 |     RewindTo { message_id: String },
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Message` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple variants are never constructed
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/message.rs:182:5
[INFO] [stderr]     |
[INFO] [stderr] 181 | pub enum OverlayKind {
[INFO] [stderr]     |          ----------- variants in this enum
[INFO] [stderr] 182 |     Help,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 183 |     TurnCost,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr] 184 |     Permission,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] 185 |     SlashCommand,
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr] 186 |     History,
[INFO] [stderr] 187 |     Rewind,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr] 188 |     ConfirmInterrupt,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 189 |     Settings,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `OverlayKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Help`, `MessageSelector`, and `TurnCost` are never constructed
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/overlay.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub enum OverlayType {
[INFO] [stderr]    |          ----------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 35 |     Help(HelpOverlay),
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 36 |     MessageSelector(MessageSelectorOverlay),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 37 |     TurnCost(TurnCostOverlay),
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `OverlayType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `height_needed` is never used
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/overlay.rs:52:8
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub trait OverlayComponent {
[INFO] [stderr]    |           ---------------- method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 52 |     fn height_needed(&self, width: u16) -> u16;
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `message_id` is never read
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/overlay.rs:510:9
[INFO] [stderr]     |
[INFO] [stderr] 509 | pub struct SearchResult {
[INFO] [stderr]     |            ------------ field in this struct
[INFO] [stderr] 510 |     pub message_id: String,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `SearchResult` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `selected_message_id` is never used
[INFO] [stderr]    --> crates/zerobot-cli/src/tui/overlay.rs:535:12
[INFO] [stderr]     |
[INFO] [stderr] 524 | impl HistorySearchOverlay {
[INFO] [stderr]     | ------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 535 |     pub fn selected_message_id(&self) -> Option<&str> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `tool_border`, `permission`, `plan_mode`, `user_message_bg`, `modal_divider`, and `accent_shimmer` are never read
[INFO] [stderr]   --> crates/zerobot-cli/src/tui/theme.rs:22:9
[INFO] [stderr]    |
[INFO] [stderr]  9 | pub struct Theme {
[INFO] [stderr]    |            ----- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub tool_border: Color,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 23 |     pub permission: Color,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 24 |     pub plan_mode: Color,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 25 |     pub user_message_bg: Color,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 28 |     pub modal_divider: Color,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 29 |     /// Shimmer color for spinner verb highlight
[INFO] [stderr] 30 |     pub accent_shimmer: Color,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `zerobot-cli` (bin "zerobot-cli" test) generated 45 warnings (run `cargo fix --bin "zerobot-cli" -p zerobot-cli --tests` to apply 6 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.92s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/zerobot_cli-b155d0c23420a715)
[INFO] [stdout] 
[INFO] [stdout] running 29 tests
[INFO] [stdout] test tui::keybindings::tests::chat_enter_resolves_to_submit ... ok
[INFO] [stdout] test tui::keybindings::tests::chat_esc_resolves_to_cancel ... ok
[INFO] [stdout] test slash::tests::skill_does_not_override_existing_command ... ok
[INFO] [stdout] test slash::tests::custom_command_overrides_builtin ... ok
[INFO] [stdout] test tui::keybindings::tests::autocomplete_tab_resolves_to_accept ... ok
[INFO] [stdout] test tui::keybindings::tests::context_priority_later_context_wins ... ok
[INFO] [stdout] test tui::keybindings::tests::chord_ctrl_x_ctrl_k_resolves_to_interrupt ... ok
[INFO] [stdout] test tui::keybindings::tests::unknown_key_returns_none ... ok
[INFO] [stdout] test tui::keybindings::tests::global_ctrl_c_resolves_to_interrupt ... ok
[INFO] [stdout] test tui::layout::bottom_area::tests::height_needed_error ... ok
[INFO] [stdout] test tui::layout::bottom_area::tests::height_needed_idle ... ok
[INFO] [stdout] test tui::layout::bottom_area::tests::height_needed_thinking ... ok
[INFO] [stdout] test tui::layout::scroll_box::tests::new_is_sticky ... ok
[INFO] [stdout] test tui::layout::scroll_box::tests::on_new_content_follows_when_sticky ... ok
[INFO] [stdout] test slash::tests::plugin_command_supported_in_find_and_matches ... ok
[INFO] [stdout] test tui::layout::scroll_box::tests::on_new_content_ignores_when_not_sticky ... ok
[INFO] [stdout] test tui::layout::scroll_box::tests::scroll_up_clears_sticky ... ok
[INFO] [stdout] test tui::layout::modal_overlay::tests::centered_rect_basic ... ok
[INFO] [stdout] test tui::layout::modal_overlay::tests::centered_rect_clamped_to_100 ... ok
[INFO] [stdout] test tui::layout::scroll_box::tests::scroll_down_sets_sticky_at_bottom ... ok
[INFO] [stdout] test tui::layout::scroll_box::tests::visible_range_basic ... ok
[INFO] [stdout] test tui::layout::scroll_box::tests::visible_range_clamped ... ok
[INFO] [stdout] test tests::cli_parses_acp_with_overrides ... ok
[INFO] [stdout] test tui::keybindings::tests::chord_timeout_falls_back_to_prefix_binding ... ok
[INFO] [stdout] test tests::cli_parses_exec ... ok
[INFO] [stdout] test tui::layout::tests::compute_with_thinking_status ... ok
[INFO] [stdout] test tui::layout::tests::compute_with_scrolled_state ... ok
[INFO] [stdout] test tui::layout::tests::compute_idle_layout ... ok
[INFO] [stdout] test tui::layout::tests::compute_with_overlay ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/zerobot_core-8506bd96bf7f7b5e)
[INFO] [stdout] 
[INFO] [stdout] running 90 tests
[INFO] [stdout] test acp::tests::convert_mcp_http_to_remote_config ... ok
[INFO] [stdout] test acp::tests::parse_model_id_prefers_explicit_provider ... ok
[INFO] [stdout] test acp::tests::locations_from_tool_io_extracts_file_path ... ok
[INFO] [stdout] test acp::tests::prompt_blocks_to_text_degrades_multimodal ... ok
[INFO] [stdout] test agent::tests::approval_key_uses_skill_name ... ok
[INFO] [stdout] test agent::tests::rewrite_skill_alias_call_ignores_non_skill_name ... ok
[INFO] [stdout] test agent::tests::rewrite_skill_alias_call_wraps_non_object_args ... ok
[INFO] [stdout] test agent::tests::rewrite_skill_alias_call_rewrites_object_args ... ok
[INFO] [stdout] test acp::tests::parse_model_id_falls_back_to_current_provider ... ok
[INFO] [stdout] test agents::tests::parses_agent_frontmatter ... ok
[INFO] [stdout] test commands::tests::apply_argument_rules ... ok
[INFO] [stdout] test agents::tests::builtin_agents_available_when_missing ... ok
[INFO] [stdout] test agents::tests::user_agents_override_builtin ... ok
[INFO] [stdout] test agents::tests::discover_and_load_agents ... ok
[INFO] [stdout] test config::tests::content_rule_for_finds_first_match ... ok
[INFO] [stdout] test commands::tests::discover_plugin_namespaced_commands ... ok
[INFO] [stdout] test config::tests::config_precedence_respects_overrides ... ok
[INFO] [stdout] test config::tests::content_rule_wildcard_input ... ok
[INFO] [stdout] test config::tests::content_rule_tool_only_pattern ... ok
[INFO] [stdout] test commands::tests::discover_commands_and_skills_with_precedence ... ok
[INFO] [stdout] test config::tests::permission_mode_default_and_override ... ok
[INFO] [stdout] test config::tests::content_rules_in_yaml_config ... ok
[INFO] [stdout] test config::tests::plugin_entries_merge_and_deduplicate ... ok
[INFO] [stdout] test config::tests::mcp_and_skills_config_parses ... ok
[INFO] [stdout] test config::tests::skill_approval_rules_match_name_pattern ... ok
[INFO] [stdout] test context::tests::keeps_complete_assistant_tool_sequence ... ok
[INFO] [stdout] test context::tests::strips_orphaned_assistant_tool_calls_after_trim ... ok
[INFO] [stdout] test context::tests::keeps_summary_anchor ... ok
[INFO] [stdout] test context::tests::summary_survives_char_trim ... ok
[INFO] [stdout] test config::tests::project_settings_skipped_when_ignored ... ok
[INFO] [stdout] test context::tests::trims_by_max_chars ... ok
[INFO] [stdout] test cron::tests::reject_bad_tz ... ok
[INFO] [stdout] test cron::tests::compute_every_schedule ... ok
[INFO] [stdout] test context::tests::trims_by_max_messages ... ok
[INFO] [stdout] test heartbeat::tests::decide_returns_skip_when_no_tool_call ... ok
[INFO] [stdout] test hooks::tests::hook_deserialize_command_type_yaml ... ok
[INFO] [stdout] test hooks::tests::hook_deserialize_http_type_yaml ... ok
[INFO] [stdout] test hooks::tests::hook_deserialize_legacy_yaml ... ok
[INFO] [stdout] test hooks::tests::hook_exit_code_2_deny ... ok
[INFO] [stdout] test hooks::tests::hook_if_condition_wildcard ... ok
[INFO] [stdout] test hooks::tests::hook_merge_priority ... ok
[INFO] [stdout] test hooks::tests::hook_new_fields_yaml ... ok
[INFO] [stdout] test hooks::tests::hook_if_condition_match ... ok
[INFO] [stdout] test hooks::tests::hook_pre_tool_modify ... ok
[INFO] [stdout] test config::tests::content_rule_matches_tool_and_input ... ok
[INFO] [stdout] test hooks::tests::glob_match_basic ... ok
[INFO] [stdout] test instruction::tests::resolve_nearby_instructions_once_per_session ... ok
[INFO] [stdout] test instruction::tests::resolves_project_instruction ... ok
[INFO] [stdout] test memory::tests::test_dedup_entries ... ok
[INFO] [stdout] test hooks::tests::hook_pre_tool_deny ... ok
[INFO] [stdout] test memory::tests::test_render_block_empty ... ok
[INFO] [stdout] test memory::tests::test_render_block ... ok
[INFO] [stdout] test commands::tests::shell_injection_success_and_failure ... ok
[INFO] [stdout] test mcp::tests::remote_mcp_list_and_call ... ok
[INFO] [stdout] test memory::tests::test_scan_content_invisible_chars ... ok
[INFO] [stdout] test plugin::tests::deduplicate_keeps_last ... ok
[INFO] [stdout] test memory::tests::test_build_memory_context_block ... ok
[INFO] [stdout] test plugin::tests::merge_json_recursively ... ok
[INFO] [stdout] test prompt::tests::default_prompt_contains_key_sections ... ok
[INFO] [stdout] test plugin::tests::resolve_entries_picks_manifest_asset_root ... ok
[INFO] [stdout] test provider::tests::anthropic_provider_parses_tool_calls ... ok
[INFO] [stdout] test provider::tests::openai_provider_parses_tool_calls ... ok
[INFO] [stdout] test memory::tests::test_sanitize_memory_context ... ok
[INFO] [stdout] test acp::tests::initialize_reports_capabilities ... ok
[INFO] [stdout] test acp::tests::cancel_aborts_inflight_prompt_handle ... ok
[INFO] [stdout] test skills::tests::discover_and_load_skills ... ok
[INFO] [stdout] test skills::tests::external_skill_import_can_be_disabled ... ok
[INFO] [stdout] test skills::tests::parses_skill_frontmatter ... ok
[INFO] [stdout] test skills::tests::remote_skill_urls_are_discovered_and_cached ... ok
[INFO] [stdout] test memory::tests::test_scan_content_injection ... ok
[INFO] [stdout] test tool::tests::registry_runs_builtin_tool ... ok
[INFO] [stdout] test tool::tests::request_user_input_tool_returns_json ... ok
[INFO] [stdout] test memory::tests::test_scan_content_safe ... ok
[INFO] [stdout] test tool::tests::skill_tool_loads_content_block ... ok
[INFO] [stdout] test tool::tests::skill_tool_reports_available_skills_when_not_found ... ok
[INFO] [stdout] test acp::tests::session_lifecycle_methods_update_state ... ok
[INFO] [stdout] test tool::tests::registry_registers_mcp_tool ... ok
[INFO] [stdout] test tool::tests::truncates_tool_output_without_persisting ... ok
[INFO] [stdout] test session::tests::todo_set_and_get ... ok
[INFO] [stdout] test session::tests::sqlite_store_creates_child_session ... ok
[INFO] [stdout] test workspace::tests::falls_back_to_cwd_when_no_markers ... ok
[INFO] [stdout] test workspace::tests::falls_back_to_git_root ... ok
[INFO] [stdout] test workspace::tests::prefers_zerobot_over_git ... ok
[INFO] [stdout] test workspace::tests::resolves_workspace_db_path ... ok
[INFO] [stdout] test session::tests::sqlite_store_creates_and_reads_session ... ok
[INFO] [stdout] test session::tests::rewind_to_before_message_removes_selected_and_after ... ok
[INFO] [stdout] test tool::tests::todo_tools_read_write ... ok
[INFO] [stdout] test tool::tests::subagent_tool_creates_child_session ... ok
[INFO] [stdout] test tool::tests::todo_tools_reject_invalid_status ... ok
[INFO] [stdout] test tool::tests::write_requires_prior_read ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 90 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.43s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/zerobot_sdk-5a467ea7939cd7ce)
[INFO] [stderr]    Doc-tests zerobot_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests zerobot_sdk
[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" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722", kill_on_drop: false }`
[INFO] [stdout] 2994bf7068344785a8533861ec83a79ec46a8d6f5ace3e9eaeb08a7085540722
