[INFO] cloning repository https://github.com/s1s5/remora
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/s1s5/remora" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fs1s5%2Fremora", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fs1s5%2Fremora'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0525d8c795dd5aa1028ddecd552a40ee18f02072
[INFO] checking s1s5/remora/0525d8c795dd5aa1028ddecd552a40ee18f02072 against master#65407954098ca3c19f0d46092cb374b5d3e9dc3c for pr-157841
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fs1s5%2Fremora" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/s1s5/remora
[INFO] finished tweaking git repo https://github.com/s1s5/remora
[INFO] tweaked toml for git repo https://github.com/s1s5/remora written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/s1s5/remora on toolchain 65407954098ca3c19f0d46092cb374b5d3e9dc3c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+65407954098ca3c19f0d46092cb374b5d3e9dc3c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/s1s5/remora 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" "+65407954098ca3c19f0d46092cb374b5d3e9dc3c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1612886dd1788ab1fb48798e452e863b9649ca0fa3e346fa427c3e6fd70ecb10
[INFO] running `Command { std: "docker" "start" "1612886dd1788ab1fb48798e452e863b9649ca0fa3e346fa427c3e6fd70ecb10", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1612886dd1788ab1fb48798e452e863b9649ca0fa3e346fa427c3e6fd70ecb10" "/opt/rustwide/cargo-home/bin/cargo" "+65407954098ca3c19f0d46092cb374b5d3e9dc3c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1612886dd1788ab1fb48798e452e863b9649ca0fa3e346fa427c3e6fd70ecb10", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1612886dd1788ab1fb48798e452e863b9649ca0fa3e346fa427c3e6fd70ecb10" "/opt/rustwide/cargo-home/bin/cargo" "+65407954098ca3c19f0d46092cb374b5d3e9dc3c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking iri-string v0.7.12
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking num-conv v0.2.1
[INFO] [stderr]    Compiling serenity v0.12.5
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking secrecy v0.8.0
[INFO] [stderr]     Checking serde_cow v0.1.2
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking tokio v1.52.1
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking uuid v1.23.1
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking hashlink v0.11.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.37.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking rustls-webpki v0.102.8
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking tokio-rustls v0.25.0
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking rusqlite v0.39.0
[INFO] [stderr]     Checking remora v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/plan.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Context, Result};
[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: `crate::agent::Agent`
[INFO] [stdout]  --> src/worker_pool.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::agent::Agent;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlanMeta`
[INFO] [stdout]   --> src/main.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | use plan::{PlanManager, PlanMeta};
[INFO] [stdout]    |                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serenity::model::id::UserId`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use serenity::model::id::UserId;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/plan.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Context, Result};
[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: `crate::agent::Agent`
[INFO] [stdout]  --> src/worker_pool.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::agent::Agent;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlanMeta`
[INFO] [stdout]   --> src/main.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | use plan::{PlanManager, PlanMeta};
[INFO] [stdout]    |                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serenity::model::id::UserId`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use serenity::model::id::UserId;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cli.rs:205:25
[INFO] [stdout]     |
[INFO] [stdout] 205 |                     let mut pm = plan_manager.lock().await;
[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/cli.rs:205:25
[INFO] [stdout]     |
[INFO] [stdout] 205 |                     let mut pm = plan_manager.lock().await;
[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:147:21
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 let mut pm = remora.plan_manager.lock().await;
[INFO] [stdout]     |                     ----^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `channel_id`
[INFO] [stdout]    --> src/main.rs:101:14
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let (channel_id, maybe_plan_id) = {
[INFO] [stdout]     |              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remora`
[INFO] [stdout]    --> src/main.rs:103:17
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let remora = data.get::<RemoraKey>().unwrap();
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_remora`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:147:21
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 let mut pm = remora.plan_manager.lock().await;
[INFO] [stdout]     |                     ----^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `channel_id`
[INFO] [stdout]    --> src/main.rs:101:14
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let (channel_id, maybe_plan_id) = {
[INFO] [stdout]     |              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remora`
[INFO] [stdout]    --> src/main.rs:103:17
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let remora = data.get::<RemoraKey>().unwrap();
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_remora`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session`
[INFO] [stdout]    --> src/main.rs:250:25
[INFO] [stdout]     |
[INFO] [stdout] 250 |             if let Some(session) = sessions.get_mut(&channel_id) {
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session`
[INFO] [stdout]    --> src/main.rs:250:25
[INFO] [stdout]     |
[INFO] [stdout] 250 |             if let Some(session) = sessions.get_mut(&channel_id) {
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `OutputStream` is never used
[INFO] [stdout]   --> src/agent/mod.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait OutputStream: Send + Unpin {
[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 `name` is never used
[INFO] [stdout]   --> src/agent/mod.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub trait Agent: Send + Sync {
[INFO] [stdout]    |           ----- method in this trait
[INFO] [stdout] 19 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `main_branch` is never read
[INFO] [stdout]   --> src/config.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct ProjectConfig {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub main_branch: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProjectConfig` 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: fields `night_start`, `night_end`, and `night_max_workers` are never read
[INFO] [stdout]   --> src/config.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct TimeRestrictions {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 70 |     #[serde(default = "default_night_start")]
[INFO] [stdout] 71 |     pub night_start: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 72 |     #[serde(default = "default_night_end")]
[INFO] [stdout] 73 |     pub night_end: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 74 |     #[serde(default = "default_night_max")]
[INFO] [stdout] 75 |     pub night_max_workers: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimeRestrictions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time_restrictions` is never read
[INFO] [stdout]   --> src/config.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct RootConfig {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub time_restrictions: Option<TimeRestrictions>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RootConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GitOps` is never constructed
[INFO] [stdout]  --> src/git.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GitOps;
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `create_worktree`, `commit`, `squash_merge`, `remove_worktree`, and `push_branch` are never used
[INFO] [stdout]   --> src/git.rs:8:18
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl GitOps {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout]  7 |     /// Create a git worktree for a branch
[INFO] [stdout]  8 |     pub async fn create_worktree(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub async fn commit(
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub async fn squash_merge(
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub async fn remove_worktree(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn push_branch(
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Priority` is never used
[INFO] [stdout]   --> src/job_queue.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum Priority {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `OutputStream` is never used
[INFO] [stdout]   --> src/node/mod.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait OutputStream: Send + Unpin {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `exec_stream` is never used
[INFO] [stdout]   --> src/node/mod.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait Node: Send + Sync {
[INFO] [stdout]    |           ---- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 26 |     async fn exec_stream(
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `control_path` is never read
[INFO] [stdout]   --> src/node/ssh.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SshNode {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     control_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ssh_args` and `ssh_exec` are never used
[INFO] [stdout]   --> src/node/ssh.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl SshNode {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn ssh_args(&self, remote_cmd: &str) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn ssh_exec(&self, remote_cmd: &str) -> Result<String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlanStatus` is never used
[INFO] [stdout]  --> src/plan.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum PlanStatus {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mark_completed`, `mark_failed`, `read_plan_file`, and `branch_name` are never used
[INFO] [stdout]    --> src/plan.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl PlanManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn mark_completed(&mut self, id: &str, commit_hash: &str) -> Result<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn mark_failed(&mut self, id: &str) -> Result<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn read_plan_file(&self, meta: &PlanMeta, node: &dyn crate::node::Node, workdir: &str) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn branch_name(&self, meta: &PlanMeta) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_project_by_channel` is never used
[INFO] [stdout]   --> src/scheduler.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Scheduler {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn find_project_by_channel(&self, channel: &str) -> Option<&ProjectConfig> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `active` is never read
[INFO] [stdout]   --> src/session.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Session {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub active: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `channel` and `started_at` are never read
[INFO] [stdout]   --> src/worker_pool.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Worker {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     pub channel: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub started_at: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Worker` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `OutputStream` is never used
[INFO] [stdout]   --> src/agent/mod.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait OutputStream: Send + Unpin {
[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 `name` is never used
[INFO] [stdout]   --> src/agent/mod.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub trait Agent: Send + Sync {
[INFO] [stdout]    |           ----- method in this trait
[INFO] [stdout] 19 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `night_start`, `night_end`, and `night_max_workers` are never read
[INFO] [stdout]   --> src/config.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct TimeRestrictions {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 70 |     #[serde(default = "default_night_start")]
[INFO] [stdout] 71 |     pub night_start: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 72 |     #[serde(default = "default_night_end")]
[INFO] [stdout] 73 |     pub night_end: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 74 |     #[serde(default = "default_night_max")]
[INFO] [stdout] 75 |     pub night_max_workers: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimeRestrictions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time_restrictions` is never read
[INFO] [stdout]   --> src/config.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct RootConfig {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub time_restrictions: Option<TimeRestrictions>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RootConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GitOps` is never constructed
[INFO] [stdout]  --> src/git.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GitOps;
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `create_worktree`, `commit`, `squash_merge`, `remove_worktree`, and `push_branch` are never used
[INFO] [stdout]   --> src/git.rs:8:18
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl GitOps {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout]  7 |     /// Create a git worktree for a branch
[INFO] [stdout]  8 |     pub async fn create_worktree(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub async fn commit(
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub async fn squash_merge(
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub async fn remove_worktree(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn push_branch(
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Priority` is never used
[INFO] [stdout]   --> src/job_queue.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum Priority {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `OutputStream` is never used
[INFO] [stdout]   --> src/node/mod.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait OutputStream: Send + Unpin {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `exec_stream` is never used
[INFO] [stdout]   --> src/node/mod.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait Node: Send + Sync {
[INFO] [stdout]    |           ---- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 26 |     async fn exec_stream(
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `control_path` is never read
[INFO] [stdout]   --> src/node/ssh.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SshNode {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     control_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ssh_args` and `ssh_exec` are never used
[INFO] [stdout]   --> src/node/ssh.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl SshNode {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn ssh_args(&self, remote_cmd: &str) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn ssh_exec(&self, remote_cmd: &str) -> Result<String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlanStatus` is never used
[INFO] [stdout]  --> src/plan.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum PlanStatus {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mark_completed`, `mark_failed`, `read_plan_file`, and `branch_name` are never used
[INFO] [stdout]    --> src/plan.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl PlanManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn mark_completed(&mut self, id: &str, commit_hash: &str) -> Result<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn mark_failed(&mut self, id: &str) -> Result<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn read_plan_file(&self, meta: &PlanMeta, node: &dyn crate::node::Node, workdir: &str) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn branch_name(&self, meta: &PlanMeta) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_project_by_channel` is never used
[INFO] [stdout]   --> src/scheduler.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Scheduler {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn find_project_by_channel(&self, channel: &str) -> Option<&ProjectConfig> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `active` is never read
[INFO] [stdout]   --> src/session.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Session {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub active: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `channel` and `started_at` are never read
[INFO] [stdout]   --> src/worker_pool.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Worker {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     pub channel: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub started_at: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Worker` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 52.88s
[INFO] running `Command { std: "docker" "inspect" "1612886dd1788ab1fb48798e452e863b9649ca0fa3e346fa427c3e6fd70ecb10", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1612886dd1788ab1fb48798e452e863b9649ca0fa3e346fa427c3e6fd70ecb10", kill_on_drop: false }`
[INFO] [stdout] 1612886dd1788ab1fb48798e452e863b9649ca0fa3e346fa427c3e6fd70ecb10
