[INFO] fetching crate room-ralph 3.6.0... [INFO] testing room-ralph-3.6.0 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-1 [INFO] extracting crate room-ralph 3.6.0 into /workspace/builds/worker-0-tc2/source [INFO] started tweaking crates.io crate room-ralph 3.6.0 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate room-ralph 3.6.0 [INFO] tweaked toml for crates.io crate room-ralph 3.6.0 written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate room-ralph 3.6.0 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate room-ralph 3.6.0 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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 448eb1d3e0d87baee9cc78afaaa88071df4c151cb0f51de9aca8a994830c7cd0 [INFO] running `Command { std: "docker" "start" "-a" "448eb1d3e0d87baee9cc78afaaa88071df4c151cb0f51de9aca8a994830c7cd0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "448eb1d3e0d87baee9cc78afaaa88071df4c151cb0f51de9aca8a994830c7cd0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "448eb1d3e0d87baee9cc78afaaa88071df4c151cb0f51de9aca8a994830c7cd0", kill_on_drop: false }` [INFO] [stdout] 448eb1d3e0d87baee9cc78afaaa88071df4c151cb0f51de9aca8a994830c7cd0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 339880ff61c53b79751aeb6a6b053cf2ae5b2c23e87af0566ced932140081dda [INFO] running `Command { std: "docker" "start" "-a" "339880ff61c53b79751aeb6a6b053cf2ae5b2c23e87af0566ced932140081dda", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling uuid v1.22.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [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 tokio-macros v2.6.1 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling room-protocol v3.5.1 [INFO] [stderr] Compiling room-ralph v3.6.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.76s [INFO] running `Command { std: "docker" "inspect" "339880ff61c53b79751aeb6a6b053cf2ae5b2c23e87af0566ced932140081dda", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "339880ff61c53b79751aeb6a6b053cf2ae5b2c23e87af0566ced932140081dda", kill_on_drop: false }` [INFO] [stdout] 339880ff61c53b79751aeb6a6b053cf2ae5b2c23e87af0566ced932140081dda [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 13922b7d6595e4431d15f7fe76af5d94458ad4d3e818ea2aa0e259d84ad70de7 [INFO] running `Command { std: "docker" "start" "-a" "13922b7d6595e4431d15f7fe76af5d94458ad4d3e818ea2aa0e259d84ad70de7", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling room-ralph v3.6.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 6.43s [INFO] running `Command { std: "docker" "inspect" "13922b7d6595e4431d15f7fe76af5d94458ad4d3e818ea2aa0e259d84ad70de7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "13922b7d6595e4431d15f7fe76af5d94458ad4d3e818ea2aa0e259d84ad70de7", kill_on_drop: false }` [INFO] [stdout] 13922b7d6595e4431d15f7fe76af5d94458ad4d3e818ea2aa0e259d84ad70de7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] c7868e12b8b856f8f0306d2cb9fceae28b79c996d2df6472630aece62fc3baa1 [INFO] running `Command { std: "docker" "start" "-a" "c7868e12b8b856f8f0306d2cb9fceae28b79c996d2df6472630aece62fc3baa1", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/room_ralph-2ed0e836a7145c4e) [INFO] [stdout] [INFO] [stdout] running 187 tests [INFO] [stdout] test claude::tests::build_command_empty_allowed_tools ... ok [INFO] [stdout] test agent_meta::tests::serialization_skips_none_fields ... ok [INFO] [stdout] test claude::tests::build_command_base_args ... ok [INFO] [stdout] test claude::tests::build_command_both_allowed_and_disallowed ... ok [INFO] [stdout] test claude::tests::build_command_strips_claudecode_env_vars ... ok [INFO] [stdout] test claude::tests::build_command_with_add_dirs ... ok [INFO] [stdout] test claude::tests::build_command_with_allowed_tools ... ok [INFO] [stdout] test claude::tests::build_command_with_dirs_and_tools ... ok [INFO] [stdout] test claude::tests::build_command_with_disallowed_tools ... ok [INFO] [stdout] test claude::tests::detect_context_exhaustion_exit_zero ... ok [INFO] [stdout] test agent_meta::tests::write_to_nonexistent_dir_fails ... ok [INFO] [stdout] test agent_meta::tests::cleanup_missing_file_no_error ... ok [INFO] [stdout] test claude::tests::merge_profile_deduplicates_allow ... ok [INFO] [stdout] test claude::tests::merge_profile_both_overrides ... ok [INFO] [stdout] test agent_meta::tests::write_and_read_roundtrip ... ok [INFO] [stdout] test claude::tests::merge_profile_only_no_overrides ... ok [INFO] [stdout] test claude::tests::merge_profile_deduplicates_disallow ... ok [INFO] [stdout] test claude::tests::merge_profile_with_extra_allow ... ok [INFO] [stdout] test claude::tests::merge_profile_with_extra_disallow ... ok [INFO] [stdout] test claude::tests::profile_coordinator_blocks_writes ... ok [INFO] [stdout] test claude::tests::profile_coder_has_full_access ... ok [INFO] [stdout] test claude::tests::profile_display_roundtrip ... ok [INFO] [stdout] test claude::tests::extract_response_json_without_known_fields ... ok [INFO] [stdout] test claude::tests::extract_response_non_json ... ok [INFO] [stdout] test claude::tests::merge_no_profile_passes_through ... ok [INFO] [stdout] test claude::tests::profile_parse_all_variants ... ok [INFO] [stdout] test claude::tests::profile_parse_case_insensitive ... ok [INFO] [stdout] test agent_meta::tests::meta_path_returns_expected ... ok [INFO] [stdout] test claude::tests::extract_response_from_result_field ... ok [INFO] [stdout] test claude::tests::profile_notion_has_notion_tools_and_blocks_push ... ok [INFO] [stdout] test agent_meta::tests::cleanup_removes_file ... ok [INFO] [stdout] test agent_meta::tests::read_missing_returns_none ... ok [INFO] [stdout] test claude::tests::profile_reviewer_blocks_writes ... ok [INFO] [stdout] test claude::tests::build_command_empty_disallowed_tools ... ok [INFO] [stdout] test claude::tests::extract_response_from_error_field ... ok [INFO] [stdout] test claude::tests::detect_context_exhaustion_patterns ... ok [INFO] [stdout] test claude::tests::profile_reader_is_minimal ... ok [INFO] [stdout] test claude::tests::detect_context_exhaustion_false_on_unrelated ... ok [INFO] [stdout] test claude::tests::profile_parse_invalid ... ok [INFO] [stdout] test claude::tests::resolve_cli_overrides_defaults ... ok [INFO] [stdout] test claude::tests::resolve_cli_none_case_insensitive ... ok [INFO] [stdout] test claude::tests::resolve_cli_takes_precedence_over_env ... ok [INFO] [stdout] test claude::tests::resolve_cli_none_disables_restrictions ... ok [INFO] [stdout] test claude::tests::extract_response_empty_input ... ok [INFO] [stdout] test claude::tests::resolve_defaults_when_empty ... ok [INFO] [stdout] test claude::tests::resolve_disallowed_cli_none_clears ... ok [INFO] [stdout] test claude::tests::resolve_disallowed_cli_overrides ... ok [INFO] [stdout] test claude::tests::resolve_disallowed_cli_takes_precedence_over_env ... ok [INFO] [stdout] test claude::tests::resolve_disallowed_defaults_empty ... ok [INFO] [stdout] test claude::tests::resolve_disallowed_env_empty_uses_defaults ... ok [INFO] [stdout] test claude::tests::resolve_disallowed_env_none_clears ... ok [INFO] [stdout] test claude::tests::resolve_disallowed_env_overrides ... ok [INFO] [stdout] test claude::tests::resolve_disallowed_env_trims_whitespace ... ok [INFO] [stdout] test claude::tests::resolve_env_empty_string_uses_defaults ... ok [INFO] [stdout] test claude::tests::resolve_env_none_disables_restrictions ... ok [INFO] [stdout] test claude::tests::resolve_env_overrides_defaults ... ok [INFO] [stdout] test claude::tests::resolve_env_trims_whitespace ... ok [INFO] [stdout] test claude::tests::stripped_env_vars_contains_expected_entries ... ok [INFO] [stdout] test loop_runner::tests::format_duration_minutes_and_seconds ... ok [INFO] [stdout] test loop_runner::tests::format_duration_seconds_only ... ok [INFO] [stdout] test loop_runner::tests::format_heartbeat_large_iteration ... ok [INFO] [stdout] test loop_runner::tests::format_heartbeat_with_issue ... ok [INFO] [stdout] test loop_runner::tests::format_heartbeat_without_issue ... ok [INFO] [stdout] test loop_runner::tests::format_heartbeat_zero_uptime ... ok [INFO] [stdout] test monitor::tests::context_limit_default ... ok [INFO] [stdout] test monitor::tests::format_usage_summary_over_threshold ... ok [INFO] [stdout] test loop_runner::tests::format_duration_hours ... ok [INFO] [stdout] test monitor::tests::format_usage_summary_under_threshold ... ok [INFO] [stdout] test monitor::tests::parse_cost_empty_returns_zero ... ok [INFO] [stdout] test monitor::tests::parse_cost_no_cost_returns_zero ... ok [INFO] [stdout] test monitor::tests::parse_cost_result_nested ... ok [INFO] [stdout] test monitor::tests::parse_cost_total_cost_path ... ok [INFO] [stdout] test monitor::tests::parse_output_tokens_missing_returns_zero ... ok [INFO] [stdout] test monitor::tests::parse_cost_usage_total_cost ... ok [INFO] [stdout] test monitor::tests::parse_output_tokens_nested ... ok [INFO] [stdout] test monitor::tests::parse_output_tokens_statistics ... ok [INFO] [stdout] test monitor::tests::log_usage_no_restart_under_threshold ... ok [INFO] [stdout] test monitor::tests::parse_output_tokens_top_level ... ok [INFO] [stdout] test monitor::tests::log_usage_appends_to_existing_section ... ok [INFO] [stdout] test monitor::tests::parse_output_tokens_empty_returns_zero ... ok [INFO] [stdout] test monitor::tests::parse_cost_cost_usd_path ... ok [INFO] [stdout] test monitor::tests::parse_usage_empty_string_returns_zero ... ok [INFO] [stdout] test monitor::tests::parse_usage_invalid_json_returns_zero ... ok [INFO] [stdout] test monitor::tests::parse_usage_missing_returns_zero ... ok [INFO] [stdout] test monitor::tests::parse_usage_null_tokens_returns_zero ... ok [INFO] [stdout] test monitor::tests::parse_usage_top_level ... ok [INFO] [stdout] test monitor::tests::parse_usage_statistics_path ... ok [INFO] [stdout] test monitor::tests::parse_usage_nested_under_result ... ok [INFO] [stdout] test monitor::tests::should_restart_at_limit ... ok [INFO] [stdout] test monitor::tests::resolve_path_nested ... ok [INFO] [stdout] test monitor::tests::should_restart_at_threshold ... ok [INFO] [stdout] test monitor::tests::should_restart_just_below_threshold ... ok [INFO] [stdout] test monitor::tests::should_restart_over_threshold ... ok [INFO] [stdout] test monitor::tests::should_restart_under_threshold ... ok [INFO] [stdout] test monitor::tests::threshold_tokens_default ... ok [INFO] [stdout] test monitor::tests::usage_pct_fifty ... ok [INFO] [stdout] test monitor::tests::usage_pct_hundred ... ok [INFO] [stdout] test monitor::tests::log_usage_restart_annotation ... ok [INFO] [stdout] test monitor::tests::log_usage_creates_section_in_new_file ... ok [INFO] [stdout] test monitor::tests::should_restart_zero_tokens ... ok [INFO] [stdout] test monitor::tests::resolve_path_missing_returns_none ... ok [INFO] [stdout] test monitor::tests::resolve_path_single_segment ... ok [INFO] [stdout] test monitor::tests::usage_pct_seventy_five ... ok [INFO] [stdout] test monitor::tests::usage_pct_zero ... ok [INFO] [stdout] test personalities::tests::all_returns_five_personalities ... ok [INFO] [stdout] test personalities::tests::coder_defaults_to_opus ... ok [INFO] [stdout] test personalities::tests::coordinator_profile_is_coordinator ... ok [INFO] [stdout] test personalities::tests::coder_profile_is_coder ... ok [INFO] [stdout] test personalities::tests::each_personality_has_non_empty_description ... ok [INFO] [stdout] test personalities::tests::each_personality_has_non_empty_prompt ... ok [INFO] [stdout] test personalities::tests::lookup_unknown_returns_none ... ok [INFO] [stdout] test personalities::tests::lookup_all_builtins ... ok [INFO] [stdout] test personalities::tests::documenter_profile_is_notion ... ok [INFO] [stdout] test personalities::tests::lookup_case_insensitive ... ok [INFO] [stdout] test personalities::tests::reviewer_profile_is_reviewer ... ok [INFO] [stdout] test personalities::tests::resolve_builtin_name ... ok [INFO] [stdout] test claude::tests::extract_response_from_content_field ... ok [INFO] [stdout] test personalities::tests::researcher_defaults_to_sonnet ... ok [INFO] [stdout] test progress::tests::delete_progress_nonexistent_is_ok ... ok [INFO] [stdout] test personalities::tests::resolve_file_path ... ok [INFO] [stdout] test personalities::tests::researcher_profile_is_reader ... ok [INFO] [stdout] test personalities::tests::resolve_file_path_for_unknown_name ... ok [INFO] [stdout] test personalities::tests::resolve_from_str_builtin ... ok [INFO] [stdout] test progress::tests::progress_file_path_empty_issue_uses_username ... ok [INFO] [stdout] test progress::tests::read_progress_existing_file ... ok [INFO] [stdout] test personalities::tests::resolve_from_str_file ... ok [INFO] [stdout] test progress::tests::read_progress_missing_file_returns_none ... ok [INFO] [stdout] test progress::tests::write_progress_creates_file_with_metadata ... ok [INFO] [stdout] test progress::tests::write_progress_without_issue ... ok [INFO] [stdout] test progress::tests::write_progress_short_response_not_truncated ... ok [INFO] [stdout] test progress::tests::write_read_roundtrip ... ok [INFO] [stdout] test prompt::tests::build_prompt_no_issue_gives_generic_instruction ... ok [INFO] [stdout] test prompt::tests::build_prompt_default_system_context ... ok [INFO] [stdout] test prompt::tests::build_prompt_no_personality_produces_default ... ok [INFO] [stdout] test progress::tests::write_progress_truncates_long_response ... ok [INFO] [stdout] test progress::tests::write_progress_overwrites_existing_file ... ok [INFO] [stdout] test prompt::tests::build_prompt_with_progress_file ... ok [INFO] [stdout] test room::tests::extract_token_fails_on_garbage ... ok [INFO] [stdout] test room::tests::detect_token_expiry_patterns ... ok [INFO] [stdout] test prompt::tests::build_prompt_personality_with_custom_prompt ... ok [INFO] [stdout] test room::tests::is_username_taken_detects_already_in_use ... ok [INFO] [stdout] test room::tests::is_username_taken_detects_already_taken ... ok [INFO] [stdout] test prompt::tests::build_prompt_with_messages ... ok [INFO] [stdout] test prompt::tests::build_prompt_with_personality_text ... ok [INFO] [stdout] test room::tests::extract_token_from_multiline ... ok [INFO] [stdout] test progress::tests::delete_progress_removes_file ... ok [INFO] [stdout] test progress::tests::read_progress_empty_file_returns_some_empty ... ok [INFO] [stdout] test room::tests::extract_token_from_valid_json ... ok [INFO] [stdout] test personalities::tests::all_names_returns_five ... ok [INFO] [stdout] test personalities::tests::format_list_contains_all_names ... ok [INFO] [stdout] test room::tests::is_username_taken_rejects_unrelated_errors ... ok [INFO] [stdout] test room::tests::set_status_message_empty_clears_status ... ok [INFO] [stdout] test progress::tests::progress_file_path_without_issue_uses_username ... ok [INFO] [stdout] test progress::tests::progress_file_path_with_issue ... ok [INFO] [stdout] test room::tests::token_file_path_format ... ok [INFO] [stdout] test room::tests::log_file_path_format ... ok [INFO] [stdout] test room::tests::room_token_env_constant_value ... ok [INFO] [stdout] test room::tests::set_status_message_with_status_text ... ok [INFO] [stdout] test room::tests::legacy_token_file_path_format ... ok [INFO] [stdout] test room::tests::join_room_ignores_empty_room_token_env ... ok [INFO] [stdout] test room::tests::join_room_uses_room_token_env_when_set ... ok [INFO] [stdout] test progress::tests::log_usage_to_file_delegates_to_monitor ... ok [INFO] [stdout] test room::tests::watch_room_nonexistent_socket_returns_error ... ok [INFO] [stdout] test tests::allow_all_flag_defaults_to_false ... ok [INFO] [stdout] test tests::allow_all_flag_sets_true ... ok [INFO] [stdout] test tests::allow_all_from_env_var ... ok [INFO] [stdout] test tests::cli_args_take_precedence_over_env ... ok [INFO] [stdout] test tests::profile_flag_rejects_invalid ... ok [INFO] [stdout] test tests::env_vars_used_when_args_omitted ... ok [INFO] [stdout] test tests::allow_all_coexists_with_profile ... ok [INFO] [stdout] test tests::profile_flag_overrides_env ... ok [INFO] [stdout] test tests::heartbeat_interval_from_flag ... ok [INFO] [stdout] test tests::heartbeat_interval_from_env ... ok [INFO] [stdout] test tests::issue_env_is_optional ... ok [INFO] [stdout] test tests::missing_required_without_env_fails ... ok [INFO] [stdout] test tests::model_default_used_without_env_or_flag ... ok [INFO] [stdout] test tests::partial_env_with_partial_args ... ok [INFO] [stdout] test tests::profile_defaults_to_none ... ok [INFO] [stdout] test tests::profile_flag_parses_valid ... ok [INFO] [stdout] test tests::profile_from_env_var ... ok [INFO] [stdout] test tests::socket_flag_overrides_env ... ok [INFO] [stdout] test tests::heartbeat_interval_defaults_to_five ... ok [INFO] [stdout] test tests::socket_flag_sets_path ... ok [INFO] [stdout] test tests::heartbeat_interval_flag_overrides_env ... ok [INFO] [stdout] test tests::socket_from_env_var ... ok [INFO] [stdout] test tests::socket_defaults_to_none ... ok [INFO] [stdout] test tests::heartbeat_interval_zero_disables ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 187 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/room_ralph-89b1d077e66df922) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-3984c809ee08cddc) [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test live_broker_join_and_announce ... ignored, requires a running broker: `room ralph-live-test host &` [INFO] [stdout] test log_file_created_after_run ... ignored, requires claude binary or running broker [INFO] [stdout] test max_iter_one_stops_after_single_iteration ... ignored, requires claude binary or running broker [INFO] [stdout] test max_iter_zero_runs_until_signal ... ignored, requires claude binary or running broker [INFO] [stdout] test multi_iteration_max_iter_three ... ignored, requires claude binary or running broker [INFO] [stdout] test list_personalities_returns_all_builtins ... ok [INFO] [stdout] test poll_messages_parses_ndjson ... ignored, requires claude binary or running broker [INFO] [stdout] test progress_file_records_issue_number ... ignored, requires claude binary or running broker [INFO] [stdout] test send_message_succeeds_with_mock ... ignored, requires claude binary or running broker [INFO] [stdout] test token_expiry_detected_across_formats ... ok [INFO] [stdout] test token_obtained_from_room_join ... ignored, requires claude binary or running broker [INFO] [stdout] test personality_builtin_in_dry_run ... ok [INFO] [stdout] test allow_all_dry_run_succeeds ... ok [INFO] [stdout] test dry_run_prints_prompt_and_exits ... ok [INFO] [stdout] test personality_file_appears_in_dry_run_output ... ok [INFO] [stdout] test context_exhaustion_writes_progress ... ok [INFO] [stdout] test claude_failure_continues_loop ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 9 ignored; 0 measured; 0 filtered out; finished in 0.08s [INFO] [stdout] [INFO] [stderr] Doc-tests room_ralph [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "c7868e12b8b856f8f0306d2cb9fceae28b79c996d2df6472630aece62fc3baa1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c7868e12b8b856f8f0306d2cb9fceae28b79c996d2df6472630aece62fc3baa1", kill_on_drop: false }` [INFO] [stdout] c7868e12b8b856f8f0306d2cb9fceae28b79c996d2df6472630aece62fc3baa1