[INFO] cloning repository https://github.com/christianlovescode/keg
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/christianlovescode/keg" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristianlovescode%2Fkeg", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristianlovescode%2Fkeg'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 386530cc763073d8028d22ca66eca32c7ee11af3
[INFO] checking christianlovescode/keg against 1.95.0-beta.7 for beta-1.95-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristianlovescode%2Fkeg" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/christianlovescode/keg
[INFO] finished tweaking git repo https://github.com/christianlovescode/keg
[INFO] tweaked toml for git repo https://github.com/christianlovescode/keg written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/christianlovescode/keg on toolchain 1.95.0-beta.7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0-beta.7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/christianlovescode/keg 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.95.0-beta.7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0-beta.7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ab6a54a1aa0692c482facd7da21c449435743d0384846dcc04a362e98bc445d5
[INFO] running `Command { std: "docker" "start" "-a" "ab6a54a1aa0692c482facd7da21c449435743d0384846dcc04a362e98bc445d5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ab6a54a1aa0692c482facd7da21c449435743d0384846dcc04a362e98bc445d5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ab6a54a1aa0692c482facd7da21c449435743d0384846dcc04a362e98bc445d5", kill_on_drop: false }`
[INFO] [stdout] ab6a54a1aa0692c482facd7da21c449435743d0384846dcc04a362e98bc445d5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0-beta.7" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8d4c49a50037bd3266e8f918446822c0a5be23b89078e228a5391029a6ff1491
[INFO] running `Command { std: "docker" "start" "-a" "8d4c49a50037bd3266e8f918446822c0a5be23b89078e228a5391029a6ff1491", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]    Compiling find-msvc-tools v0.1.2
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling serde_core v1.0.227
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]    Compiling serde v1.0.227
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]     Checking tree-sitter-language v0.1.5
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling wayland-client v0.31.11
[INFO] [stderr]     Checking litemap v0.8.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking writeable v0.6.1
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]     Checking hashbrown v0.16.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]     Checking cursor-icon v1.2.0
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking regex-syntax v0.8.6
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]    Compiling instability v0.3.9
[INFO] [stderr]     Checking xkeysym v0.2.1
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking indexmap v2.11.4
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking memmap2 v0.9.8
[INFO] [stderr]    Compiling cc v1.2.38
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking anstyle v1.0.11
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]    Compiling indoc v2.0.6
[INFO] [stderr]     Checking anstream v0.6.20
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking clap_builder v4.5.48
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking fixedbitset v0.4.2
[INFO] [stderr]     Checking streaming-iterator v0.1.9
[INFO] [stderr]     Checking regex-automata v0.4.11
[INFO] [stderr]     Checking petgraph v0.6.5
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libz-sys v1.1.22
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]    Compiling libgit2-sys v0.16.2+1.7.2
[INFO] [stderr]    Compiling libsqlite3-sys v0.27.0
[INFO] [stderr]    Compiling tree-sitter-c v0.23.4
[INFO] [stderr]    Compiling tree-sitter-java v0.23.5
[INFO] [stderr]    Compiling tree-sitter-cpp v0.23.4
[INFO] [stderr]    Compiling tree-sitter-rust v0.23.3
[INFO] [stderr]    Compiling tree-sitter-javascript v0.23.1
[INFO] [stderr]    Compiling tree-sitter-python v0.23.6
[INFO] [stderr]    Compiling tree-sitter-c-sharp v0.23.1
[INFO] [stderr]    Compiling tree-sitter-typescript v0.23.2
[INFO] [stderr]    Compiling tree-sitter-go v0.23.4
[INFO] [stderr]     Checking regex v1.11.3
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]    Compiling tree-sitter v0.25.10
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking gethostname v1.0.2
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.227
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking wayland-protocols v0.32.9
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking x11-clipboard v0.9.3
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking ratatui v0.29.0
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.3
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking clap v4.5.48
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking rusqlite v0.30.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking git2 v0.18.3
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.9
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking smithay-clipboard v0.7.2
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking copypasta v0.10.2
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking keg v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/context_ledger/mod.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::{Path, PathBuf};
[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: `BufWriter`
[INFO] [stdout]  --> src/context_ledger/mod.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::{Write, BufWriter};
[INFO] [stdout]   |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AppState`
[INFO] [stdout]  --> src/tui/task_processing.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::tui::{App, AppState};
[INFO] [stdout]   |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/tui/task_processing.rs:270:18
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let filled = (width * percentage as usize / 100);
[INFO] [stdout]     |                  ^                                 ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 270 -     let filled = (width * percentage as usize / 100);
[INFO] [stdout] 270 +     let filled = width * percentage as usize / 100 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyModifiers`
[INFO] [stdout]  --> src/tui/mod.rs:7:45
[INFO] [stdout]   |
[INFO] [stdout] 7 |     event::{self, Event, KeyCode, KeyEvent, KeyModifiers},
[INFO] [stdout]   |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::ArgMatches`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use clap::ArgMatches;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyEvent` and `KeyModifiers`
[INFO] [stdout]   --> src/main.rs:29:33
[INFO] [stdout]    |
[INFO] [stdout] 29 | use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};
[INFO] [stdout]    |                                 ^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/context_ledger/mod.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::{Path, PathBuf};
[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: `BufWriter`
[INFO] [stdout]  --> src/context_ledger/mod.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::{Write, BufWriter};
[INFO] [stdout]   |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AppState`
[INFO] [stdout]  --> src/tui/task_processing.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::tui::{App, AppState};
[INFO] [stdout]   |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/tui/task_processing.rs:270:18
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let filled = (width * percentage as usize / 100);
[INFO] [stdout]     |                  ^                                 ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 270 -     let filled = (width * percentage as usize / 100);
[INFO] [stdout] 270 +     let filled = width * percentage as usize / 100 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyModifiers`
[INFO] [stdout]  --> src/tui/mod.rs:7:45
[INFO] [stdout]   |
[INFO] [stdout] 7 |     event::{self, Event, KeyCode, KeyEvent, KeyModifiers},
[INFO] [stdout]   |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::ArgMatches`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use clap::ArgMatches;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyEvent` and `KeyModifiers`
[INFO] [stdout]   --> src/main.rs:29:33
[INFO] [stdout]    |
[INFO] [stdout] 29 | use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};
[INFO] [stdout]    |                                 ^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_RULE_TEMPLATE` is never used
[INFO] [stdout]   --> src/keg_v2/mod.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const CURSOR_RULE_TEMPLATE: &str = r#"---
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_cursor_rules` is never used
[INFO] [stdout]    --> src/keg_v2/mod.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl Keg {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     fn update_cursor_rules(&self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AIRulesManager` is never constructed
[INFO] [stdout]  --> src/keg_v2/ai_rules.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct AIRulesManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/keg_v2/ai_rules.rs:11:12
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl AIRulesManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  11 |     pub fn new(context_file: PathBuf, branch: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn update_all_rules(&self) -> Result<Vec<String>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     fn update_cursor_rules(&self) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     fn update_claude_code_rules(&self) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     fn update_copilot_rules(&self) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     fn update_aider_config(&self) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn generate_cursor_template(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn generate_claude_code_template(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn generate_copilot_template(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `branch` is never read
[INFO] [stdout]   --> src/keg_v2/hooks.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct HooksManager {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 51 |     context_file: PathBuf,
[INFO] [stdout] 52 |     branch: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `branch` is never read
[INFO] [stdout]   --> src/tui_v2/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct MenuApp {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] 40 |     keg: Keg,
[INFO] [stdout] 41 |     branch: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save` and `ensure_api_key` are never used
[INFO] [stdout]    --> src/config/mod.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl Config {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn save(&self) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn ensure_api_key(&mut self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `usage` is never read
[INFO] [stdout]   --> src/llm/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OpenRouterResponse {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 22 |     pub choices: Vec<Choice>,
[INFO] [stdout] 23 |     pub usage: Option<Usage>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenRouterResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/llm/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Choice {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 28 |     pub message: Message,
[INFO] [stdout] 29 |     pub finish_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Choice` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prompt_tokens`, `completion_tokens`, and `total_tokens` are never read
[INFO] [stdout]   --> src/llm/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Usage {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 34 |     pub prompt_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 35 |     pub completion_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub total_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Usage` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_summary` and `analyze_git_history` are never used
[INFO] [stdout]   --> src/llm/mod.rs:61:18
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl LLMClient {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub async fn generate_summary(&self, prompt: &str, context: &str) -> Result<String> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub async fn analyze_git_history(&self, commits_data: &str, task: &str) -> Result<String> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_RULE_TEMPLATE` is never used
[INFO] [stdout]   --> src/keg_v2/mod.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const CURSOR_RULE_TEMPLATE: &str = r#"---
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_cursor_rules` is never used
[INFO] [stdout]    --> src/keg_v2/mod.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl Keg {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     fn update_cursor_rules(&self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AIRulesManager` is never constructed
[INFO] [stdout]  --> src/keg_v2/ai_rules.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct AIRulesManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/keg_v2/ai_rules.rs:11:12
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl AIRulesManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  11 |     pub fn new(context_file: PathBuf, branch: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  16 |     pub fn update_all_rules(&self) -> Result<Vec<String>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     fn update_cursor_rules(&self) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     fn update_claude_code_rules(&self) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     fn update_copilot_rules(&self) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     fn update_aider_config(&self) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn generate_cursor_template(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn generate_claude_code_template(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn generate_copilot_template(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `branch` is never read
[INFO] [stdout]   --> src/keg_v2/hooks.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct HooksManager {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 51 |     context_file: PathBuf,
[INFO] [stdout] 52 |     branch: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `branch` is never read
[INFO] [stdout]   --> src/tui_v2/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct MenuApp {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] 40 |     keg: Keg,
[INFO] [stdout] 41 |     branch: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save` and `ensure_api_key` are never used
[INFO] [stdout]    --> src/config/mod.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl Config {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn save(&self) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn ensure_api_key(&mut self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `usage` is never read
[INFO] [stdout]   --> src/llm/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OpenRouterResponse {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 22 |     pub choices: Vec<Choice>,
[INFO] [stdout] 23 |     pub usage: Option<Usage>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenRouterResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/llm/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Choice {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 28 |     pub message: Message,
[INFO] [stdout] 29 |     pub finish_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Choice` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prompt_tokens`, `completion_tokens`, and `total_tokens` are never read
[INFO] [stdout]   --> src/llm/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Usage {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 34 |     pub prompt_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 35 |     pub completion_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub total_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Usage` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_summary` and `analyze_git_history` are never used
[INFO] [stdout]   --> src/llm/mod.rs:61:18
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl LLMClient {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub async fn generate_summary(&self, prompt: &str, context: &str) -> Result<String> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub async fn analyze_git_history(&self, commits_data: &str, task: &str) -> Result<String> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:625:23
[INFO] [stdout]     |
[INFO] [stdout] 625 |             if let Ok(mut diff) = repo.diff_tree_to_tree(
[INFO] [stdout]     |                       ----^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:625:23
[INFO] [stdout]     |
[INFO] [stdout] 625 |             if let Ok(mut diff) = repo.diff_tree_to_tree(
[INFO] [stdout]     |                       ----^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `ratatui::Frame::<'_>::set_cursor`: the method set_cursor_position indicates more clearly what about the cursor to set
[INFO] [stdout]    --> src/tui/mod.rs:427:11
[INFO] [stdout]     |
[INFO] [stdout] 427 |         f.set_cursor(cursor_x, cursor_y);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `ratatui::Frame::<'_>::set_cursor`: the method set_cursor_position indicates more clearly what about the cursor to set
[INFO] [stdout]    --> src/tui/mod.rs:427:11
[INFO] [stdout]     |
[INFO] [stdout] 427 |         f.set_cursor(cursor_x, cursor_y);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::FutureExt`
[INFO] [stdout]   --> src/main.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use futures::FutureExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::FutureExt`
[INFO] [stdout]   --> src/main.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use futures::FutureExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/git/history.rs:178:13
[INFO] [stdout]     |
[INFO] [stdout] 178 |         let mut diff_details: Vec<String> = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `diff_details`
[INFO] [stdout]    --> src/git/history.rs:178:13
[INFO] [stdout]     |
[INFO] [stdout] 178 |         let mut diff_details: Vec<String> = Vec::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_diff_details`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/git/history.rs:178:13
[INFO] [stdout]     |
[INFO] [stdout] 178 |         let mut diff_details: Vec<String> = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `diff_details`
[INFO] [stdout]    --> src/git/history.rs:178:13
[INFO] [stdout]     |
[INFO] [stdout] 178 |         let mut diff_details: Vec<String> = Vec::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_diff_details`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ledger/mod.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let mut seen_ids: HashSet<String> = HashSet::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `seen_ids`
[INFO] [stdout]    --> src/ledger/mod.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let mut seen_ids: HashSet<String> = HashSet::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seen_ids`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ledger/mod.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let mut seen_ids: HashSet<String> = HashSet::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `seen_ids`
[INFO] [stdout]    --> src/ledger/mod.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let mut seen_ids: HashSet<String> = HashSet::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seen_ids`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `limit`
[INFO] [stdout]   --> src/mcp/mod.rs:49:45
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub async fn fetch_conversations(&self, limit: usize) -> Result<Vec<Conversation>> {
[INFO] [stdout]    |                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stderr_handle`
[INFO] [stdout]   --> src/mcp/mod.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let stderr_handle = std::thread::spawn(move || {
[INFO] [stdout]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stderr_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `limit`
[INFO] [stdout]   --> src/mcp/mod.rs:49:45
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub async fn fetch_conversations(&self, limit: usize) -> Result<Vec<Conversation>> {
[INFO] [stdout]    |                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stderr_handle`
[INFO] [stdout]   --> src/mcp/mod.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let stderr_handle = std::thread::spawn(move || {
[INFO] [stdout]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stderr_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `branch_name`
[INFO] [stdout]    --> src/cursor_reader/mod.rs:300:5
[INFO] [stdout]     |
[INFO] [stdout] 300 |     branch_name: &str,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_branch_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `branch_name`
[INFO] [stdout]    --> src/cursor_reader/mod.rs:300:5
[INFO] [stdout]     |
[INFO] [stdout] 300 |     branch_name: &str,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_branch_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cursor_reader/mod.rs:800:25
[INFO] [stdout]     |
[INFO] [stdout] 800 |             if let Some(mut cc) = build_candidate_from_conversation_json(&id, &json, conn) {
[INFO] [stdout]     |                         ----^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cursor_reader/mod.rs:820:9
[INFO] [stdout]     |
[INFO] [stdout] 820 |     let mut key_decisions = Vec::new();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cursor_reader/mod.rs:821:9
[INFO] [stdout]     |
[INFO] [stdout] 821 |     let mut todos = Vec::new();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cursor_reader/mod.rs:800:25
[INFO] [stdout]     |
[INFO] [stdout] 800 |             if let Some(mut cc) = build_candidate_from_conversation_json(&id, &json, conn) {
[INFO] [stdout]     |                         ----^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cursor_reader/mod.rs:820:9
[INFO] [stdout]     |
[INFO] [stdout] 820 |     let mut key_decisions = Vec::new();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cursor_reader/mod.rs:821:9
[INFO] [stdout]     |
[INFO] [stdout] 821 |     let mut todos = Vec::new();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `git_repo`
[INFO] [stdout]    --> src/main.rs:994:5
[INFO] [stdout]     |
[INFO] [stdout] 994 |     git_repo: &git::GitRepo,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_git_repo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]    --> src/main.rs:995:5
[INFO] [stdout]     |
[INFO] [stdout] 995 |     database: &Database,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_multiline_input` is never used
[INFO] [stdout]     --> src/main.rs:1319:4
[INFO] [stdout]      |
[INFO] [stdout] 1319 | fn read_multiline_input() -> Result<String> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_commit_limit` and `format_history_summary` are never used
[INFO] [stdout]    --> src/git/history.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl<'repo> GitHistoryAnalyzer<'repo> {
[INFO] [stdout]     | ------------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn with_commit_limit(mut self, limit: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn format_history_summary(&self, analysis: &GitHistoryAnalysis, task: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LanguageParser` is never constructed
[INFO] [stdout]  --> src/indexing/parsers.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct LanguageParser {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indexing/parsers.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl LanguageParser {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 10 |     pub fn new(name: String, extensions: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `deep_mode` is never read
[INFO] [stdout]   --> src/indexing/simple.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct SimpleIndexer {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 45 |     pub deep_mode: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LedgerEntry` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LedgerEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EntryKind` is never used
[INFO] [stdout]   --> src/ledger/mod.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum EntryKind {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `priority` is never used
[INFO] [stdout]   --> src/ledger/mod.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl EntryKind {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 33 |     pub fn priority(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LedgerItem` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct LedgerItem {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_id_default` is never used
[INFO] [stdout]   --> src/ledger/mod.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn generate_id_default() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `compute_id` is never used
[INFO] [stdout]   --> src/ledger/mod.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl LedgerItem {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 57 |     pub fn compute_id(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HandoffData` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct HandoffData {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SelectedItem` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct SelectedItem {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HandoffStats` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct HandoffStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LedgerReader` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct LedgerReader {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ledger/mod.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl LedgerReader {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  98 |     pub fn new(path: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn with_branch_filter(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn with_scan_limit(mut self, max_bytes: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn with_full_scan(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn read_entries(&self) -> Result<(Vec<LedgerEntry>, HandoffStats)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn matches_branch_filter(&self, entry: &LedgerEntry) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn select_for_checkpoint(&self, entries: Vec<LedgerEntry>, file_overlap: HashSet<String>, full: bool) -> HandoffData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LedgerWriter` is never constructed
[INFO] [stdout]    --> src/ledger/mod.rs:336:12
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub struct LedgerWriter {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `append_entry` are never used
[INFO] [stdout]    --> src/ledger/mod.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout] 340 | impl LedgerWriter {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 341 |     pub fn new(path: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn append_entry(&self, entry: &mut LedgerEntry) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tail_ledger` is never used
[INFO] [stdout]    --> src/ledger/mod.rs:371:8
[INFO] [stdout]     |
[INFO] [stdout] 371 | pub fn tail_ledger(path: &Path, n: usize, pretty: bool) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vacuum_ledger` is never used
[INFO] [stdout]    --> src/ledger/mod.rs:420:8
[INFO] [stdout]     |
[INFO] [stdout] 420 | pub fn vacuum_ledger(path: &Path, drop_invalid: bool) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_current_branch` is never used
[INFO] [stdout]    --> src/ledger/mod.rs:480:8
[INFO] [stdout]     |
[INFO] [stdout] 480 | pub fn get_current_branch() -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_merge_base_time` is never used
[INFO] [stdout]    --> src/ledger/mod.rs:491:8
[INFO] [stdout]     |
[INFO] [stdout] 491 | pub fn get_merge_base_time(repo: &Repository, trunk: Option<&str>) -> Result<Option<DateTime<Utc>>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `append` is never used
[INFO] [stdout]   --> src/context_ledger/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl ContextLedger {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn append(&self, content: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `usage` is never read
[INFO] [stdout]   --> src/llm/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OpenRouterResponse {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 22 |     pub choices: Vec<Choice>,
[INFO] [stdout] 23 |     pub usage: Option<Usage>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenRouterResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/llm/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Choice {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 28 |     pub message: Message,
[INFO] [stdout] 29 |     pub finish_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Choice` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prompt_tokens`, `completion_tokens`, and `total_tokens` are never read
[INFO] [stdout]   --> src/llm/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Usage {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 34 |     pub prompt_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 35 |     pub completion_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub total_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Usage` 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 `generate_summary` is never used
[INFO] [stdout]   --> src/llm/mod.rs:61:18
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl LLMClient {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub async fn generate_summary(&self, prompt: &str, context: &str) -> Result<String> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Conversation` is never constructed
[INFO] [stdout]  --> src/mcp/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Conversation {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpRequest` is never constructed
[INFO] [stdout]   --> src/mcp/mod.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct McpRequest {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpResponse` is never constructed
[INFO] [stdout]   --> src/mcp/mod.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | struct McpResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpError` is never constructed
[INFO] [stdout]   --> src/mcp/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct McpError {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpClient` is never constructed
[INFO] [stdout]   --> src/mcp/mod.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct McpClient {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fetch_conversations`, and `filter_by_branch_files` are never used
[INFO] [stdout]    --> src/mcp/mod.rs:45:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl McpClient {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  45 |     pub fn new(repo_root: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub async fn fetch_conversations(&self, limit: usize) -> Result<Vec<Conversation>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn filter_by_branch_files(&self, conversations: Vec<Conversation>, branch_files: &[String]) -> Vec<Conversation> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_mcp_integration` is never used
[INFO] [stdout]    --> src/mcp/mod.rs:227:14
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub async fn test_mcp_integration(repo_root: &str, branch_name: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message_count` is never read
[INFO] [stdout]    --> src/cursor_reader/mod.rs:569:5
[INFO] [stdout]     |
[INFO] [stdout] 565 | struct ConversationCandidate {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 569 |     message_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConversationCandidate` 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 methods are never used
[INFO] [stdout]    --> src/prompt/mod.rs:81:18
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl PromptGenerator {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub async fn generate_comprehensive_prompt(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn generate_header(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn generate_task_section(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn generate_repo_overview(&self, index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     fn generate_architecture_section(&self, index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn detect_architectural_patterns(&self, index: &CodebaseIndex) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     fn extract_module_structure(&self, index: &CodebaseIndex) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     fn collect_anti_patterns(&self, _index: &CodebaseIndex) -> Vec<(String, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn generate_key_files_section(&self, index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 723 |     fn generate_git_history_section(&self, analysis: &GitHistoryAnalysis) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 756 |     fn generate_related_content_section(&self, index: &CodebaseIndex, analysis: &GitHistoryAnalysis) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 811 |     fn generate_recommendations_section(&self, index: &CodebaseIndex, analysis: &GitHistoryAnalysis) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 865 |     fn generate_footer(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 871 |     fn generate_repo_stats(&self, index: &CodebaseIndex, git_analysis: &GitHistoryAnalysis) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 896 |     fn generate_task_specific_files(&self, index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 999 |     fn generate_relevant_files_section(&self, codebase_index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MenuItem` is never used
[INFO] [stdout]   --> src/tui/mod.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum MenuItem {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `menu_state` is never read
[INFO] [stdout]   --> src/tui/mod.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct App {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub menu_state: ListState,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `App` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Multiline` is never constructed
[INFO] [stdout]   --> src/tui/mod.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub enum InputMode {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 91 |     Multiline,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InputMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_logs` is never used
[INFO] [stdout]    --> src/tui/mod.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl App {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn clear_logs(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_processing` is never used
[INFO] [stdout]    --> src/tui/mod.rs:431:4
[INFO] [stdout]     |
[INFO] [stdout] 431 | fn render_processing(f: &mut Frame, area: Rect, app: &App) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_header` is never used
[INFO] [stdout]   --> src/tui/task_processing.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn render_task_header(f: &mut Frame, area: Rect, app: &App) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_progress_section` is never used
[INFO] [stdout]   --> src/tui/task_processing.rs:69:4
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn render_progress_section(f: &mut Frame, area: Rect, app: &App) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_progress_info` is never used
[INFO] [stdout]   --> src/tui/task_processing.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn get_progress_info(message: &str) -> (u16, String) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_current_status` is never used
[INFO] [stdout]    --> src/tui/task_processing.rs:107:4
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn render_current_status(f: &mut Frame, area: Rect, app: &App) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_number` is never used
[INFO] [stdout]    --> src/tui/task_processing.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn extract_number(msg: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clean_processing_message` is never used
[INFO] [stdout]    --> src/tui/task_processing.rs:293:4
[INFO] [stdout]     |
[INFO] [stdout] 293 | fn clean_processing_message(msg: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_progress_spinner` is never used
[INFO] [stdout]   --> src/utils/mod.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn show_progress_spinner(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `git_repo`
[INFO] [stdout]    --> src/main.rs:994:5
[INFO] [stdout]     |
[INFO] [stdout] 994 |     git_repo: &git::GitRepo,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_git_repo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]    --> src/main.rs:995:5
[INFO] [stdout]     |
[INFO] [stdout] 995 |     database: &Database,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_multiline_input` is never used
[INFO] [stdout]     --> src/main.rs:1319:4
[INFO] [stdout]      |
[INFO] [stdout] 1319 | fn read_multiline_input() -> Result<String> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_commit_limit` and `format_history_summary` are never used
[INFO] [stdout]    --> src/git/history.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl<'repo> GitHistoryAnalyzer<'repo> {
[INFO] [stdout]     | ------------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn with_commit_limit(mut self, limit: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn format_history_summary(&self, analysis: &GitHistoryAnalysis, task: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LanguageParser` is never constructed
[INFO] [stdout]  --> src/indexing/parsers.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct LanguageParser {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indexing/parsers.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl LanguageParser {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 10 |     pub fn new(name: String, extensions: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `deep_mode` is never read
[INFO] [stdout]   --> src/indexing/simple.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct SimpleIndexer {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 45 |     pub deep_mode: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LedgerEntry` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LedgerEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EntryKind` is never used
[INFO] [stdout]   --> src/ledger/mod.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum EntryKind {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `priority` is never used
[INFO] [stdout]   --> src/ledger/mod.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl EntryKind {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 33 |     pub fn priority(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LedgerItem` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct LedgerItem {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_id_default` is never used
[INFO] [stdout]   --> src/ledger/mod.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn generate_id_default() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `compute_id` is never used
[INFO] [stdout]   --> src/ledger/mod.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl LedgerItem {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 57 |     pub fn compute_id(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HandoffData` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct HandoffData {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SelectedItem` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct SelectedItem {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HandoffStats` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct HandoffStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LedgerReader` is never constructed
[INFO] [stdout]   --> src/ledger/mod.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct LedgerReader {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ledger/mod.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl LedgerReader {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  98 |     pub fn new(path: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn with_branch_filter(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn with_scan_limit(mut self, max_bytes: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn with_full_scan(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn read_entries(&self) -> Result<(Vec<LedgerEntry>, HandoffStats)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn matches_branch_filter(&self, entry: &LedgerEntry) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn select_for_checkpoint(&self, entries: Vec<LedgerEntry>, file_overlap: HashSet<String>, full: bool) -> HandoffData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LedgerWriter` is never constructed
[INFO] [stdout]    --> src/ledger/mod.rs:336:12
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub struct LedgerWriter {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `append_entry` are never used
[INFO] [stdout]    --> src/ledger/mod.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout] 340 | impl LedgerWriter {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 341 |     pub fn new(path: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn append_entry(&self, entry: &mut LedgerEntry) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tail_ledger` is never used
[INFO] [stdout]    --> src/ledger/mod.rs:371:8
[INFO] [stdout]     |
[INFO] [stdout] 371 | pub fn tail_ledger(path: &Path, n: usize, pretty: bool) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vacuum_ledger` is never used
[INFO] [stdout]    --> src/ledger/mod.rs:420:8
[INFO] [stdout]     |
[INFO] [stdout] 420 | pub fn vacuum_ledger(path: &Path, drop_invalid: bool) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_current_branch` is never used
[INFO] [stdout]    --> src/ledger/mod.rs:480:8
[INFO] [stdout]     |
[INFO] [stdout] 480 | pub fn get_current_branch() -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_merge_base_time` is never used
[INFO] [stdout]    --> src/ledger/mod.rs:491:8
[INFO] [stdout]     |
[INFO] [stdout] 491 | pub fn get_merge_base_time(repo: &Repository, trunk: Option<&str>) -> Result<Option<DateTime<Utc>>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `append` is never used
[INFO] [stdout]   --> src/context_ledger/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl ContextLedger {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn append(&self, content: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `usage` is never read
[INFO] [stdout]   --> src/llm/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OpenRouterResponse {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 22 |     pub choices: Vec<Choice>,
[INFO] [stdout] 23 |     pub usage: Option<Usage>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenRouterResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/llm/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Choice {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 28 |     pub message: Message,
[INFO] [stdout] 29 |     pub finish_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Choice` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prompt_tokens`, `completion_tokens`, and `total_tokens` are never read
[INFO] [stdout]   --> src/llm/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Usage {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 34 |     pub prompt_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 35 |     pub completion_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub total_tokens: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Usage` 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 `generate_summary` is never used
[INFO] [stdout]   --> src/llm/mod.rs:61:18
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl LLMClient {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub async fn generate_summary(&self, prompt: &str, context: &str) -> Result<String> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Conversation` is never constructed
[INFO] [stdout]  --> src/mcp/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Conversation {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpRequest` is never constructed
[INFO] [stdout]   --> src/mcp/mod.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct McpRequest {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpResponse` is never constructed
[INFO] [stdout]   --> src/mcp/mod.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | struct McpResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpError` is never constructed
[INFO] [stdout]   --> src/mcp/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct McpError {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `McpClient` is never constructed
[INFO] [stdout]   --> src/mcp/mod.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct McpClient {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fetch_conversations`, and `filter_by_branch_files` are never used
[INFO] [stdout]    --> src/mcp/mod.rs:45:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl McpClient {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  45 |     pub fn new(repo_root: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub async fn fetch_conversations(&self, limit: usize) -> Result<Vec<Conversation>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn filter_by_branch_files(&self, conversations: Vec<Conversation>, branch_files: &[String]) -> Vec<Conversation> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_mcp_integration` is never used
[INFO] [stdout]    --> src/mcp/mod.rs:227:14
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub async fn test_mcp_integration(repo_root: &str, branch_name: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message_count` is never read
[INFO] [stdout]    --> src/cursor_reader/mod.rs:569:5
[INFO] [stdout]     |
[INFO] [stdout] 565 | struct ConversationCandidate {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 569 |     message_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConversationCandidate` 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 methods are never used
[INFO] [stdout]    --> src/prompt/mod.rs:81:18
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl PromptGenerator {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub async fn generate_comprehensive_prompt(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn generate_header(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn generate_task_section(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn generate_repo_overview(&self, index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     fn generate_architecture_section(&self, index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn detect_architectural_patterns(&self, index: &CodebaseIndex) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     fn extract_module_structure(&self, index: &CodebaseIndex) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     fn collect_anti_patterns(&self, _index: &CodebaseIndex) -> Vec<(String, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn generate_key_files_section(&self, index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 723 |     fn generate_git_history_section(&self, analysis: &GitHistoryAnalysis) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 756 |     fn generate_related_content_section(&self, index: &CodebaseIndex, analysis: &GitHistoryAnalysis) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 811 |     fn generate_recommendations_section(&self, index: &CodebaseIndex, analysis: &GitHistoryAnalysis) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 865 |     fn generate_footer(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 871 |     fn generate_repo_stats(&self, index: &CodebaseIndex, git_analysis: &GitHistoryAnalysis) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 896 |     fn generate_task_specific_files(&self, index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 999 |     fn generate_relevant_files_section(&self, codebase_index: &CodebaseIndex) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MenuItem` is never used
[INFO] [stdout]   --> src/tui/mod.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum MenuItem {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `menu_state` is never read
[INFO] [stdout]   --> src/tui/mod.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct App {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub menu_state: ListState,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `App` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Multiline` is never constructed
[INFO] [stdout]   --> src/tui/mod.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub enum InputMode {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 91 |     Multiline,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InputMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_logs` is never used
[INFO] [stdout]    --> src/tui/mod.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl App {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn clear_logs(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_processing` is never used
[INFO] [stdout]    --> src/tui/mod.rs:431:4
[INFO] [stdout]     |
[INFO] [stdout] 431 | fn render_processing(f: &mut Frame, area: Rect, app: &App) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_header` is never used
[INFO] [stdout]   --> src/tui/task_processing.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn render_task_header(f: &mut Frame, area: Rect, app: &App) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_progress_section` is never used
[INFO] [stdout]   --> src/tui/task_processing.rs:69:4
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn render_progress_section(f: &mut Frame, area: Rect, app: &App) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_progress_info` is never used
[INFO] [stdout]   --> src/tui/task_processing.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn get_progress_info(message: &str) -> (u16, String) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_current_status` is never used
[INFO] [stdout]    --> src/tui/task_processing.rs:107:4
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn render_current_status(f: &mut Frame, area: Rect, app: &App) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_number` is never used
[INFO] [stdout]    --> src/tui/task_processing.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn extract_number(msg: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clean_processing_message` is never used
[INFO] [stdout]    --> src/tui/task_processing.rs:293:4
[INFO] [stdout]     |
[INFO] [stdout] 293 | fn clean_processing_message(msg: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_progress_spinner` is never used
[INFO] [stdout]   --> src/utils/mod.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn show_progress_spinner(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 43s
[INFO] running `Command { std: "docker" "inspect" "8d4c49a50037bd3266e8f918446822c0a5be23b89078e228a5391029a6ff1491", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8d4c49a50037bd3266e8f918446822c0a5be23b89078e228a5391029a6ff1491", kill_on_drop: false }`
[INFO] [stdout] 8d4c49a50037bd3266e8f918446822c0a5be23b89078e228a5391029a6ff1491
