[INFO] cloning repository https://github.com/Yuta-beep/ai.shogi
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Yuta-beep/ai.shogi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYuta-beep%2Fai.shogi", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYuta-beep%2Fai.shogi'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7d1c59292bb14bdb277ca9baae21d57fc535b613
[INFO] testing Yuta-beep/ai.shogi against try#33835004928d3bf65db4d4712e1330766263b0bd for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYuta-beep%2Fai.shogi" "/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/Yuta-beep/ai.shogi
[INFO] finished tweaking git repo https://github.com/Yuta-beep/ai.shogi
[INFO] tweaked toml for git repo https://github.com/Yuta-beep/ai.shogi written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Yuta-beep/ai.shogi on toolchain 33835004928d3bf65db4d4712e1330766263b0bd
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Yuta-beep/ai.shogi 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" "+33835004928d3bf65db4d4712e1330766263b0bd" "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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3d044b9b2cea3c775f55a16120fbf3a75ac3b11ffc6b1383a10b211d604dccaf
[INFO] running `Command { std: "docker" "start" "-a" "3d044b9b2cea3c775f55a16120fbf3a75ac3b11ffc6b1383a10b211d604dccaf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3d044b9b2cea3c775f55a16120fbf3a75ac3b11ffc6b1383a10b211d604dccaf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3d044b9b2cea3c775f55a16120fbf3a75ac3b11ffc6b1383a10b211d604dccaf", kill_on_drop: false }`
[INFO] [stdout] 3d044b9b2cea3c775f55a16120fbf3a75ac3b11ffc6b1383a10b211d604dccaf
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9d490780890e9f8e19d32448c91ae3b6530a7aad25f0b11c638cf04ff1dd203d
[INFO] running `Command { std: "docker" "start" "-a" "9d490780890e9f8e19d32448c91ae3b6530a7aad25f0b11c638cf04ff1dd203d", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling zerocopy v0.8.41
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling shogi-ai v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized] target(s) in 1m 06s
[INFO] running `Command { std: "docker" "inspect" "9d490780890e9f8e19d32448c91ae3b6530a7aad25f0b11c638cf04ff1dd203d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9d490780890e9f8e19d32448c91ae3b6530a7aad25f0b11c638cf04ff1dd203d", kill_on_drop: false }`
[INFO] [stdout] 9d490780890e9f8e19d32448c91ae3b6530a7aad25f0b11c638cf04ff1dd203d
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b393289852181bf418af3fad4fbcc09ed1829aff38a039204177f865b70751ba
[INFO] running `Command { std: "docker" "start" "-a" "b393289852181bf418af3fad4fbcc09ed1829aff38a039204177f865b70751ba", kill_on_drop: false }`
[INFO] [stderr]    Compiling shogi-ai v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized] target(s) in 6.14s
[INFO] running `Command { std: "docker" "inspect" "b393289852181bf418af3fad4fbcc09ed1829aff38a039204177f865b70751ba", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b393289852181bf418af3fad4fbcc09ed1829aff38a039204177f865b70751ba", kill_on_drop: false }`
[INFO] [stdout] b393289852181bf418af3fad4fbcc09ed1829aff38a039204177f865b70751ba
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 6df0dbc6f6c8b61394f1c961aa49c2ecd4782f743514d536b6863663e0bee8f9
[INFO] running `Command { std: "docker" "start" "-a" "6df0dbc6f6c8b61394f1c961aa49c2ecd4782f743514d536b6863663e0bee8f9", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized] target(s) in 0.15s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/shogi_ai-c7eaac0b9bdb7039)
[INFO] [stdout] 
[INFO] [stdout] running 302 tests
[INFO] [stdout] test api::tests::health_endpoint_returns_ok ... ok
[INFO] [stdout] test api::tests::ai_move_rejects_empty_position_without_sfen ... ok
[INFO] [stdout] test api::tests::legal_moves_returns_skill_aware_moves_from_hydrated_state ... ok
[INFO] [stdout] test api::tests::ai_move_returns_checkmate_when_no_legal_moves_in_sfen ... ok
[INFO] [stdout] test application::position_apply::tests::apply_canonical_move_returns_sfen_position_without_visual_piece_caches ... ok
[INFO] [stdout] test application::position_apply::tests::merge_board_state_drops_visual_piece_caches ... ok
[INFO] [stdout] test api::tests::apply_move_returns_canonical_next_position ... ok
[INFO] [stdout] test engine::tests::all_special_pieces_have_sfen_char ... ok
[INFO] [stdout] test engine::tests::all_15_special_pieces_generate_at_least_one_legal_move ... ok
[INFO] [stdout] test engine::tests::all_special_pieces_round_trip_sfen ... ok
[INFO] [stdout] test engine::tests::all_special_pieces_can_be_dropped_from_hand ... ok
[INFO] [stdout] test engine::tests::armor_sample_is_a_continuous_defense_skill ... ok
[INFO] [stdout] test engine::tests::abyss_sample_is_an_after_capture_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::bird_sample_is_an_after_move_adjacent_ally_defense_skill ... ok
[INFO] [stdout] test engine::tests::awakened_dragon_sample_is_a_probability_gated_remove_piece_skill ... ok
[INFO] [stdout] test engine::tests::blade_sample_is_an_after_capture_multi_capture_skill ... ok
[INFO] [stdout] test engine::tests::a_sample_transforms_adjacent_enemy_into_a_pawn ... ok
[INFO] [stdout] test engine::tests::boat_sample_is_an_after_move_linked_action_skill ... ok
[INFO] [stdout] test engine::tests::boil_sample_is_an_after_capture_summon_piece_skill ... ok
[INFO] [stdout] test engine::tests::beast_sample_is_an_after_move_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::builtin_skill_registry_is_valid ... ok
[INFO] [stdout] test engine::tests::book_sample_is_a_turn_start_self_copy_ability_skill ... ok
[INFO] [stdout] test engine::tests::bird_skill_improves_move_score_when_adjacent_ally_defense_applies ... ok
[INFO] [stdout] test engine::tests::captured_special_piece_does_not_duplicate ... ok
[INFO] [stdout] test engine::tests::capturing_special_piece_adds_it_to_custom_hand ... ok
[INFO] [stdout] test engine::tests::cannon_sample_is_an_after_capture_capture_with_leap_skill ... ok
[INFO] [stdout] test engine::tests::catalog_skill_piece_chars_resolve_to_known_display_codes ... ok
[INFO] [stdout] test engine::tests::cherry_sample_is_an_after_move_same_row_modify_movement_skill ... ok
[INFO] [stdout] test engine::tests::blade_skill_improves_move_score_when_after_capture_multi_capture_applies ... ok
[INFO] [stdout] test engine::tests::bulls_sample_is_a_probability_gated_self_clone_summon ... ok
[INFO] [stdout] test engine::tests::book_skill_improves_move_score_when_turn_start_copy_ability_applies ... ok
[INFO] [stdout] test engine::tests::cannon_skill_improves_move_score_when_after_capture_capture_with_leap_applies ... ok
[INFO] [stdout] test engine::tests::coin_sample_is_a_probability_gated_self_transform_skill ... ok
[INFO] [stdout] test engine::tests::chrysanthemum_sample_is_a_continuous_revive_skill ... ok
[INFO] [stdout] test engine::tests::cloud_sample_is_a_continuous_capture_constraint_skill ... ok
[INFO] [stdout] test engine::tests::abyss_skill_improves_move_score_when_after_capture_status_applies ... ok
[INFO] [stdout] test engine::tests::concave_skill_improves_move_score_when_long_move_matches_rule ... ok
[INFO] [stdout] test engine::tests::chrysanthemum_skill_improves_move_score_when_revive_applies ... ok
[INFO] [stdout] test engine::tests::coordinate_validation_accepts_normal_move ... ok
[INFO] [stdout] test engine::tests::coordinate_validation_rejects_inconsistent_drop ... ok
[INFO] [stdout] test engine::tests::convex_sample_is_an_after_move_extra_action_skill ... ok
[INFO] [stdout] test engine::tests::concave_sample_is_a_continuous_self_modify_movement_skill ... ok
[INFO] [stdout] test engine::tests::courtesy_sample_is_an_after_capture_substitute_skill ... ok
[INFO] [stdout] test engine::tests::cow_sample_is_a_composite_backward_step_modify_movement_skill ... ok
[INFO] [stdout] test engine::tests::custom_vector_does_not_produce_moves_in_absent_direction ... ok
[INFO] [stdout] test engine::tests::custom_vectors_are_loaded ... ok
[INFO] [stdout] test engine::tests::darkness_sample_is_a_primitive_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::courtesy_skill_improves_move_score_when_substitute_applies ... ok
[INFO] [stdout] test engine::tests::death_sample_is_a_continuous_adjacent_enemy_remove_piece_skill ... ok
[INFO] [stdout] test engine::tests::cloud_skill_improves_move_score_when_capture_constraint_applies ... ok
[INFO] [stdout] test engine::tests::coin_skill_improves_move_score_when_self_transform_applies ... ok
[INFO] [stdout] test engine::tests::demon_sample_is_a_probability_gated_remove_piece_skill ... ok
[INFO] [stdout] test engine::tests::disease_sample_is_an_after_capture_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::depression_sample_is_an_after_move_origin_cell_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::cow_skill_improves_move_score_when_backward_step_rule_applies ... ok
[INFO] [stdout] test engine::tests::dropped_special_piece_appears_on_board ... ok
[INFO] [stdout] test engine::tests::convex_skill_improves_move_score_when_extra_action_applies ... ok
[INFO] [stdout] test engine::tests::engine_config_rejects_false_safety_flags ... ok
[INFO] [stdout] test engine::tests::engine_config_rejects_invalid_values ... ok
[INFO] [stdout] test engine::tests::engine_config_defaults_are_applied ... FAILED
[INFO] [stdout] test engine::tests::electric_sample_is_a_probability_gated_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::dragon_sample_is_a_continuous_self_transform_skill ... ok
[INFO] [stdout] test engine::tests::experiment_k_sample_is_a_probability_gated_composite_summon_and_defense_skill ... ok
[INFO] [stdout] test engine::tests::darkness_skill_improves_move_score_when_adjacent_enemy_exists ... ok
[INFO] [stdout] test engine::tests::batch_j_script_hook_samples_use_named_hooks_and_empty_effects ... ok
[INFO] [stdout] test engine::tests::field_sample_is_a_continuous_self_modify_movement_skill ... ok
[INFO] [stdout] test engine::tests::experiment_sample_is_an_adjacent_enemy_transform_skill ... ok
[INFO] [stdout] test engine::tests::death_skill_improves_move_score_when_remove_piece_applies ... ok
[INFO] [stdout] test engine::tests::flame_sample_is_a_probability_gated_remove_piece_skill ... ok
[INFO] [stdout] test engine::tests::fire_sample_is_an_after_move_destroy_hand_piece_skill ... ok
[INFO] [stdout] test engine::tests::generate_moves_from_sfen_produces_candidates ... ok
[INFO] [stdout] test engine::tests::fish_sample_is_a_probability_gated_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::experiment_k_skill_improves_move_score_when_summon_and_defense_apply ... ok
[INFO] [stdout] test engine::tests::fire_skill_improves_move_score_when_enemy_hand_burn_applies ... ok
[INFO] [stdout] test engine::tests::disease_skill_improves_move_score_when_after_capture_status_applies ... ok
[INFO] [stdout] test engine::tests::giant_sample_is_a_composite_multi_defense_skill ... ok
[INFO] [stdout] test engine::tests::gear_sample_is_an_after_move_linked_action_skill ... ok
[INFO] [stdout] test engine::tests::grave_sample_is_a_probability_gated_summon_piece_skill ... ok
[INFO] [stdout] test engine::tests::gun_sample_is_a_continuous_front_enemy_multi_capture_skill ... ok
[INFO] [stdout] test engine::tests::hole_sample_is_an_after_capture_board_hazard_skill ... ok
[INFO] [stdout] test engine::tests::flame_skill_improves_move_score_when_adjacent_enemy_exists ... ok
[INFO] [stdout] test engine::tests::hou_can_capture_with_platform ... ok
[INFO] [stdout] test engine::tests::hoo_slides_forward_past_first_square ... ok
[INFO] [stdout] test engine::tests::hou_move_only_reaches_squares_before_platform ... ok
[INFO] [stdout] test engine::tests::giant_skill_improves_move_score_when_double_defense_applies ... ok
[INFO] [stdout] test engine::tests::heart_sample_is_an_after_move_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::hydrated_movement_modifier_changes_legal_move_shape ... ok
[INFO] [stdout] test engine::tests::hydrated_piece_defense_blocks_capture ... ok
[INFO] [stdout] test engine::tests::hydrated_board_hazard_blocks_legal_move_generation ... ok
[INFO] [stdout] test engine::tests::holy_sword_sample_is_a_continuous_defense_skill ... ok
[INFO] [stdout] test engine::tests::kanji_to_code_resolves_all_12_special_skill_piece_chars ... ok
[INFO] [stdout] test engine::tests::lantern_sample_is_a_primitive_transform_piece_skill ... ok
[INFO] [stdout] test engine::tests::hou_cannot_capture_without_platform ... ok
[INFO] [stdout] test engine::tests::house_sample_is_a_continuous_summon_piece_skill ... ok
[INFO] [stdout] test engine::tests::ice_sample_is_a_continuous_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::legal_moves_filter_out_self_check ... ok
[INFO] [stdout] test engine::tests::gun_skill_improves_move_score_when_front_enemy_multi_capture_applies ... ok
[INFO] [stdout] test engine::tests::hole_skill_improves_move_score_when_after_capture_hazard_applies ... ok
[INFO] [stdout] test engine::tests::machine_sample_is_a_continuous_copy_ability_skill ... ok
[INFO] [stdout] test engine::tests::iron_sample_is_a_continuous_forced_move_skill ... ok
[INFO] [stdout] test engine::tests::medicine_sample_is_a_continuous_adjacent_ally_modify_movement_skill ... ok
[INFO] [stdout] test engine::tests::leaf_sample_is_a_probability_gated_forced_move_skill ... ok
[INFO] [stdout] test engine::tests::mirror_sample_is_a_continuous_copy_ability_skill ... ok
[INFO] [stdout] test engine::tests::mist_sample_is_an_after_move_send_to_hand_skill ... ok
[INFO] [stdout] test engine::tests::moon_sample_is_a_turn_start_self_modify_movement_skill ... ok
[INFO] [stdout] test engine::tests::leaf_skill_improves_move_score_when_probability_gated_forced_move_applies ... ok
[INFO] [stdout] test engine::tests::moss_sample_is_a_primitive_summon_piece_skill ... ok
[INFO] [stdout] test engine::tests::mutant_sample_is_a_continuous_self_transform_skill ... ok
[INFO] [stdout] test engine::tests::iron_skill_improves_move_score_when_push_is_available ... ok
[INFO] [stdout] test engine::tests::mirror_skill_improves_move_score_when_copy_ability_applies ... ok
[INFO] [stdout] test engine::tests::mist_skill_improves_move_score_when_send_to_hand_applies ... ok
[INFO] [stdout] test engine::tests::mutant_skill_improves_move_score_when_transform_applies ... ok
[INFO] [stdout] test engine::tests::moon_skill_improves_move_score_when_turn_start_modify_movement_applies ... ok
[INFO] [stdout] test engine::tests::nifu_drop_is_filtered ... ok
[INFO] [stdout] test engine::tests::peak_sample_is_a_continuous_disable_piece_skill ... ok
[INFO] [stdout] test engine::tests::nothing_sample_is_a_composite_capture_constraint_and_defense_skill ... ok
[INFO] [stdout] test engine::tests::ore_sample_is_a_probability_gated_ally_transform_skill ... ok
[INFO] [stdout] test engine::tests::oni_sample_is_an_after_move_forced_move_skill ... ok
[INFO] [stdout] test engine::tests::persisted_skill_state_hydrates_piece_statuses ... ok
[INFO] [stdout] test engine::tests::parse_sfen_basic_position ... ok
[INFO] [stdout] test engine::tests::oboro_skill_improves_move_score_when_defense_applies ... ok
[INFO] [stdout] test engine::tests::nothing_skill_improves_move_score_when_capture_constraint_and_defense_apply ... ok
[INFO] [stdout] test engine::tests::piece_mapping_king_survives_after_special_sfen_parse ... ok
[INFO] [stdout] test engine::tests::piece_mapping_covers_all_15_special_pieces ... ok
[INFO] [stdout] test engine::tests::phantom_sample_is_a_probability_gated_defense_skill ... ok
[INFO] [stdout] test engine::tests::oboro_sample_is_a_continuous_defense_skill ... ok
[INFO] [stdout] test engine::tests::piece_mapping_promoted_sfen_parses_correctly ... ok
[INFO] [stdout] test engine::tests::piece_mapping_special_sfen_chars_are_parsed_not_skipped ... ok
[INFO] [stdout] test engine::tests::piece_mapping_standard_display_codes_round_trip ... ok
[INFO] [stdout] test engine::tests::piece_mapping_standard_sfen_parses_correctly ... ok
[INFO] [stdout] test engine::tests::peak_skill_improves_move_score_when_disable_piece_applies ... ok
[INFO] [stdout] test engine::tests::people_sample_is_a_continuous_self_modify_movement_skill ... ok
[INFO] [stdout] test engine::tests::phantom_skill_improves_move_score_when_defense_applies ... ok
[INFO] [stdout] test engine::tests::pig_sample_is_an_after_capture_inherit_ability_skill ... ok
[INFO] [stdout] test engine::tests::prison_sample_is_an_after_move_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::poison_sample_is_an_after_move_board_hazard_skill ... ok
[INFO] [stdout] test engine::tests::rainbow_sample_is_a_composite_with_stable_effect_order ... ok
[INFO] [stdout] test engine::tests::reflection_sample_is_a_script_hook_without_common_effects ... ok
[INFO] [stdout] test engine::tests::roast_sample_is_an_after_capture_summon_piece_skill ... ok
[INFO] [stdout] test engine::tests::roar_sample_is_an_after_move_forced_move_skill ... ok
[INFO] [stdout] test engine::tests::ridge_sample_is_a_probability_gated_summon_piece_skill ... ok
[INFO] [stdout] test engine::tests::runtime_rules_reject_invalid_skill_definition ... ok
[INFO] [stdout] test engine::tests::rose_sample_is_a_continuous_board_hazard_skill ... ok
[INFO] [stdout] test engine::tests::pig_skill_improves_move_score_when_inherit_ability_applies ... ok
[INFO] [stdout] test engine::tests::rock_sample_is_an_after_move_summon_piece_skill ... ok
[INFO] [stdout] test engine::tests::poison_skill_improves_move_score_when_board_hazard_applies ... ok
[INFO] [stdout] test engine::tests::sample_skill_definitions_validate_against_builtin_registry ... ok
[INFO] [stdout] test engine::tests::saint_sample_is_a_continuous_disable_piece_skill ... ok
[INFO] [stdout] test engine::tests::seed_is_stable_for_same_input ... ok
[INFO] [stdout] test engine::tests::sand_sample_is_an_after_move_linked_action_skill ... ok
[INFO] [stdout] test engine::tests::select_move_is_deterministic_when_no_randomness ... ok
[INFO] [stdout] test engine::tests::runtime_rules_load_skill_registry_and_definitions_v2 ... ok
[INFO] [stdout] test engine::tests::roast_skill_improves_move_score_when_after_capture_summon_applies ... ok
[INFO] [stdout] test engine::tests::seal_sample_is_a_continuous_adjacent_enemy_seal_skill ... ok
[INFO] [stdout] test engine::tests::second_sample_is_an_after_capture_extra_action_skill ... ok
[INFO] [stdout] test engine::tests::snowman_sample_is_a_probability_gated_gain_piece_skill ... ok
[INFO] [stdout] test engine::tests::shield_sample_is_a_probability_gated_disable_piece_skill ... ok
[INFO] [stdout] test engine::tests::sand_skill_improves_move_score_when_linked_action_applies ... ok
[INFO] [stdout] test engine::tests::seal_skill_improves_move_score_when_adjacent_enemy_is_present ... ok
[INFO] [stdout] test engine::tests::soul_sample_is_a_continuous_defense_skill ... ok
[INFO] [stdout] test engine::tests::snowman_skill_improves_move_score_when_gain_piece_applies ... ok
[INFO] [stdout] test engine::tests::spec_a_transforms_an_adjacent_enemy_piece_into_a_pawn ... ok
[INFO] [stdout] test engine::tests::spec_abyss_marks_after_capture_adjacent_enemy_status ... ok
[INFO] [stdout] test engine::tests::spec_armor_marks_defense_or_immunity ... ok
[INFO] [stdout] test engine::tests::soul_skill_improves_move_score_when_defense_applies ... ok
[INFO] [stdout] test engine::tests::spec_beast_after_move_marks_adjacent_enemy_with_stun ... ok
[INFO] [stdout] test engine::tests::spec_awakened_dragon_removes_an_adjacent_enemy_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_bird_marks_defense_when_adjacent_ally_exists ... ok
[INFO] [stdout] test engine::tests::spec_blade_marks_after_capture_multi_capture ... ok
[INFO] [stdout] test engine::tests::spec_boat_marks_linked_action_when_adjacent_ally_exists ... ok
[INFO] [stdout] test engine::tests::spec_boil_marks_summon_piece_after_capture ... ok
[INFO] [stdout] test engine::tests::spec_bomb_dispatches_to_explosion_push_hook ... ok
[INFO] [stdout] test engine::tests::spec_book_marks_turn_start_copy_ability ... ok
[INFO] [stdout] test engine::tests::spec_bulls_summons_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_cannon_marks_after_capture_capture_with_leap ... ok
[INFO] [stdout] test engine::tests::spec_cherry_marks_same_row_ally_modify_movement ... ok
[INFO] [stdout] test engine::tests::spec_cloud_marks_capture_constraint ... ok
[INFO] [stdout] test engine::tests::spec_cow_marks_backward_step_modify_movement ... ok
[INFO] [stdout] test engine::tests::spec_chrysanthemum_marks_revive_when_adjacent_ally_exists ... ok
[INFO] [stdout] test engine::tests::spec_darkness_continuous_aura_marks_adjacent_enemy_with_status ... ok
[INFO] [stdout] test engine::tests::spec_concave_marks_self_modify_movement_for_long_move ... ok
[INFO] [stdout] test engine::tests::spec_coin_marks_self_transform_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_courtesy_marks_after_capture_substitute ... ok
[INFO] [stdout] test engine::tests::spec_depression_marks_origin_cell_apply_status ... ok
[INFO] [stdout] test engine::tests::spec_death_removes_an_adjacent_enemy ... ok
[INFO] [stdout] test engine::tests::spec_disease_marks_after_capture_adjacent_enemy_status ... ok
[INFO] [stdout] test engine::tests::spec_dragon_marks_self_transform ... ok
[INFO] [stdout] test engine::tests::spec_convex_marks_extra_action_after_move ... ok
[INFO] [stdout] test engine::tests::spec_demon_removes_an_adjacent_enemy_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_edge_marks_hook_when_enemy_is_on_board_edge ... ok
[INFO] [stdout] test engine::tests::spec_electric_marks_adjacent_enemy_with_shock ... ok
[INFO] [stdout] test engine::tests::spec_enn_flame_continuous_aura_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_field_marks_self_modify_movement_for_diagonal_step ... ok
[INFO] [stdout] test engine::tests::spec_escape_moves_friendly_king_in_the_same_direction ... ok
[INFO] [stdout] test engine::tests::spec_experiment_marks_adjacent_enemy_transform ... ok
[INFO] [stdout] test engine::tests::spec_fir_fire_after_move_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_fire_burns_one_enemy_hand_piece_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_experiment_k_marks_probability_gated_summon_and_defense ... ok
[INFO] [stdout] test engine::tests::spec_fish_marks_apply_status_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_flame_removes_an_adjacent_enemy_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_giant_marks_two_defense_effects ... ok
[INFO] [stdout] test engine::tests::spec_fixed_marks_next_turn_restriction_hook ... ok
[INFO] [stdout] test engine::tests::spec_gear_marks_linked_action_when_adjacent_ally_exists ... ok
[INFO] [stdout] test engine::tests::spec_gun_marks_front_enemy_multi_capture ... ok
[INFO] [stdout] test engine::tests::spec_grave_marks_summon_piece_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_haa_leaf_continuous_aura_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_heart_after_move_marks_adjacent_enemy_with_stun ... ok
[INFO] [stdout] test engine::tests::spec_hik_light_after_move_script_hook_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_hou_cannon_after_capture_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_hole_marks_board_hazard_on_after_capture ... ok
[INFO] [stdout] test engine::tests::spec_hos_star_after_capture_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_iron_continuous_forced_move_pushes_adjacent_enemy_away ... ok
[INFO] [stdout] test engine::tests::spec_holy_sword_marks_defense_when_adjacent_empty_exists ... ok
[INFO] [stdout] test engine::tests::spec_house_marks_summon_piece_when_adjacent_empty_exists ... ok
[INFO] [stdout] test engine::tests::spec_ice_continuous_aura_marks_adjacent_enemy_with_freeze ... ok
[INFO] [stdout] test engine::tests::spec_leaf_marks_probability_gated_forced_move ... ok
[INFO] [stdout] test engine::tests::spec_mak_demon_continuous_aura_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_lantern_marks_transform_when_an_ally_pawn_exists ... ok
[INFO] [stdout] test engine::tests::spec_machine_marks_copy_ability_when_adjacent_ally_exists ... ok
[INFO] [stdout] test engine::tests::spec_medicine_marks_adjacent_ally_modify_movement ... ok
[INFO] [stdout] test engine::tests::spec_mirror_marks_copy_ability_when_front_enemy_exists ... ok
[INFO] [stdout] test engine::tests::spec_mok_tree_continuous_aura_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_mist_sends_adjacent_enemy_to_hand ... ok
[INFO] [stdout] test engine::tests::spec_moon_marks_turn_start_modify_movement ... ok
[INFO] [stdout] test engine::tests::spec_mutant_marks_self_transform ... ok
[INFO] [stdout] test engine::tests::spec_moss_summons_a_clone_into_the_first_adjacent_empty_cell ... ok
[INFO] [stdout] test engine::tests::spec_nam_wave_continuous_aura_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_nothing_marks_capture_constraint_and_defense ... ok
[INFO] [stdout] test engine::tests::spec_oboro_marks_defense_or_immunity ... ok
[INFO] [stdout] test engine::tests::spec_oni_after_move_pushes_adjacent_enemy_away ... ok
[INFO] [stdout] test engine::tests::spec_ore_marks_transform_when_an_ally_pawn_exists ... ok
[INFO] [stdout] test engine::tests::spec_peak_marks_disable_piece_when_adjacent_enemy_exists ... ok
[INFO] [stdout] test engine::tests::spec_pig_marks_after_capture_inherit_ability ... ok
[INFO] [stdout] test engine::tests::spec_phantom_marks_defense_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_poison_marks_board_hazard_on_origin_cell ... ok
[INFO] [stdout] test engine::tests::spec_people_marks_self_modify_movement_for_diagonal_step ... ok
[INFO] [stdout] test engine::tests::spec_prison_after_move_marks_adjacent_enemy_with_stun ... ok
[INFO] [stdout] test engine::tests::spec_rainbow_composite_applies_effects_in_order ... ok
[INFO] [stdout] test engine::tests::spec_reflection_dispatches_to_named_script_hook ... ok
[INFO] [stdout] test engine::tests::spec_ridge_marks_summon_piece_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_roast_marks_summon_piece_after_capture ... ok
[INFO] [stdout] test engine::tests::spec_roar_after_move_pushes_adjacent_enemy_away ... ok
[INFO] [stdout] test engine::tests::spec_rock_marks_summon_piece_after_move ... ok
[INFO] [stdout] test engine::tests::spec_rose_marks_board_hazard_when_adjacent_empty_exists ... ok
[INFO] [stdout] test engine::tests::spec_ryu_dragon_continuous_rule_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spec_safe_room_relocates_friendly_king ... ok
[INFO] [stdout] test engine::tests::spec_saint_marks_disable_piece_when_adjacent_enemy_exists ... ok
[INFO] [stdout] test engine::tests::spec_sand_marks_linked_action_when_same_row_ally_exists ... ok
[INFO] [stdout] test engine::tests::spec_snowman_marks_gain_piece_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_second_marks_extra_action_when_capture_occurs ... ok
[INFO] [stdout] test engine::tests::spec_shield_marks_disable_piece_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_seal_marks_adjacent_enemy_seal_skill ... ok
[INFO] [stdout] test engine::tests::spec_soul_marks_defense_or_immunity ... ok
[INFO] [stdout] test engine::tests::spec_spirit_marks_capture_constraint ... ok
[INFO] [stdout] test engine::tests::spec_spring_marks_adjacent_ally_defense ... ok
[INFO] [stdout] test engine::tests::spec_swamp_marks_adjacent_enemy_modify_movement ... ok
[INFO] [stdout] test engine::tests::spec_stir_fry_marks_extra_action_when_capture_occurs ... ok
[INFO] [stdout] test engine::tests::spec_tin_marks_apply_status_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_star_marks_probability_gated_return_to_hand ... ok
[INFO] [stdout] test engine::tests::spec_time_continuous_aura_marks_adjacent_enemy_with_time_stop ... ok
[INFO] [stdout] test engine::tests::spec_thunder_removes_one_enemy_hand_piece_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_tree_marks_summon_piece_when_adjacent_empty_exists ... ok
[INFO] [stdout] test engine::tests::spec_yin_composite_marks_seal_and_defense_effects ... ok
[INFO] [stdout] test engine::tests::spec_water_continuous_forced_move_pushes_adjacent_enemy_away ... ok
[INFO] [stdout] test engine::tests::spec_wealth_marks_after_capture_adjacent_enemy_transform ... ok
[INFO] [stdout] test engine::tests::special_piece_sfen_generates_legal_moves_with_custom_vectors ... ok
[INFO] [stdout] test engine::tests::special_piece_skill_path_is_applied ... ok
[INFO] [stdout] test engine::tests::special_piece_in_hand_generates_drop_moves ... ok
[INFO] [stdout] test engine::tests::spec_yang_marks_probability_gated_self_defense ... ok
[INFO] [stdout] test engine::tests::spirit_sample_is_a_continuous_capture_constraint_skill ... ok
[INFO] [stdout] test engine::tests::spec_treasure_gains_a_gold_with_probability_weight ... ok
[INFO] [stdout] test engine::tests::spec_yam_darkness_continuous_aura_triggers_with_display_code ... ok
[INFO] [stdout] test engine::tests::spring_sample_is_a_composite_adjacent_ally_defense_skill ... ok
[INFO] [stdout] test engine::tests::spec_waterfall_forced_move_pushes_adjacent_enemy_away ... ok
[INFO] [stdout] test engine::tests::star_sample_is_a_probability_gated_return_to_hand_skill ... ok
[INFO] [stdout] test engine::tests::stir_fry_sample_is_an_after_capture_extra_action_skill ... ok
[INFO] [stdout] test engine::tests::stateful_defense_or_immunity_blocks_enemy_capture_and_changes_evaluation ... ok
[INFO] [stdout] test engine::tests::star_skill_improves_move_score_when_return_to_hand_applies ... ok
[INFO] [stdout] test engine::tests::stateful_board_hazard_blocks_enemy_entry_and_changes_evaluation ... ok
[INFO] [stdout] test engine::tests::stateful_modify_movement_limits_the_marked_enemy_piece_to_vertical_steps ... FAILED
[INFO] [stdout] test engine::tests::thunder_sample_is_a_probability_gated_hand_remove_skill ... ok
[INFO] [stdout] test engine::tests::swamp_sample_is_a_continuous_adjacent_enemy_modify_movement_skill ... ok
[INFO] [stdout] test engine::tests::tin_sample_is_a_probability_gated_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::time_sample_is_a_continuous_apply_status_skill ... ok
[INFO] [stdout] test engine::tests::spring_skill_improves_move_score_when_adjacent_ally_defense_applies ... ok
[INFO] [stdout] test engine::tests::tree_sample_is_a_continuous_summon_piece_skill ... ok
[INFO] [stdout] test engine::tests::stateful_apply_status_blocks_the_marked_enemy_piece ... ok
[INFO] [stdout] test engine::tests::treasure_sample_is_a_probability_gated_gain_piece_skill ... ok
[INFO] [stdout] test engine::tests::wave_sample_is_a_continuous_forced_move_skill ... ok
[INFO] [stdout] test engine::tests::waterfall_sample_is_a_primitive_forced_move_skill ... ok
[INFO] [stdout] test engine::tests::water_sample_is_a_continuous_forced_move_skill ... ok
[INFO] [stdout] test engine::tests::wealth_sample_is_an_after_capture_adjacent_enemy_transform_skill ... ok
[INFO] [stdout] test engine::tests::treasure_skill_improves_move_score_when_gain_piece_applies ... ok
[INFO] [stdout] test engine::tests::waterfall_skill_improves_move_score_when_push_is_available ... ok
[INFO] [stdout] test engine::tests::wind_sample_is_a_continuous_forced_move_skill ... ok
[INFO] [stdout] test engine::tests::yang_sample_is_a_probability_gated_composite_self_defense_skill ... ok
[INFO] [stdout] test engine::tests::wealth_skill_improves_move_score_when_after_capture_transform_applies ... ok
[INFO] [stdout] test engine::tests::tree_skill_improves_move_score_when_summon_piece_applies ... ok
[INFO] [stdout] test engine::tests::yin_sample_is_a_composite_defense_skill ... ok
[INFO] [stdout] test engine::tests::turn_boundaries_refresh_moon_cycle_and_expire_swamp_restrictions ... FAILED
[INFO] [stdout] test engine::tests::yang_skill_improves_move_score_when_probability_gated_self_defense_applies ... ok
[INFO] [stdout] test engine::tests::yin_skill_improves_move_score_when_seal_and_defense_apply ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- engine::tests::engine_config_defaults_are_applied stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'engine::tests::engine_config_defaults_are_applied' (80) panicked at src/engine/tests.rs:69:5:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: 4
[INFO] [stdout]  right: 3
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5813b11d04ea - <<std[ec419fa8110287d5]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[35159d6ffb30e017]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5813b11e5cea - core[35159d6ffb30e017]::fmt::write
[INFO] [stdout]    2:     0x5813b11d4e42 - <alloc[a8a7aba520129d98]::vec::Vec<u8> as std[ec419fa8110287d5]::io::Write>::write_fmt
[INFO] [stdout]    3:     0x5813b11af01f - std[ec419fa8110287d5]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5813b11c8819 - std[ec419fa8110287d5]::panicking::default_hook
[INFO] [stdout]    5:     0x5813b104b07c - test[a8007afcd3effadc]::test_main_inner::<test[a8007afcd3effadc]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5813b11c89d2 - std[ec419fa8110287d5]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5813b11af0d8 - std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5813b11a6a49 - std[ec419fa8110287d5]::sys::backtrace::__rust_end_short_backtrace::<std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5813b11afded - __rustc[cfb3622dd870db93]::rust_begin_unwind
[INFO] [stdout]   10:     0x5813b11e64dc - core[35159d6ffb30e017]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5813b11e6363 - core[35159d6ffb30e017]::panicking::assert_failed_inner
[INFO] [stdout]   12:     0x5813b11a35ba - core[35159d6ffb30e017]::panicking::assert_failed::<u32, u32>
[INFO] [stdout]   13:     0x5813b0e9d0c1 - shogi_ai[af76445b8cb3301]::engine::tests::engine_config_defaults_are_applied
[INFO] [stdout]   14:     0x5813b0e93843 - shogi_ai[af76445b8cb3301]::engine::tests::engine_config_defaults_are_applied::{closure#0}
[INFO] [stdout]   15:     0x5813b1031776 - <shogi_ai[af76445b8cb3301]::engine::tests::engine_config_defaults_are_applied::{closure#0} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   16:     0x5813b103e35b - test[a8007afcd3effadc]::__rust_begin_short_backtrace::<core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>, fn() -> core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]   17:     0x5813b104bb4b - test[a8007afcd3effadc]::run_test::{closure#0}
[INFO] [stdout]   18:     0x5813b1046524 - std[ec419fa8110287d5]::sys::backtrace::__rust_begin_short_backtrace::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>
[INFO] [stdout]   19:     0x5813b104e752 - <std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   20:     0x5813b11cfdcf - <std[ec419fa8110287d5]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   21:     0x7d9774723aa4 - <unknown>
[INFO] [stdout]   22:     0x7d97747b0a64 - clone
[INFO] [stdout]   23:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- engine::tests::stateful_modify_movement_limits_the_marked_enemy_piece_to_vertical_steps stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'engine::tests::stateful_modify_movement_limits_the_marked_enemy_piece_to_vertical_steps' (297) panicked at src/engine/tests.rs:1879:5:
[INFO] [stdout] assertion failed: simulated.state.has_movement_modifier(4, 6, Side::White, "vertical_step_only")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5813b11d04ea - <<std[ec419fa8110287d5]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[35159d6ffb30e017]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5813b11e5cea - core[35159d6ffb30e017]::fmt::write
[INFO] [stdout]    2:     0x5813b11d4e42 - <alloc[a8a7aba520129d98]::vec::Vec<u8> as std[ec419fa8110287d5]::io::Write>::write_fmt
[INFO] [stdout]    3:     0x5813b11af01f - std[ec419fa8110287d5]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5813b11c8819 - std[ec419fa8110287d5]::panicking::default_hook
[INFO] [stdout]    5:     0x5813b104b07c - test[a8007afcd3effadc]::test_main_inner::<test[a8007afcd3effadc]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5813b11c89d2 - std[ec419fa8110287d5]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5813b11af10a - std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5813b11a6a49 - std[ec419fa8110287d5]::sys::backtrace::__rust_end_short_backtrace::<std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5813b11afded - __rustc[cfb3622dd870db93]::rust_begin_unwind
[INFO] [stdout]   10:     0x5813b11e64dc - core[35159d6ffb30e017]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5813b11e64a2 - core[35159d6ffb30e017]::panicking::panic
[INFO] [stdout]   12:     0x5813b0ee5415 - shogi_ai[af76445b8cb3301]::engine::tests::stateful_modify_movement_limits_the_marked_enemy_piece_to_vertical_steps
[INFO] [stdout]   13:     0x5813b0e96c63 - shogi_ai[af76445b8cb3301]::engine::tests::stateful_modify_movement_limits_the_marked_enemy_piece_to_vertical_steps::{closure#0}
[INFO] [stdout]   14:     0x5813b1035cf6 - <shogi_ai[af76445b8cb3301]::engine::tests::stateful_modify_movement_limits_the_marked_enemy_piece_to_vertical_steps::{closure#0} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   15:     0x5813b103e35b - test[a8007afcd3effadc]::__rust_begin_short_backtrace::<core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>, fn() -> core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]   16:     0x5813b104bb4b - test[a8007afcd3effadc]::run_test::{closure#0}
[INFO] [stdout]   17:     0x5813b1046524 - std[ec419fa8110287d5]::sys::backtrace::__rust_begin_short_backtrace::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>
[INFO] [stdout]   18:     0x5813b104e752 - <std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   19:     0x5813b11cfdcf - <std[ec419fa8110287d5]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   20:     0x7d9774723aa4 - <unknown>
[INFO] [stdout]   21:     0x7d97747b0a64 - clone
[INFO] [stdout]   22:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- engine::tests::turn_boundaries_refresh_moon_cycle_and_expire_swamp_restrictions stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'engine::tests::turn_boundaries_refresh_moon_cycle_and_expire_swamp_restrictions' (307) panicked at src/engine/tests.rs:3871:5:
[INFO] [stdout] assertion failed: swamp_simulated.state.has_movement_modifier(4, 6, Side::White,
[INFO] [stdout]     "vertical_step_only")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5813b11d04ea - <<std[ec419fa8110287d5]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[35159d6ffb30e017]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5813b11e5cea - core[35159d6ffb30e017]::fmt::write
[INFO] [stdout]    2:     0x5813b11d4e42 - <alloc[a8a7aba520129d98]::vec::Vec<u8> as std[ec419fa8110287d5]::io::Write>::write_fmt
[INFO] [stdout]    3:     0x5813b11af01f - std[ec419fa8110287d5]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5813b11c8819 - std[ec419fa8110287d5]::panicking::default_hook
[INFO] [stdout]    5:     0x5813b104b07c - test[a8007afcd3effadc]::test_main_inner::<test[a8007afcd3effadc]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5813b11c89d2 - std[ec419fa8110287d5]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5813b11af10a - std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5813b11a6a49 - std[ec419fa8110287d5]::sys::backtrace::__rust_end_short_backtrace::<std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5813b11afded - __rustc[cfb3622dd870db93]::rust_begin_unwind
[INFO] [stdout]   10:     0x5813b11e64dc - core[35159d6ffb30e017]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5813b11e64a2 - core[35159d6ffb30e017]::panicking::panic
[INFO] [stdout]   12:     0x5813b0ee1333 - shogi_ai[af76445b8cb3301]::engine::tests::turn_boundaries_refresh_moon_cycle_and_expire_swamp_restrictions
[INFO] [stdout]   13:     0x5813b0e968a3 - shogi_ai[af76445b8cb3301]::engine::tests::turn_boundaries_refresh_moon_cycle_and_expire_swamp_restrictions::{closure#0}
[INFO] [stdout]   14:     0x5813b10357f6 - <shogi_ai[af76445b8cb3301]::engine::tests::turn_boundaries_refresh_moon_cycle_and_expire_swamp_restrictions::{closure#0} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   15:     0x5813b103e35b - test[a8007afcd3effadc]::__rust_begin_short_backtrace::<core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>, fn() -> core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]   16:     0x5813b104bb4b - test[a8007afcd3effadc]::run_test::{closure#0}
[INFO] [stdout]   17:     0x5813b1046524 - std[ec419fa8110287d5]::sys::backtrace::__rust_begin_short_backtrace::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>
[INFO] [stdout]   18:     0x5813b104e752 - <std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   19:     0x5813b11cfdcf - <std[ec419fa8110287d5]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   20:     0x7d9774723aa4 - <unknown>
[INFO] [stdout]   21:     0x7d97747b0a64 - clone
[INFO] [stdout]   22:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     engine::tests::engine_config_defaults_are_applied
[INFO] [stdout]     engine::tests::stateful_modify_movement_limits_the_marked_enemy_piece_to_vertical_steps
[INFO] [stdout]     engine::tests::turn_boundaries_refresh_moon_cycle_and_expire_swamp_restrictions
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 299 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.01s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin shogi-ai`
[INFO] running `Command { std: "docker" "inspect" "6df0dbc6f6c8b61394f1c961aa49c2ecd4782f743514d536b6863663e0bee8f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6df0dbc6f6c8b61394f1c961aa49c2ecd4782f743514d536b6863663e0bee8f9", kill_on_drop: false }`
[INFO] [stdout] 6df0dbc6f6c8b61394f1c961aa49c2ecd4782f743514d536b6863663e0bee8f9
