[INFO] fetching crate ecluse 0.3.1...
[INFO] testing ecluse-0.3.1 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate ecluse 0.3.1 into /workspace/builds/worker-2-tc2/source
[INFO] removed /workspace/builds/worker-2-tc2/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate ecluse 0.3.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate ecluse 0.3.1
[INFO] tweaked toml for crates.io crate ecluse 0.3.1 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate ecluse 0.3.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ecluse 0.3.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:65:12
[INFO] [stderr]    |
[INFO] [stderr] 65 | homepage = "https://github.com/hefgi/ecluse"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 70 | repository = "https://github.com/hefgi/ecluse"
[INFO] [stderr]    |              ---------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `ecluse` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084
[INFO] running `Command { std: "docker" "start" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:65:12
[INFO] [stderr]    |
[INFO] [stderr] 65 | homepage = "https://github.com/hefgi/ecluse"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 70 | repository = "https://github.com/hefgi/ecluse"
[INFO] [stderr]    |              ---------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `ecluse` (manifest) generated 1 warning
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling bytecount v0.6.9
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling papergrid v0.11.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling regex-lite v0.1.9
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tabled_derive v0.7.0
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling tabled v0.15.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling ecluse v0.3.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 13s
[INFO] running `Command { std: "docker" "inspect" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:65:12
[INFO] [stderr]    |
[INFO] [stderr] 65 | homepage = "https://github.com/hefgi/ecluse"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 70 | repository = "https://github.com/hefgi/ecluse"
[INFO] [stderr]    |              ---------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `ecluse` (manifest) generated 1 warning
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling ecluse v0.3.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 39.32s
[INFO] running `Command { std: "docker" "inspect" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:65:12
[INFO] [stderr]    |
[INFO] [stderr] 65 | homepage = "https://github.com/hefgi/ecluse"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 70 | repository = "https://github.com/hefgi/ecluse"
[INFO] [stderr]    |              ---------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `ecluse` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.18s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/ecluse/e1576b2f01dc26ff/out/ecluse-e1576b2f01dc26ff)
[INFO] [stdout] 
[INFO] [stdout] running 439 tests
[INFO] [stdout] test compose::tests::app_services_null_labels_not_matched ... ok
[INFO] [stdout] test compose::tests::data_services_all_when_no_app_label ... ok
[INFO] [stdout] test compose::tests::app_services_wrong_value_not_matched ... ok
[INFO] [stdout] test compose::tests::app_services_no_match_returns_empty ... ok
[INFO] [stdout] test compose::tests::app_services_mapping_labels_detected ... ok
[INFO] [stdout] test compose::tests::app_services_sequence_labels_detected ... ok
[INFO] [stdout] test compose::tests::find_compose_docker_compose_yaml ... ok
[INFO] [stdout] test compose::tests::find_compose_compose_yaml ... ok
[INFO] [stdout] test compose::tests::data_services_excludes_app_labeled ... ok
[INFO] [stdout] test compose::tests::overlay_empty_compose_no_crash ... ok
[INFO] [stdout] test compose::tests::find_compose_docker_compose_yml ... ok
[INFO] [stdout] test compose::tests::overlay_bind_mount_dot_not_namespaced ... ok
[INFO] [stdout] test compose::tests::overlay_container_name_cleared_when_present ... ok
[INFO] [stdout] test compose::tests::overlay_named_volume_namespaced ... ok
[INFO] [stdout] test compose::tests::overlay_port_mapping_published_rewritten ... ok
[INFO] [stdout] test compose::tests::overlay_no_container_name_field_not_injected ... ok
[INFO] [stdout] test compose::tests::overlay_port_non_numeric_host_passthrough ... ok
[INFO] [stdout] test compose::tests::find_compose_compose_yml ... ok
[INFO] [stdout] test compose::tests::overlay_bind_mount_absolute_not_namespaced ... ok
[INFO] [stdout] test compose::tests::find_compose_none_when_absent ... ok
[INFO] [stdout] test compose::tests::overlay_port_container_only_rewritten_with_host ... ok
[INFO] [stdout] test compose::tests::overlay_port_mapping_without_published_unchanged ... ok
[INFO] [stdout] test compose::tests::overlay_port_numeric_rewritten ... ok
[INFO] [stdout] test compose::tests::overlay_volume_mapping_type_bind_not_namespaced ... ok
[INFO] [stdout] test compose::tests::overlay_with_ports_container_name_cleared_when_present ... ok
[INFO] [stdout] test compose::tests::overlay_with_ports_extra_ports_appended ... ok
[INFO] [stdout] test compose::tests::overlay_with_ports_no_override_tag_on_unrelated_service ... ok
[INFO] [stdout] test compose::tests::overlay_port_string_host_container_rewritten ... ok
[INFO] [stdout] test compose::tests::overlay_port_ip_host_container_rewritten ... ok
[INFO] [stdout] test compose::tests::overlay_services_to_include_filters_correctly ... ok
[INFO] [stdout] test compose::tests::overlay_volume_mapping_type_volume_namespaced ... ok
[INFO] [stdout] test compose::tests::overlay_with_ports_emits_mapping_when_base_has_no_ports ... ok
[INFO] [stdout] test compose::tests::overlay_with_ports_extra_ports_empty_map_no_change ... ok
[INFO] [stdout] test compose::tests::overlay_with_ports_no_override_tag_when_base_has_no_ports ... ok
[INFO] [stdout] test compose::tests::service_host_port_container_only_string ... ok
[INFO] [stdout] test compose::tests::overlay_top_level_volumes_declared_with_suffix ... ok
[INFO] [stdout] test compose::tests::parse_invalid_yaml_errors ... ok
[INFO] [stdout] test compose::tests::overlay_zero_offset_keeps_original_port ... ok
[INFO] [stdout] test config::tests::config_default_app_label_and_value ... ok
[INFO] [stdout] test config::tests::config_invalid_toml_returns_error ... ok
[INFO] [stdout] test compose::tests::overlay_with_ports_override_tag_when_base_has_ports ... ok
[INFO] [stdout] test compose::tests::parse_missing_file_errors ... ok
[INFO] [stdout] test config::tests::config_loads_full_toml ... ok
[INFO] [stdout] test compose::tests::parse_valid_compose_file ... ok
[INFO] [stdout] test compose::tests::service_host_port_zero_offset ... ok
[INFO] [stdout] test compose::tests::resolve_service_compose_explicit_existing_path_returned ... ok
[INFO] [stdout] test config::tests::config_native_services_filters_correctly ... ok
[INFO] [stdout] test config::tests::config_container_mode_display ... ok
[INFO] [stdout] test compose::tests::resolve_service_compose_explicit_missing_path_returns_none ... ok
[INFO] [stdout] test compose::tests::resolve_service_compose_no_field_no_root_returns_none ... ok
[INFO] [stdout] test config::tests::config_default_worktree_dir ... ok
[INFO] [stdout] test config::tests::config_port_search_range_defaults_to_10 ... ok
[INFO] [stdout] test compose::tests::resolve_service_compose_no_field_returns_root_compose ... ok
[INFO] [stdout] test config::tests::config_missing_returns_error ... ok
[INFO] [stdout] test compose::tests::service_host_port_host_container_string ... ok
[INFO] [stdout] test config::tests::config_invalid_mode_value_returns_error ... ok
[INFO] [stdout] test config::tests::config_loads_minimal_toml ... ok
[INFO] [stdout] test config::tests::config_services_load_from_toml ... ok
[INFO] [stdout] test config::tests::config_port_search_range_can_be_set ... ok
[INFO] [stdout] test config::tests::config_strict_port_defaults_to_false ... ok
[INFO] [stdout] test config::tests::debug_port_defaults_to_none ... ok
[INFO] [stdout] test config::tests::config_strict_port_can_be_set ... ok
[INFO] [stdout] test compose::tests::service_host_port_ip_host_container_string ... ok
[INFO] [stdout] test config::tests::config_roundtrips_save_load ... ok
[INFO] [stdout] test compose::tests::service_host_port_no_ports_none ... ok
[INFO] [stdout] test compose::tests::service_host_port_number_value ... ok
[INFO] [stdout] test config::tests::debug_port_loads_from_toml ... ok
[INFO] [stdout] test config::tests::hook_is_not_empty_when_post_down_set ... ok
[INFO] [stdout] test config::tests::hook_is_not_empty_when_post_up_set ... ok
[INFO] [stdout] test config::tests::extra_port_for_slot_honors_stride ... ok
[INFO] [stdout] test config::tests::find_and_load_errors_without_config ... ok
[INFO] [stdout] test config::tests::hook_is_not_empty_when_pre_down_set ... ok
[INFO] [stdout] test config::tests::host_port_defaults_to_none ... ok
[INFO] [stdout] test config::tests::hook_is_empty_both_none ... ok
[INFO] [stdout] test config::tests::inherit_env_invalid_mode_returns_error ... ok
[INFO] [stdout] test config::tests::host_port_base_uses_host_port_when_set ... ok
[INFO] [stdout] test config::tests::inherit_env_default_is_symlinked_env_and_env_local ... ok
[INFO] [stdout] test config::tests::hooks_load_from_toml ... ok
[INFO] [stdout] test config::tests::host_port_base_falls_back_to_base_port_when_unset ... ok
[INFO] [stdout] test config::tests::inherit_env_empty_list_opts_out ... ok
[INFO] [stdout] test config::tests::mode_from_str_case_sensitive ... ok
[INFO] [stdout] test config::tests::hook_is_not_empty_when_pre_up_set ... ok
[INFO] [stdout] test config::tests::inherit_env_object_form_loads_correctly ... ok
[INFO] [stdout] test config::tests::mode_from_str_valid ... ok
[INFO] [stdout] test config::tests::inherit_env_object_without_mode_defaults_to_symlink ... ok
[INFO] [stdout] test config::tests::inherit_env_mixed_forms_load_correctly ... ok
[INFO] [stdout] test config::tests::inherit_env_symlink_entry_serializes_as_bare_string ... ok
[INFO] [stdout] test config::tests::hooks_are_optional ... ok
[INFO] [stdout] test config::tests::publish_primary_overrides_implicit_suppression ... ok
[INFO] [stdout] test config::tests::service_command_is_optional ... ok
[INFO] [stdout] test config::tests::port_with_stride_spaces_slots_by_stride ... ok
[INFO] [stdout] test config::tests::hooks_deprecated_on_up_maps_to_pre_up ... ok
[INFO] [stdout] test config::tests::port_with_stride_zero_is_treated_as_one ... ok
[INFO] [stdout] test config::tests::service_command_loads_from_toml ... ok
[INFO] [stdout] test config::tests::host_port_loads_from_toml ... ok
[INFO] [stdout] test config::tests::mode_display_roundtrips ... ok
[INFO] [stdout] test config::tests::service_port_env_defaults_to_empty ... ok
[INFO] [stdout] test config::tests::mode_from_str_invalid ... ok
[INFO] [stdout] test config::tests::inherit_env_bare_string_defaults_to_symlink ... ok
[INFO] [stdout] test config::tests::service_port_env_loads_array ... ok
[INFO] [stdout] test config::tests::slot_stride_defaults_to_one ... ok
[INFO] [stdout] test config::tests::inherit_env_empty_opt_out_survives_roundtrip ... ok
[INFO] [stdout] test config::tests::service_run_defaults_to_native ... ok
[INFO] [stdout] test config::tests::slot_stride_loads_from_toml ... ok
[INFO] [stdout] test config::tests::service_config_port_computes_correctly ... ok
[INFO] [stdout] test config::tests::service_port_env_loads_single_string ... ok
[INFO] [stdout] test detect::tests::all_scores_zero_gives_none_recommendation ... ok
[INFO] [stdout] test detect::tests::build_bazel_triggers_unsupported ... ok
[INFO] [stdout] test detect::tests::bazel_workspace_triggers_unsupported ... ok
[INFO] [stdout] test detect::tests::confidence_display ... ok
[INFO] [stdout] test detect::tests::module_bazel_triggers_unsupported ... ok
[INFO] [stdout] test detect::tests::flake_nix_triggers_unsupported ... ok
[INFO] [stdout] test detect::tests::compose_invalid_yaml_does_not_panic ... ok
[INFO] [stdout] test detect::tests::compose_all_data_images_boosts_hybrid ... ok
[INFO] [stdout] test detect::tests::confidence_is_high_when_gap_at_least_4 ... ok
[INFO] [stdout] test detect::tests::no_signals_returns_no_recommendation_or_low ... ok
[INFO] [stdout] test detect::tests::no_compose_boosts_host_and_penalises_container ... ok
[INFO] [stdout] test detect::tests::compose_absolute_bind_mount_also_detected ... ok
[INFO] [stdout] test detect::tests::compose_watch_blocks_boost_container_and_hybrid ... ok
[INFO] [stdout] test detect::tests::readme_hybrid_pattern_detects_compose_then_bin_dev ... ok
[INFO] [stdout] test detect::tests::readme_hybrid_pattern_detects_compose_then_npm_run_dev ... ok
[INFO] [stdout] test detect::tests::readme_hybrid_pattern_no_match_compose_without_dev ... ok
[INFO] [stdout] test detect::tests::readme_hybrid_pattern_no_match_when_too_far_apart ... ok
[INFO] [stdout] test detect::tests::readme_hybrid_pattern_no_match_without_compose ... ok
[INFO] [stdout] test detect::tests::readme_hybrid_pattern_window_boundary ... ok
[INFO] [stdout] test detect::tests::readme_hybrid_pattern_yarn_dev_detected ... ok
[INFO] [stdout] test detect::tests::devcontainer_boosts_container_score ... ok
[INFO] [stdout] test detect::tests::compose_app_build_context_subdir_boosts_container ... ok
[INFO] [stdout] test detect::tests::bin_dev_boosts_host_and_hybrid ... ok
[INFO] [stdout] test detect::tests::compose_present_boosts_container_and_hybrid ... ok
[INFO] [stdout] test detect::tests::compose_ecluse_role_app_label_boosts_hybrid ... ok
[INFO] [stdout] test detect::tests::compose_bind_mounts_boost_container ... ok
[INFO] [stdout] test docker::tests::list_compose_projects_filters_by_prefix ... ok
[INFO] [stdout] test detect::tests::compose_app_build_boosts_container ... ok
[INFO] [stdout] test env::stride_tests::extra_ports_in_env_honor_slot_stride ... ok
[INFO] [stdout] test env::tests::basic_env_vars_always_present ... ok
[INFO] [stdout] test env::tests::build_env_multiple_native_ports_port_alias_is_first ... ok
[INFO] [stdout] test env::tests::build_env_slot_zero_and_empty_slug ... ok
[INFO] [stdout] test env::tests::debug_port_emits_inspect_env_var ... ok
[INFO] [stdout] test env::tests::debug_port_slot_arithmetic ... ok
[INFO] [stdout] test env::tests::docker_extra_port_with_container_port_emits_host_port_in_env ... ok
[INFO] [stdout] test env::tests::docker_extra_ports_emitted_per_slot ... ok
[INFO] [stdout] test env::tests::docker_port_env_alias_emitted ... ok
[INFO] [stdout] test env::tests::docker_ports_set_port_vars_no_port_alias ... ok
[INFO] [stdout] test env::tests::extra_ports_and_debug_port_both_emitted ... ok
[INFO] [stdout] test env::tests::extra_ports_emitted_per_slot ... ok
[INFO] [stdout] test env::tests::fallback_app_service_port ... ok
[INFO] [stdout] test env::tests::first_native_port_sets_port_alias ... ok
[INFO] [stdout] test env::tests::native_and_docker_ports_coexist ... ok
[INFO] [stdout] test env::tests::no_debug_port_means_no_inspect_env_var ... ok
[INFO] [stdout] test env::tests::no_offset_env_var ... ok
[INFO] [stdout] test detect::tests::compose_app_build_context_boosts_container ... ok
[INFO] [stdout] test env::tests::no_port_when_no_native_ports ... ok
[INFO] [stdout] test env::tests::parse_env_file_empty_quoted_value ... ok
[INFO] [stdout] test env::tests::parse_env_file_keeps_inner_quotes ... ok
[INFO] [stdout] test env::tests::parse_env_file_keeps_unmatched_quotes ... ok
[INFO] [stdout] test env::tests::parse_env_file_keeps_unquoted_values_verbatim ... ok
[INFO] [stdout] test env::tests::parse_env_file_missing_file_is_empty ... ok
[INFO] [stdout] test env::tests::parse_env_file_preserves_file_order ... ok
[INFO] [stdout] test env::tests::parse_env_file_single_quote_char_value ... ok
[INFO] [stdout] test env::tests::parse_env_file_splits_on_first_equals ... ok
[INFO] [stdout] test env::tests::parse_env_file_strips_outer_double_quotes ... ok
[INFO] [stdout] test env::tests::parse_env_file_strips_outer_single_quotes ... ok
[INFO] [stdout] test env::tests::per_service_base_port_slot_arithmetic ... ok
[INFO] [stdout] test env::tests::parse_env_file_skips_comments_and_blanks ... ok
[INFO] [stdout] test env::tests::port_env_multiple_aliases_all_set ... ok
[INFO] [stdout] test env::tests::port_env_single_alias_is_set ... ok
[INFO] [stdout] test env::tests::port_env_empty_vec_injects_nothing_extra ... ok
[INFO] [stdout] test env::tests::service_env_key_mixed_separators ... ok
[INFO] [stdout] test env::tests::service_env_key_uppercases_and_replaces_separators ... ok
[INFO] [stdout] test env::tests::write_env_file_ends_with_newline ... ok
[INFO] [stdout] test env::tests::write_env_file_overwrites_existing ... ok
[INFO] [stdout] test error::tests::app_label_missing_message ... ok
[INFO] [stdout] test error::tests::compose_file_not_found_message_contains_path ... ok
[INFO] [stdout] test error::tests::compose_parse_failed_message_contains_path ... ok
[INFO] [stdout] test error::tests::config_invalid_message_contains_detail ... ok
[INFO] [stdout] test error::tests::config_missing_message_suggests_init ... ok
[INFO] [stdout] test error::tests::docker_failed_message_contains_stderr ... ok
[INFO] [stdout] test error::tests::hook_failed_message_contains_cmd_and_code ... ok
[INFO] [stdout] test error::tests::kill_failed_message_contains_pid ... ok
[INFO] [stdout] test error::tests::lock_timeout_message ... ok
[INFO] [stdout] test error::tests::mode_invalid_message_contains_mode_and_valid_list ... ok
[INFO] [stdout] test error::tests::no_processes_found_message_contains_path ... ok
[INFO] [stdout] test error::tests::not_a_git_repo_message ... ok
[INFO] [stdout] test error::tests::port_exhausted_message_contains_service_and_nominal ... ok
[INFO] [stdout] test error::tests::port_in_use_message_contains_port_and_pid ... ok
[INFO] [stdout] test error::tests::process_manager_unavailable_message_contains_name ... ok
[INFO] [stdout] test error::tests::session_exists_message_contains_slug ... ok
[INFO] [stdout] test error::tests::session_not_found_message_contains_slug ... ok
[INFO] [stdout] test env::tests::write_env_file_creates_sorted_file ... ok
[INFO] [stdout] test error::tests::slots_exhausted_message_contains_count ... ok
[INFO] [stdout] test error::tests::slug_invalid_message_contains_slug ... ok
[INFO] [stdout] test error::tests::state_corrupt_message_contains_detail ... ok
[INFO] [stdout] test error::tests::spawn_failed_message_contains_service ... ok
[INFO] [stdout] test error::tests::sync_failed_message_contains_service_and_reason ... ok
[INFO] [stdout] test error::tests::worktree_not_found_message_contains_slug ... ok
[INFO] [stdout] test hooks::tests::run_command_runs_in_worktree_dir ... ok
[INFO] [stdout] test hooks::tests::run_command_receives_env_vars ... ok
[INFO] [stdout] test hooks::tests::run_empty_command_name_errors ... ok
[INFO] [stdout] test hooks::tests::run_nonzero_exit_code_in_error ... ok
[INFO] [stdout] test hooks::tests::run_failing_command_returns_hook_failed_error ... ok
[INFO] [stdout] test hooks::tests::run_successful_command ... ok
[INFO] [stdout] test log::tests::non_quiet_logger_does_not_panic ... ok
[INFO] [stdout] test log::tests::quiet_logger_produces_no_output ... ok
[INFO] [stdout] test detect::tests::readme_file_no_extension_checked ... ok
[INFO] [stdout] test docker::tests::list_compose_projects_returns_empty_on_docker_unavailable ... ok
[INFO] [stdout] test modes::extra_port_tests::skipped_services_are_not_probed ... ok
[INFO] [stdout] test detect::tests::gemfile_and_bin_rails_boost_host_and_hybrid ... ok
[INFO] [stdout] test detect::tests::package_json_no_dev_script_does_not_boost ... ok
[INFO] [stdout] test detect::tests::package_json_non_docker_dev_script_boosts_host ... ok
[INFO] [stdout] test detect::tests::signals_are_recorded ... ok
[INFO] [stdout] test modes::tests::compose_file_for_overlay_root_overlay_returns_none ... ok
[INFO] [stdout] test modes::tests::compose_file_for_overlay_sub_overlay_finds_compose ... ok
[INFO] [stdout] test modes::tests::get_handler_for_mode_returns_handler_for_each_mode ... ok
[INFO] [stdout] test modes::tests::get_handler_returns_handler_for_each_mode ... ok
[INFO] [stdout] test modes::tests::group_by_compose_all_root_is_one_group ... ok
[INFO] [stdout] test modes::tests::group_by_compose_explicit_paths_form_separate_groups ... ok
[INFO] [stdout] test modes::tests::group_by_compose_missing_explicit_path_is_error ... ok
[INFO] [stdout] test modes::tests::group_by_compose_missing_root_and_no_explicit_is_error ... ok
[INFO] [stdout] test modes::tests::group_by_compose_preserves_insertion_order ... ok
[INFO] [stdout] test modes::tests::group_by_compose_same_explicit_path_merges_into_one_group ... ok
[INFO] [stdout] test modes::tests::overlay_name_no_root_compose_uses_parent_dir ... ok
[INFO] [stdout] test modes::tests::overlay_name_root_compose_uses_slug_only ... ok
[INFO] [stdout] test detect::tests::package_json_docker_dev_script_does_not_boost_host ... ok
[INFO] [stdout] test modes::tests::overlay_name_subdirectory_compose_includes_dir_stem ... ok
[INFO] [stdout] test process::tests::binary_available_returns_false_for_nonexistent ... ok
[INFO] [stdout] test process::tests::binary_available_returns_true_for_sh ... ok
[INFO] [stdout] test process::tests::build_source_preamble_empty_when_no_files ... ok
[INFO] [stdout] test process::tests::build_source_preamble_prefixes_relative_paths_with_dot_slash ... ok
[INFO] [stdout] test process::tests::check_processes_alive_empty_when_no_pid_files ... ok
[INFO] [stdout] test process::tests::check_processes_alive_tmux_returns_empty ... ok
[INFO] [stdout] test process::tests::build_source_preamble_skips_missing_files ... ok
[INFO] [stdout] test process::tests::detect_process_manager_returns_valid_variant ... ok
[INFO] [stdout] test process::tests::env_preamble_file_is_namespaced_per_slug ... ok
[INFO] [stdout] test process::tests::check_processes_alive_warns_for_dead_pid ... ok
[INFO] [stdout] test process::tests::kill_services_none_manager_is_noop ... ok
[INFO] [stdout] test process::tests::load_global_config_returns_default_when_missing ... ok
[INFO] [stdout] test process::tests::merge_worktree_env_base_preserved_when_no_files ... ok
[INFO] [stdout] test process::tests::merge_worktree_env_ecluse_wins_on_overlap ... ok
[INFO] [stdout] test process::tests::merge_worktree_env_env_local_overrides_env ... ok
[INFO] [stdout] test process::tests::parse_env_file_reads_key_value_pairs ... ok
[INFO] [stdout] test process::tests::parse_env_file_returns_empty_for_missing_file ... ok
[INFO] [stdout] test process::tests::parse_env_file_skips_comments_and_blanks ... ok
[INFO] [stdout] test process::tests::pid_file_alive_accepts_legacy_tokenless_files ... ok
[INFO] [stdout] test detect::tests::procfile_dev_boosts_host_and_hybrid ... ok
[INFO] [stdout] test modes::extra_port_tests::occupied_extra_port_errors_in_strict_mode ... ok
[INFO] [stdout] test process::tests::read_pid_file_parses_legacy_single_line_format ... ok
[INFO] [stdout] test process::tests::remove_env_preamble_deletes_only_that_slug ... ok
[INFO] [stdout] test process::tests::save_and_load_global_config_roundtrips ... ok
[INFO] [stdout] test process::tests::pid_file_alive_rejects_recycled_pid ... ok
[INFO] [stdout] test detect::tests::version_manager_mise_toml_boosts_host ... ok
[INFO] [stdout] test process::tests::spawn_result_default_is_empty ... ok
[INFO] [stdout] test process::tests::spawn_services_none_manager_returns_empty_result ... ok
[INFO] [stdout] test process::tmux_tests::spawn_tmux_detects_instantly_failing_command ... ok
[INFO] [stdout] test modes::extra_port_tests::occupied_extra_port_warns_but_passes_in_lax_mode ... ok
[INFO] [stdout] test rollback::tests::disarm_skips_all_steps ... ok
[INFO] [stdout] test process::tmux_tests::spawn_tmux_records_pane_pids_and_kills_cleanly ... ok
[INFO] [stdout] test rollback::tests::empty_guard_drops_cleanly ... ok
[INFO] [stdout] test rollback::tests::runs_steps_in_reverse_order_on_drop ... ok
[INFO] [stdout] test rollback::tests::steps_pushed_after_disarm_do_not_run ... ok
[INFO] [stdout] test slot::tests::allocates_last_slot_when_all_before_used ... ok
[INFO] [stdout] test slot::tests::allocates_first_slot_when_empty ... ok
[INFO] [stdout] test slot::tests::allocates_slot_1_after_slots_2_and_3_used ... ok
[INFO] [stdout] test slot::tests::exhausted_error_message_contains_max_slots ... ok
[INFO] [stdout] test slot::tests::fails_when_all_slots_full ... ok
[INFO] [stdout] test slot::tests::max_slots_one_allocates_correctly ... ok
[INFO] [stdout] test slot::tests::max_slots_one_exhausted_after_one_session ... ok
[INFO] [stdout] test slot::tests::allocates_next_free_slot ... ok
[INFO] [stdout] test state::tests::acquire_creates_ecluse_dir_and_empty_state ... ok
[INFO] [stdout] test state::tests::acquire_reads_existing_state_json ... ok
[INFO] [stdout] test state::tests::acquire_errors_on_corrupt_state_json ... ok
[INFO] [stdout] test state::tests::active_status_not_serialized ... ok
[INFO] [stdout] test state::tests::acquire_shared_reads_state_when_lock_file_missing ... ok
[INFO] [stdout] test state::tests::commit_is_atomic_tmp_file_gone_after ... ok
[INFO] [stdout] test state::tests::commit_writes_and_sessions_persist ... ok
[INFO] [stdout] test state::tests::compose_overlays_roundtrip ... ok
[INFO] [stdout] test state::tests::add_session_increases_count ... ok
[INFO] [stdout] test state::tests::find_session_returns_existing ... ok
[INFO] [stdout] test state::tests::find_session_returns_none_when_missing ... ok
[INFO] [stdout] test state::tests::legacy_state_without_compose_overlays_defaults_to_empty ... ok
[INFO] [stdout] test state::tests::mark_pending_missing_session_returns_none ... ok
[INFO] [stdout] test state::tests::mark_pending_sets_status_and_op ... ok
[INFO] [stdout] test state::tests::new_op_ids_are_unique ... ok
[INFO] [stdout] test state::tests::pending_op_roundtrips_in_state_json ... ok
[INFO] [stdout] test state::tests::pending_sessions_still_reserve_slots ... ok
[INFO] [stdout] test state::tests::multiple_sessions_roundtrip ... ok
[INFO] [stdout] test state::tests::pending_status_roundtrips ... ok
[INFO] [stdout] test state::tests::remove_session_returns_removed_session ... ok
[INFO] [stdout] test process::tests::pid_token_roundtrip_for_live_process ... ok
[INFO] [stdout] test state::tests::second_mark_pending_takes_over_ownership ... ok
[INFO] [stdout] test state::tests::session_pid_files_roundtrip ... ok
[INFO] [stdout] test state::tests::session_services_subset_roundtrips ... ok
[INFO] [stdout] test state::tests::session_services_subset_none_not_serialized ... ok
[INFO] [stdout] test state::tests::session_with_compose_fields_roundtrips ... ok
[INFO] [stdout] test detect::tests::version_manager_nvmrc_boosts_host ... ok
[INFO] [stdout] test state::tests::session_with_process_manager_roundtrips ... ok
[INFO] [stdout] test state::tests::session_without_status_field_defaults_to_active ... ok
[INFO] [stdout] test state::tests::state_default_has_version_1 ... ok
[INFO] [stdout] test state::tests::used_slots_empty_when_no_sessions ... ok
[INFO] [stdout] test state::tests::used_slots_reflects_all_sessions ... ok
[INFO] [stdout] test state::tests::still_owned_false_after_removal ... ok
[INFO] [stdout] test sync::tests::empty_command_returns_empty ... ok
[INFO] [stdout] test sync::tests::falls_back_to_first_port_when_no_base_match ... ok
[INFO] [stdout] test sync::tests::match_is_case_insensitive ... ok
[INFO] [stdout] test sync::tests::matches_service_with_listening_port ... ok
[INFO] [stdout] test sync::tests::matches_when_all_tokens_present ... ok
[INFO] [stdout] test sync::tests::no_match_when_token_missing ... ok
[INFO] [stdout] test sync::tests::parses_simple_port_mapping ... ok
[INFO] [stdout] test sync::tests::pid_listening_ports_detects_own_bound_port ... FAILED
[INFO] [stdout] test sync::tests::no_prefix_returns_all_tokens ... ok
[INFO] [stdout] test sync::tests::prefers_base_port_match ... ok
[INFO] [stdout] test sync::tests::pid_listening_ports_empty_for_dead_pid ... ok
[INFO] [stdout] test sync::tests::returns_none_for_empty_ports_string ... ok
[INFO] [stdout] test sync::tests::skips_service_with_no_matching_process ... ok
[INFO] [stdout] test sync::tests::skips_services_without_command ... ok
[INFO] [stdout] test sync::tests::strips_bundle_exec ... ok
[INFO] [stdout] test sync::tests::strips_npx ... ok
[INFO] [stdout] test sync::tests::strips_python_m ... ok
[INFO] [stdout] test modes::container::tests::bring_down_uses_recorded_pairs_and_removes_overlays ... ok
[INFO] [stdout] test sync::tests::strips_yarn ... ok
[INFO] [stdout] test sync::tests::strips_sh_c ... ok
[INFO] [stdout] test detect::tests::readme_file_rst_extension_checked ... ok
[INFO] [stdout] test sync::tests::child_pids_empty_for_dead_pid ... ok
[INFO] [stdout] test sync::tests::service_match_port_is_none_when_no_listening_port_in_subtree ... ok
[INFO] [stdout] test sync::tests::subtree_owns_port_false_for_dead_pid ... ok
[INFO] [stdout] test sync::tests::tmux_window_exists_false_for_nonexistent_session ... ok
[INFO] [stdout] test sync::tests::tmux_window_owns_port_false_for_nonexistent_session ... ok
[INFO] [stdout] test tests::append_gitignore_appends_to_existing_file ... ok
[INFO] [stdout] test tests::append_gitignore_creates_file_if_absent ... ok
[INFO] [stdout] test tests::append_gitignore_ends_with_newline ... ok
[INFO] [stdout] test tests::invalid_slug_empty ... ok
[INFO] [stdout] test tests::invalid_slug_leading_hyphen ... ok
[INFO] [stdout] test tests::invalid_slug_single_char ... ok
[INFO] [stderr] unknown shorthand flag: 'p' in -p
[INFO] [stderr] 
[INFO] [stderr] Usage:  docker [OPTIONS] COMMAND [ARG...]
[INFO] [stderr] 
[INFO] [stderr] Run 'docker --help' for more information
[INFO] [stdout] test tests::invalid_slug_special_chars ... ok
[INFO] [stdout] test tests::invalid_slug_too_long ... ok
[INFO] [stdout] test sync::tests::write_pid_file_creates_correct_path ... ok
[INFO] [stdout] test tests::invalid_slug_uppercase ... ok
[INFO] [stdout] test tests::sanitize_to_slug_already_valid ... ok
[INFO] [stdout] test tests::sanitize_to_slug_invalid_after_sanitization ... ok
[INFO] [stdout] test tests::sanitize_to_slug_lowercases ... ok
[INFO] [stdout] test tests::sanitize_to_slug_multiple_slashes ... ok
[INFO] [stdout] test tests::sanitize_to_slug_replaces_slash ... ok
[INFO] [stdout] test tests::sanitize_to_slug_trims_leading_trailing_hyphens ... ok
[INFO] [stdout] test tests::sanitize_to_slug_truncates_long_input ... ok
[INFO] [stdout] test tests::invalid_slug_trailing_hyphen ... ok
[INFO] [stdout] test tests::valid_slug_max_length ... ok
[INFO] [stdout] test tests::valid_slug_alphanumeric_with_hyphens ... ok
[INFO] [stdout] test tests::valid_slug_mixed_numbers_letters_hyphens ... ok
[INFO] [stdout] test tests::valid_slug_numbers_only ... ok
[INFO] [stdout] test tests::valid_slug_two_chars ... ok
[INFO] [stdout] test validate::tests::base_port_1024_no_privileged_warning ... ok
[INFO] [stdout] test validate::tests::base_port_zero_is_error ... ok
[INFO] [stdout] test validate::tests::container_mode_with_docker_service_is_ok ... ok
[INFO] [stdout] test validate::tests::debug_port_none_is_valid ... ok
[INFO] [stdout] test validate::tests::debug_port_unique_warns_deprecated ... ok
[INFO] [stdout] test validate::tests::debug_port_zero_is_error ... ok
[INFO] [stdout] test validate::tests::docker_run_with_compose_is_ok ... ok
[INFO] [stdout] test validate::tests::docker_run_without_compose_is_valid ... ok
[INFO] [stdout] test validate::tests::docker_service_without_command_is_ok ... ok
[INFO] [stdout] test validate::tests::duplicate_base_ports_is_error ... ok
[INFO] [stdout] test validate::tests::duplicate_debug_ports_is_error ... ok
[INFO] [stdout] test validate::tests::duplicate_service_names_is_error ... ok
[INFO] [stdout] test validate::tests::exact_boundary_is_invalid ... ok
[INFO] [stdout] test validate::tests::extra_ports_duplicate_base_port_is_error ... ok
[INFO] [stdout] test validate::tests::base_port_1023_warns ... ok
[INFO] [stdout] test validate::tests::host_mode_with_docker_service_is_error ... ok
[INFO] [stdout] test validate::tests::hybrid_mode_with_docker_service_is_ok ... ok
[INFO] [stdout] test validate::tests::max_slots_64_no_high_warning ... ok
[INFO] [stdout] test validate::tests::max_slots_65_warns ... ok
[INFO] [stdout] test validate::tests::extra_ports_same_as_base_port_is_error ... ok
[INFO] [stdout] test validate::tests::max_slots_zero_is_error ... ok
[INFO] [stdout] test validate::tests::native_run_with_compose_warns ... ok
[INFO] [stdout] test validate::tests::native_service_with_command_is_ok ... ok
[INFO] [stdout] test validate::tests::native_service_without_command_warns_port_only ... ok
[INFO] [stdout] test validate::tests::no_services_is_valid ... ok
[INFO] [stdout] test validate::tests::prefix_empty_is_error ... ok
[INFO] [stdout] test validate::tests::one_below_boundary_is_invalid ... ok
[INFO] [stdout] test validate::tests::prefix_with_hyphen_is_ok ... ok
[INFO] [stdout] test validate::tests::prefix_with_space_is_error ... ok
[INFO] [stdout] test validate::tests::prefix_with_uppercase_is_error ... ok
[INFO] [stderr] Preparing worktree (new branch 'rb-post')
[INFO] [stderr] Preparing worktree (new branch 'rb-spawn')
[INFO] [stdout] test validate::tests::service_name_empty_is_error ... ok
[INFO] [stdout] test validate::tests::service_name_valid_with_hyphen_is_ok ... ok
[INFO] [stdout] test sync::tests::write_pid_file_creates_parent_dirs ... ok
[INFO] [stdout] test detect::tests::version_manager_tool_versions_boosts_host ... ok
[INFO] [stdout] test state::tests::remove_session_returns_none_when_absent ... ok
[INFO] [stdout] test detect::tests::version_manager_ruby_version_boosts_host ... ok
[INFO] [stdout] test validate::tests::service_name_valid_with_underscore_is_ok ... ok
[INFO] [stdout] test validate::tests::service_name_with_space_is_error ... ok
[INFO] [stdout] test validate::tests::services_with_insufficient_gap_are_invalid ... ok
[INFO] [stdout] test validate::tests::single_service_is_valid ... ok
[INFO] [stdout] test validate::tests::service_name_with_uppercase_is_error ... ok
[INFO] [stdout] test validate::tests::services_with_sufficient_gap_are_valid ... ok
[INFO] [stdout] test validate::tests::validate_pm_none_always_ok ... ok
[INFO] [stdout] test sync::tests::subtree_owns_port_true_when_self_owns_port ... FAILED
[INFO] [stdout] test validate::tests::validation_sorts_by_base_port_not_definition_order ... ok
[INFO] [stdout] test validate::tests::validate_pm_nohup_when_present ... ok
[INFO] [stdout] test validate::tests::validation_checks_all_adjacent_pairs ... ok
[INFO] [stdout] test whose_pid::tests::is_descendant_false_for_self ... ok
[INFO] [stdout] test whose_pid::tests::resolve_returns_none_when_pid_not_tracked ... ok
[INFO] [stdout] test whose_pid::tests::resolve_returns_none_when_no_sessions ... ok
[INFO] [stdout] test whose_pid::tests::resolve_skips_session_with_no_pid_dir ... ok
[INFO] [stdout] test validate::tests::validate_pm_tmux_unavailable_returns_error ... ok
[INFO] [stdout] test whose_pid::tests::resolve_includes_port_when_recorded ... ok
[INFO] [stdout] test whose_pid::tests::resolve_returns_first_matching_session ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_copies_when_dst_missing ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_copy_replaces_existing_symlink ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_copy_isolates_root_edits ... ok
[INFO] [stdout] test whose_pid::tests::resolve_matches_direct_pid_file ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_copy_skips_when_dst_exists ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_mixed_modes_handled_independently ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_handles_multiple_files_independently ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_replaces_stale_symlink ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_creates_symlink_when_dst_missing ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_skips_missing_src ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_skips_when_correct_symlink_exists ... ok
[INFO] [stdout] test worktree::tests::inherit_env_files_symlink_skips_real_file_in_worktree ... ok
[INFO] [stdout] test sync::tests::subtree_owns_port_false_when_port_not_owned ... ok
[INFO] [stderr] Preparing worktree (new branch 'rb-reuse')
[INFO] [stderr] Preparing worktree (checking out 'my-existing-branch')
[INFO] [stderr] Preparing worktree (new branch 'ecluse/test-slug')
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stderr] Preparing worktree (new branch 'rb-ok')
[INFO] [stdout] test worktree::tests::is_inside_git_worktree_returns_false_in_main_repo ... ok
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stderr] Preparing worktree (new branch 'ecluse/feat')
[INFO] [stdout] test modes::host::tests::failed_post_up_hook_rolls_back_fresh_worktree ... ok
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stdout] test modes::host::tests::failed_pre_spawn_hook_rolls_back_fresh_worktree ... ok
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stdout] test worktree::tests::create_and_remove_worktree_new_branch ... ok
[INFO] [stdout] test worktree::tests::create_worktree_existing_branch ... ok
[INFO] [stderr] Preparing worktree (new branch 'ecluse/feat')
[INFO] [stderr] fatal: not a git repository (or any of the parent directories): .git
[INFO] [stdout] test modes::host::tests::successful_bring_up_keeps_worktree ... ok
[INFO] [stdout] test worktree::tests::worktree_path_constructs_correctly ... ok
[INFO] [stdout] test worktree::tests::verify_git_repo_fails_outside_git_dir ... ok
[INFO] [stdout] test worktree::tests::is_inside_git_worktree_returns_true_in_linked_worktree ... ok
[INFO] [stdout] test worktree::tests::worktree_path_uses_custom_worktree_dir ... ok
[INFO] [stdout] test whose_pid::tests::is_descendant_false_for_unrelated_pids ... ok
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stderr] Preparing worktree (new branch 'ecluse/locked')
[INFO] [stdout] test worktree::tests::main_worktree_root_from_main_worktree ... ok
[INFO] [stdout] test modes::host::tests::failed_post_up_hook_keeps_reused_worktree ... ok
[INFO] [stdout] test detect::tests::version_manager_python_version_boosts_host ... ok
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stderr] Preparing worktree (new branch 'ecluse/gone')
[INFO] [stderr] Preparing worktree (new branch 'feat-remote')
[INFO] [stdout] .git
[INFO] [stdout] test worktree::tests::main_worktree_root_from_linked_worktree ... ok
[INFO] [stdout] test worktree::tests::verify_git_repo_succeeds_in_git_dir ... ok
[INFO] [stdout] branch 'feat-remote' set up to track 'origin/feat-remote'.
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stdout] HEAD is now at 0cd717c init
[INFO] [stdout] test worktree::tests::remove_succeeds_when_directory_already_deleted ... ok
[INFO] [stdout] test worktree::tests::create_tracks_remote_only_branch ... ok
[INFO] [stdout] test worktree::tests::remove_errors_when_worktree_is_locked ... ok
[INFO] [stdout] test process::tests::spawn_nohup_creates_log_and_pid_files ... ok
[INFO] [stdout] test process::tests::spawn_nohup_partial_failure_cleans_up_already_spawned ... ok
[INFO] [stdout] test process::tests::kill_nohup_kills_whole_process_group ... FAILED
[INFO] [stderr] error: test failed, to rerun pass `--bin ecluse`
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- sync::tests::pid_listening_ports_detects_own_bound_port stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sync::tests::pid_listening_ports_detects_own_bound_port' (3183) panicked at src/sync.rs:612:9:
[INFO] [stdout] assertion failed: pid_listening_ports(my_pid).contains(&port)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5f28d9f03595 - <unknown>
[INFO] [stdout]    1:     0x5f28d9e39f64 - <unknown>
[INFO] [stdout]    2:     0x5f28d9f02c3b - <unknown>
[INFO] [stdout]    3:     0x5f28d9f02839 - <unknown>
[INFO] [stdout]    4:     0x5f28d9f024ba - <unknown>
[INFO] [stdout]    5:     0x5f28d9f01feb - <unknown>
[INFO] [stdout]    6:     0x5f28d9f27ef2 - <unknown>
[INFO] [stdout]    7:     0x5f28d9f27e79 - <unknown>
[INFO] [stdout]    8:     0x5f28d9f2836c - <unknown>
[INFO] [stdout]    9:     0x5f28d9e39dfb - <unknown>
[INFO] [stdout]   10:     0x5f28d9e3b2a1 - <unknown>
[INFO] [stdout]   11:     0x5f28d9ea09a4 - <unknown>
[INFO] [stdout]   12:     0x5f28d9f43efb - <unknown>
[INFO] [stdout]   13:     0x5f28d9f40186 - <unknown>
[INFO] [stdout]   14:     0x5f28d9f3f9ac - <unknown>
[INFO] [stdout]   15:     0x5f28d9f5dadc - <unknown>
[INFO] [stdout]   16:     0x5f28d9f29bb8 - <unknown>
[INFO] [stdout]   17:     0x72d56f1eddfa - <unknown>
[INFO] [stdout]   18:     0x72d56f2813d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sync::tests::subtree_owns_port_true_when_self_owns_port stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sync::tests::subtree_owns_port_true_when_self_owns_port' (3216) panicked at src/sync.rs:642:9:
[INFO] [stdout] assertion failed: subtree_owns_port(my_pid, port)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5f28d9f03595 - <unknown>
[INFO] [stdout]    1:     0x5f28d9e39f64 - <unknown>
[INFO] [stdout]    2:     0x5f28d9f02c3b - <unknown>
[INFO] [stdout]    3:     0x5f28d9f02839 - <unknown>
[INFO] [stdout]    4:     0x5f28d9f024ba - <unknown>
[INFO] [stdout]    5:     0x5f28d9f01feb - <unknown>
[INFO] [stdout]    6:     0x5f28d9f27ef2 - <unknown>
[INFO] [stdout]    7:     0x5f28d9f27e79 - <unknown>
[INFO] [stdout]    8:     0x5f28d9f2836c - <unknown>
[INFO] [stdout]    9:     0x5f28d9e39dfb - <unknown>
[INFO] [stdout]   10:     0x5f28d9e3b2a1 - <unknown>
[INFO] [stdout]   11:     0x5f28d9ea0ac4 - <unknown>
[INFO] [stdout]   12:     0x5f28d9f43efb - <unknown>
[INFO] [stdout]   13:     0x5f28d9f40186 - <unknown>
[INFO] [stdout]   14:     0x5f28d9f3f9ac - <unknown>
[INFO] [stdout]   15:     0x5f28d9f5dadc - <unknown>
[INFO] [stdout]   16:     0x5f28d9f29bb8 - <unknown>
[INFO] [stdout]   17:     0x72d56f1eddfa - <unknown>
[INFO] [stdout]   18:     0x72d56f2813d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- process::tests::kill_nohup_kills_whole_process_group stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'process::tests::kill_nohup_kills_whole_process_group' (2991) panicked at src/process.rs:1039:9:
[INFO] [stdout] background child must die with the process group
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5f28d9f03595 - <unknown>
[INFO] [stdout]    1:     0x5f28d9e39f64 - <unknown>
[INFO] [stdout]    2:     0x5f28d9f02c3b - <unknown>
[INFO] [stdout]    3:     0x5f28d9f02839 - <unknown>
[INFO] [stdout]    4:     0x5f28d9f024ba - <unknown>
[INFO] [stdout]    5:     0x5f28d9f01feb - <unknown>
[INFO] [stdout]    6:     0x5f28d9f27ef2 - <unknown>
[INFO] [stdout]    7:     0x5f28d9f27e79 - <unknown>
[INFO] [stdout]    8:     0x5f28d9f2836c - <unknown>
[INFO] [stdout]    9:     0x5f28d9e39dfb - <unknown>
[INFO] [stdout]   10:     0x5f28d9e918ed - <unknown>
[INFO] [stdout]   11:     0x5f28d9f43efb - <unknown>
[INFO] [stdout]   12:     0x5f28d9f40186 - <unknown>
[INFO] [stdout]   13:     0x5f28d9f3f9ac - <unknown>
[INFO] [stdout]   14:     0x5f28d9f5dadc - <unknown>
[INFO] [stdout]   15:     0x5f28d9f29bb8 - <unknown>
[INFO] [stdout]   16:     0x72d56f1eddfa - <unknown>
[INFO] [stdout]   17:     0x72d56f2813d4 - clone
[INFO] [stdout]   18:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     process::tests::kill_nohup_kills_whole_process_group
[INFO] [stdout]     sync::tests::pid_listening_ports_detects_own_bound_port
[INFO] [stdout]     sync::tests::subtree_owns_port_true_when_self_owns_port
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 436 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.23s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084", kill_on_drop: false }`
[INFO] [stdout] 6bc4c28f4cacbd321535e6e538f1e568825a77ce5b838ccd9178dfdeb8a8e084
