[INFO] cloning repository https://github.com/detrin/eclipse
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/detrin/eclipse" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdetrin%2Feclipse", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdetrin%2Feclipse'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 23759c1c172a42ab53e471a608652aeae164c85b
[INFO] testing detrin/eclipse against beta-2026-03-05 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdetrin%2Feclipse" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/detrin/eclipse
[INFO] finished tweaking git repo https://github.com/detrin/eclipse
[INFO] tweaked toml for git repo https://github.com/detrin/eclipse written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/detrin/eclipse on toolchain beta-2026-03-05
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/detrin/eclipse 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" "+beta-2026-03-05" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded actix-service v2.0.3
[INFO] [stderr]   Downloaded bytestring v1.5.0
[INFO] [stderr]   Downloaded actix-server v2.6.0
[INFO] [stderr]   Downloaded actix-rt v2.11.0
[INFO] [stderr]   Downloaded actix-cors v0.6.5
[INFO] [stderr]   Downloaded clap v4.5.56
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.37
[INFO] [stderr]   Downloaded time v0.3.35
[INFO] [stderr]   Downloaded actix-http v3.11.2
[INFO] [stderr]   Downloaded clap_builder v4.5.56
[INFO] [stderr]   Downloaded actix-web v4.12.1
[INFO] [stderr]   Downloaded zerocopy v0.8.37
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1499d58f0f60a73a36dc4f0a129dfbe09856302ca2307703017ad950dad3021b
[INFO] running `Command { std: "docker" "start" "-a" "1499d58f0f60a73a36dc4f0a129dfbe09856302ca2307703017ad950dad3021b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1499d58f0f60a73a36dc4f0a129dfbe09856302ca2307703017ad950dad3021b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1499d58f0f60a73a36dc4f0a129dfbe09856302ca2307703017ad950dad3021b", kill_on_drop: false }`
[INFO] [stdout] 1499d58f0f60a73a36dc4f0a129dfbe09856302ca2307703017ad950dad3021b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 67ad6eff57c28a7606f78fbe8961c4bf09fb230570c464d7caa23e0dbf07b7e5
[INFO] running `Command { std: "docker" "start" "-a" "67ad6eff57c28a7606f78fbe8961c4bf09fb230570c464d7caa23e0dbf07b7e5", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling zerocopy v0.8.37
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling local-waker v0.1.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling http v0.2.12
[INFO] [stderr]    Compiling time-core v0.1.2
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling zmij v1.0.19
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling regex-lite v0.1.8
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling deranged v0.3.11
[INFO] [stderr]    Compiling actix-utils v3.0.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling time-macros v0.2.18
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling actix-service v2.0.3
[INFO] [stderr]    Compiling bytestring v1.5.0
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling brotli v8.0.2
[INFO] [stderr]    Compiling flate2 v1.1.8
[INFO] [stderr]    Compiling local-channel v0.1.5
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling ryu v1.0.22
[INFO] [stderr]    Compiling language-tags v0.3.2
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling clap_lex v0.7.7
[INFO] [stderr]    Compiling actix-router v0.5.3
[INFO] [stderr]    Compiling impl-more v0.1.9
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling clap_builder v4.5.56
[INFO] [stderr]    Compiling time v0.3.35
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling cc v1.2.55
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rand v0.8.5
[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]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling actix-web-codegen v4.3.0
[INFO] [stderr]    Compiling actix-macros v0.2.4
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling clap v4.5.56
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling actix-rt v2.11.0
[INFO] [stderr]    Compiling actix-server v2.6.0
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling actix-codec v0.5.2
[INFO] [stderr]    Compiling actix-http v3.11.2
[INFO] [stderr]    Compiling actix-web v4.12.1
[INFO] [stderr]    Compiling actix-cors v0.6.5
[INFO] [stderr]    Compiling eclipse v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: method `get_hex_symbol` is never used
[INFO] [stdout]    --> src/display.rs:167:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl<'a> BoardDisplay<'a> {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn get_hex_symbol(&self, hex: &Hex) -> char {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> benchmark_minimax.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let bot = MinimaxBot::new(Player::Dark, Difficulty::Medium);
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_within_radius` is never used
[INFO] [stdout]    --> src/board.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | impl Hex {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn is_within_radius(&self, radius: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `describe`, `is_comet_move`, and `is_satellite_move` are never used
[INFO] [stdout]   --> src/moves.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl Move {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 40 |     /// Returns a human-readable description of the move
[INFO] [stdout] 41 |     pub fn describe(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn is_comet_move(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn is_satellite_move(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset` and `get_chain_last_moved` are never used
[INFO] [stdout]    --> src/states.rs:459:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl GameState {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 459 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     pub fn get_chain_last_moved(&self, chain_id: ChainId) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_hex_symbol` is never used
[INFO] [stdout]    --> src/display.rs:167:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl<'a> BoardDisplay<'a> {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn get_hex_symbol(&self, hex: &Hex) -> char {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player` is never read
[INFO] [stdout]   --> src/randombot.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct RandomBot {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 18 |     player: Player,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RandomBot` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `player` is never used
[INFO] [stdout]   --> src/randombot.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl RandomBot {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn player(&self) -> Player {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `player` is never used
[INFO] [stdout]   --> src/simplebot.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SimpleBot {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn player(&self) -> Player {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `VeryHard`, `Expert`, and `Master` are never constructed
[INFO] [stdout]   --> src/minimaxbot.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub enum Difficulty {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 59 |     VeryHard,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 60 |     Expert,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 61 |     Master,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Difficulty` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `player` and `difficulty` are never used
[INFO] [stdout]    --> src/minimaxbot.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl MinimaxBot {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn player(&self) -> Player {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn difficulty(&self) -> Difficulty {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.11s
[INFO] running `Command { std: "docker" "inspect" "67ad6eff57c28a7606f78fbe8961c4bf09fb230570c464d7caa23e0dbf07b7e5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "67ad6eff57c28a7606f78fbe8961c4bf09fb230570c464d7caa23e0dbf07b7e5", kill_on_drop: false }`
[INFO] [stdout] 67ad6eff57c28a7606f78fbe8961c4bf09fb230570c464d7caa23e0dbf07b7e5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5bf296df9746a8fa2636e6a9f8d8f414380d2de7b89aacbf21ddc79e1df932a4
[INFO] running `Command { std: "docker" "start" "-a" "5bf296df9746a8fa2636e6a9f8d8f414380d2de7b89aacbf21ddc79e1df932a4", kill_on_drop: false }`
[INFO] [stderr]    Compiling eclipse v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: method `get_hex_symbol` is never used
[INFO] [stdout]    --> src/display.rs:167:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl<'a> BoardDisplay<'a> {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn get_hex_symbol(&self, hex: &Hex) -> char {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> benchmark_minimax.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let bot = MinimaxBot::new(Player::Dark, Difficulty::Medium);
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_msg_count`
[INFO] [stdout]    --> src/display.rs:700:17
[INFO] [stdout]     |
[INFO] [stdout] 700 |             let first_msg_count = game.status_messages.len();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_msg_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_chain_last_moved` is never used
[INFO] [stdout]    --> src/states.rs:561:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl GameState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 561 |     pub fn get_chain_last_moved(&self, chain_id: ChainId) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `VeryHard`, `Expert`, and `Master` are never constructed
[INFO] [stdout]   --> src/minimaxbot.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub enum Difficulty {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 59 |     VeryHard,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 60 |     Expert,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 61 |     Master,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Difficulty` 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: unused variable: `first_msg_count`
[INFO] [stdout]    --> src/display.rs:700:17
[INFO] [stdout]     |
[INFO] [stdout] 700 |             let first_msg_count = game.status_messages.len();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_msg_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2.35s
[INFO] running `Command { std: "docker" "inspect" "5bf296df9746a8fa2636e6a9f8d8f414380d2de7b89aacbf21ddc79e1df932a4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5bf296df9746a8fa2636e6a9f8d8f414380d2de7b89aacbf21ddc79e1df932a4", kill_on_drop: false }`
[INFO] [stdout] 5bf296df9746a8fa2636e6a9f8d8f414380d2de7b89aacbf21ddc79e1df932a4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] c732b99fc5af45f20350da7b31edf4077adea370810ef4f9c2185fb173206c12
[INFO] running `Command { std: "docker" "start" "-a" "c732b99fc5af45f20350da7b31edf4077adea370810ef4f9c2185fb173206c12", kill_on_drop: false }`
[INFO] [stderr] warning: method `get_hex_symbol` is never used
[INFO] [stderr]    --> src/display.rs:167:8
[INFO] [stderr]     |
[INFO] [stderr]  22 | impl<'a> BoardDisplay<'a> {
[INFO] [stderr]     | ------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 167 |     fn get_hex_symbol(&self, hex: &Hex) -> char {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `first_msg_count`
[INFO] [stderr]    --> src/display.rs:700:17
[INFO] [stderr]     |
[INFO] [stderr] 700 |             let first_msg_count = game.status_messages.len();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_msg_count`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `eclipse` (lib) generated 1 warning
[INFO] [stderr] warning: `eclipse` (lib test) generated 1 warning (run `cargo fix --lib -p eclipse --tests` to apply 1 suggestion)
[INFO] [stderr] warning: unused variable: `bot`
[INFO] [stderr]   --> benchmark_minimax.rs:69:9
[INFO] [stderr]    |
[INFO] [stderr] 69 |     let bot = MinimaxBot::new(Player::Dark, Difficulty::Medium);
[INFO] [stderr]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_chain_last_moved` is never used
[INFO] [stderr]    --> src/states.rs:561:12
[INFO] [stderr]     |
[INFO] [stderr] 258 | impl GameState {
[INFO] [stderr]     | -------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 561 |     pub fn get_chain_last_moved(&self, chain_id: ChainId) -> Option<usize> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variants `VeryHard`, `Expert`, and `Master` are never constructed
[INFO] [stderr]   --> src/minimaxbot.rs:59:5
[INFO] [stderr]    |
[INFO] [stderr] 55 | pub enum Difficulty {
[INFO] [stderr]    |          ---------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 59 |     VeryHard,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 60 |     Expert,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 61 |     Master,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Difficulty` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `eclipse` (bin "benchmark_minimax" test) generated 1 warning (run `cargo fix --bin "benchmark_minimax" -p eclipse --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `eclipse` (bin "eclipse" test) generated 3 warnings (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.14s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/eclipse-d0f91c2380f2667f)
[INFO] [stdout] 
[INFO] [stdout] running 114 tests
[INFO] [stdout] test api::tests::test_api_response_error ... ok
[INFO] [stdout] test api::tests::test_handle_api_request_with_invalid_json ... ok
[INFO] [stdout] test api::tests::test_api_response_success ... ok
[INFO] [stdout] test api::tests::test_handle_verify_request_with_invalid_state_json ... ok
[INFO] [stdout] test api::tests::test_handle_api_request_with_invalid_depth ... ok
[INFO] [stdout] test api::tests::test_verify_response_illegal ... ok
[INFO] [stdout] test board::tests::test_hex_distance ... ok
[INFO] [stdout] test api::tests::test_handle_is_winning_request_initial_state ... ok
[INFO] [stdout] test api::tests::test_handle_verify_request_with_invalid_move_json ... ok
[INFO] [stdout] test board::tests::test_hex_neighbors ... ok
[INFO] [stdout] test api::tests::test_verify_response_legal ... ok
[INFO] [stdout] test board::tests::test_is_on_board ... ok
[INFO] [stdout] test api::tests::test_handle_verify_request_with_illegal_move ... ok
[INFO] [stdout] test board::tests::test_is_within_radius ... ok
[INFO] [stdout] test board::tests::test_segments_intersect ... ok
[INFO] [stdout] test board::tests::test_starting_positions ... ok
[INFO] [stdout] test cli::tests::test_parse_player ... ok
[INFO] [stdout] test board::tests::test_shares_axis ... ok
[INFO] [stdout] test display::tests::test_chain_crossed_detection ... ok
[INFO] [stdout] test api::tests::test_handle_verify_request_with_legal_move ... ok
[INFO] [stdout] test display::tests::test_hex_symbol_for_comet ... ok
[INFO] [stdout] test display::tests::test_display_chains_shows_all_chains ... ok
[INFO] [stdout] test display::tests::test_hex_symbol_for_satellite ... ok
[INFO] [stdout] test display::tests::test_game_info_display ... ok
[INFO] [stdout] test display::tests::test_display_board_shows_satellites ... ok
[INFO] [stdout] test display::tests::test_move_history_reset ... ok
[INFO] [stdout] test display::tests::test_hex_symbol_for_empty ... ok
[INFO] [stdout] test display::tests::test_move_history_display ... ok
[INFO] [stdout] test display::tests::test_status_messages_after_move ... ok
[INFO] [stdout] test display::tests::test_display_board_shows_comets ... ok
[INFO] [stdout] test display::tests::test_render_row_format ... ok
[INFO] [stdout] test display::tests::test_display_board_renders ... ok
[INFO] [stdout] test input::tests::test_parse_help_commands ... ok
[INFO] [stdout] test display::tests::test_move_history_tracking ... ok
[INFO] [stdout] test input::tests::test_parse_empty_input ... ok
[INFO] [stdout] test input::tests::test_parse_case_insensitive ... ok
[INFO] [stdout] test display::tests::test_status_messages_cleared_on_next_move ... ok
[INFO] [stdout] test input::tests::test_parse_invalid_coordinates ... ok
[INFO] [stdout] test input::tests::test_parse_quit_commands ... ok
[INFO] [stdout] test input::tests::test_parse_comet_move ... ok
[INFO] [stdout] test input::tests::test_parse_satellite_move_with_chain ... ok
[INFO] [stdout] test input::tests::test_parse_invalid_format ... ok
[INFO] [stdout] test input::tests::test_parse_satellite_move_with_type ... ok
[INFO] [stdout] test input::tests::test_parse_show_moves ... ok
[INFO] [stdout] test input::tests::test_parse_unknown_command ... ok
[INFO] [stdout] test input::tests::test_parse_whitespace_handling ... ok
[INFO] [stdout] test minimaxbot::tests::test_different_difficulties_have_different_depths ... ok
[INFO] [stdout] test input::tests::test_parse_satellite_move_with_type_and_chain ... ok
[INFO] [stdout] test input::tests::test_parse_satellite_move ... ok
[INFO] [stdout] test minimaxbot::tests::test_difficulty_levels ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_chain_control ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_losing_position ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_mobility ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_winning_position ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_comet_safety ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_creation ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_position ... ok
[INFO] [stdout] test moves::tests::test_is_comet_move ... ok
[INFO] [stdout] test moves::tests::test_is_satellite_move ... ok
[INFO] [stdout] test moves::tests::test_move_describe_satellite ... ok
[INFO] [stdout] test moves::tests::test_move_describe_comet ... ok
[INFO] [stdout] test randombot::tests::test_bot_trait_object ... ok
[INFO] [stdout] test randombot::tests::test_random_bot_chooses_legal_move ... ok
[INFO] [stdout] test randombot::tests::test_random_bot_returns_none_when_no_moves ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_comet_advancement_evaluation ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_creation ... ok
[INFO] [stdout] test randombot::tests::test_bot_can_play_complete_game ... ok
[INFO] [stdout] test randombot::tests::test_random_bot_creation ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_chain_crossing_evaluation ... ok
[INFO] [stdout] test randombot::tests::test_random_bot_multiple_choices ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_comet_protection_evaluation ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_evaluates_moves ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_chooses_legal_move ... ok
[INFO] [stdout] test states::tests::test_apply_comet_move ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_unblocking_evaluation ... ok
[INFO] [stdout] test states::tests::test_apply_move_checks_winner ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_trait_object ... ok
[INFO] [stdout] test states::tests::test_chain_crossing_diagonal ... ok
[INFO] [stdout] test states::tests::test_apply_satellite_move ... ok
[INFO] [stdout] test states::tests::test_chain_crossing_perpendicular ... ok
[INFO] [stdout] test states::tests::test_chain_length_at_boundary ... ok
[INFO] [stdout] test states::tests::test_chain_not_crossing_parallel ... ok
[INFO] [stdout] test states::tests::test_chain_length_validation ... ok
[INFO] [stdout] test states::tests::test_chain_length_constraint_long_chain ... ok
[INFO] [stdout] test states::tests::test_chain_length_constraint_short_chain ... ok
[INFO] [stdout] test states::tests::test_check_winner_no_winner_at_start ... ok
[INFO] [stdout] test states::tests::test_chain_not_crossing_adjacent ... ok
[INFO] [stdout] test states::tests::test_game_status_persists_after_win ... ok
[INFO] [stdout] test states::tests::test_get_legal_moves_generates_moves ... ok
[INFO] [stdout] test states::tests::test_immobilized_chain_generates_no_moves ... ok
[INFO] [stdout] test states::tests::test_initial_game_status ... ok
[INFO] [stdout] test states::tests::test_invalid_move_to_occupied_position ... ok
[INFO] [stdout] test states::tests::test_long_chain_can_be_diagonal ... ok
[INFO] [stdout] test states::tests::test_invalid_move_wrong_player_chain ... ok
[INFO] [stdout] test states::tests::test_long_chain_moves_allow_diagonal ... ok
[INFO] [stdout] test states::tests::test_reset_clears_win_status ... ok
[INFO] [stdout] test states::tests::test_reset ... ok
[INFO] [stdout] test states::tests::test_short_chain_must_be_adjacent ... ok
[INFO] [stdout] test states::tests::test_occupied_map_consistency ... ok
[INFO] [stdout] test states::tests::test_non_immobilized_chains_still_movable ... ok
[INFO] [stdout] test states::tests::test_validate_all_legal_moves_respect_max_len ... ok
[INFO] [stdout] test states::tests::test_turn_switching ... ok
[INFO] [stdout] test states::tests::test_validate_setup ... ok
[INFO] [stdout] test states::tests::test_win_condition_immobilized_comet ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_vs_random_bot ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_prefers_different_moves_than_random ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_chooses_legal_move ... ok
[INFO] [stdout] test api::tests::test_handle_api_request_with_valid_state ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_returns_consistent_moves ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_can_play_complete_game ... ok
[INFO] [stdout] test minimaxbot::tests::test_alpha_beta_pruning_efficiency ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_trait_object ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_vs_simple_bot ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_can_play_complete_game has been running for over 60 seconds
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_can_play_complete_game ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 114 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 70.06s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests benchmark_minimax.rs (/opt/rustwide/target/debug/deps/benchmark_minimax-8e45389203829b21)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/eclipse-8be704f95a5264c3)
[INFO] [stdout] 
[INFO] [stdout] running 101 tests
[INFO] [stdout] test board::tests::test_hex_distance ... ok
[INFO] [stdout] test board::tests::test_hex_neighbors ... ok
[INFO] [stdout] test board::tests::test_is_within_radius ... ok
[INFO] [stdout] test board::tests::test_is_on_board ... ok
[INFO] [stdout] test board::tests::test_segments_intersect ... ok
[INFO] [stdout] test board::tests::test_shares_axis ... ok
[INFO] [stdout] test board::tests::test_starting_positions ... ok
[INFO] [stdout] test display::tests::test_chain_crossed_detection ... ok
[INFO] [stdout] test display::tests::test_display_chains_shows_all_chains ... ok
[INFO] [stdout] test display::tests::test_display_board_renders ... ok
[INFO] [stdout] test display::tests::test_display_board_shows_comets ... ok
[INFO] [stdout] test display::tests::test_hex_symbol_for_comet ... ok
[INFO] [stdout] test display::tests::test_display_board_shows_satellites ... ok
[INFO] [stdout] test display::tests::test_game_info_display ... ok
[INFO] [stdout] test display::tests::test_hex_symbol_for_satellite ... ok
[INFO] [stdout] test display::tests::test_move_history_reset ... ok
[INFO] [stdout] test display::tests::test_move_history_tracking ... ok
[INFO] [stdout] test display::tests::test_move_history_display ... ok
[INFO] [stdout] test display::tests::test_render_row_format ... ok
[INFO] [stdout] test input::tests::test_parse_empty_input ... ok
[INFO] [stdout] test input::tests::test_parse_comet_move ... ok
[INFO] [stdout] test input::tests::test_parse_invalid_coordinates ... ok
[INFO] [stdout] test input::tests::test_parse_quit_commands ... ok
[INFO] [stdout] test input::tests::test_parse_invalid_format ... ok
[INFO] [stdout] test display::tests::test_status_messages_cleared_on_next_move ... ok
[INFO] [stdout] test input::tests::test_parse_help_commands ... ok
[INFO] [stdout] test input::tests::test_parse_satellite_move ... ok
[INFO] [stdout] test display::tests::test_hex_symbol_for_empty ... ok
[INFO] [stdout] test input::tests::test_parse_case_insensitive ... ok
[INFO] [stdout] test input::tests::test_parse_satellite_move_with_type ... ok
[INFO] [stdout] test input::tests::test_parse_satellite_move_with_chain ... ok
[INFO] [stdout] test input::tests::test_parse_satellite_move_with_type_and_chain ... ok
[INFO] [stdout] test input::tests::test_parse_unknown_command ... ok
[INFO] [stdout] test input::tests::test_parse_show_moves ... ok
[INFO] [stdout] test input::tests::test_parse_whitespace_handling ... ok
[INFO] [stdout] test display::tests::test_status_messages_after_move ... ok
[INFO] [stdout] test minimaxbot::tests::test_different_difficulties_have_different_depths ... ok
[INFO] [stdout] test minimaxbot::tests::test_difficulty_levels ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_chain_control ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_comet_safety ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_winning_position ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_losing_position ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_creation ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_mobility ... ok
[INFO] [stdout] test moves::tests::test_move_describe_comet ... ok
[INFO] [stdout] test moves::tests::test_move_describe_satellite ... ok
[INFO] [stdout] test moves::tests::test_is_satellite_move ... ok
[INFO] [stdout] test randombot::tests::test_random_bot_creation ... ok
[INFO] [stdout] test minimaxbot::tests::test_evaluate_position ... ok
[INFO] [stdout] test randombot::tests::test_bot_trait_object ... ok
[INFO] [stdout] test moves::tests::test_is_comet_move ... ok
[INFO] [stdout] test randombot::tests::test_random_bot_chooses_legal_move ... ok
[INFO] [stdout] test randombot::tests::test_random_bot_multiple_choices ... ok
[INFO] [stdout] test randombot::tests::test_random_bot_returns_none_when_no_moves ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_comet_advancement_evaluation ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_comet_protection_evaluation ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_chain_crossing_evaluation ... ok
[INFO] [stdout] test states::tests::test_apply_comet_move ... ok
[INFO] [stdout] test states::tests::test_apply_move_checks_winner ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_chooses_legal_move ... ok
[INFO] [stdout] test states::tests::test_apply_satellite_move ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_creation ... ok
[INFO] [stdout] test states::tests::test_chain_crossing_diagonal ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_unblocking_evaluation ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_trait_object ... ok
[INFO] [stdout] test states::tests::test_chain_crossing_perpendicular ... ok
[INFO] [stdout] test states::tests::test_chain_length_at_boundary ... ok
[INFO] [stdout] test states::tests::test_chain_not_crossing_adjacent ... ok
[INFO] [stdout] test states::tests::test_chain_not_crossing_parallel ... ok
[INFO] [stdout] test states::tests::test_chain_length_constraint_long_chain ... ok
[INFO] [stdout] test states::tests::test_chain_length_constraint_short_chain ... ok
[INFO] [stdout] test states::tests::test_game_status_persists_after_win ... ok
[INFO] [stdout] test states::tests::test_check_winner_no_winner_at_start ... ok
[INFO] [stdout] test states::tests::test_chain_length_validation ... ok
[INFO] [stdout] test states::tests::test_get_legal_moves_generates_moves ... ok
[INFO] [stdout] test states::tests::test_initial_game_status ... ok
[INFO] [stdout] test states::tests::test_invalid_move_to_occupied_position ... ok
[INFO] [stdout] test states::tests::test_long_chain_can_be_diagonal ... ok
[INFO] [stdout] test states::tests::test_immobilized_chain_generates_no_moves ... ok
[INFO] [stdout] test states::tests::test_invalid_move_wrong_player_chain ... ok
[INFO] [stdout] test states::tests::test_long_chain_moves_allow_diagonal ... ok
[INFO] [stdout] test states::tests::test_short_chain_must_be_adjacent ... ok
[INFO] [stdout] test states::tests::test_reset_clears_win_status ... ok
[INFO] [stdout] test states::tests::test_reset ... ok
[INFO] [stdout] test states::tests::test_non_immobilized_chains_still_movable ... ok
[INFO] [stdout] test states::tests::test_validate_setup ... ok
[INFO] [stdout] test states::tests::test_win_condition_immobilized_comet ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_evaluates_moves ... ok
[INFO] [stdout] test states::tests::test_occupied_map_consistency ... ok
[INFO] [stdout] test states::tests::test_validate_all_legal_moves_respect_max_len ... ok
[INFO] [stdout] test states::tests::test_turn_switching ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_prefers_different_moves_than_random ... ok
[INFO] [stdout] test randombot::tests::test_bot_can_play_complete_game ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_vs_random_bot ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_chooses_legal_move ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_returns_consistent_moves ... ok
[INFO] [stdout] test simplebot::tests::test_simple_bot_can_play_complete_game ... ok
[INFO] [stdout] test minimaxbot::tests::test_alpha_beta_pruning_efficiency ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_trait_object ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_vs_simple_bot ... ok
[INFO] [stdout] test minimaxbot::tests::test_minimax_bot_can_play_complete_game ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 101 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 22.81s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/eclipse-api.rs (/opt/rustwide/target/debug/deps/eclipse_api-cad30e67c7092635)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests eclipse
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test src/minimaxbot.rs - minimaxbot::MinimaxBot::new (line 130) ... ok
[INFO] [stdout] test src/randombot.rs - randombot::RandomBot::new (line 28) ... ok
[INFO] [stdout] test src/display.rs - display::display_board (line 465) ... ok
[INFO] [stdout] test src/input.rs - input::parse_input (line 65) ... ok
[INFO] [stdout] test src/simplebot.rs - simplebot::SimpleBot::new (line 32) ... ok
[INFO] [stdout] test src/states.rs - states::GameState::apply_move (line 1003) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "c732b99fc5af45f20350da7b31edf4077adea370810ef4f9c2185fb173206c12", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c732b99fc5af45f20350da7b31edf4077adea370810ef4f9c2185fb173206c12", kill_on_drop: false }`
[INFO] [stdout] c732b99fc5af45f20350da7b31edf4077adea370810ef4f9c2185fb173206c12
