[INFO] cloning repository https://github.com/acunniffe/git-ai
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/acunniffe/git-ai" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Facunniffe%2Fgit-ai", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Facunniffe%2Fgit-ai'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] faaf6d8ccbe0c2875f0396836b8bcef0ece23eed
[INFO] checking acunniffe/git-ai against try#6284d7b4bd27983dba388146648ab844ca7d032f for pr-152971
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Facunniffe%2Fgit-ai" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/acunniffe/git-ai
[INFO] finished tweaking git repo https://github.com/acunniffe/git-ai
[INFO] tweaked toml for git repo https://github.com/acunniffe/git-ai written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/acunniffe/git-ai on toolchain 6284d7b4bd27983dba388146648ab844ca7d032f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/acunniffe/git-ai 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" "+6284d7b4bd27983dba388146648ab844ca7d032f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3390e4f2be9360f9cbc3cc3da9ba0b665e79e6f811b6c0471171c5d9ce44e515
[INFO] running `Command { std: "docker" "start" "-a" "3390e4f2be9360f9cbc3cc3da9ba0b665e79e6f811b6c0471171c5d9ce44e515", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3390e4f2be9360f9cbc3cc3da9ba0b665e79e6f811b6c0471171c5d9ce44e515", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3390e4f2be9360f9cbc3cc3da9ba0b665e79e6f811b6c0471171c5d9ce44e515", kill_on_drop: false }`
[INFO] [stdout] 3390e4f2be9360f9cbc3cc3da9ba0b665e79e6f811b6c0471171c5d9ce44e515
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4e394023b8a517a0012009c3dbb772176a76339ad57c2713d424be777f21f137
[INFO] running `Command { std: "docker" "start" "-a" "4e394023b8a517a0012009c3dbb772176a76339ad57c2713d424be777f21f137", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling find-msvc-tools v0.1.5
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]     Checking unicode-normalization v0.1.25
[INFO] [stderr]     Checking gix-trace v0.1.17
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking gix-utils v0.3.1
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking prodash v31.0.0
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling heapless v0.8.0
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking hash32 v0.3.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling cc v1.2.48
[INFO] [stderr]    Compiling polling v2.8.0
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling rustix v0.37.28
[INFO] [stderr]     Checking waker-fn v1.2.0
[INFO] [stderr]     Checking faster-hex v0.10.0
[INFO] [stderr]     Checking futures-lite v1.13.0
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking io-lifetimes v1.0.11
[INFO] [stderr]     Checking async-lock v2.8.0
[INFO] [stderr]     Checking sha1-checked v0.10.0
[INFO] [stderr]    Compiling async-io v1.13.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]     Checking jiff v0.2.18
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]    Compiling libz-sys v1.1.23
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]     Checking bstr v1.12.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking gix-validate v0.11.0
[INFO] [stderr]     Checking gix-error v0.0.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]    Compiling lzma-sys v0.1.20
[INFO] [stderr]     Checking socket2 v0.4.10
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking tempfile v3.24.0
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking gix-date v0.13.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking gix-path v0.11.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking gix-features v0.46.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking gix-fs v0.19.0
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking gix-hash v0.22.0
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]     Checking gix-hashtable v0.12.0
[INFO] [stderr]     Checking gix-tempfile v21.0.0
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking gix-actor v0.38.0
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]    Compiling libgit2-sys v0.18.2+1.9.1
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking indexmap v2.12.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]    Compiling async-fs v1.6.0
[INFO] [stderr]     Checking crc-catalog v2.4.0
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]    Compiling instability v0.3.10
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling toml_parser v1.0.4
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking crc v3.4.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking gix-object v0.55.0
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking gix-lock v21.0.0
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking async-signal v0.2.13
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]     Checking event-listener v3.1.0
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]    Compiling toml_datetime v0.7.3
[INFO] [stderr]     Checking gix-ref v0.58.0
[INFO] [stderr]    Compiling toml_edit v0.23.7
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking zopfli v0.8.3
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking time v0.3.46
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking async-process v1.8.1
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking xz2 v0.1.7
[INFO] [stderr]     Checking bzip2 v0.5.2
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking flate2 v1.1.8
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking lzma-rs v0.3.0
[INFO] [stderr]    Compiling rstest_macros v0.23.0
[INFO] [stderr]     Checking rustls-native-certs v0.6.3
[INFO] [stderr]     Checking async-net v1.8.0
[INFO] [stderr]     Checking gix-glob v0.24.0
[INFO] [stderr]     Checking gix-config-value v0.17.0
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking async-executor v1.13.3
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking gix-sec v0.13.0
[INFO] [stderr]     Checking ryu-js v1.0.2
[INFO] [stderr]     Checking deflate64 v0.1.10
[INFO] [stderr]     Checking unicode-bom v2.0.3
[INFO] [stderr]     Checking predicates-core v1.0.9
[INFO] [stderr]     Checking ratatui v0.28.1
[INFO] [stderr]     Checking serde_json_canonicalizer v0.3.1
[INFO] [stderr]     Checking gix-config v0.51.0
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking smol v1.3.0
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking minreq v2.14.1
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]     Checking envy v0.4.2
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]     Checking imara-diff v0.2.0
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking sdd v3.0.10
[INFO] [stderr]    Compiling assert_cmd v2.1.1
[INFO] [stderr]     Checking normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]     Checking jsonc-parser v0.27.1
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking difflib v0.4.0
[INFO] [stderr]     Checking scc v2.4.0
[INFO] [stderr]     Checking predicates-tree v1.0.12
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling serial_test_derive v3.2.0
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking predicates v3.1.3
[INFO] [stderr]     Checking similar v2.7.0
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking filetime v0.2.26
[INFO] [stderr]     Checking insta v1.44.3
[INFO] [stderr]     Checking serial_test v3.2.0
[INFO] [stderr]     Checking rstest v0.23.0
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking git2 v0.20.2
[INFO] [stderr]     Checking git-ai v1.1.6 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `METRICS_API_VERSION`
[INFO] [stdout]  --> src/observability/mod.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::metrics::{METRICS_API_VERSION, MetricEvent};
[INFO] [stdout]   |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AGENT_USAGE_MIN_INTERVAL_SECS` is never used
[INFO] [stdout]   --> src/commands/checkpoint.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const AGENT_USAGE_MIN_INTERVAL_SECS: u64 = 150;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENV_FLUSH_METRICS_DB_WORKER` is never used
[INFO] [stdout]   --> src/commands/flush_metrics_db.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const ENV_FLUSH_METRICS_DB_WORKER: &str = "GIT_AI_FLUSH_METRICS_DB_WORKER";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Metrics` is never constructed
[INFO] [stdout]   --> src/observability/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum LogEnvelope {
[INFO] [stdout]    |      ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 66 |     Metrics(MetricsEnvelope),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LogEnvelope` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `git_ai::git::repository::Repository`
[INFO] [stdout]  --> tests/rebase_hooks_comprehensive.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use git_ai::git::repository::Repository;
[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: `git_ai::git::repository::Repository`
[INFO] [stdout]  --> tests/switch_hooks_comprehensive.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use git_ai::git::repository::Repository;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/rebase_hooks_comprehensive.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let mut repo = TestRepo::new();
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base_commit`
[INFO] [stdout]   --> tests/rebase_hooks_comprehensive.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let base_commit = repo.commit("base commit").unwrap();
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_base_commit`
[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]   --> tests/rebase_hooks_comprehensive.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |     let mut repo = TestRepo::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]    --> tests/rebase_hooks_comprehensive.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |     let mut repo = TestRepo::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]    --> tests/rebase_hooks_comprehensive.rs:154:9
[INFO] [stdout]     |
[INFO] [stdout] 154 |     let mut repo = TestRepo::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]    --> tests/rebase_hooks_comprehensive.rs:198:9
[INFO] [stdout]     |
[INFO] [stdout] 198 |     let mut repo = TestRepo::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]    --> tests/rebase_hooks_comprehensive.rs:243:9
[INFO] [stdout]     |
[INFO] [stdout] 243 |     let mut repo = TestRepo::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]    --> tests/rebase_hooks_comprehensive.rs:298:9
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let mut repo = TestRepo::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]   --> tests/switch_hooks_comprehensive.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut repo = TestRepo::new();
[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]   --> tests/switch_hooks_comprehensive.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base_commit`
[INFO] [stdout]    --> tests/switch_hooks_comprehensive.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let base_commit = repo.commit("base commit").unwrap();
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_base_commit`
[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]    --> tests/switch_hooks_comprehensive.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base_commit`
[INFO] [stdout]    --> tests/switch_hooks_comprehensive.rs:277:9
[INFO] [stdout]     |
[INFO] [stdout] 277 |     let base_commit = repo.commit("base commit").unwrap();
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_base_commit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/switch_hooks_comprehensive.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 362 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:405:9
[INFO] [stdout]     |
[INFO] [stdout] 405 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:492:9
[INFO] [stdout]     |
[INFO] [stdout] 492 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:510:9
[INFO] [stdout]     |
[INFO] [stdout] 510 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:528:9
[INFO] [stdout]     |
[INFO] [stdout] 528 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:545:9
[INFO] [stdout]     |
[INFO] [stdout] 545 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commit2`
[INFO] [stdout]    --> tests/switch_hooks_comprehensive.rs:554:9
[INFO] [stdout]     |
[INFO] [stdout] 554 |     let commit2 = repo.commit("commit 2").unwrap();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commit2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `working_log`
[INFO] [stdout]    --> tests/switch_hooks_comprehensive.rs:559:9
[INFO] [stdout]     |
[INFO] [stdout] 559 |     let working_log = repository
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_working_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/switch_hooks_comprehensive.rs:573:9
[INFO] [stdout]     |
[INFO] [stdout] 573 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `feature_commit`
[INFO] [stdout]    --> tests/switch_hooks_comprehensive.rs:582:9
[INFO] [stdout]     |
[INFO] [stdout] 582 |     let feature_commit = repo.commit("feature commit").unwrap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_feature_commit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/switch_hooks_comprehensive.rs:616:9
[INFO] [stdout]     |
[INFO] [stdout] 616 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:664:9
[INFO] [stdout]     |
[INFO] [stdout] 664 |     let mut repo = TestRepo::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]    --> tests/switch_hooks_comprehensive.rs:696:9
[INFO] [stdout]     |
[INFO] [stdout] 696 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `repos::test_file::ExpectedLineExt`
[INFO] [stdout]   --> tests/search.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use repos::test_file::ExpectedLineExt;
[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: `std::io::Write`
[INFO] [stdout]   --> tests/search.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::io::Write;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `git_ai::git::repository::Repository`
[INFO] [stdout]  --> tests/checkout_hooks_comprehensive.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use git_ai::git::repository::Repository;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/checkout_hooks_comprehensive.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut repo = TestRepo::new();
[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]   --> tests/checkout_hooks_comprehensive.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut repo = TestRepo::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]   --> tests/checkout_hooks_comprehensive.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:236:9
[INFO] [stdout]     |
[INFO] [stdout] 236 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:266:9
[INFO] [stdout]     |
[INFO] [stdout] 266 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:310:9
[INFO] [stdout]     |
[INFO] [stdout] 310 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:351:9
[INFO] [stdout]     |
[INFO] [stdout] 351 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:403:9
[INFO] [stdout]     |
[INFO] [stdout] 403 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:445:9
[INFO] [stdout]     |
[INFO] [stdout] 445 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:613:9
[INFO] [stdout]     |
[INFO] [stdout] 613 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:631:9
[INFO] [stdout]     |
[INFO] [stdout] 631 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:649:9
[INFO] [stdout]     |
[INFO] [stdout] 649 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:666:9
[INFO] [stdout]     |
[INFO] [stdout] 666 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:712:9
[INFO] [stdout]     |
[INFO] [stdout] 712 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:763:9
[INFO] [stdout]     |
[INFO] [stdout] 763 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:814:9
[INFO] [stdout]     |
[INFO] [stdout] 814 |     let mut repo = TestRepo::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]    --> tests/checkout_hooks_comprehensive.rs:846:9
[INFO] [stdout]     |
[INFO] [stdout] 846 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commit2`
[INFO] [stdout]    --> tests/checkout_hooks_comprehensive.rs:856:9
[INFO] [stdout]     |
[INFO] [stdout] 856 |     let commit2 = repo.commit("commit 2").unwrap();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commit2`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::ExitStatus`
[INFO] [stdout]    --> tests/cherry_pick_hooks_comprehensive.rs:470:9
[INFO] [stdout]     |
[INFO] [stdout] 470 |     use std::process::ExitStatus;
[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: `repos::test_file::ExpectedLineExt`
[INFO] [stdout]   --> tests/continue_session.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use repos::test_file::ExpectedLineExt;
[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: `git_ai::git::repository::Repository`
[INFO] [stdout]  --> tests/merge_hooks_comprehensive.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use git_ai::git::repository::Repository;
[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: `Error as SqlError`
[INFO] [stdout]    --> src/error.rs:189:36
[INFO] [stdout]     |
[INFO] [stdout] 189 |         use rusqlite::{Connection, Error as SqlError};
[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: `super::EventValues`
[INFO] [stdout]    --> src/metrics/types.rs:221:13
[INFO] [stdout]     |
[INFO] [stdout] 221 |         use super::EventValues;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `METRICS_API_VERSION`
[INFO] [stdout]  --> src/observability/mod.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::metrics::{METRICS_API_VERSION, MetricEvent};
[INFO] [stdout]   |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/merge_hooks_comprehensive.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut repo = TestRepo::new();
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]   --> tests/merge_hooks_comprehensive.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |     let base = repo.commit("base commit").unwrap();
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `feature`
[INFO] [stdout]   --> tests/merge_hooks_comprehensive.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let feature = repo.commit("feature commit").unwrap();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_feature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/merge_hooks_comprehensive.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |     let mut repo = TestRepo::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]    --> tests/merge_hooks_comprehensive.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let mut repo = TestRepo::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]    --> tests/merge_hooks_comprehensive.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 159 |     let mut repo = TestRepo::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]    --> tests/merge_hooks_comprehensive.rs:197:9
[INFO] [stdout]     |
[INFO] [stdout] 197 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_count`
[INFO] [stdout]    --> tests/merge_hooks_comprehensive.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |     let initial_count = events_before.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events_after`
[INFO] [stdout]    --> tests/merge_hooks_comprehensive.rs:215:9
[INFO] [stdout]     |
[INFO] [stdout] 215 |     let events_after = repository.storage.read_rewrite_events().unwrap_or_default();
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_events_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/merge_hooks_comprehensive.rs:321:9
[INFO] [stdout]     |
[INFO] [stdout] 321 |     let mut repo = TestRepo::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]    --> tests/merge_hooks_comprehensive.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> tests/merge_hooks_comprehensive.rs:340:9
[INFO] [stdout]     |
[INFO] [stdout] 340 |     let base = repo.commit("base commit").unwrap();
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/merge_hooks_comprehensive.rs:363:9
[INFO] [stdout]     |
[INFO] [stdout] 363 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> tests/merge_hooks_comprehensive.rs:369:9
[INFO] [stdout]     |
[INFO] [stdout] 369 |     let base = repo.commit("base commit").unwrap();
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `feature`
[INFO] [stdout]    --> tests/merge_hooks_comprehensive.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 383 |     let feature = repo.commit("feature commit 2").unwrap();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_feature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/merge_hooks_comprehensive.rs:411:9
[INFO] [stdout]     |
[INFO] [stdout] 411 |     let mut repo = TestRepo::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]    --> tests/merge_hooks_comprehensive.rs:495:9
[INFO] [stdout]     |
[INFO] [stdout] 495 |     let mut repo = TestRepo::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]    --> tests/merge_hooks_comprehensive.rs:518:9
[INFO] [stdout]     |
[INFO] [stdout] 518 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Error as SqlError`
[INFO] [stdout]    --> src/error.rs:189:36
[INFO] [stdout]     |
[INFO] [stdout] 189 |         use rusqlite::{Connection, Error as SqlError};
[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: `super::EventValues`
[INFO] [stdout]    --> src/metrics/types.rs:221:13
[INFO] [stdout]     |
[INFO] [stdout] 221 |         use super::EventValues;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `METRICS_API_VERSION`
[INFO] [stdout]  --> src/observability/mod.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::metrics::{METRICS_API_VERSION, MetricEvent};
[INFO] [stdout]   |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `METRICS_API_VERSION`
[INFO] [stdout]  --> src/observability/mod.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::metrics::{METRICS_API_VERSION, MetricEvent};
[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: `git_ai::git::repository::Repository`
[INFO] [stdout]  --> tests/commit_hooks_comprehensive.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use git_ai::git::repository::Repository;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/commit_hooks_comprehensive.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let mut repo = TestRepo::new();
[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]   --> tests/commit_hooks_comprehensive.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut repo = TestRepo::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]   --> tests/commit_hooks_comprehensive.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |     let mut repo = TestRepo::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]    --> tests/commit_hooks_comprehensive.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commit`
[INFO] [stdout]    --> tests/commit_hooks_comprehensive.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let commit = repo.commit("test commit").unwrap();
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_commit`
[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]    --> tests/commit_hooks_comprehensive.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amended_commit`
[INFO] [stdout]    --> tests/commit_hooks_comprehensive.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let amended_commit = repo
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_amended_commit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/commit_hooks_comprehensive.rs:197:9
[INFO] [stdout]     |
[INFO] [stdout] 197 |     let mut repo = TestRepo::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]    --> tests/commit_hooks_comprehensive.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |     let mut repo = TestRepo::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]    --> tests/commit_hooks_comprehensive.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |     let mut repo = TestRepo::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]    --> tests/commit_hooks_comprehensive.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |     let mut repo = TestRepo::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]    --> tests/commit_hooks_comprehensive.rs:346:9
[INFO] [stdout]     |
[INFO] [stdout] 346 |     let mut repo = TestRepo::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]    --> tests/commit_hooks_comprehensive.rs:646:9
[INFO] [stdout]     |
[INFO] [stdout] 646 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commit`
[INFO] [stdout]    --> tests/commit_hooks_comprehensive.rs:662:9
[INFO] [stdout]     |
[INFO] [stdout] 662 |     let commit = repo.commit("test commit").unwrap();
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_commit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/commit_hooks_comprehensive.rs:690:9
[INFO] [stdout]     |
[INFO] [stdout] 690 |     let mut repo = TestRepo::new();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amended_commit`
[INFO] [stdout]    --> tests/commit_hooks_comprehensive.rs:714:9
[INFO] [stdout]     |
[INFO] [stdout] 714 |     let amended_commit = repo
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_amended_commit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cursor` is never read
[INFO] [stdout]    --> tests/share_tui_comprehensive.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |         cursor -= 1;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cursor` is never read
[INFO] [stdout]    --> tests/share_tui_comprehensive.rs:123:22
[INFO] [stdout]     |
[INFO] [stdout] 123 |     let mut cursor = 7;
[INFO] [stdout]     |                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::EventValues`
[INFO] [stdout]    --> src/metrics/types.rs:143:13
[INFO] [stdout]     |
[INFO] [stdout] 143 |         use super::EventValues;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::EventValues`
[INFO] [stdout]    --> src/metrics/types.rs:143:13
[INFO] [stdout]     |
[INFO] [stdout] 143 |         use super::EventValues;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repo`
[INFO] [stdout]    --> src/ci/ci_context.rs:381:13
[INFO] [stdout]     |
[INFO] [stdout] 381 |         let repo = test_repo.gitai_repo();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repo`
[INFO] [stdout]    --> src/ci/ci_context.rs:448:13
[INFO] [stdout]     |
[INFO] [stdout] 448 |         let repo = test_repo.gitai_repo();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repo`
[INFO] [stdout]    --> src/ci/ci_context.rs:381:13
[INFO] [stdout]     |
[INFO] [stdout] 381 |         let repo = test_repo.gitai_repo();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repo`
[INFO] [stdout]    --> src/ci/ci_context.rs:448:13
[INFO] [stdout]     |
[INFO] [stdout] 448 |         let repo = test_repo.gitai_repo();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commit_a`
[INFO] [stdout]    --> src/git/refs.rs:728:13
[INFO] [stdout]     |
[INFO] [stdout] 728 |         let commit_a = tmp_repo.get_head_commit_sha().expect("head A");
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commit_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commit_b`
[INFO] [stdout]    --> src/git/refs.rs:732:13
[INFO] [stdout]     |
[INFO] [stdout] 732 |         let commit_b = tmp_repo.get_head_commit_sha().expect("head B");
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commit_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commit_a`
[INFO] [stdout]    --> src/git/refs.rs:728:13
[INFO] [stdout]     |
[INFO] [stdout] 728 |         let commit_a = tmp_repo.get_head_commit_sha().expect("head A");
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commit_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commit_b`
[INFO] [stdout]    --> src/git/refs.rs:732:13
[INFO] [stdout]     |
[INFO] [stdout] 732 |         let commit_b = tmp_repo.get_head_commit_sha().expect("head B");
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commit_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `git-ai` (bin "git-ai" test); 8 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/6284d7b4bd27983dba388146648ab844ca7d032f/bin/rustc --crate-name git_ai --edition=2024 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --test --cfg 'feature="git2"' --cfg 'feature="test-support"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("git2", "keyring", "test-support"))' -C metadata=710c7d53dd291133 -C extra-filename=-0887108f738f3886 --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern assert_cmd=/opt/rustwide/target/debug/deps/libassert_cmd-f4730bc31970efc4.rmeta --extern chrono=/opt/rustwide/target/debug/deps/libchrono-abfdf2367070fa2b.rmeta --extern clap=/opt/rustwide/target/debug/deps/libclap-e6f28b2d81a175d7.rmeta --extern crossterm=/opt/rustwide/target/debug/deps/libcrossterm-0e39832b1d3f6f9e.rmeta --extern dirs=/opt/rustwide/target/debug/deps/libdirs-f6d136cd386783e6.rmeta --extern envy=/opt/rustwide/target/debug/deps/libenvy-57c7e46cf600fe0d.rmeta --extern filetime=/opt/rustwide/target/debug/deps/libfiletime-a9a9881da914a7de.rmeta --extern futures=/opt/rustwide/target/debug/deps/libfutures-9d72cc8200d1e3fb.rmeta --extern git_ai=/opt/rustwide/target/debug/deps/libgit_ai-3ff11ecd1caa0c0b.rmeta --extern git_ai=/opt/rustwide/target/debug/deps/libgit_ai-3ff11ecd1caa0c0b.rmeta --extern git2=/opt/rustwide/target/debug/deps/libgit2-5f3ee6812f0c9664.rmeta --extern gix_config=/opt/rustwide/target/debug/deps/libgix_config-3b27349be695f0d8.rmeta --extern glob=/opt/rustwide/target/debug/deps/libglob-270b5e5f7376a525.rmeta --extern humantime=/opt/rustwide/target/debug/deps/libhumantime-80f95db44a7489f2.rmeta --extern imara_diff=/opt/rustwide/target/debug/deps/libimara_diff-161dcf93ae24d1e3.rmeta --extern indicatif=/opt/rustwide/target/debug/deps/libindicatif-deddd06eb5dd26ee.rmeta --extern insta=/opt/rustwide/target/debug/deps/libinsta-f1011cf7f12ff4ac.rmeta --extern jsonc_parser=/opt/rustwide/target/debug/deps/libjsonc_parser-a81b847abe1abc6d.rmeta --extern libc=/opt/rustwide/target/debug/deps/liblibc-61c8ff19ef2481c9.rmeta --extern minreq=/opt/rustwide/target/debug/deps/libminreq-f971cb90eb8c9ebb.rmeta --extern once_cell=/opt/rustwide/target/debug/deps/libonce_cell-2ad934dc7da92e31.rmeta --extern paste=/opt/rustwide/target/debug/deps/libpaste-c5e5e8a2bd161c29.so --extern predicates=/opt/rustwide/target/debug/deps/libpredicates-866f52dfe49ab47f.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-30ede53a88b52ee6.rmeta --extern ratatui=/opt/rustwide/target/debug/deps/libratatui-9fa15352cf5ecead.rmeta --extern regex=/opt/rustwide/target/debug/deps/libregex-fb6516aef18bfc43.rmeta --extern rstest=/opt/rustwide/target/debug/deps/librstest-d2bfc51ed6be31e8.rmeta --extern rusqlite=/opt/rustwide/target/debug/deps/librusqlite-1044920141b2108a.rmeta --extern rustls_native_certs=/opt/rustwide/target/debug/deps/librustls_native_certs-32d9942da4509030.rmeta --extern serde=/opt/rustwide/target/debug/deps/libserde-f1c37de5629f9e5e.rmeta --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-6f04839b3d83bea5.rmeta --extern serde_json_canonicalizer=/opt/rustwide/target/debug/deps/libserde_json_canonicalizer-4e39d01e5039bc03.rmeta --extern serial_test=/opt/rustwide/target/debug/deps/libserial_test-a9ed6222b50ce255.rmeta --extern sha2=/opt/rustwide/target/debug/deps/libsha2-5f38b52b664e4f09.rmeta --extern smol=/opt/rustwide/target/debug/deps/libsmol-218c33d28e3a381d.rmeta --extern tempfile=/opt/rustwide/target/debug/deps/libtempfile-a8902a0811a8af06.rmeta --extern toml=/opt/rustwide/target/debug/deps/libtoml-84ef4e8e50d72a44.rmeta --extern url=/opt/rustwide/target/debug/deps/liburl-f1f2d01b5b3ea245.rmeta --extern uuid=/opt/rustwide/target/debug/deps/libuuid-249e9a2e917a3f19.rmeta --extern zip=/opt/rustwide/target/debug/deps/libzip-d6d7157ea288715b.rmeta --cap-lints=forbid -L native=/opt/rustwide/target/debug/build/libgit2-sys-5b21af7c04e55400/out/build -L native=/opt/rustwide/target/debug/build/libssh2-sys-ee5d4cd56425e52b/out/build -L native=/opt/rustwide/target/debug/build/ring-be9d199af9a86425/out -L native=/opt/rustwide/target/debug/build/libsqlite3-sys-ed1e8d7f058fb783/out -L native=/opt/rustwide/target/debug/build/bzip2-sys-ae874ae07afb7838/out/lib -L native=/opt/rustwide/target/debug/build/zstd-sys-2fcbb38d7296586d/out -L native=/usr/lib/x86_64-linux-gnu` (signal: 9, SIGKILL: kill)
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `git-ai` (lib test); 8 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/6284d7b4bd27983dba388146648ab844ca7d032f/bin/rustc --crate-name git_ai --edition=2024 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --test --cfg 'feature="git2"' --cfg 'feature="test-support"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("git2", "keyring", "test-support"))' -C metadata=54be94f5bbe50976 -C extra-filename=-d91ffbb5612f1212 --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern assert_cmd=/opt/rustwide/target/debug/deps/libassert_cmd-f4730bc31970efc4.rmeta --extern chrono=/opt/rustwide/target/debug/deps/libchrono-abfdf2367070fa2b.rmeta --extern clap=/opt/rustwide/target/debug/deps/libclap-e6f28b2d81a175d7.rmeta --extern crossterm=/opt/rustwide/target/debug/deps/libcrossterm-0e39832b1d3f6f9e.rmeta --extern dirs=/opt/rustwide/target/debug/deps/libdirs-f6d136cd386783e6.rmeta --extern envy=/opt/rustwide/target/debug/deps/libenvy-57c7e46cf600fe0d.rmeta --extern filetime=/opt/rustwide/target/debug/deps/libfiletime-a9a9881da914a7de.rmeta --extern futures=/opt/rustwide/target/debug/deps/libfutures-9d72cc8200d1e3fb.rmeta --extern git_ai=/opt/rustwide/target/debug/deps/libgit_ai-3ff11ecd1caa0c0b.rmeta --extern git2=/opt/rustwide/target/debug/deps/libgit2-5f3ee6812f0c9664.rmeta --extern gix_config=/opt/rustwide/target/debug/deps/libgix_config-3b27349be695f0d8.rmeta --extern glob=/opt/rustwide/target/debug/deps/libglob-270b5e5f7376a525.rmeta --extern humantime=/opt/rustwide/target/debug/deps/libhumantime-80f95db44a7489f2.rmeta --extern imara_diff=/opt/rustwide/target/debug/deps/libimara_diff-161dcf93ae24d1e3.rmeta --extern indicatif=/opt/rustwide/target/debug/deps/libindicatif-deddd06eb5dd26ee.rmeta --extern insta=/opt/rustwide/target/debug/deps/libinsta-f1011cf7f12ff4ac.rmeta --extern jsonc_parser=/opt/rustwide/target/debug/deps/libjsonc_parser-a81b847abe1abc6d.rmeta --extern libc=/opt/rustwide/target/debug/deps/liblibc-61c8ff19ef2481c9.rmeta --extern minreq=/opt/rustwide/target/debug/deps/libminreq-f971cb90eb8c9ebb.rmeta --extern once_cell=/opt/rustwide/target/debug/deps/libonce_cell-2ad934dc7da92e31.rmeta --extern paste=/opt/rustwide/target/debug/deps/libpaste-c5e5e8a2bd161c29.so --extern predicates=/opt/rustwide/target/debug/deps/libpredicates-866f52dfe49ab47f.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-30ede53a88b52ee6.rmeta --extern ratatui=/opt/rustwide/target/debug/deps/libratatui-9fa15352cf5ecead.rmeta --extern regex=/opt/rustwide/target/debug/deps/libregex-fb6516aef18bfc43.rmeta --extern rstest=/opt/rustwide/target/debug/deps/librstest-d2bfc51ed6be31e8.rmeta --extern rusqlite=/opt/rustwide/target/debug/deps/librusqlite-1044920141b2108a.rmeta --extern rustls_native_certs=/opt/rustwide/target/debug/deps/librustls_native_certs-32d9942da4509030.rmeta --extern serde=/opt/rustwide/target/debug/deps/libserde-f1c37de5629f9e5e.rmeta --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-6f04839b3d83bea5.rmeta --extern serde_json_canonicalizer=/opt/rustwide/target/debug/deps/libserde_json_canonicalizer-4e39d01e5039bc03.rmeta --extern serial_test=/opt/rustwide/target/debug/deps/libserial_test-a9ed6222b50ce255.rmeta --extern sha2=/opt/rustwide/target/debug/deps/libsha2-5f38b52b664e4f09.rmeta --extern smol=/opt/rustwide/target/debug/deps/libsmol-218c33d28e3a381d.rmeta --extern tempfile=/opt/rustwide/target/debug/deps/libtempfile-a8902a0811a8af06.rmeta --extern toml=/opt/rustwide/target/debug/deps/libtoml-84ef4e8e50d72a44.rmeta --extern url=/opt/rustwide/target/debug/deps/liburl-f1f2d01b5b3ea245.rmeta --extern uuid=/opt/rustwide/target/debug/deps/libuuid-249e9a2e917a3f19.rmeta --extern zip=/opt/rustwide/target/debug/deps/libzip-d6d7157ea288715b.rmeta --cap-lints=forbid -L native=/opt/rustwide/target/debug/build/libgit2-sys-5b21af7c04e55400/out/build -L native=/opt/rustwide/target/debug/build/libssh2-sys-ee5d4cd56425e52b/out/build -L native=/opt/rustwide/target/debug/build/ring-be9d199af9a86425/out -L native=/opt/rustwide/target/debug/build/libsqlite3-sys-ed1e8d7f058fb783/out -L native=/opt/rustwide/target/debug/build/bzip2-sys-ae874ae07afb7838/out/lib -L native=/opt/rustwide/target/debug/build/zstd-sys-2fcbb38d7296586d/out -L native=/usr/lib/x86_64-linux-gnu` (signal: 9, SIGKILL: kill)
[INFO] [stdout] warning: constant `AGENT_USAGE_MIN_INTERVAL_SECS` is never used
[INFO] [stdout]   --> src/commands/checkpoint.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const AGENT_USAGE_MIN_INTERVAL_SECS: u64 = 150;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENV_FLUSH_METRICS_DB_WORKER` is never used
[INFO] [stdout]   --> src/commands/flush_metrics_db.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const ENV_FLUSH_METRICS_DB_WORKER: &str = "GIT_AI_FLUSH_METRICS_DB_WORKER";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `should_emit_agent_usage` is never used
[INFO] [stdout]    --> src/metrics/db.rs:267:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl MetricsDatabase {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub fn should_emit_agent_usage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Metrics` is never constructed
[INFO] [stdout]   --> src/observability/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum LogEnvelope {
[INFO] [stdout]    |      ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 66 |     Metrics(MetricsEnvelope),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LogEnvelope` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "4e394023b8a517a0012009c3dbb772176a76339ad57c2713d424be777f21f137", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4e394023b8a517a0012009c3dbb772176a76339ad57c2713d424be777f21f137", kill_on_drop: false }`
[INFO] [stdout] 4e394023b8a517a0012009c3dbb772176a76339ad57c2713d424be777f21f137
