[INFO] cloning repository https://github.com/douglaz/multibackend-orchestration [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/douglaz/multibackend-orchestration" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdouglaz%2Fmultibackend-orchestration", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdouglaz%2Fmultibackend-orchestration'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ccb9a80f4a3d2ff9ce7a5ea685bc5bdbe079ea6a [INFO] testing douglaz/multibackend-orchestration against try#8da20828b6ea601dfd8e2448cb50ace88876bd78 for pr-150933 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdouglaz%2Fmultibackend-orchestration" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/douglaz/multibackend-orchestration [INFO] finished tweaking git repo https://github.com/douglaz/multibackend-orchestration [INFO] tweaked toml for git repo https://github.com/douglaz/multibackend-orchestration written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/douglaz/multibackend-orchestration on toolchain 8da20828b6ea601dfd8e2448cb50ace88876bd78 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/douglaz/multibackend-orchestration 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" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cfa559dde23f44738f9990739aaa3487d8df3af37eb5df0572f7cf76004a604a" "/opt/rustwide/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 1c541661836091b2b12d2b55be18120d943b34fe134c89b38af59c33e27c72eb [INFO] running `Command { std: "docker" "start" "-a" "1c541661836091b2b12d2b55be18120d943b34fe134c89b38af59c33e27c72eb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1c541661836091b2b12d2b55be18120d943b34fe134c89b38af59c33e27c72eb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1c541661836091b2b12d2b55be18120d943b34fe134c89b38af59c33e27c72eb", kill_on_drop: false }` [INFO] [stdout] 1c541661836091b2b12d2b55be18120d943b34fe134c89b38af59c33e27c72eb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:cfa559dde23f44738f9990739aaa3487d8df3af37eb5df0572f7cf76004a604a" "/opt/rustwide/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] aa203bb54df01c127dab7fdbe33b9d9b9a85eef9f73c54c3adc3229c36a87fdd [INFO] running `Command { std: "docker" "start" "-a" "aa203bb54df01c127dab7fdbe33b9d9b9a85eef9f73c54c3adc3229c36a87fdd", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling clap_builder v4.5.57 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling which v7.0.3 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling tempfile v3.24.0 [INFO] [stderr] Compiling fs2 v0.4.3 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling clap v4.5.57 [INFO] [stderr] Compiling serde v1.0.228 [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.43 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling ralph v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 52s [INFO] running `Command { std: "docker" "inspect" "aa203bb54df01c127dab7fdbe33b9d9b9a85eef9f73c54c3adc3229c36a87fdd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa203bb54df01c127dab7fdbe33b9d9b9a85eef9f73c54c3adc3229c36a87fdd", kill_on_drop: false }` [INFO] [stdout] aa203bb54df01c127dab7fdbe33b9d9b9a85eef9f73c54c3adc3229c36a87fdd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:cfa559dde23f44738f9990739aaa3487d8df3af37eb5df0572f7cf76004a604a" "/opt/rustwide/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 897006d6c84c224704f75b1a3fca2875be1022d78b059358acb627401a8a737f [INFO] running `Command { std: "docker" "start" "-a" "897006d6c84c224704f75b1a3fca2875be1022d78b059358acb627401a8a737f", kill_on_drop: false }` [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling serial_test_derive v3.4.0 [INFO] [stderr] Compiling serial_test v3.4.0 [INFO] [stderr] Compiling ralph v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 21s [INFO] running `Command { std: "docker" "inspect" "897006d6c84c224704f75b1a3fca2875be1022d78b059358acb627401a8a737f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "897006d6c84c224704f75b1a3fca2875be1022d78b059358acb627401a8a737f", kill_on_drop: false }` [INFO] [stdout] 897006d6c84c224704f75b1a3fca2875be1022d78b059358acb627401a8a737f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:cfa559dde23f44738f9990739aaa3487d8df3af37eb5df0572f7cf76004a604a" "/opt/rustwide/cargo-home/bin/cargo" "+8da20828b6ea601dfd8e2448cb50ace88876bd78" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 10f5c0ec291eab01963d19818cba83e0206cf32c70456f671c4fdbc23f6313eb [INFO] running `Command { std: "docker" "start" "-a" "10f5c0ec291eab01963d19818cba83e0206cf32c70456f671c4fdbc23f6313eb", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.30s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ralph-3694632ff4e432e9) [INFO] [stdout] [INFO] [stdout] running 956 tests [INFO] [stdout] test backend::claude::tests::effective_args_claude_without_model_has_single_stream_json_pair ... ok [INFO] [stdout] test backend::claude::tests::ensure_stream_json_adds_verbose_when_print_flag_present ... ok [INFO] [stdout] test backend::claude::tests::ensure_stream_json_args_is_idempotent ... ok [INFO] [stdout] test backend::claude::tests::effective_args_claude_with_model_still_has_single_stream_json_pair ... ok [INFO] [stdout] test backend::claude::tests::ensure_stream_json_args_strips_flag_and_equals_variants ... ok [INFO] [stdout] test backend::codex::tests::parse_codex_model_effort_no_suffix ... ok [INFO] [stdout] test backend::codex::tests::parse_codex_model_effort_strips_high ... ok [INFO] [stdout] test backend::codex::tests::parse_codex_model_effort_strips_medium ... ok [INFO] [stdout] test backend::codex::tests::parse_codex_model_effort_strips_xhigh ... ok [INFO] [stdout] test backend::codex::tests::parse_codex_model_effort_unknown_suffix ... ok [INFO] [stdout] test backend::claude::tests::ensure_stream_json_no_duplicate_verbose ... ok [INFO] [stdout] test backend::claude::tests::ensure_stream_json_no_verbose_without_print ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_429_error_before_response_json ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_claude_cli_verbose_prefers_result_over_assistant ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_claude_cli_verbose_extracts_text_and_metadata ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_claude_cli_verbose_multiple_results_keeps_longest ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_claude_cli_verbose_no_result_uses_assistant_text ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_codex_cli_extracts_text_and_metadata ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_claude_cli_verbose_falls_back_to_result_text ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_claude_cli_verbose_result_overrides_concatenated_narration ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_codex_cli_filters_reasoning_items ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_goose_cli_extracts_text_and_tokens ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_markdown_with_embedded_json_returns_raw ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_goose_cli_filters_reasoning_and_notifications ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_goose_cli_multiple_text_messages ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_goose_cli_token_streaming_preserves_fenced_json ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_markdown_with_json_block_still_returns_raw ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_extracts_json_after_non_json_preamble ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_codex_cli_separates_multiple_agent_messages ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_pipe_multiline_json_with_preamble ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_returns_raw_text_when_no_json_events_exist ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_multiline_json_without_preamble ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_opencode_cli_multiple_text_events ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_message_event_requires_assistant_role_for_text ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_opencode_cli_extracts_text_and_metadata ... ok [INFO] [stdout] test backend::codex::tests::parse_codex_model_effort_strips_low ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_routes_single_json_when_first_json_has_no_type ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_single_json_with_type_field_routes_to_single ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_stream_events_extracts_session_and_text ... ok [INFO] [stdout] test backend::output_normalizer::tests::normalize_output_routes_stream_json_when_first_line_is_stream_event ... ok [INFO] [stdout] test backend::output_normalizer::tests::stream_json_concatenates_deltas_in_order_and_extracts_metadata ... ok [INFO] [stdout] test backend::output_normalizer::tests::stream_json_errors_when_events_exist_without_text_deltas ... ok [INFO] [stdout] test backend::tests::backend_registry_timeout_for_role_uses_backend_role_override_for_bare_and_modeled_specs ... ok [INFO] [stdout] test backend::tests::backend_registry_rejects_disabled_backend ... ok [INFO] [stdout] test backend::tests::backend_registry_timeout_for_role_falls_back_to_default_for_unknown_or_invalid_spec ... ok [INFO] [stdout] test backend::tests::assign_feature_backends_uses_openrouter_when_codex_disabled ... ok [INFO] [stdout] test backend::tests::backend_registry_creates_openrouter_backend_for_modeled_spec ... ok [INFO] [stdout] test backend::output_normalizer::tests::stream_json_extracts_usage_from_summary_event ... ok [INFO] [stdout] test backend::output_normalizer::tests::stream_json_skips_unknown_events_and_malformed_lines ... ok [INFO] [stdout] test backend::tests::effective_args_claude_idempotent ... ok [INFO] [stdout] test backend::tests::effective_args_claude_produces_exact_token_sequence ... ok [INFO] [stdout] test backend::tests::effective_args_claude_rewrites_for_resume ... ok [INFO] [stdout] test backend::tests::effective_args_claude_requires_p_flag ... ok [INFO] [stdout] test backend::tests::effective_args_claude_with_existing_resume_replaces_cleanly ... ok [INFO] [stdout] test backend::tests::effective_args_codex_produces_exact_token_sequence ... ok [INFO] [stdout] test backend::tests::effective_args_codex_requires_exec_in_base_form ... ok [INFO] [stdout] test backend::tests::effective_args_codex_requires_trailing_dash ... ok [INFO] [stdout] test backend::tests::effective_args_codex_idempotent ... ok [INFO] [stdout] test backend::tests::effective_args_codex_rewrites_for_resume ... ok [INFO] [stdout] test backend::tests::effective_args_codex_with_existing_resume_replaces_cleanly ... ok [INFO] [stdout] test backend::tests::effective_args_no_session_adds_json_output ... ok [INFO] [stdout] test backend::tests::effective_args_no_session_no_json_returns_unchanged ... ok [INFO] [stdout] test backend::tests::effective_args_openrouter_resume_rewrite_is_idempotent ... ok [INFO] [stdout] test backend::tests::effective_args_no_session_openrouter_rewrites_output_format_to_stream_json ... ok [INFO] [stdout] test backend::tests::effective_args_openrouter_rewrites_for_resume_and_preserves_other_flags ... ok [INFO] [stdout] test backend::tests::is_backend_available_returns_false_for_disabled_backend ... ok [INFO] [stdout] test backend::tests::is_backend_available_returns_false_for_empty_string ... ok [INFO] [stdout] test backend::tests::is_backend_available_returns_false_for_unknown_backend ... ok [INFO] [stdout] test backend::tests::is_backend_available_returns_true_for_enabled_backend ... ok [INFO] [stdout] test backend::tests::cli_backend_execute_uses_configured_cwd ... ok [INFO] [stdout] test backend::tests::is_backend_available_with_recalculation_workflow ... ok [INFO] [stdout] test backend::tests::opposite_falls_back_to_openrouter_when_codex_disabled ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_accepts_name_with_model ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_accepts_optional_bare_name ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_accepts_bare_name ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_accepts_optional_name_with_model ... ok [INFO] [stdout] test backend::tests::opposite_returns_codex_for_claude_when_codex_enabled ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_rejects_missing_closing_paren ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_rejects_empty_model ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_rejects_missing_name_after_optional_prefix ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_rejects_empty_name ... ok [INFO] [stdout] test backend::tests::parse_backend_spec_rejects_missing_opening_paren ... ok [INFO] [stdout] test backend::tmux::tests::create_window_returns_identifier ... ok [INFO] [stdout] test backend::tmux::tests::create_window_with_retry_succeeds_on_first_try ... ok [INFO] [stdout] test backend::tmux::tests::create_window_with_retry_retries_on_missing_session ... ok [INFO] [stdout] test backend::tmux::tests::ensure_session_creates_when_missing ... ok [INFO] [stdout] test backend::tmux::tests::format_window_label_basic ... ok [INFO] [stdout] test backend::tmux::tests::ensure_session_skips_creation_when_session_exists ... ok [INFO] [stdout] test backend::tmux::tests::format_window_label_reviewer_role ... ok [INFO] [stdout] test backend::tmux::tests::format_window_label_long_values_truncated ... ok [INFO] [stdout] test backend::tmux::tests::format_window_label_planner_role ... ok [INFO] [stdout] test backend::tmux::tests::has_session_returns_true_when_session_exists ... ok [INFO] [stdout] test backend::tmux::tests::has_window_returns_false_when_session_missing ... ok [INFO] [stdout] test backend::tmux::tests::has_window_returns_true_when_window_exists ... ok [INFO] [stdout] test backend::tmux::tests::has_window_returns_false_when_window_missing ... ok [INFO] [stdout] test backend::tmux::tests::has_session_returns_false_when_session_missing ... ok [INFO] [stdout] test backend::tests::cli_backend_streaming_preserves_exact_bytes_in_log ... ok [INFO] [stdout] test backend::tmux::tests::sanitize_tmux_label_collapses_replacement_dashes ... ok [INFO] [stdout] test backend::tmux::tests::sanitize_tmux_label_strips_invalid_chars ... ok [INFO] [stdout] test backend::tmux::tests::kill_window_invokes_kill_window ... ok [INFO] [stdout] test backend::tmux::tests::sanitize_tmux_label_strips_trailing_dash ... ok [INFO] [stdout] test backend::tmux::tests::set_remain_on_exit_sends_correct_command ... ok [INFO] [stdout] test backend::tmux::tests::wait_for_exit_returns_non_zero_exit_code ... ok [INFO] [stdout] test backend::tmux::tests::kill_window_best_effort_does_not_panic_on_error ... ok [INFO] [stdout] test backend::tmux::tests::kill_window_best_effort_succeeds_silently ... ok [INFO] [stdout] test backend::tmux::tests::wait_for_exit_times_out ... ok [INFO] [stdout] test backend::tests::cli_backend_stall_after_partial_output_times_out_idle ... ok [INFO] [stdout] test backend::tmux_backend::tests::build_shell_command_basic ... ok [INFO] [stdout] test backend::tmux_backend::tests::build_shell_command_escapes_single_quotes ... ok [INFO] [stdout] test backend::tmux_backend::tests::build_shell_command_includes_env ... ok [INFO] [stdout] test backend::tmux_backend::tests::build_shell_command_preserves_args ... ok [INFO] [stdout] test backend::tmux::tests::wait_for_exit_with_activity_stall_times_out_idle ... ok [INFO] [stdout] test backend::tmux::tests::wait_for_exit_with_activity_file_growth_resets_idle ... ok [INFO] [stdout] test backend::tests::cli_backend_timeout_kills_and_reaps_child_and_writes_footer ... ok [INFO] [stdout] test backend::tmux::tests::wait_for_exit_returns_zero_exit_code ... ok [INFO] [stdout] test backend::tmux_backend::tests::execute_success_returns_output ... ok [INFO] [stdout] test backend::tmux_backend::tests::name_delegates_to_inner ... ok [INFO] [stdout] test backend::tmux_backend::tests::shell_escape_simple ... ok [INFO] [stdout] test backend::tmux_backend::tests::shell_escape_with_single_quotes ... ok [INFO] [stdout] test backend::tmux_backend::tests::shell_escape_with_spaces ... ok [INFO] [stdout] test backend::tmux_backend::tests::temp_files_cleaned_up_on_failure ... ok [INFO] [stdout] test backend::tmux::tests::wait_for_exit_with_activity_stderr_growth_counts ... ok [INFO] [stdout] test cli::auto::tests::ensure_workspace_creates_workspace_when_missing ... ok [INFO] [stdout] test cli::auto::tests::ensure_workspace_with_explicit_root_creates_workspace ... ok [INFO] [stdout] test cli::auto::tests::ensure_workspace_with_explicit_root_loads_existing ... ok [INFO] [stdout] test cli::auto::tests::parses_auto_command_with_all_args ... ok [INFO] [stdout] test cli::auto::tests::parses_auto_command_with_defaults ... ok [INFO] [stdout] test cli::auto::tests::rejects_auto_with_empty_idea ... ok [INFO] [stdout] test cli::auto::tests::test_slugify_idea_basic ... ok [INFO] [stdout] test cli::auto::tests::test_slugify_idea_consecutive_dashes ... ok [INFO] [stdout] test cli::auto::tests::test_slugify_idea_special_chars ... ok [INFO] [stdout] test cli::auto::tests::test_slugify_idea_truncation ... ok [INFO] [stdout] test cli::backend_spec::tests::reject_empty_model_in_parens ... ok [INFO] [stdout] test cli::backend_spec::tests::reject_empty_name_with_model ... ok [INFO] [stdout] test cli::backend_spec::tests::reject_empty_spec ... ok [INFO] [stdout] test cli::backend_spec::tests::reject_missing_closing_paren ... ok [INFO] [stdout] test cli::backend_spec::tests::reject_unknown_bare_backend ... ok [INFO] [stdout] test cli::backend_spec::tests::reject_unknown_base_backend ... ok [INFO] [stdout] test cli::backend_spec::tests::validate_bare_claude ... ok [INFO] [stdout] test cli::backend_spec::tests::validate_bare_codex ... ok [INFO] [stdout] test cli::backend_spec::tests::validate_claude_with_model ... ok [INFO] [stdout] test cli::backend_spec::tests::validate_codex_with_model ... ok [INFO] [stdout] test cli::backend_spec::tests::validate_name_only_accepts_optional_openrouter_with_model ... ok [INFO] [stdout] test cli::backend_spec::tests::validate_name_only_bare_claude ... ok [INFO] [stdout] test cli::backend_spec::tests::validate_name_only_rejects_unknown ... ok [INFO] [stdout] test cli::backend_spec::tests::validate_name_only_with_model ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_accepts_bare_claude ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_accepts_bare_codex ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_accepts_claude_with_model ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_accepts_codex_with_model ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_rejects_empty_model ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_rejects_empty_name_with_model ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_rejects_missing_close_paren ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_rejects_unknown_bare ... ok [INFO] [stdout] test cli::config::tests::ensure_backend_rejects_unknown_base ... ok [INFO] [stdout] test cli::config::tests::ensure_required_backend_rejects_optional_syntax ... ok [INFO] [stdout] test cli::config::tests::parse_optional_backend_accepts_bare_name ... ok [INFO] [stdout] test cli::config::tests::parse_optional_backend_accepts_claude_with_model ... ok [INFO] [stdout] test cli::config::tests::parse_optional_backend_accepts_null ... ok [INFO] [stdout] test cli::config::tests::parse_optional_backend_accepts_optional_openrouter ... ok [INFO] [stdout] test cli::config::tests::parse_optional_backend_rejects_malformed ... ok [INFO] [stdout] test cli::config::tests::parse_optional_backend_rejects_unknown ... ok [INFO] [stdout] test cli::config::tests::resolve_config_alias_maps_qa_backend ... ok [INFO] [stdout] test cli::config::tests::set_global_value_rejects_optional_prompt_review_backend_alias ... ok [INFO] [stdout] test cli::config::tests::set_global_value_rejects_unknown_role_timeout ... ok [INFO] [stdout] test cli::config::tests::set_global_value_sets_and_clears_role_timeout ... ok [INFO] [stdout] test cli::config::tests::set_global_value_updates_history_capping_fields ... ok [INFO] [stdout] test cli::config::tests::set_project_value_rejects_optional_prompt_review_backend_alias ... ok [INFO] [stdout] test cli::config::tests::set_project_value_updates_history_capping_fields ... ok [INFO] [stdout] test cli::init::tests::create_workspace_full_plan_writes_all_templates ... ok [INFO] [stdout] test cli::init::tests::create_workspace_minimal_plan_writes_no_templates ... ok [INFO] [stdout] test cli::init::tests::merge_overlay_config_fills_missing_keys ... ok [INFO] [stdout] test backend::tests::cli_backend_active_stream_does_not_timeout ... ok [INFO] [stdout] test backend::tmux_backend::tests::execute_genuine_timeout_returns_backend_timeout ... ok [INFO] [stdout] test cli::init::tests::merge_overlay_config_fills_missing_keys_verifiable_in_file ... ok [INFO] [stdout] test cli::init::tests::merge_overlay_config_preserves_comments ... ok [INFO] [stdout] test cli::init::tests::plan_full_actions_uses_shared_constants_in_stable_order ... ok [INFO] [stdout] test cli::init::tests::plan_minimal_actions_keeps_only_minimal_workspace_steps ... ok [INFO] [stdout] test cli::init::tests::plan_overlay_actions_includes_overlay_config ... ok [INFO] [stdout] test cli::init::tests::plan_overlay_actions_skips_existing_templates ... ok [INFO] [stdout] test cli::init::tests::validate_copy_files_target_empty_dir ... ok [INFO] [stdout] test cli::init::tests::validate_copy_files_target_existing_workspace ... ok [INFO] [stdout] test cli::init::tests::merge_overlay_config_handles_inline_tables ... ok [INFO] [stdout] test cli::init::tests::validate_copy_files_target_new_dir ... ok [INFO] [stdout] test cli::init::tests::validate_copy_files_target_nonempty_no_toml ... ok [INFO] [stdout] test cli::init::tests::validate_copy_files_target_malformed_toml ... ok [INFO] [stdout] test cli::init::tests::validate_target_rejects_file_target ... ok [INFO] [stdout] test cli::init::tests::validate_target_rejects_nonempty_directory ... ok [INFO] [stdout] test cli::prd::tests::resolved_ask_max_falls_back_to_full_default ... ok [INFO] [stdout] test cli::prd::tests::resolved_ask_max_falls_back_to_preset_default ... ok [INFO] [stdout] test cli::prd::tests::resolved_ask_max_prefers_explicit_flag_over_preset ... ok [INFO] [stdout] test cli::project::tests::project_backend_accepts_bare_claude ... ok [INFO] [stdout] test cli::project::tests::project_backend_accepts_bare_codex ... ok [INFO] [stdout] test cli::project::tests::project_backend_accepts_claude_with_model ... ok [INFO] [stdout] test cli::project::tests::project_backend_accepts_codex_with_model ... ok [INFO] [stdout] test cli::project::tests::project_backend_rejects_malformed_empty_model ... ok [INFO] [stdout] test cli::project::tests::project_backend_rejects_malformed_empty_name ... ok [INFO] [stdout] test cli::project::tests::project_backend_rejects_malformed_missing_close_paren ... ok [INFO] [stdout] test cli::project::tests::project_backend_rejects_unknown_base ... ok [INFO] [stdout] test cli::status::tests::extract_required_change_lines_unchanged_behavior ... ok [INFO] [stdout] test cli::status::tests::extract_section_lines_handles_body_with_frontmatter_stripped ... ok [INFO] [stdout] test cli::status::tests::extract_section_lines_returns_empty_when_section_has_no_content ... ok [INFO] [stdout] test cli::status::tests::extract_section_lines_returns_empty_when_section_missing ... ok [INFO] [stdout] test cli::status::tests::extract_section_lines_returns_up_to_3_lines_from_acceptance_criteria_verification ... ok [INFO] [stdout] test cli::status::tests::extract_section_lines_returns_up_to_3_lines_from_failures ... ok [INFO] [stdout] test cli::tail::tests::emits_phase_change_event_with_new_phase_details ... ok [INFO] [stdout] test cli::tail::tests::labels_use_expected_wire_format ... ok [INFO] [stdout] test cli::tail::tests::normalizes_timestamps_preferring_created_at ... ok [INFO] [stdout] test cli::tail::tests::serializes_json_with_event_specific_fields ... ok [INFO] [stdout] test cli::tail::tests::parses_filename_timestamp_as_utc ... ok [INFO] [stdout] test cli::tail::tests::sorts_by_epoch_then_type_then_signature ... ok [INFO] [stdout] test cli::tail::tests::splits_frontmatter_and_extracts_heading ... ok [INFO] [stdout] test cli::tests::parses_auto_with_skip_prompt_review ... ok [INFO] [stdout] test cli::tests::parses_daemon_abort_with_task_selector ... ok [INFO] [stdout] test cli::tests::parses_daemon_start_with_all_overrides ... ok [INFO] [stdout] test cli::init::tests::merge_overlay_config_preserves_user_values ... ok [INFO] [stdout] test cli::tests::parses_daemon_status_with_data_dir ... ok [INFO] [stdout] test cli::tests::parses_daemon_retrigger_with_task_id ... ok [INFO] [stdout] test cli::tests::parses_daemon_start_with_max_concurrent_one ... ok [INFO] [stdout] test cli::tests::parses_init_with_dry_run_short_flag ... ok [INFO] [stdout] test cli::tests::parses_prd_command_with_implicit_defaults ... ok [INFO] [stdout] test cli::tests::parses_init_with_dry_run_long_flag ... ok [INFO] [stdout] test cli::tests::parses_prd_command_with_expected_arguments ... ok [INFO] [stdout] test cli::tests::parses_quick_dev_auto_with_all_args ... ok [INFO] [stdout] test backend::tmux_backend::tests::execute_nonzero_exit_returns_error ... ok [INFO] [stdout] test cli::tests::parses_prd_command_with_preset ... ok [INFO] [stdout] test backend::tmux_backend::tests::kill_window_called_on_nonzero_exit ... ok [INFO] [stdout] test cli::tests::parses_quick_dev_run_with_all_args ... ok [INFO] [stdout] test cli::tests::parses_quick_dev_auto_with_defaults ... ok [INFO] [stdout] test cli::tests::parses_quick_dev_run_with_defaults ... ok [INFO] [stdout] test cli::tests::parses_quick_prd_with_all_args ... ok [INFO] [stdout] test cli::tests::parses_quick_prd_with_defaults ... ok [INFO] [stdout] test cli::tests::parses_run_with_skip_prompt_review ... ok [INFO] [stdout] test cli::tests::parses_run_with_no_tmux_flag ... ok [INFO] [stdout] test cli::tests::parses_run_with_tmux_flag ... ok [INFO] [stdout] test cli::tests::parses_validate_command_with_expected_arguments ... ok [INFO] [stdout] test cli::tests::parses_run_with_role_backend_overrides ... ok [INFO] [stdout] test cli::tests::parses_run_without_tmux_flags ... ok [INFO] [stdout] test cli::tests::rejects_prd_with_conflicting_interactive_flags ... ok [INFO] [stdout] test cli::tests::rejects_quick_dev_auto_with_whitespace_idea ... ok [INFO] [stdout] test backend::tmux_backend::tests::execute_window_disappeared_returns_actionable_error ... ok [INFO] [stdout] test cli::tests::rejects_quick_dev_auto_with_zero_max_final_review_retries ... ok [INFO] [stdout] test cli::tests::rejects_quick_dev_auto_with_empty_idea ... ok [INFO] [stdout] test cli::tests::rejects_quick_dev_auto_with_zero_max_review_iterations ... ok [INFO] [stdout] test cli::tests::rejects_quick_dev_run_with_zero_max_final_review_retries ... ok [INFO] [stdout] test cli::tests::rejects_quick_dev_run_with_zero_max_review_iterations ... ok [INFO] [stdout] test cli::tests::test_quick_prd_dry_run_skips_backends ... ok [INFO] [stdout] test config::global::tests::backend_config_timeout_for_role_prefers_override_and_falls_back ... ok [INFO] [stdout] test config::global::tests::backend_role_models_default_is_empty ... ok [INFO] [stdout] test config::global::tests::backend_role_timeouts_toml_deserialize_with_table_sets_overrides ... ok [INFO] [stdout] test cli::tests::rejects_quick_prd_with_conflicting_interactive_flags ... ok [INFO] [stdout] test cli::tests::rejects_run_with_conflicting_tmux_flags ... ok [INFO] [stdout] test config::global::tests::default_workspace_tmux_settings_match_expected_values ... ok [INFO] [stdout] test config::global::tests::backend_enabled_accepts_bool_and_auto_string ... ok [INFO] [stdout] test config::global::tests::deserializes_backend_models_when_present ... ok [INFO] [stdout] test config::global::tests::backend_role_timeouts_toml_deserialize_without_table_uses_fallback_timeout ... ok [INFO] [stdout] test config::global::tests::empty_toml_deserializes_to_defaults ... ok [INFO] [stdout] test backend::tmux_backend::tests::temp_files_cleaned_up_on_success ... ok [INFO] [stdout] test config::global::tests::deserializes_workspace_tmux_defaults_when_fields_are_missing ... ok [INFO] [stdout] test config::global::tests::fill_from_fills_none_fields_from_defaults ... ok [INFO] [stdout] test config::global::tests::deserializes_prompt_review_fields_when_present ... ok [INFO] [stdout] test config::global::tests::minimal_toml_parses_to_default ... ok [INFO] [stdout] test config::global::tests::deserializes_workspace_tmux_fields_when_present ... ok [INFO] [stdout] test config::global::tests::missing_single_backend_uses_backend_specific_default ... ok [INFO] [stdout] test config::global::tests::load_fills_missing_models_from_code_defaults ... ok [INFO] [stdout] test config::global::tests::for_role_returns_expected_model_for_each_role ... ok [INFO] [stdout] test config::global::tests::planner_state_in_prompt_serde_roundtrips ... ok [INFO] [stdout] test config::global::tests::planner_state_in_prompt_default_is_summary ... ok [INFO] [stdout] test config::global::tests::previous_specs_in_prompt_default_is_titles ... ok [INFO] [stdout] test config::global::tests::previous_specs_in_prompt_kebab_case_serde ... ok [INFO] [stdout] test config::global::tests::partial_backend_config_merge_fills_role_timeouts_from_defaults ... ok [INFO] [stdout] test config::global::tests::openrouter_defaults_match_expected_values ... ok [INFO] [stdout] test config::global::tests::previous_specs_in_prompt_serde_roundtrips ... ok [INFO] [stdout] test config::global::tests::partial_sections_default_correctly ... ok [INFO] [stdout] test config::global::tests::role_timeouts_fill_from_fills_none_fields_from_defaults ... ok [INFO] [stdout] test config::global::tests::role_timeouts_for_role_returns_expected_timeout_for_each_role ... ok [INFO] [stdout] test config::global::tests::planner_state_in_prompt_kebab_case_serde ... ok [INFO] [stdout] test config::global::tests::save_sparse_creates_intermediate_tables ... ok [INFO] [stdout] test config::global::tests::save_sparse_handles_models_role_clear ... ok [INFO] [stdout] test config::global::tests::save_sparse_handles_role_timeouts_clear ... ok [INFO] [stdout] test config::global::tests::save_sparse_errors_on_non_table_path_segment ... ok [INFO] [stdout] test config::global::tests::save_sparse_handles_env_dotted_literal_keys ... ok [INFO] [stdout] test config::global::tests::save_sparse_preserves_comments_and_unrelated_formatting ... ok [INFO] [stdout] test config::global::tests::save_sparse_falls_back_to_full_save_on_missing_file ... ok [INFO] [stdout] test config::global::tests::shared_mutator_rejects_daemon_prd_keys ... ok [INFO] [stdout] test config::global::tests::shared_mutator_rejects_invalid_bool ... ok [INFO] [stdout] test config::global::tests::shared_mutator_rejects_invalid_integer ... ok [INFO] [stdout] test config::global::tests::shared_mutator_rejects_unknown_key ... ok [INFO] [stdout] test config::global::tests::shared_mutator_sets_backend_fields ... ok [INFO] [stdout] test config::global::tests::shared_mutator_sets_template_and_git_fields ... ok [INFO] [stdout] test config::global::tests::backend_enabled_serde_roundtrip_preserves_values ... ok [INFO] [stdout] test config::global::tests::shared_mutator_sets_workflow_fields ... ok [INFO] [stdout] test config::global::tests::sparse_key_segments_splits_models_and_timeouts_normally ... ok [INFO] [stdout] test config::global::tests::sparse_key_segments_splits_normal_keys ... ok [INFO] [stdout] test config::global::tests::sparse_key_segments_treats_env_rest_as_literal ... ok [INFO] [stdout] test config::global::tests::template_config_serde_defaults_quick_dev_fields ... ok [INFO] [stdout] test config::global::tests::whitespace_toml_deserializes_to_defaults ... ok [INFO] [stdout] test config::global::tests::workflow_config_default_planner_compression_fields ... ok [INFO] [stdout] test config::global::tests::workflow_config_deserializes_planner_compression_fields ... ok [INFO] [stdout] test config::global::tests::workflow_config_deserializes_planner_max_prior_loops_absent_uses_default ... ok [INFO] [stdout] test config::tests::completion_panel_accepts_valid_partial_threshold ... ok [INFO] [stdout] test config::tests::completion_panel_rejects_duplicate_specs_after_canonicalization ... ok [INFO] [stdout] test config::tests::completion_panel_rejects_empty_backends ... ok [INFO] [stdout] test config::tests::completion_panel_rejects_min_completers_zero ... ok [INFO] [stdout] test config::tests::completion_panel_rejects_role_resolution_collapse ... ok [INFO] [stdout] test config::tests::completion_panel_rejects_threshold_out_of_range ... ok [INFO] [stdout] test config::tests::completion_verdict_filename_matches_artifact_slug ... ok [INFO] [stdout] test config::tests::final_review_overlap_warning_detection_triggers_for_matching_backend_family ... ok [INFO] [stdout] test config::global::tests::save_sparse_inline_table_path_clear ... ok [INFO] [stdout] test config::tests::prompt_review_alias_explicit_global_plural_wins_even_when_equal_to_default ... ok [INFO] [stdout] test config::tests::prompt_review_alias_rejects_optional_global_singular_backend ... ok [INFO] [stdout] test config::tests::prompt_review_alias_rejects_optional_project_singular_backend ... ok [INFO] [stdout] test config::tests::prompt_review_alias_synthesizes_plural_when_plural_unset ... ok [INFO] [stdout] test config::tests::prompt_review_panel_accepts_optional_openrouter_backend ... ok [INFO] [stdout] test config::tests::prompt_review_panel_rejects_empty_backends ... ok [INFO] [stdout] test config::tests::prompt_review_panel_rejects_min_reviewers_zero ... ok [INFO] [stdout] test config::global::tests::save_sparse_inline_table_path_set ... ok [INFO] [stdout] test config::tests::prompt_review_plural_project_override_takes_precedence_over_singular ... ok [INFO] [stdout] test config::tests::prompt_review_project_singular_override_wins_over_global_plural_when_project_plural_absent ... ok [INFO] [stdout] test config::tests::resolve_daemon_config_applies_project_overrides_over_workspace_defaults ... ok [INFO] [stdout] test config::tests::resolve_effective_config_accepts_optional_syntax_in_final_review_list ... ok [INFO] [stdout] test config::tests::resolve_effective_config_accepts_starting_backend_with_model_spec ... ok [INFO] [stdout] test config::tests::resolve_effective_config_applies_role_override_precedence ... ok [INFO] [stdout] test config::tests::resolve_effective_config_deduplicates_final_review_backends_before_minimum_check ... ok [INFO] [stdout] test config::tests::resolve_effective_config_defaults_planner_compression_fields ... ok [INFO] [stdout] test config::tests::resolve_effective_config_final_review_fields_follow_precedence ... ok [INFO] [stdout] test config::tests::resolve_effective_config_global_overrides_planner_compression ... ok [INFO] [stdout] test config::global::tests::shared_mutator_sets_workspace_fields ... ok [INFO] [stdout] test config::global::tests::save_sparse_inline_table_nested_set ... ok [INFO] [stdout] test config::tests::resolve_effective_config_history_capping_fields_follow_precedence ... ok [INFO] [stdout] test config::tests::resolve_effective_config_project_absent_inherits_global ... ok [INFO] [stdout] test config::tests::resolve_effective_config_project_override_unlimited_loops ... ok [INFO] [stdout] test config::tests::resolve_effective_config_project_overrides_planner_compression ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_empty_final_review_backends_when_enabled ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_unknown_backend_on_required_surfaces ... ok [INFO] [stdout] test config::tests::prompt_review_panel_rejects_duplicate_specs_after_canonicalization ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_unknown_base_backend_in_spec ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_invalid_final_review_threshold_bounds ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_optional_backend_on_required_surface ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_optional_syntax_on_final_review_arbiter ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_unknown_final_review_arbiter_family ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_unknown_prompt_review_backend ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_unknown_role_override_backend ... ok [INFO] [stdout] test config::tests::resolve_effective_config_resolves_quick_dev_template_paths ... ok [INFO] [stdout] test config::tests::validate_daemon_workspace_config_rejects_unknown_refinement_backend ... ok [INFO] [stdout] test config::tests::validate_effective_daemon_config_rejects_project_unknown_refinement_backend ... ok [INFO] [stdout] test config::tests::validate_prd_config_rejects_invalid_backend_specs ... ok [INFO] [stdout] test config::tests::validate_prd_config_rejects_invalid_question_backend_count ... ok [INFO] [stdout] test config::tests::validate_prd_config_rejects_unknown_backend_specs ... ok [INFO] [stdout] test config::tests::resolve_effective_config_rejects_when_unique_reviewer_count_below_minimum ... ok [INFO] [stdout] test config::tests::resolve_effective_config_resolves_qa_precedence_and_template_paths ... ok [INFO] [stdout] test daemon::github::tests::branch_name_with_numeric_code_does_not_affect_classification ... ok [INFO] [stdout] test daemon::github::tests::classify_lifecycle_labels_empty_for_no_ralph_labels ... ok [INFO] [stdout] test daemon::github::tests::classify_lifecycle_labels_excludes_ralph_quick ... ok [INFO] [stdout] test daemon::github::tests::deserialize_graphql_comment_with_string_id_and_url ... ok [INFO] [stdout] test daemon::github::tests::deserialize_numeric_comment_id_without_url ... ok [INFO] [stdout] test daemon::github::tests::dns_error_with_url_containing_403_is_retryable ... ok [INFO] [stdout] test daemon::github::tests::classify_lifecycle_labels_filters_correctly ... ok [INFO] [stdout] test daemon::github::tests::explicit_http_401_is_non_retryable ... ok [INFO] [stdout] test daemon::github::tests::explicit_http_403_is_non_retryable ... ok [INFO] [stdout] test daemon::github::tests::explicit_http_503_is_retryable ... ok [INFO] [stdout] test daemon::github::tests::extract_numeric_comment_id_from_graphql_url ... ok [INFO] [stdout] test daemon::github::tests::extract_numeric_comment_id_from_invalid_url ... ok [INFO] [stdout] test daemon::github::tests::extract_numeric_comment_id_from_none ... ok [INFO] [stdout] test daemon::github::tests::extract_numeric_comment_id_from_rest_url ... ok [INFO] [stdout] test daemon::github::tests::extract_pr_number_from_standard_url ... ok [INFO] [stdout] test daemon::github::tests::extract_pr_number_from_trailing_slash ... ok [INFO] [stdout] test daemon::github::tests::extract_pr_number_returns_none_for_non_pr_url ... ok [INFO] [stdout] test daemon::github::tests::gh_issue_deserialization_supports_body_absent ... ok [INFO] [stdout] test daemon::github::tests::gh_issue_deserialization_supports_body_null ... ok [INFO] [stdout] test daemon::github::tests::gh_issue_deserialization_supports_body_present ... ok [INFO] [stdout] test daemon::github::tests::gh_issue_struct_includes_body_field ... ok [INFO] [stdout] test daemon::github::tests::extract_http_status_codes_bounded_context ... ok [INFO] [stdout] test config::global::tests::save_sparse_removes_optional_key_on_null ... ok [INFO] [stdout] test daemon::github::tests::invalid_revision_patterns_are_detected ... ok [INFO] [stdout] test daemon::github::tests::is_lease_rejection_detects_rejected ... ok [INFO] [stdout] test daemon::github::tests::is_lease_rejection_detects_stale_info ... ok [INFO] [stdout] test daemon::github::tests::is_lease_rejection_returns_false_for_unrelated ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_gh_error_detects_503 ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_gh_error_detects_409_conflict ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_gh_error_detects_conflict_keyword ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_gh_error_detects_rate_limit ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_push_error_branch_name_collision_safety ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_push_error_classifies_transient_and_permanent ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_push_error_non_push_error_fallback ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_push_error_unknown_stderr_is_non_retryable ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_push_stderr_classifies_transient_and_permanent_errors ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_push_stderr_ignores_branch_name_collisions ... ok [INFO] [stdout] test daemon::github::tests::parse_authenticated_login_rejects_empty ... ok [INFO] [stdout] test daemon::github::tests::parse_authenticated_login_trims_and_returns_value ... ok [INFO] [stdout] test daemon::github::tests::parse_pr_is_draft_false ... ok [INFO] [stdout] test daemon::github::tests::parse_pr_is_draft_true ... ok [INFO] [stdout] test daemon::github::tests::pr_merge_info_parses_expected_fields ... ok [INFO] [stdout] test daemon::github::tests::pr_merge_status_maps_conflicting ... ok [INFO] [stdout] test daemon::github::tests::pr_merge_status_maps_unknown ... ok [INFO] [stdout] test daemon::github::tests::is_retryable_gh_error_returns_false_for_auth_errors ... ok [INFO] [stdout] test daemon::github::tests::push_branch_with_retry_impl_does_not_retry_permanent_failure ... ok [INFO] [stdout] test daemon::bootstrap::tests::bootstrap_bare_repo_returns_unsupported_error ... ok [INFO] [stdout] test daemon::github::tests::push_branch_with_retry_impl_does_not_retry_unknown_failure ... ok [INFO] [stdout] test backend::tests::cli_backend_idle_timeout_resets_on_activity ... ok [INFO] [stdout] test daemon::github::tests::ralph_quick_is_in_required_labels ... ok [INFO] [stdout] test daemon::github::tests::ralph_quick_is_not_a_lifecycle_label ... ok [INFO] [stdout] test daemon::github::tests::required_labels_are_unique_and_include_lifecycle_labels ... ok [INFO] [stdout] test daemon::github::tests::unknown_errors_are_not_retried ... ok [INFO] [stdout] test daemon::github::tests::url_containing_500_plus_http_401_is_non_retryable ... ok [INFO] [stdout] test daemon::github::tests::push_branch_with_retry_impl_retries_transient_then_succeeds ... ok [INFO] [stdout] test daemon::interactive_prd::tests::answer_comment_detection_respects_last_processed_comment_id ... ok [INFO] [stdout] test daemon::interactive_prd::tests::answer_comment_detection_returns_none_when_no_qualifying_comment ... ok [INFO] [stdout] test daemon::interactive_prd::tests::answer_comment_detection_skips_bot_and_selects_first_valid_user_comment ... ok [INFO] [stdout] test daemon::interactive_prd::tests::clean_draft_body_empty_after_cleanup_returns_none ... ok [INFO] [stdout] test daemon::interactive_prd::tests::clean_draft_body_removes_markers_heading_footer_and_trims ... ok [INFO] [stdout] test daemon::interactive_prd::tests::clean_draft_body_strips_heading_after_marker_when_blank_lines_precede_it ... ok [INFO] [stdout] test daemon::github::tests::push_branch_with_retry_impl_exhausts_retries_for_transient_failure ... ok [INFO] [stdout] test daemon::github::tests::push_branch_with_retry_impl_classifies_on_stderr_not_branch_name ... ok [INFO] [stdout] test daemon::bootstrap::tests::bootstrap_non_git_dir_creates_git_commit_and_workspace ... ok [INFO] [stdout] test daemon::github::tests::has_diff_returns_false_for_single_commit_head_tilde_base ... ok [INFO] [stdout] test daemon::bootstrap::tests::bootstrap_existing_repo_is_noop ... ok [INFO] [stdout] test daemon::bootstrap::tests::bootstrap_is_idempotent_for_unborn_repo ... ok [INFO] [stdout] test daemon::interactive_prd::tests::detect_approval_question_about_lgtm_still_matches ... ok [INFO] [stdout] test daemon::interactive_prd::tests::detect_approval_mixed_signals_return_false ... ok [INFO] [stdout] test daemon::interactive_prd::tests::draft_prompt_contains_issue_questions_and_answers ... ok [INFO] [stdout] test daemon::interactive_prd::tests::extract_questions_text_by_id_prefers_bot_author ... ok [INFO] [stdout] test daemon::interactive_prd::tests::extract_questions_text_ignores_user_spoof_marker ... ok [INFO] [stdout] test daemon::interactive_prd::tests::extract_questions_text_prefers_comment_id_and_strips_marker ... ok [INFO] [stdout] test daemon::interactive_prd::tests::feedback_revision_prompt_contains_placeholders ... ok [INFO] [stdout] test daemon::interactive_prd::tests::find_new_feedback_comments_draft_boundary_takes_precedence_over_cursor ... ok [INFO] [stdout] test daemon::interactive_prd::tests::find_new_feedback_comments_filters_bot_and_old ... ok [INFO] [stdout] test daemon::interactive_prd::tests::find_new_feedback_comments_respects_draft_boundary ... ok [INFO] [stdout] test daemon::interactive_prd::tests::find_new_feedback_comments_returns_all_non_bot_when_no_cursor ... ok [INFO] [stdout] test daemon::interactive_prd::tests::find_new_feedback_comments_returns_empty_when_all_bot ... ok [INFO] [stdout] test daemon::interactive_prd::tests::find_new_feedback_comments_returns_empty_when_all_processed ... ok [INFO] [stdout] test daemon::interactive_prd::tests::format_draft_comment_and_parse_roundtrip_consistency ... ok [INFO] [stdout] test daemon::interactive_prd::tests::format_draft_comment_round_trip_includes_shared_heading_body_and_footer ... ok [INFO] [stdout] test daemon::interactive_prd::tests::all_feedback_comments_without_approval_triggers_revision ... ok [INFO] [stdout] test daemon::interactive_prd::tests::generate_draft_complete_writer_output_succeeds ... ok [INFO] [stdout] test daemon::interactive_prd::tests::detect_approval_positive_cases ... ok [INFO] [stdout] test daemon::interactive_prd::tests::generate_draft_incomplete_writer_output_fails_after_exhaustion ... ok [INFO] [stdout] test daemon::interactive_prd::tests::generate_questions_runs_in_repo_clone_dir ... ok [INFO] [stdout] test daemon::interactive_prd::tests::detect_approval_approval_with_feedback_returns_true ... ok [INFO] [stdout] test daemon::interactive_prd::tests::generate_revision_complete_writer_output_succeeds ... ok [INFO] [stdout] test daemon::interactive_prd::tests::has_in_progress_prd_label_done_precedence_overrides_mixed_labels ... ok [INFO] [stdout] test daemon::interactive_prd::tests::has_in_progress_prd_label_matches_each_in_progress_label ... ok [INFO] [stdout] test daemon::interactive_prd::tests::has_in_progress_prd_label_rejects_done_empty_and_unrelated_labels ... ok [INFO] [stdout] test daemon::interactive_prd::tests::has_prd_label_matches_waiting_feedback_label ... ok [INFO] [stdout] test daemon::interactive_prd::tests::has_prd_label_still_matches_done_label ... ok [INFO] [stdout] test daemon::interactive_prd::tests::is_terminal_only_true_for_done_and_failed ... ok [INFO] [stdout] test daemon::interactive_prd::tests::load_returns_none_when_state_file_missing ... ok [INFO] [stdout] test daemon::interactive_prd::tests::marker_generation_matches_expected_format ... ok [INFO] [stdout] test daemon::interactive_prd::tests::generate_draft_reviewer_approval_does_not_bypass_section_gating ... ok [INFO] [stdout] test daemon::interactive_prd::tests::parse_approved_spec_bot_only_filtering_ignores_user_spoof ... ok [INFO] [stdout] test daemon::interactive_prd::tests::parse_approved_spec_duplicate_draft_latest_wins ... ok [INFO] [stdout] test daemon::interactive_prd::tests::generate_revision_incomplete_writer_output_fails_after_exhaustion ... ok [INFO] [stdout] test daemon::interactive_prd::tests::parse_approved_spec_ignores_bot_comment_that_only_references_draft_marker ... ok [INFO] [stdout] test daemon::interactive_prd::tests::parse_approved_spec_highest_revision_wins ... ok [INFO] [stdout] test daemon::interactive_prd::tests::parse_approved_spec_no_approval_marker_returns_none ... ok [INFO] [stdout] test daemon::interactive_prd::tests::parse_approved_spec_no_matching_draft_returns_none ... ok [INFO] [stdout] test daemon::interactive_prd::tests::prd_label_constants_include_waiting_feedback ... ok [INFO] [stdout] test daemon::interactive_prd::tests::prd_labels_alias_matches_lifecycle_labels ... ok [INFO] [stdout] test daemon::interactive_prd::tests::prd_workflow_state_serialization_roundtrip_for_all_variants ... ok [INFO] [stdout] test daemon::interactive_prd::tests::generate_revision_reviewer_approval_does_not_bypass_section_gating ... ok [INFO] [stdout] test daemon::interactive_prd::tests::pre_draft_comments_ignored_for_revision_aggregation ... ok [INFO] [stdout] test daemon::interactive_prd::tests::refresh_repo_clone_skips_when_no_git_dir ... ok [INFO] [stdout] test daemon::interactive_prd::tests::repo_clone_path_joins_owner_and_repo ... ok [INFO] [stdout] test daemon::interactive_prd::tests::run_draft_with_section_retry_sync_complete_output_succeeds ... ok [INFO] [stdout] test daemon::interactive_prd::tests::run_draft_with_section_retry_sync_incomplete_output_fails ... ok [INFO] [stdout] test daemon::interactive_prd::tests::save_and_load_roundtrip ... ok [INFO] [stdout] test daemon::interactive_prd::tests::save_failure_increments_error_count_in_apply_transition_result ... ok [INFO] [stdout] test daemon::interactive_prd::tests::section_complete_spec_passes_validation ... ok [INFO] [stdout] test daemon::interactive_prd::tests::section_empty_spec_reports_all_missing ... ok [INFO] [stdout] test daemon::interactive_prd::tests::section_incomplete_spec_reports_missing_sections ... ok [INFO] [stdout] test daemon::interactive_prd::tests::section_incomplete_writer_output_would_fail_after_retries ... ok [INFO] [stdout] test daemon::interactive_prd::tests::section_retry_constants_are_correct ... ok [INFO] [stdout] test daemon::interactive_prd::tests::detect_approval_negative_cases ... ok [INFO] [stdout] test daemon::interactive_prd::tests::section_reviewer_approval_does_not_bypass_completeness ... ok [INFO] [stdout] test daemon::interactive_prd::tests::status_approved_marker_format ... ok [INFO] [stdout] test daemon::interactive_prd::tests::successful_transition_result_clears_previous_error_state ... ok [INFO] [stdout] test daemon::interactive_prd::tests::transition_path_awaiting_answers_selects_first_valid_answer ... ok [INFO] [stdout] test daemon::interactive_prd::tests::transition_error_accumulation_triggers_failure_on_third_error ... ok [INFO] [stdout] test daemon::interactive_prd::tests::pre_draft_comments_ignored_for_approval_detection ... ok [INFO] [stdout] test daemon::interactive_prd::tests::transition_path_pending_idempotent_marker_reuse ... ok [INFO] [stdout] test daemon::interactive_prd::tests::transition_path_pending_pickup_starts_non_terminal ... ok [INFO] [stdout] test daemon::interactive_prd::tests::transition_path_retry_exhaustion_triggers_failed ... ok [INFO] [stdout] test daemon::process::tests::append_mode_separator_has_blank_lines_when_no_trailing_newline ... ok [INFO] [stdout] test daemon::process::tests::append_mode_writes_retrigger_separator_for_non_empty_log ... ok [INFO] [stdout] test daemon::process::tests::conservative_separator_format_is_used_on_probe_failure ... ok [INFO] [stdout] test daemon::process::tests::metadata_inspection_failure_forces_conservative_separator_path ... ok [INFO] [stdout] test daemon::process::tests::quick_dev_auto_command_basic ... ok [INFO] [stdout] test daemon::process::tests::quick_dev_auto_command_includes_pr_url ... ok [INFO] [stdout] test daemon::process::tests::quick_dev_auto_command_includes_project_id ... ok [INFO] [stdout] test daemon::process::tests::quick_dev_run_command_basic ... ok [INFO] [stdout] test daemon::process::tests::quick_dev_run_command_includes_pr_url ... ok [INFO] [stdout] test daemon::process::tests::spawn_auto_command_includes_pr_url ... ok [INFO] [stdout] test daemon::process::tests::spawn_auto_command_includes_project_id ... ok [INFO] [stdout] test daemon::process::tests::spawn_command_uses_long_idea_flag ... ok [INFO] [stdout] test daemon::process::tests::spawn_run_command_includes_pr_url ... ok [INFO] [stdout] test daemon::process::tests::spawn_run_command_uses_project_flag ... ok [INFO] [stdout] test daemon::process::tests::test_pid_exists_bogus ... ok [INFO] [stdout] test daemon::process::tests::test_pid_exists_rejects_low_pids ... ok [INFO] [stdout] test daemon::process::tests::test_pid_exists_self ... ok [INFO] [stdout] test daemon::process::tests::test_terminate_process_group_dead_pgid ... ok [INFO] [stdout] test daemon::process::tests::test_terminate_process_group_noop_for_low_pgid ... ok [INFO] [stdout] test daemon::interactive_prd::tests::detect_approval_uses_word_boundaries ... ok [INFO] [stdout] test daemon::interactive_prd::tests::detect_approval_strips_fenced_and_inline_code ... ok [INFO] [stdout] test daemon::rebase_agent::tests::classify_pure_conflict_exit_code_1_with_conflict_marker ... ok [INFO] [stdout] test daemon::rebase_agent::tests::agent_error_messages_say_attempted ... ok [INFO] [stdout] test daemon::rebase_agent::tests::classify_pure_conflict_exit_code_1_with_could_not_apply ... ok [INFO] [stdout] test daemon::rebase_agent::tests::classify_pure_non_conflict_exit_code_not_1 ... ok [INFO] [stdout] test daemon::rebase_agent::tests::classify_pure_non_conflict_no_indicator ... ok [INFO] [stdout] test daemon::interactive_prd::tests::mixed_comments_approval_plus_feedback_triggers_approval ... ok [INFO] [stdout] test daemon::rebase_agent::tests::classify_rebase_failure_has_conflicts_false ... ok [INFO] [stdout] test daemon::interactive_prd::tests::detect_approval_plain_feedback_returns_false ... ok [INFO] [stdout] test daemon::interactive_prd::tests::transition_path_awaiting_feedback_approval ... ok [INFO] [stdout] test daemon::rebase_agent::tests::max_iterations_constant_is_10 ... ok [INFO] [stdout] test daemon::interactive_prd::tests::refresh_repo_clone_fetches_and_resets_real_repo ... ok [INFO] [stdout] test daemon::rebase_agent::tests::parse_rebase_agent_backend_claude_defaults_to_opus ... ok [INFO] [stdout] test daemon::rebase_agent::tests::parse_rebase_agent_backend_claude_opus ... ok [INFO] [stdout] test daemon::rebase_agent::tests::parse_rebase_agent_backend_claude_sonnet ... ok [INFO] [stdout] test daemon::rebase_agent::tests::parse_rebase_agent_backend_none ... ok [INFO] [stdout] test daemon::rebase_agent::tests::parse_rebase_agent_backend_rejects_empty_string ... ok [INFO] [stdout] test daemon::rebase_agent::tests::parse_rebase_agent_backend_rejects_unknown_value ... ok [INFO] [stdout] test daemon::rebase_agent::tests::parse_rebase_agent_backend_trimmed_none ... ok [INFO] [stdout] test daemon::rebase_agent::tests::prompt_forbids_rebase_continue_and_abort ... ok [INFO] [stdout] test daemon::rebase_agent::tests::prompt_forbids_unrelated_file_edits ... ok [INFO] [stdout] test daemon::rebase_agent::tests::prompt_includes_rebase_target_and_files ... ok [INFO] [stdout] test daemon::rebase_agent::tests::prompt_requires_git_add ... ok [INFO] [stdout] test daemon::rebase_agent::tests::remaining_budget_expired_message_contains_timeout ... ok [INFO] [stdout] test daemon::rebase_agent::tests::remaining_budget_returns_duration_when_not_expired ... ok [INFO] [stdout] test daemon::rebase_agent::tests::remaining_budget_returns_error_when_expired ... ok [INFO] [stdout] test daemon::interactive_prd::tests::transition_path_awaiting_feedback_revision ... ok [INFO] [stdout] test daemon::rebase_agent::tests::resolve_with_empty_backend_returns_clear_error ... ok [INFO] [stdout] test daemon::rebase_agent::tests::none_backend_error_says_skipped_disabled ... ok [INFO] [stdout] test daemon::rebase_agent::tests::resolve_with_trimmed_none_backend_returns_skipped_error ... ok [INFO] [stdout] test daemon::refine::tests::build_refinement_prompt_includes_system_instructions ... ok [INFO] [stdout] test daemon::refine::tests::build_refinement_prompt_wraps_raw_idea ... ok [INFO] [stdout] test daemon::refine::tests::create_backend_accepts_bare_name ... ok [INFO] [stdout] test daemon::refine::tests::create_backend_accepts_claude ... ok [INFO] [stdout] test daemon::refine::tests::create_backend_accepts_codex ... ok [INFO] [stdout] test daemon::refine::tests::create_backend_rejects_unknown ... ok [INFO] [stdout] test daemon::rebase_agent::tests::classify_rebase_failure_detects_conflict ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_cleaned_body_preserves_structure ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_delimiter_in_content_not_split ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_empty_cleaned_body_degraded ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_enforces_body_validation_for_structured_output ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_no_cleaned_body_fallback ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_multi_delimiter_first_split_point ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_rejects_empty_structured_title ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_rejects_overlong_title ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_short_cleaned_body_accepted ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_truncated_cleaned_body_rejected ... ok [INFO] [stdout] test daemon::refine::tests::validate_output_accepts_valid_length ... ok [INFO] [stdout] test daemon::refine::tests::validate_output_boundary_at_min_length ... ok [INFO] [stdout] test daemon::refine::tests::validate_output_rejects_empty ... ok [INFO] [stdout] test daemon::refine::tests::validate_output_rejects_too_short ... ok [INFO] [stdout] test daemon::refine::tests::validate_output_rejects_whitespace_only ... ok [INFO] [stdout] test daemon::refine::tests::validate_output_trims_whitespace ... ok [INFO] [stdout] test daemon::refine::tests::parse_refined_output_three_section_success ... ok [INFO] [stdout] test daemon::rebase_agent::tests::resolve_with_invalid_backend_returns_clear_error ... ok [INFO] [stdout] test daemon::rebase_agent::tests::resolve_with_none_backend_returns_error_via_string_entrypoint ... ok [INFO] [stdout] test daemon::runtime::tests::build_pr_body_context_cap ... ok [INFO] [stdout] test daemon::runtime::tests::build_pr_body_no_context_legacy_task ... ok [INFO] [stdout] test daemon::runtime::tests::build_pr_body_diff_stat_cap ... ok [INFO] [stdout] test daemon::runtime::tests::build_pr_title_sanitizes_newlines ... ok [INFO] [stdout] test daemon::runtime::tests::complete_task_retry_policy_has_required_cap_and_delay ... ok [INFO] [stdout] test daemon::runtime::tests::daemon_branch_format_validation_accepts_default ... ok [INFO] [stdout] test daemon::runtime::tests::build_pr_title_truncates_long_title ... ok [INFO] [stdout] test daemon::runtime::tests::daemon_branch_format_validation_rejects_incompatible_format ... ok [INFO] [stdout] test daemon::runtime::tests::extract_issue_body_handles_missing_or_empty_body ... ok [INFO] [stdout] test daemon::runtime::tests::extract_issue_body_reads_body_after_title_separator ... ok [INFO] [stdout] test daemon::runtime::tests::extract_original_title_body_only ... ok [INFO] [stdout] test daemon::runtime::tests::extract_original_title_empty ... ok [INFO] [stdout] test daemon::runtime::tests::extract_original_title_no_body ... ok [INFO] [stdout] test daemon::runtime::tests::extract_original_title_with_body ... ok [INFO] [stdout] test daemon::runtime::tests::extract_project_ref_non_matching_branches ... ok [INFO] [stdout] test daemon::runtime::tests::extract_project_ref_success ... ok [INFO] [stdout] test daemon::rebase_agent::tests::is_rebase_in_progress_false_for_clean_repo ... ok [INFO] [stdout] test daemon::runtime::tests::final_prompt_uses_prompt_original_signal_and_reads_prompt_md ... ok [INFO] [stdout] test daemon::runtime::tests::quick_prd_detection_posts_correct_marker_header_and_body ... ok [INFO] [stdout] test daemon::runtime::tests::resume_decision_requires_issue_prompt_md ... ok [INFO] [stdout] test daemon::runtime::tests::runtime_pr_diff_stat_failure_fallback ... ok [INFO] [stdout] test daemon::runtime::tests::should_close_no_diff_draft_pr_only_for_no_diff_drafts ... ok [INFO] [stdout] test daemon::runtime::tests::should_mark_draft_pr_ready_only_on_completed_with_changes ... ok [INFO] [stdout] test daemon::runtime::tests::should_retry_complete_task_retries_only_transient_errors_under_cap ... ok [INFO] [stdout] test daemon::rebase_agent::tests::classify_rebase_failure_missing_conflict_indicator_in_stderr ... ok [INFO] [stdout] test daemon::runtime::tests::single_watcher_run_posts_both_artifact_comments ... ok [INFO] [stdout] test daemon::runtime::tests::truncate_for_github_appends_note_within_limit ... ok [INFO] [stdout] test daemon::runtime::tests::watcher_idempotency_prevents_duplicate_comments_on_redispatch ... ok [INFO] [stdout] test daemon::runtime::tests::write_body_file_creates_readable_temp ... ok [INFO] [stdout] test daemon::tests::format_task_id_constructs_expected_string ... ok [INFO] [stdout] test daemon::runtime::tests::multiple_spec_candidates_choose_newest_then_lexical_tiebreak ... ok [INFO] [stdout] test daemon::runtime::tests::stale_artifacts_older_than_child_start_are_ignored ... ok [INFO] [stdout] test daemon::rebase_agent::tests::classify_rebase_failure_non_conflict_exit_code ... ok [INFO] [stdout] test error::tests::backend_timeout_display_and_debug_include_idle_variant_context ... ok [INFO] [stdout] test error::tests::backend_timeout_display_and_debug_include_walltime_variant_context ... ok [INFO] [stdout] test error::tests::branch_mismatch_display_includes_expected_and_actual ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] test error::tests::interactive_prd_failed_has_expected_exit_code ... ok [INFO] [stdout] test error::tests::is_quota_error_matches_known_patterns ... ok [INFO] [stdout] test error::tests::is_quota_error_rejects_unrelated_errors ... ok [INFO] [stdout] test error::tests::is_transient_distinguishes_terminal_and_transient_errors ... ok [INFO] [stdout] test daemon::runtime::tests::await_watcher_with_timeout_impl_aborts_stuck_task ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp3fv0CO/.git/ [INFO] [stdout] test daemon::worktree::tests::create_worktree_returns_expected_worktree_path ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpNWXjn8/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpxjIidE/remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Switched to a new branch 'ralph/test' [INFO] [stderr] Switched to branch 'ralph/test' [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Switched to a new branch 'ralph/daemon/test-task' [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmpxjIidE/remote.git [INFO] [stderr] * [new branch] main -> main [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Cloning into '/tmp/.tmpxjIidE/clone'... [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] test daemon::runtime::tests::cancellation_triggers_final_sweep_without_missing_artifact ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpxjIidE/setup/.git/ [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp6xJDVR/remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp6xJDVR/work/.git/ [INFO] [stdout] [main (root-commit) 8fdac4d] initial on main [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] test daemon::runtime::tests::github_post_failure_retries_without_panic ... ok [INFO] [stdout] [master (root-commit) 50d33ed] ralph: bootstrap empty commit [INFO] [stdout] [master aae0485] add project state [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 project-state.txt [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpPTB4Ca/remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpPTB4Ca/setup/.git/ [INFO] [stdout] test daemon::worktree::tests::verify_worktree_branch_returns_ok_for_matching_branch ... ok [INFO] [stdout] test daemon::worktree::tests::verify_worktree_branch_returns_error_for_missing_expected_branch ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpxYlqWj/remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp8snKOg/remote.git/ [INFO] [stdout] test git::branch::tests::merge_base_branch_noop_when_up_to_date ... ok [INFO] [stdout] branch 'main' set up to track 'origin/main'. [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp9sluW9/remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpxYlqWj/setup/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp9sluW9/setup/.git/ [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] test git::branch::tests::merge_base_branch_syncs_new_commits ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp8snKOg/setup/.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpIJlucG/remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] done. [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpIJlucG/setup/.git/ [INFO] [stderr] hint: [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] To /tmp/.tmp8snKOg/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpPTB4Ca/remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] Cloning into '/tmp/.tmp8snKOg/clone'... [INFO] [stderr] Cloning into '/tmp/.tmpPTB4Ca/clone'... [INFO] [stderr] done. [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmp9sluW9/remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] Deleted branch master (was 5a7841a). [INFO] [stderr] To /tmp/.tmpxYlqWj/remote.git [INFO] [stdout] test git::branch::tests::sync_project_branch_autodetects_when_configured_base_missing ... ok [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] test git::branch::tests::sync_project_branch_bootstraps_empty_remote ... ok [INFO] [stderr] Cloning into '/tmp/.tmp9sluW9/clone'... [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] Cloning into '/tmp/.tmpxYlqWj/clone'... [INFO] [stderr] done. [INFO] [stderr] Switched to a new branch 'scratch' [INFO] [stderr] done. [INFO] [stderr] done. [INFO] [stderr] To /tmp/.tmpIJlucG/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Switched to a new branch 'main' [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpJpkb11/remote.git/ [INFO] [stderr] Switched to a new branch 'ralph/issue-10' [INFO] [stderr] Cloning into '/tmp/.tmpIJlucG/clone'... [INFO] [stderr] done. [INFO] [stdout] [main d2f477a] main base commit 1 [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 main-base-1.txt [INFO] [stderr] Switched to a new branch 'scratch' [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpXyHP7o/remote.git/ [INFO] [stdout] [ralph/issue-10 f69453b] base commit [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 base.txt [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpXyHP7o/setup/.git/ [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 17fce2f] advance remote base [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 remote-base.txt [INFO] [stderr] To /tmp/.tmpxYlqWj/remote.git [INFO] [stderr] * [new branch] ralph/issue-10 -> ralph/issue-10 [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpXyHP7o/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] To /tmp/.tmpIJlucG/remote.git [INFO] [stderr] 5a7841a..17fce2f master -> master [INFO] [stderr] To /tmp/.tmp9sluW9/remote.git [INFO] [stdout] [ralph/issue-10 b4d84fe] local only: should vanish [INFO] [stderr] * [new branch] main -> main [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] Cloning into '/tmp/.tmpXyHP7o/clone'... [INFO] [stdout] create mode 100644 local-artifact.txt [INFO] [stdout] branch 'main' set up to track 'origin/main'. [INFO] [stderr] done. [INFO] [stdout] HEAD is now at 5a7841a initial [INFO] [stdout] [main 8035d60] main base commit 2 [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 main-base-2.txt [INFO] [stdout] test git::branch::tests::sync_project_branch_creates_from_origin_head_when_missing ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpM0VbqX/remote.git/ [INFO] [stderr] Switched to a new branch 'scratch' [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stdout] [master (root-commit) 5a7841a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stdout] [ralph/issue-42 7e10f4c] remote commit [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 remote-file.txt [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpM0VbqX/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] test git::branch::tests::sync_project_branch_falls_back_to_local_base_when_origin_missing ... ok [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpDUnwEC/remote.git/ [INFO] [stderr] To /tmp/.tmp9sluW9/remote.git [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] d2f477a..8035d60 main -> main [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stdout] test git::branch::tests::sync_project_branch_discards_local_only_commit ... ok [INFO] [stderr] To /tmp/.tmpJpkb11/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Cloning into 'work'... [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpPOg8O0/remote.git/ [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] To /tmp/.tmpXyHP7o/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stdout] HEAD is now at d2f477a main base commit 1 [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stderr] To /tmp/.tmpJpkb11/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stderr] Switched to a new branch 'ralph/issue-99' [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] Switched to branch 'master' [INFO] [stdout] test git::branch::tests::sync_project_branch_force_updates_local_base_branch ... ok [INFO] [stdout] Your branch is up to date with 'origin/master'. [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpu0o1cb/.git/ [INFO] [stdout] test git::commit::tests::commit_and_push_initial_prompt_fails_on_branch_mismatch ... ok [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_canonical_notes ... ok [INFO] [stderr] Already on 'ralph/issue-42' [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_canonical_response ... ok [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_extra_suffix ... ok [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_four_digit_seq ... ok [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_no_timestamp ... ok [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_non_canonical_draft ... ok [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_readme ... ok [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_response_999 ... ok [INFO] [stderr] To /tmp/.tmpM0VbqX/remote.git [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_review_file ... ok [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_short_timestamp ... ok [INFO] [stdout] test git::commit::tests::is_stray_impl_artifact_spec ... ok [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpIJJnH3/.git/ [INFO] [stderr] Switched to a new branch 'ralph/issue-99' [INFO] [stdout] [master (root-commit) 551db0a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [ralph/issue-42 9c68817] local only commit [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 local-only.txt [INFO] [stderr] To /tmp/.tmpDUnwEC/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master (root-commit) 551db0a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpPOg8O0/remote.git [INFO] [stdout] [master 3c0474d] add tracked stray files [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] 2 files changed, 2 insertions(+) [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stdout] create mode 100644 20260304120000-impl-notes.md [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stdout] create mode 100644 20260304120000-impl-response-001.md [INFO] [stderr] To /tmp/.tmpM0VbqX/remote.git [INFO] [stdout] branch 'ralph/issue-99' set up to track 'origin/ralph/issue-99'. [INFO] [stderr] * [new branch] ralph/issue-99 -> ralph/issue-99 [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stderr] To /tmp/.tmpPOg8O0/remote.git [INFO] [stdout] test git::commit::tests::remove_stray_impl_artifacts_cleans_tracked_and_untracked ... ok [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp2Y63ZQ/remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] To /tmp/.tmpDUnwEC/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stdout] test git::branch::tests::sync_project_branch_force_updates_custom_base_branch ... ok [INFO] [stdout] test git::ralph_commit::tests::build_and_parse_round_trip ... ok [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] test git::commit::tests::commit_and_push_phase_transition_push_failure_keeps_local_commit_without_remote_advance ... ok [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpcFAJjH/remote.git/ [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stdout] test git::branch::tests::sync_project_branch_resets_to_remote_when_exists ... ok [INFO] [stderr] hint: git branch -m [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpPwLwST/remote.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stdout] test git::commit::tests::commit_and_push_phase_transition_pushes_structured_checkpoint ... ok [INFO] [stderr] done. [INFO] [stdout] Initialized empty Git repository in /tmp/.tmphgV4cJ/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpIBOMEo/remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stderr] Cloning into 'work'... [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] test git::ralph_commit::tests::derive_position_defaults_when_no_ralph_commit_exists ... ok [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpXsEYmg/remote.git/ [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] To /tmp/.tmpcFAJjH/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] test git::commit::tests::commit_and_push_initial_prompt_stages_only_prompt_inputs ... ok [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] test git::ralph_commit::tests::parse_rejects_malformed_subject ... ok [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] test git::ralph_commit::tests::parse_rejects_missing_required_trailer ... ok [INFO] [stderr] hint: [INFO] [stdout] test git::ralph_commit::tests::parse_rejects_subject_and_trailer_disagreement ... ok [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpMH2dsi/remote.git/ [INFO] [stderr] hint: [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] To /tmp/.tmp2Y63ZQ/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] To /tmp/.tmpPwLwST/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stderr] To /tmp/.tmpcFAJjH/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stdout] [ralph/issue-42 07e1016] ralph(issue-42): loop 1 planning -> implementing [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stderr] To /tmp/.tmpIBOMEo/remote.git [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stderr] To /tmp/.tmp2Y63ZQ/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stdout] test git::commit::tests::counts_only_matching_project_and_transition_messages ... ok [INFO] [stdout] [ralph/issue-42 c155aa8] ralph(issue-42): loop 1 planning -> implementing [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmpIBOMEo/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpcFAJjH/remote.git [INFO] [stderr] 080560a..07e1016 HEAD -> ralph/issue-42 [INFO] [stderr] Cloning into 'work'... [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpiDhsyo/remote.git/ [INFO] [stdout] [ralph/issue-42 c155aa8] ralph(issue-42): loop 1 planning -> implementing [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stderr] To /tmp/.tmpPwLwST/remote.git [INFO] [stdout] [ralph/issue-42 ad90dbe] ralph(issue-42): loop 2 implementing -> reviewing [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpXsEYmg/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stderr] To /tmp/.tmpIBOMEo/remote.git [INFO] [stderr] 080560a..c155aa8 HEAD -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmp2Y63ZQ/remote.git [INFO] [stderr] 080560a..c155aa8 HEAD -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpMH2dsi/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] To /tmp/.tmpcFAJjH/remote.git [INFO] [stderr] 07e1016..ad90dbe HEAD -> ralph/issue-42 [INFO] [stdout] [master (root-commit) 080560a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [ralph/issue-42 10eb719] ralph(issue-42): loop 2 implementing -> reviewing [INFO] [stdout] [ralph/issue-42 98dfe19] chore: non-ralph commit [INFO] [stderr] To /tmp/.tmpMH2dsi/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpIBOMEo/remote.git [INFO] [stderr] c155aa8..98dfe19 HEAD -> ralph/issue-42 [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stdout] [ralph/issue-42 917730d] ralph(issue-42): loop 2 implementing -> reviewing [INFO] [stderr] To /tmp/.tmpiDhsyo/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stderr] To /tmp/.tmpXsEYmg/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stdout] [ralph/issue-42 c155aa8] ralph(issue-42): loop 1 planning -> implementing [INFO] [stderr] To /tmp/.tmpiDhsyo/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stdout] test git::ralph_commit::tests::newest_valid_with_older_malformed_succeeds ... ok [INFO] [stdout] [ralph/issue-42 c155aa8] ralph(issue-42): loop 1 planning -> implementing [INFO] [stdout] test daemon::process::tests::test_terminate_spawned_process_group ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [ralph/issue-42 c155aa8] ralph(issue-42): loop 1 planning -> implementing [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmpMH2dsi/remote.git [INFO] [stderr] 080560a..c155aa8 HEAD -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpIBOMEo/remote.git [INFO] [stderr] 98dfe19..917730d HEAD -> ralph/issue-42 [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpXuXQZM/remote.git/ [INFO] [stderr] Cloning into 'work'... [INFO] [stdout] test git::ralph_commit::tests::no_checkpoint_defaults_to_loop_1_planning ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpT7M0Dg/remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] Cloning into 'work'... [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpQYOgTs/remote.git/ [INFO] [stdout] [ralph/issue-42 34aed8a] ralph(issue-42): loop 2 implementing -> reviewing [INFO] [stderr] Cloning into 'work'... [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stdout] test git::ralph_commit::tests::parse_last_ralph_commit_reads_latest_remote_checkpoint ... ok [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stdout] test output_log::tests::collision_safe_across_projects ... ok [INFO] [stdout] test output_log::tests::creates_missing_parent_directories ... ok [INFO] [stdout] test output_log::tests::derives_loop_scoped_log_path ... ok [INFO] [stdout] test output_log::tests::derives_prompt_reviewer_log_path_when_loop_is_none ... ok [INFO] [stdout] test output_log::tests::fallback_flag_semantics_locked_down ... ok [INFO] [stdout] test output_log::tests::formats_loop_number_edges_with_three_digits ... ok [INFO] [stdout] test output_log::tests::log_writer_appends_across_instances ... ok [INFO] [stdout] test output_log::tests::log_writer_attempt_counter_increments ... ok [INFO] [stdout] test output_log::tests::log_writer_disabled_on_bad_path_continues_silently ... ok [INFO] [stdout] test git::ralph_commit::tests::resolve_checkpoint_ref_prefers_local_when_ahead ... ok [INFO] [stdout] test output_log::tests::log_writer_preserves_cr_and_partial_line_bytes ... ok [INFO] [stdout] test output_log::tests::log_writer_opens_and_appends ... ok [INFO] [stdout] test output_log::tests::log_writer_prompt_reviewer_uses_flat_path ... ok [INFO] [stdout] test output_log::tests::mixed_timeout_and_parse_retry_numbering ... ok [INFO] [stdout] test output_log::tests::parse_retry_path_attempt_numbering ... ok [INFO] [stdout] test output_log::tests::sanitization_collapses_and_trims_underscores ... ok [INFO] [stdout] test output_log::tests::sanitization_handles_empty_input ... ok [INFO] [stdout] test output_log::tests::sanitizes_unsafe_filename_characters ... ok [INFO] [stdout] test output_log::tests::separator_format_contains_required_fields ... ok [INFO] [stdout] test output_log::tests::separator_format_fallback_flag ... ok [INFO] [stdout] test output_log::tests::timeout_footer_format_contains_timestamp ... ok [INFO] [stdout] test output_log::tests::timeout_retry_path_attempt_numbering ... ok [INFO] [stdout] test prd::answers::tests::hash_is_stable_for_same_content ... ok [INFO] [stdout] test prd::answers::tests::load_returns_empty_map_when_file_missing ... ok [INFO] [stdout] test prd::answers::tests::merge_overwrites_existing_and_adds_new_keys ... ok [INFO] [stdout] test prd::answers::tests::yaml_roundtrip ... ok [INFO] [stdout] test prd::cache::tests::creates_cache_dir_with_expected_hash ... ok [INFO] [stdout] test prd::cache::tests::meta_roundtrip ... ok [INFO] [stdout] test output_log::tests::log_writer_timeout_footer_appends ... ok [INFO] [stderr] To /tmp/.tmpXsEYmg/remote.git [INFO] [stderr] 080560a..c155aa8 HEAD -> ralph/issue-42 [INFO] [stderr] warning: You appear to have cloned an empty repository. [INFO] [stderr] done. [INFO] [stdout] test git::commit::tests::sync_project_branch_discards_local_only_checkpoint_and_position_reverts ... ok [INFO] [stdout] test prd::cache::tests::prd_lock_releases_on_drop ... ok [INFO] [stdout] test prd::cache::tests::resume_validation_detects_idea_mismatch ... ok [INFO] [stdout] test prd::cache::tests::should_skip_stage_when_input_hash_matches ... ok [INFO] [stdout] test prd::cache::tests::stage_output_roundtrip ... ok [INFO] [stdout] test prd::cache::tests::writes_missing_info_report ... ok [INFO] [stdout] test prd::gaps::tests::parse_gap_report_empty_questions_list ... ok [INFO] [stdout] test prd::gaps::tests::parse_gap_report_malformed_json_returns_error ... ok [INFO] [stdout] test prd::gaps::tests::parse_gap_report_missing_fence_markers_returns_error ... ok [INFO] [stdout] test prd::gaps::tests::parse_gap_report_valid_fenced_json ... ok [INFO] [stdout] test prd::gaps::tests::parse_validation_result_invalid_with_issues ... ok [INFO] [stdout] test prd::gaps::tests::test_gap_report_serde_roundtrip ... ok [INFO] [stdout] test prd::gaps::tests::parse_validation_result_valid ... ok [INFO] [stdout] test prd::gaps::tests::test_question_kind_serde_roundtrip ... ok [INFO] [stdout] test prd::gaps::tests::test_question_typed_impact_stage ... ok [INFO] [stdout] test prd::gaps::tests::validation_result_serde_roundtrip ... ok [INFO] [stdout] test prd::interaction::tests::mock_interaction_returns_canned_answers_and_none_when_exhausted ... ok [INFO] [stdout] test prd::interaction::tests::non_interactive_interaction_always_returns_none ... ok [INFO] [stdout] test prd::interaction::tests::parse_question_answer_handles_defaults_and_kinds ... ok [INFO] [stdout] test prd::interaction::tests::plain_interaction_dispatches_commands ... ok [INFO] [stdout] test prd::interaction::tests::plain_interaction_parses_commands ... ok [INFO] [stdout] test prd::quick::tests::test_check_spec_sections_all_present ... ok [INFO] [stdout] test prd::quick::tests::test_check_spec_sections_some_missing ... ok [INFO] [stdout] test prd::quick::tests::test_check_spec_sections_with_frontmatter ... ok [INFO] [stdout] test prd::quick::tests::test_dry_run_renders_prompt ... ok [INFO] [stdout] [master (root-commit) 069d3e7] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] test prd::cache::tests::prd_lock_acquisition_succeeds ... ok [INFO] [stdout] test prd::quick::tests::test_format_issues ... ok [INFO] [stdout] test prd::quick::tests::test_malformed_revision_keeps_previous_spec ... ok [INFO] [stdout] test prd::quick::tests::test_empty_issues_auto_approval ... ok [INFO] [stdout] test prd::quick::tests::test_parse_review_feedback_malformed ... ok [INFO] [stdout] test prd::quick::tests::test_parse_review_feedback_approved ... ok [INFO] [stdout] test prd::quick::tests::test_parse_review_feedback_rejected ... ok [INFO] [stdout] test prd::quick::tests::test_render_prompt ... ok [INFO] [stdout] test prd::quick::tests::test_review_feedback_serde_roundtrip ... ok [INFO] [stdout] test prd::quick::tests::test_review_parse_retry_exhaustion ... ok [INFO] [stdout] test prd::quick::tests::test_revision_artifact_writing ... ok [INFO] [stdout] test prd::quick::tests::test_review_parse_retry_success ... ok [INFO] [stdout] test prd::stages::tests::test_check_stage_output_valid ... ok [INFO] [stdout] test prd::stages::tests::test_check_stage_output_with_frontmatter ... ok [INFO] [stdout] test prd::stages::tests::test_check_stage_output_missing_sections ... ok [INFO] [stderr] To /tmp/.tmpiDhsyo/remote.git [INFO] [stderr] 080560a..c155aa8 HEAD -> ralph/issue-42 [INFO] [stdout] test prd::quick::tests::test_section_retry_limit ... ok [INFO] [stdout] [ralph/issue-42 34aed8a] ralph(issue-42): loop 2 implementing -> reviewing [INFO] [stdout] test prd::stages::tests::test_format_answers_empty ... ok [INFO] [stdout] test prd::stages::tests::test_gap_analysis_prompt ... ok [INFO] [stdout] test prd::stages::tests::test_format_answers_with_data ... ok [INFO] [stdout] test prd::stages::tests::test_ideation_prompt ... ok [INFO] [stdout] test prd::stages::tests::test_render_template ... ok [INFO] [stdout] [master (root-commit) 069d3e7] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] test prd::stages::tests::test_prd_prompt ... ok [INFO] [stdout] test prd::stages::tests::test_required_sections_per_stage ... ok [INFO] [stdout] test prd::stages::tests::test_research_prompt ... ok [INFO] [stdout] test prd::stages::tests::test_synthesis_prompt ... ok [INFO] [stdout] test prd::state::tests::test_prd_meta_serde ... ok [INFO] [stdout] test prd::state::tests::test_stage_artifact_filename ... ok [INFO] [stdout] test prd::state::tests::test_stage_index ... ok [INFO] [stdout] test prd::state::tests::test_stage_ordering ... ok [INFO] [stdout] test prd::state::tests::test_stage_serde_roundtrip ... ok [INFO] [stdout] test project::artifacts::tests::final_review_artifact_kinds_render_expected_names_and_types ... ok [INFO] [stdout] test project::artifacts::tests::qa_and_acceptance_artifact_kinds_render_expected_names_and_types ... ok [INFO] [stdout] test project::artifacts::tests::resolve_artifact_path_by_suffix_prefers_latest_timestamped_file ... ok [INFO] [stdout] [ralph/issue-42 5c0d3b7] ralph(issue-42): loop 2 implementing -> reviewing [INFO] [stdout] [master (root-commit) 069d3e7] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] test prd::stages::tests::test_validation_prompt ... ok [INFO] [stdout] test prd::state::tests::test_pipeline_context_serde ... ok [INFO] [stdout] test project::artifacts::tests::write_artifact_prefixes_filename_with_timestamp ... ok [INFO] [stdout] test project::artifacts::tests::write_project_scoped_artifact_writes_project_frontmatter_schema ... ok [INFO] [stdout] test project::lifecycle::tests::load_quick_dev_phase_ignores_malformed_state_json ... ok [INFO] [stdout] test project::lifecycle::tests::load_quick_dev_phase_works_with_valid_state_json ... ok [INFO] [stderr] To /tmp/.tmpQYOgTs/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] To /tmp/.tmpT7M0Dg/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] To /tmp/.tmpiDhsyo/remote.git [INFO] [stderr] c155aa8..34aed8a HEAD -> ralph/issue-42 [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] To /tmp/.tmpXsEYmg/remote.git [INFO] [stderr] c155aa8..5c0d3b7 HEAD -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpQYOgTs/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpT7M0Dg/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpXuXQZM/remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] Switched to a new branch 'ralph/issue-42' [INFO] [stderr] To /tmp/.tmpQYOgTs/remote.git [INFO] [stderr] 069d3e7..92943d7 HEAD -> ralph/issue-42 [INFO] [stderr] To /tmp/.tmpXuXQZM/remote.git [INFO] [stderr] * [new branch] ralph/issue-42 -> ralph/issue-42 [INFO] [stderr] Switched to branch 'master' [INFO] [stdout] test project::lifecycle::tests::reconstruction_project_override_takes_precedence_over_global ... ok [INFO] [stdout] test project::lifecycle::tests::reconstruction_uses_global_completion_threshold_override ... ok [INFO] [stdout] test project::state::tests::final_review_requires_iteration_one ... ok [INFO] [stdout] test project::state::tests::legacy_state_without_created_at_deserializes_to_sentinel ... ok [INFO] [stdout] test project::state::tests::legacy_state_without_prompt_review_field_deserializes_to_false ... ok [INFO] [stdout] test project::state::tests::legacy_state_without_quick_dev_phase_deserializes_to_none ... ok [INFO] [stdout] test project::state::tests::legacy_state_without_session_store_deserializes_to_empty ... ok [INFO] [stdout] test project::state::tests::new_state_defaults_prompt_review_completed_to_false ... ok [INFO] [stdout] test project::state::tests::new_state_defaults_quick_dev_phase_to_none ... ok [INFO] [stdout] test project::state::tests::new_state_initializes_empty_session_store ... ok [INFO] [stdout] test project::state::tests::new_state_sets_created_at ... ok [INFO] [stdout] test project::state::tests::remove_loop_clears_session_records ... ok [INFO] [stdout] test project::state::tests::session_store_lookup_finds_matching_record ... ok [INFO] [stdout] test project::state::tests::session_store_remove_for_loop_clears_matching_records ... ok [INFO] [stdout] test project::state::tests::session_store_serde_roundtrip ... ok [INFO] [stdout] test project::state::tests::session_store_upsert_replaces_existing_record ... ok [INFO] [stdout] test project::state::tests::state_roundtrip_preserves_quick_dev_phase ... ok [INFO] [stdout] test prompts::template_introspection::tests::load_template_source_reads_file_when_present ... ok [INFO] [stdout] test prompts::template_introspection::tests::load_template_source_uses_fallback_when_missing ... ok [INFO] [stdout] test prompts::template_introspection::tests::template_uses_var_detects_absent_placeholder ... ok [INFO] [stdout] test prompts::template_introspection::tests::template_uses_var_detects_present_placeholder ... ok [INFO] [stdout] test prompts::template_introspection::tests::template_uses_var_requires_exact_match ... ok [INFO] [stdout] test prompts::template_introspection::tests::template_uses_var_returns_true_for_repeated_placeholders ... ok [INFO] [stdout] test util::slug::tests::slugifies_per_convention ... ok [INFO] [stdout] test util::slug::tests::truncates_slug ... ok [INFO] [stdout] test validate::harness::tests::env_removal_preserves_non_removed_variables ... ok [INFO] [stdout] test validate::harness::tests::env_removal_removes_variable_from_child ... ok [INFO] [stdout] test validate::tests_interactive_prd::parse_approved_spec_ignores_marker_inside_draft_body ... ok [INFO] [stdout] test workflow::orchestrator::tests::bootstrap_hash_changes_on_backend_change ... ok [INFO] [stdout] test workflow::orchestrator::tests::bootstrap_hash_changes_on_prompt_hash_change ... ok [INFO] [stdout] test workflow::orchestrator::tests::bootstrap_hash_changes_on_role_change ... ok [INFO] [stdout] HEAD is now at c155aa8 ralph(issue-42): loop 1 planning -> implementing [INFO] [stdout] test workflow::orchestrator::tests::bootstrap_hash_changes_on_spec_content_change ... ok [INFO] [stdout] test workflow::orchestrator::tests::bootstrap_hash_changes_on_template_content_change ... ok [INFO] [stdout] test workflow::orchestrator::tests::bootstrap_hash_includes_version_salt ... ok [INFO] [stdout] test workflow::orchestrator::tests::bootstrap_hash_is_deterministic ... ok [INFO] [stdout] test workflow::orchestrator::tests::collect_history_returns_empty_when_cap_is_zero ... ok [INFO] [stdout] test workflow::orchestrator::tests::collect_qa_history_caps_to_highest_two_non_sequential ... ok [INFO] [stdout] test workflow::orchestrator::tests::collect_review_history_caps_to_highest_two_non_sequential ... ok [INFO] [stdout] test workflow::orchestrator::tests::collect_review_history_caps_to_latest_three_sequential ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_insufficient_min_completers ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_partial_threshold_half ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_partial_threshold_three_quarters ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_partial_threshold_two_thirds ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_single_completer_complete ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_single_completer_continue ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_unanimity_all_complete ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_unanimity_one_missing ... ok [INFO] [stdout] test workflow::orchestrator::tests::consensus_zero_total_completers ... ok [INFO] [stdout] test workflow::orchestrator::tests::expected_format_template_for_implementer_response_defaults_to_1 ... ok [INFO] [stdout] test workflow::orchestrator::tests::expected_format_template_for_implementer_response_substitutes_iteration ... ok [INFO] [stdout] test workflow::orchestrator::tests::expected_format_template_for_other_roles_ignores_iteration ... ok [INFO] [stdout] test workflow::orchestrator::tests::expected_format_template_for_qa_contains_pass_and_fail ... ok [INFO] [stdout] test workflow::orchestrator::tests::history_included_when_resume_rewrite_fallback_uses_fresh_prompt ... ok [INFO] [stdout] test workflow::orchestrator::tests::history_omitted_when_session_reused_and_config_disables_reused_history ... ok [INFO] [stdout] test workflow::orchestrator::tests::latest_completion_feedback_acceptance_failures_take_priority ... ok [INFO] [stdout] test workflow::orchestrator::tests::latest_completion_feedback_none_when_no_attempts ... ok [INFO] [stdout] test workflow::orchestrator::tests::latest_completion_feedback_none_when_verdict_complete ... ok [INFO] [stdout] test workflow::orchestrator::tests::latest_completion_feedback_returns_verdicts_on_continue ... ok [INFO] [stdout] test workflow::orchestrator::tests::latest_completion_feedback_uses_latest_attempt ... ok [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stdout] [ralph/issue-42 5190323] ralph(issue-42): loop 2 implementing -> qa [INFO] [stdout] test workflow::orchestrator::tests::max_backend_retries_accepts_five ... ok [INFO] [stdout] [ralph/issue-42 test workflow::orchestrator::tests::max_backend_retries_accepts_one ... ok [INFO] [stdout] 92943d7] ralph(issue-42): loop 1 planning -> implementing [INFO] [stdout] test workflow::orchestrator::tests::max_backend_retries_accepts_ten ... ok [INFO] [stdout] test workflow::orchestrator::tests::max_backend_retries_clamps_eleven_to_ten ... ok [INFO] [stdout] test project::lifecycle::tests::maybe_create_project_branch_still_errors_for_existing_non_head_branch ... ok [INFO] [stdout] test workflow::orchestrator::tests::max_backend_retries_rejects_empty_value ... ok [INFO] [stdout] test workflow::orchestrator::tests::max_backend_retries_rejects_non_numeric_value ... ok [INFO] [stdout] test workflow::orchestrator::tests::max_backend_retries_rejects_zero ... ok [INFO] [stdout] test workflow::orchestrator::tests::max_backend_retries_unset_defaults_to_three ... ok [INFO] [stdout] test workflow::orchestrator::tests::parse_retry_attempts_are_three_without_session ... ok [INFO] [stdout] test project::lifecycle::tests::maybe_create_project_branch_is_idempotent_when_head_matches_target ... ok [INFO] [stdout] test workflow::orchestrator::tests::planner_prompt_custom_template_without_master_placeholder_appends_once ... ok [INFO] [stdout] test workflow::orchestrator::tests::parse_retry_attempts_four_with_session_followup_and_token_metrics ... ok [INFO] [stdout] test workflow::orchestrator::tests::planner_prompt_default_template_has_single_master_prompt_section ... ok [INFO] [stdout] test git::ralph_commit::tests::parse_last_ralph_commit_rejects_malformed_newest_checkpoint ... ok [INFO] [stdout] test workflow::orchestrator::tests::max_backend_retries_clamps_large_numeric_value ... ok [INFO] [stdout] test workflow::orchestrator::tests::planner_prompt_full_json_has_no_nested_code_fences ... ok [INFO] [stdout] test workflow::orchestrator::tests::planner_prompt_includes_final_review_amendments_when_file_exists ... ok [INFO] [stdout] test git::ralph_commit::tests::resolve_checkpoint_ref_prefers_local_when_diverged ... ok [INFO] [stdout] test git::ralph_commit::tests::resolve_checkpoint_ref_returns_none_when_neither_exists ... ok [INFO] [stdout] test workflow::orchestrator::tests::planner_prompt_with_full_json_mode_includes_json ... ok [INFO] [stdout] test workflow::orchestrator::tests::planner_prompt_with_summary_mode_excludes_full_json ... ok [INFO] [stdout] test workflow::orchestrator::tests::preload_role_model_backends_covers_all_roles_for_all_backends ... ok [INFO] [stdout] test workflow::orchestrator::tests::resolve_tmux_settings_falls_back_to_config ... ok [INFO] [stdout] test workflow::orchestrator::tests::planner_prompt_omits_final_review_amendments_when_file_absent ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_specs_fulltext_mode_reads_spec_files ... ok [INFO] [stdout] test workflow::orchestrator::tests::preload_role_model_backends_is_noop_when_models_are_unset ... ok [INFO] [stdout] test workflow::orchestrator::tests::resolve_tmux_settings_prefers_cli_override ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_specs_titles_mode_cap_zero_returns_empty ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_specs_none_mode_returns_empty ... ok [INFO] [stdout] test workflow::orchestrator::tests::preload_role_model_backends_creates_expected_entries_for_default_config ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_specs_titles_mode_produces_bullet_titles ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_specs_cap_limits_to_latest_n ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_state_cap_limits_to_latest_n ... ok [INFO] [stdout] Your branch is up to date with 'origin/master'. [INFO] [stdout] branch 'ralph/issue-42' set up to track 'origin/ralph/issue-42'. [INFO] [stdout] test workflow::orchestrator::tests::summarize_state_includes_loop_metadata_excludes_feedback_body ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_state_cap_zero_shows_none ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_state_unlimited_includes_all ... ok [INFO] [stdout] test workflow::orchestrator::tests::summarize_state_verdict_deterministic_for_all_statuses ... ok [INFO] [stdout] test workflow::orchestrator::tests::validate_tmux_preflight_checks_when_enabled_and_not_dry_run ... ok [INFO] [stdout] test workflow::parser::tests::arbiter_output_rejects_invalid_ruling ... ok [INFO] [stdout] test workflow::parser::tests::arbiter_output_rejects_missing_ids ... ok [INFO] [stdout] test workflow::parser::tests::arbiter_output_rejects_missing_rationale ... ok [INFO] [stdout] test workflow::parser::tests::arbiter_output_success ... ok [INFO] [stdout] test workflow::parser::tests::codex_review_parser_rejects_wrong_h1 ... ok [INFO] [stdout] test workflow::parser::tests::codex_review_parser_tolerates_trailing_whitespace ... ok [INFO] [stdout] test workflow::parser::tests::arbiter_output_rejects_wrong_h1 ... ok [INFO] [stdout] test workflow::parser::tests::codex_review_parser_rejects_missing_h1 ... ok [INFO] [stdout] test workflow::parser::tests::codex_review_parser_strips_frontmatter ... ok [INFO] [stdout] test workflow::orchestrator::tests::validate_tmux_preflight_skips_check_for_dry_run ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_no_amendments_requires_summary ... ok [INFO] [stdout] test workflow::parser::tests::codex_review_parser_tolerates_leading_whitespace ... ok [INFO] [stdout] test workflow::parser::tests::extracts_commit_message_block ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_rejects_amendment_missing_affected_files ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_amendments_h1_but_no_blocks_fails ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_no_amendments ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_rejects_duplicate_amendment_ids ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_rejects_missing_h1 ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_rejects_wrong_h1 ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_rejects_amendment_missing_problem ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_strips_frontmatter ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_rejects_amendment_missing_proposed_change ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_rejects_second_amendment_missing_subsection ... ok [INFO] [stdout] test workflow::parser::tests::parses_codex_review_changes_requested ... ok [INFO] [stdout] test workflow::parser::tests::parses_codex_review_satisfied ... ok [INFO] [stdout] test workflow::parser::tests::parses_completer_verdict ... ok [INFO] [stdout] test workflow::parser::tests::parses_completion_heading ... ok [INFO] [stdout] test workflow::parser::tests::parses_feature_heading ... ok [INFO] [stdout] test workflow::parser::tests::final_reviewer_with_amendments ... ok [INFO] [stdout] test workflow::parser::tests::parses_completer_complete_verdict ... ok [INFO] [stdout] test workflow::parser::tests::parses_impl_notes ... ok [INFO] [stdout] test workflow::parser::tests::parses_prompt_reviewer_output ... ok [INFO] [stdout] test workflow::parser::tests::parses_qa_fail ... ok [INFO] [stdout] test workflow::parser::tests::parses_quick_final_review_issues_found ... ok [INFO] [stdout] Deleted branch ralph/issue-42 (was 92943d7). [INFO] [stdout] test workflow::parser::tests::parses_review_approved ... ok [INFO] [stdout] test workflow::parser::tests::parses_review_suggestions ... ok [INFO] [stdout] test workflow::parser::tests::planner_position_rejects_duplicate_ids ... ok [INFO] [stdout] test workflow::parser::tests::planner_position_rejects_extra_id ... ok [INFO] [stdout] test workflow::parser::tests::planner_position_rejects_invalid_value ... ok [INFO] [stdout] test workflow::parser::tests::planner_position_rejects_missing_h1 ... ok [INFO] [stdout] test workflow::parser::tests::parses_qa_pass ... ok [INFO] [stdout] test workflow::parser::tests::planner_position_rejects_missing_id ... ok [INFO] [stdout] test workflow::parser::tests::parses_quick_final_review_complete ... ok [INFO] [stdout] test workflow::parser::tests::planner_position_rejects_missing_rationale ... ok [INFO] [stdout] test workflow::parser::tests::planner_position_rejects_partial_rationale_coverage ... ok [INFO] [stdout] test workflow::parser::tests::planner_position_success ... ok [INFO] [stdout] test workflow::parser::tests::prompt_review_validator_accepts_accept_verdict ... ok [INFO] [stdout] test workflow::parser::tests::prompt_review_validator_accepts_reject_verdict_with_reason ... ok [INFO] [stdout] test workflow::parser::tests::prompt_reviewer_output_extracts_refined_prompt_to_eof_with_nested_headings ... ok [INFO] [stdout] test workflow::parser::tests::prompt_reviewer_output_rejects_empty_refined_prompt ... ok [INFO] [stdout] test workflow::parser::tests::prompt_reviewer_output_rejects_wrong_section_order ... ok [INFO] [stdout] test workflow::parser::tests::prompt_reviewer_output_requires_h1 ... ok [INFO] [stdout] test workflow::parser::tests::prompt_reviewer_output_requires_issues_found ... ok [INFO] [stdout] [ralph/issue-42 test workflow::parser::tests::prompt_reviewer_output_requires_refined_prompt_section ... ok [INFO] [stdout] 92943d7] ralph(issue-42): loop 1 planning -> implementing [INFO] [stdout] test workflow::parser::tests::qa_fail_requires_all_sections ... ok [INFO] [stdout] test workflow::parser::tests::qa_parser_rejects_malformed_output ... ok [INFO] [stdout] test workflow::parser::tests::qa_parser_rejects_missing_h1 ... ok [INFO] [stdout] test workflow::parser::tests::qa_parser_strips_frontmatter ... ok [INFO] [stdout] test workflow::parser::tests::prompt_review_validator_rejects_empty_reason ... ok [INFO] [stdout] test workflow::parser::tests::prompt_review_validator_rejects_unknown_verdict ... ok [INFO] [stdout] test workflow::parser::tests::qa_pass_requires_all_sections ... ok [INFO] [stdout] test workflow::parser::tests::quick_final_review_parser_rejects_wrong_h1 ... ok [INFO] [stdout] test workflow::parser::tests::prompt_reviewer_output_rejects_too_short_refined_prompt ... ok [INFO] [stdout] test workflow::parser::tests::quick_final_review_parser_strips_frontmatter ... ok [INFO] [stdout] test workflow::parser::tests::parses_impl_response_iteration ... ok [INFO] [stdout] test workflow::parser::tests::strip_frontmatter_preserves_tilde_fences ... ok [INFO] [stdout] test workflow::parser::tests::quick_final_review_parser_tolerates_leading_whitespace ... ok [INFO] [stdout] test workflow::parser::tests::quick_final_review_parser_tolerates_trailing_whitespace ... ok [INFO] [stdout] test workflow::parser::tests::strip_frontmatter_ignores_triple_dash_inside_content ... ok [INFO] [stdout] test workflow::parser::tests::strip_frontmatter_with_dash_fences_around_raw_output_corrupts_parse ... ok [INFO] [stdout] test workflow::parser::tests::vote_output_rejects_duplicate_ids ... ok [INFO] [stdout] test workflow::parser::tests::vote_output_rejects_missing_h1 ... ok [INFO] [stdout] test workflow::parser::tests::vote_output_rejects_missing_ids ... ok [INFO] [stdout] test workflow::parser::tests::vote_output_rejects_missing_rationale ... ok [INFO] [stdout] test workflow::parser::tests::strip_frontmatter_removes_yaml_header ... ok [INFO] [stdout] test workflow::parser::tests::quick_final_review_parser_rejects_missing_h1 ... ok [INFO] [stdout] test workflow::parser::tests::vote_output_success ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::guard_at_entry_codex_review_skips_when_at_limit ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::persist_quick_dev_state_apply_fixes ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::persist_quick_dev_state_final_review ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::persist_quick_dev_state_plan_and_implement ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::persist_quick_dev_state_sets_fields_correctly ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::quick_dev_phase_display ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::quick_dev_phase_to_current_phase_mapping ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::default_max_values ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::guard_at_entry_final_review_skips_when_at_limit ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resolve_implementer_backend_effective_fallback ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::compute_phase_iteration_returns_correct_values ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resolve_implementer_backend_cli_override_takes_precedence ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resolve_implementer_backend_starting_fallback ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resolve_reviewer_backend_missing_fails_with_exact_message ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resolve_reviewer_backend_cli_override ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resolve_reviewer_backend_effective_fallback ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resume_from_final_review ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::validate_distinct_backends_accepts_different ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resume_from_codex_review ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::resume_from_none_starts_at_plan_and_implement ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::validate_distinct_backends_rejects_equal ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::validate_distinct_backends_rejects_optional_prefix_equal ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::validate_distinct_backends_rejects_whitespace_equal ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::validate_distinct_backends_rejects_optional_prefix_with_model ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::persist_destination_state_roundtrip ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::persist_destination_state_with_counters ... ok [INFO] [stdout] test workflow::quick_dev_orchestrator::tests::save_state_to_disk_roundtrips ... ok [INFO] [stdout] test workspace::active::tests::invalid_active_project_file_returns_none ... ok [INFO] [stdout] test workspace::active::tests::subprocess_helper_emits_empty_active_project_warning ... ignored [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] test workspace::active::tests::missing_active_project_file_returns_none ... ok [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] test workspace::active::tests::empty_or_whitespace_active_project_file_returns_none ... ok [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] test workspace::active::tests::empty_or_whitespace_active_project_file_emits_warning ... ok [INFO] [stdout] test workspace::summary::tests::legacy_state_without_created_at_falls_back_to_prompt_file_mtime ... ok [INFO] [stdout] test workspace::summary::tests::legacy_state_uses_now_when_prompt_metadata_is_unavailable ... ok [INFO] [stdout] test workspace::summary::tests::completed_at_is_none_for_non_completed_projects ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpruffY1/.git/ [INFO] [stdout] test git::ralph_commit::tests::resolve_checkpoint_ref_uses_remote_when_only_remote_exists ... ok [INFO] [stdout] test workspace::summary::tests::summarizes_project_from_state ... ok [INFO] [stdout] test workspace::tests::list_projects_returns_empty_for_empty_projects_dir ... ok [INFO] [stdout] test workspace::tests::load_project_summary_returns_not_found_for_missing_project ... ok [INFO] [stdout] test workspace::tests::load_project_summary_returns_summary_for_existing_project ... ok [INFO] [stdout] test workspace::tests::list_projects_skips_non_dirs_and_missing_prompt ... ok [INFO] [stdout] test workspace::tests::project_exists_checks_for_prompt_file ... ok [INFO] [stdout] test workspace::tests::active_project_set_and_read_roundtrip ... ok [INFO] [stdout] test workspace::tests::set_active_project_rejects_missing_project ... ok [INFO] [stdout] test workspace::tests::list_projects_scans_and_sorts_by_project_id ... ok [INFO] [stderr] To /tmp/.tmpXuXQZM/remote.git [INFO] [stderr] 069d3e7..92943d7 HEAD -> ralph/issue-42 [INFO] [stdout] test workspace::active::tests::read_write_roundtrip_non_git_workspace ... ok [INFO] [stdout] [ralph/issue-42 c528f21] ralph(issue-42): loop 2 implementing -> reviewing [INFO] [stdout] test workspace::active::tests::read_write_roundtrip_git_workspace ... ok [INFO] [stderr] To /tmp/.tmpXuXQZM/remote.git [INFO] [stderr] 92943d7..c528f21 HEAD -> ralph/issue-42 [INFO] [stdout] HEAD is now at 92943d7 ralph(issue-42): loop 1 planning -> implementing [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ralph-e387a4c22e5eed49) [INFO] [stdout] test git::ralph_commit::tests::resolve_checkpoint_ref_prefers_remote_when_local_behind ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 955 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 4.62s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stderr] Running tests/backend.rs (/opt/rustwide/target/debug/deps/backend-4927b2c6d993b3d1) [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] [stdout] [INFO] [stdout] running 35 tests [INFO] [stdout] test resolve_backend_for_role_injects_model_when_configured ... ok [INFO] [stdout] test resolve_backend_for_role_returns_bare_when_no_model_configured ... ok [INFO] [stdout] test resolve_backend_for_role_preserves_explicit_model ... ok [INFO] [stdout] test resolve_backend_for_role_returns_unchanged_for_unknown_backend ... ok [INFO] [stdout] test resolve_backend_for_role_returns_unchanged_on_parse_failure ... ok [INFO] [stdout] test test_assign_completion_backends_with_all_role_overrides ... ok [INFO] [stdout] test test_assign_completion_backends_no_models ... ok [INFO] [stdout] test resolve_backend_for_role_returns_unchanged_for_unknown_role ... ok [INFO] [stdout] test test_assign_completion_backends ... ok [INFO] [stdout] test test_assign_completion_backends_with_partial_role_overrides ... ok [INFO] [stdout] test test_assign_feature_backends ... ok [INFO] [stdout] test test_assign_feature_backends_bare_role_override_gets_model_injection ... ok [INFO] [stdout] test test_assign_completion_backends_with_model_spec_start ... ok [INFO] [stdout] test test_assign_feature_backends_no_models ... ok [INFO] [stdout] test test_assign_feature_backends_with_all_role_overrides ... ok [INFO] [stdout] test test_assign_feature_backends_with_model_spec_start ... ok [INFO] [stdout] test test_assign_feature_backends_with_partial_role_overrides ... ok [INFO] [stdout] test test_assign_feature_backends_with_qa_override ... ok [INFO] [stdout] test test_backend_alternation_sequence_no_models ... ok [INFO] [stdout] test test_backend_opposite ... ok [INFO] [stdout] test test_backend_opposite_unknown ... ok [INFO] [stdout] test test_backend_alternation_sequence ... ok [INFO] [stdout] test test_backend_registry_default ... ok [INFO] [stdout] test test_completion_alternation_sequence ... ok [INFO] [stdout] test test_backend_registry_default_preserves_model_spec ... ok [INFO] [stdout] test test_completion_alternation_sequence_no_models ... ok [INFO] [stdout] test test_backend_registry_get ... ok [INFO] [stdout] test test_planner_for_loop_even_uses_opposite ... ok [INFO] [stdout] test test_planner_for_loop_with_model_spec_start ... ok [INFO] [stdout] test test_planner_for_loop_odd_starts_with_starting ... ok [INFO] [stdout] test test_planner_for_loop_with_codex_start ... ok [INFO] [stdout] test registry_keeps_direct_cli_backends_when_tmux_disabled ... ok [INFO] [stdout] test get_or_create_for_spec_codex_suffix_injects_reasoning_effort_args ... ok [INFO] [stdout] test get_or_create_for_spec_injects_model_args_and_reuses_cached_backend ... ok [INFO] [stdout] test registry_wraps_backends_with_tmux_when_enabled ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/backend_tmux.rs (/opt/rustwide/target/debug/deps/backend_tmux-dca147d42bc0d409) [INFO] [stdout] [INFO] [stdout] running 22 tests [INFO] [stdout] test tmux_backend_falls_back_to_generic_label_without_context ... ok [INFO] [stdout] test tmux_backend_does_not_fail_on_window_cleanup_error ... ok [INFO] [stdout] test tmux_backend_genuine_timeout_returns_backend_timeout ... ok [INFO] [stdout] test tmux_backend_failure_does_not_write_loop_dir_log_artifact ... ok [INFO] [stdout] test tmux_backend_calls_sequence_ensure_create_wait_kill ... ok [INFO] [stdout] test tmux_backend_command_preserves_env_and_args ... ok [INFO] [stdout] test tmux_backend_preserves_backend_name ... ok [INFO] [stdout] test tmux_backend_keep_seconds_skipped_on_failure ... ok [INFO] [stdout] test tmux_backend_keep_seconds_zero_cleans_up_immediately ... ok [INFO] [stdout] test tmux_backend_retries_window_creation_on_session_loss ... ok [INFO] [stdout] test tmux_backend_session_created_when_missing ... ok [INFO] [stdout] test tmux_backend_temp_files_cleaned_after_failure ... ok [INFO] [stdout] test tmux_backend_temp_files_cleaned_after_success ... ok [INFO] [stdout] test tmux_backend_stderr_captured_separately ... ok [INFO] [stdout] test tmux_backend_nonzero_exit_returns_backend_command_failed ... ok [INFO] [stdout] test tmux_backend_returns_actionable_error_on_window_disappearance ... ok [INFO] [stdout] test tmux_backend_context_preserved_across_multiple_executions ... ok [INFO] [stdout] test tmux_backend_success_does_not_write_loop_dir_log_artifact ... ok [INFO] [stdout] test tmux_backend_timeout_with_missing_session_returns_actionable_error ... ok [INFO] [stdout] test tmux_backend_uses_contextual_label_from_shared_context ... ok [INFO] [stdout] test tmux_backend_session_alive_but_window_gone_returns_command_failed ... ok [INFO] [stdout] test tmux_backend_keep_seconds_nonzero_delays_cleanup ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.26s [INFO] [stdout] [INFO] [stderr] Running tests/daemon_interactive_prd.rs (/opt/rustwide/target/debug/deps/daemon_interactive_prd-40ddbac3df766d5c) [INFO] [stdout] [INFO] [stdout] running 40 tests [INFO] [stdout] test approval_detection_no_false_positives_on_plain_text ... ok [INFO] [stdout] test approval_detection_case_insensitive ... ok [INFO] [stdout] test awaiting_feedback_approval_by_label_transitions_to_done ... ok [INFO] [stdout] test awaiting_feedback_approval_by_comment_transitions_to_done ... ok [INFO] [stdout] test approval_label_swap_partial_failure_keeps_state_nonterminal ... ok [INFO] [stdout] test bounded_concurrency_peak_never_exceeds_max ... ok [INFO] [stdout] test awaiting_answers_transition_posts_draft_and_persists_feedback_state ... ok [INFO] [stdout] test concurrent_advancement_slow_and_fast ... ok [INFO] [stdout] test error_count_persists_across_save_load ... ok [INFO] [stdout] test dedup_invariant_issue_processed_at_most_once ... ok [INFO] [stdout] test has_prd_label_detects_all_prd_labels ... ok [INFO] [stdout] test has_prd_label_returns_false_for_empty ... ok [INFO] [stdout] test empty_polls_return_early ... ok [INFO] [stdout] test has_prd_label_returns_false_for_non_prd_labels ... ok [INFO] [stdout] test max_concurrent_preserves_configured_value ... ok [INFO] [stdout] test max_concurrent_zero_treated_as_one ... ok [INFO] [stdout] test error_isolation_tick_succeeds_despite_issue_error ... ok [INFO] [stdout] test awaiting_answers_bot_login_failure_exhaustion_transitions_to_failed ... ok [INFO] [stdout] test prd_labels_have_expected_entries ... ok [INFO] [stdout] test prd_marker_format ... ok [INFO] [stdout] test prd_status_failed_marker_format ... ok [INFO] [stdout] test awaiting_feedback_revision_produces_incremented_draft ... ok [INFO] [stdout] test refresh_repo_clone_once_before_processing ... ok [INFO] [stdout] test single_worker_reset_runs_before_each_issue ... ok [INFO] [stdout] test awaiting_feedback_bot_login_failure_exhaustion_transitions_to_failed ... ok [INFO] [stdout] test state_missing_returns_none ... ok [INFO] [stdout] test state_persists_across_simulated_restart ... ok [INFO] [stdout] test stale_worker_dir_is_recovered_without_sequential_fallback ... ok [INFO] [stdout] test awaiting_feedback_mixed_comments_approval_plus_feedback_transitions_to_done ... ok [INFO] [stdout] test terminal_states_are_done_and_failed ... ok [INFO] [stdout] test pre_draft_comments_excluded_from_feedback_in_awaiting_feedback ... ok [INFO] [stdout] test waiting_feedback_label_classification_matches_exports ... ok [INFO] [stdout] test done_post_save_active_label_removal_failure_retries ... ok [INFO] [stdout] test pending_bot_login_failure_exhaustion_transitions_to_failed ... ok [INFO] [stdout] test panic_isolation_tick_completes_despite_panic ... ok [INFO] [stdout] test terminal_save_failure_approval_path_keeps_issue_retryable ... ok [INFO] [stdout] test terminal_save_failure_failed_path_keeps_issue_retryable ... ok [INFO] [stdout] test multi_tick_pending_to_done_end_to_end ... ok [INFO] [stdout] test user_marker_spoof_does_not_block_bot_marker_posting ... ok [INFO] [stdout] test worktree_setup_failure_falls_back_to_sequential ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.59s [INFO] [stdout] [INFO] [stderr] Running tests/daemon_rebase_agent.rs (/opt/rustwide/target/debug/deps/daemon_rebase_agent-857c2736ebcc1d34) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test invalid_backend_string_returns_error ... ok [INFO] [stdout] test none_backend_string_returns_error ... ok [INFO] [stdout] test agent_attempted_error_includes_attempted_wording ... ok [INFO] [stdout] test normalized_trimmed_none_backend_returns_skipped_error ... ok [INFO] [stdout] test agent_non_zero_exit_aborts_rebase ... ok [INFO] [stdout] test claude_shorthand_backend_string_works ... ok [INFO] [stdout] test agent_success_without_resolution_fails ... ok [INFO] [stdout] test multi_commit_conflict_recovery ... ok [INFO] [stdout] test agent_timeout_fails ... ok [INFO] [stdout] test successful_conflict_recovery ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.15s [INFO] [stdout] [INFO] [stderr] Running tests/git.rs (/opt/rustwide/target/debug/deps/git-244f8a07ef378832) [INFO] [stdout] [INFO] [stdout] running 20 tests [INFO] [stdout] test test_changed_paths_excludes_prefixes ... ok [INFO] [stdout] test test_has_conflicts_no_conflicts ... ok [INFO] [stdout] test test_has_uncommitted_changes ... ok [INFO] [stdout] test test_is_git_repo_false ... ok [INFO] [stdout] test test_commit_feature_loop_excludes_orchestration_state_files ... ok [INFO] [stdout] test test_is_git_repo_true ... ok [INFO] [stdout] test test_commit_feature_loop_without_tag ... ok [INFO] [stdout] test test_ref_exists ... ok [INFO] [stdout] test test_commit_feature_loop ... ok [INFO] [stdout] test test_has_conflicts_with_conflict ... ok [INFO] [stdout] test test_rev_parse_head ... ok [INFO] [stdout] test test_working_tree_diff_excludes_orchestration_state ... ok [INFO] [stdout] test test_reset_and_clean_working_tree_preserves_ralph ... ok [INFO] [stdout] test test_staged_diff_only_staged ... ok [INFO] [stdout] test test_unstaged_diff_only_unstaged ... ok [INFO] [stdout] test test_commit_feature_loop_detects_conflict ... ok [INFO] [stdout] test test_working_tree_diff_includes_staged_and_unstaged ... ok [INFO] [stdout] test test_stage_implementation_changes_includes_new_files ... ok [INFO] [stdout] test test_reset_hard ... ok [INFO] [stdout] test test_working_tree_diff_without_head_commit ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s [INFO] [stdout] [INFO] [stderr] Running tests/init_command.rs (/opt/rustwide/target/debug/deps/init_command-d8d660b7f9c92caf) [INFO] [stdout] [INFO] [stdout] running 12 tests [INFO] [stdout] test test_init_creates_workspace_structure ... ok [INFO] [stdout] test test_init_generates_valid_config ... ok [INFO] [stdout] test test_init_allows_empty_existing_directory ... ok [INFO] [stdout] test test_init_does_not_create_index_json ... ok [INFO] [stdout] test test_init_does_not_partially_overwrite_on_failure ... ok [INFO] [stdout] test test_init_with_custom_directory_relative ... ok [INFO] [stdout] test test_init_with_nested_custom_directory ... ok [INFO] [stdout] test test_init_fails_on_existing_non_empty_workspace ... ok [INFO] [stdout] test test_init_cli_with_relative_path ... ok [INFO] [stdout] test test_init_workspace_can_be_loaded_after_creation ... ok [INFO] [stdout] test test_init_cli_with_absolute_path ... ok [INFO] [stdout] test test_init_creates_template_files_with_cli_execute ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/orchestrator.rs (/opt/rustwide/target/debug/deps/orchestrator-4e94c13e2effa6b1) [INFO] [stdout] [INFO] [stdout] running 24 tests [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpADaztW/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpyX1AZu/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp9ytwTh/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpCYEA1y/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp31Jmi4/.git/ [INFO] [stdout] [master (root-commit) 8a3178b] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpVvREj6/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpypTuLk/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpctf5Oh/.git/ [INFO] [stdout] [master (root-commit) 8a3178b] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) 8a3178b] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) 8a3178b] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) 8a3178b] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 86579c1] test: add final review mock [INFO] [stdout] 1 file changed, 318 insertions(+) [INFO] [stdout] create mode 100755 mock_final_review.sh [INFO] [stdout] [master 076f663] test: add backend mock [INFO] [stdout] 1 file changed, 87 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master 86579c1] test: add final review mock [INFO] [stdout] 1 file changed, 318 insertions(+) [INFO] [stdout] create mode 100755 mock_final_review.sh [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master 4af367d] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master 89236ee] chore: gitignore test remote [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: [INFO] [stdout] [master 86579c1] test: add final review mock [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] 1 file changed, 318 insertions(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100755 mock_final_review.sh [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] [master 4af367d] chore: gitignore test remote [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp31Jmi4/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master 7aaef4f] test: add backend mock [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] 1 file changed, 121 insertions(+) [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stderr] hint: [INFO] [stdout] [master (root-commit) 9e238f6] initial [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp9ytwTh/.test-remote.git/ [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpCYEA1y/.test-remote.git/ [INFO] [stderr] hint: [INFO] [stdout] [master (root-commit) 9e238f6] initial [INFO] [stderr] hint: git branch -m [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] [master dc30c69] chore: gitignore test remote [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 9e238f6] initial [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] [master 4af367d] chore: gitignore test remote [INFO] [stderr] hint: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpADaztW/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpyX1AZu/.test-remote.git/ [INFO] [stdout] [master b2c444d] test: add final review mock [INFO] [stdout] 1 file changed, 318 insertions(+) [INFO] [stdout] create mode 100755 mock_final_review.sh [INFO] [stdout] [master dbf8442] test: add backend mock [INFO] [stdout] 1 file changed, 81 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stderr] To /tmp/.tmp31Jmi4/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master 05a536a] chore: gitignore test remote [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpctf5Oh/.test-remote.git/ [INFO] [stdout] [master 109bbe4] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] [master 7a3a055] test: add backend mock [INFO] [stdout] 1 file changed, 121 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpypTuLk/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmp9ytwTh/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master bfa728a] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master b2e0f6e] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master 8a99537] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpyX1AZu/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] To /tmp/.tmpCYEA1y/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] To /tmp/.tmpctf5Oh/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] To /tmp/.tmpypTuLk/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmpADaztW/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master 92cec7c] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpVvREj6/.test-remote.git/ [INFO] [stdout] [master da8fa2b] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master b2e0f6e] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master e14722d] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master b2e0f6e] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] To /tmp/.tmpVvREj6/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master a949e0e] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test dry_run_does_not_checkout_project_branch ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpTljbgv/.git/ [INFO] [stdout] [master (root-commit) 9e238f6] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master b2c444d] test: add final review mock [INFO] [stdout] 1 file changed, 318 insertions(+) [INFO] [stdout] create mode 100755 mock_final_review.sh [INFO] [stdout] [master 109bbe4] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpTljbgv/.test-remote.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmpTljbgv/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master da8fa2b] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test executes_completion_flow_until_complete ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpZffErG/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 5c0fbef] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 1e414b2] test: add final review mock [INFO] [stdout] 1 file changed, 318 insertions(+) [INFO] [stdout] create mode 100755 mock_final_review.sh [INFO] [stdout] [master b5c3cd7] chore: gitignore test remote [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpZffErG/.test-remote.git/ [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmpZffErG/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master 8a93990] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test acceptance_gate_pass_keeps_completed ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpOgHSAF/.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 9178479] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master a336b4c] test: add parse retry backend mocks [INFO] [stdout] 2 files changed, 196 insertions(+) [INFO] [stdout] create mode 100755 mock_claude.sh [INFO] [stdout] create mode 100755 mock_codex.sh [INFO] [stdout] [master bd53e0d] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpOgHSAF/.test-remote.git/ [INFO] [stdout] test final_review_no_amendments_completes_project ... ok [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpOgHSAF/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp91f1fs/.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master aec3c4c] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test acceptance_gate_fail_overrides_complete_to_continue ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpwRshbF/.git/ [INFO] [stdout] [master (root-commit) 9178479] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) 9178479] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 0e1f5eb] test: add backend mock [INFO] [stdout] 1 file changed, 81 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master a336b4c] test: add parse retry backend mocks [INFO] [stdout] 2 files changed, 196 insertions(+) [INFO] [stdout] create mode 100755 mock_claude.sh [INFO] [stdout] create mode 100755 mock_codex.sh [INFO] [stdout] [master d046c91] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] [master bd53e0d] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpwRshbF/.test-remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp91f1fs/.test-remote.git/ [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpwRshbF/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master 6c18368] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] To /tmp/.tmp91f1fs/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master 745b546] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test parse_retry_reformat_uses_opposite_backend ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpsytX8k/.git/ [INFO] [stdout] [master (root-commit) 6d2a2ec] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master d02b195] test: add backend mock [INFO] [stdout] 1 file changed, 76 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master 23822b1] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpsytX8k/.test-remote.git/ [INFO] [stderr] To /tmp/.tmpsytX8k/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master f9ca6cb] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test planner_receives_acceptance_failure_context ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpQ6aS2T/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 87da6f9] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 3a0938f] test: add backend mock [INFO] [stdout] 1 file changed, 108 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master ab6fe92] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] test final_review_disputed_amendments_invokes_arbiter_only_for_disputed_ids ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpzaCQbE/.git/ [INFO] [stdout] [master (root-commit) 87da6f9] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master d27e370] test: add backend mock [INFO] [stdout] 1 file changed, 79 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpQ6aS2T/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] test parse_retry_reformat_without_role_model_uses_bare_opposite_backend ... ok [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpfeA6uF/.git/ [INFO] [stdout] [master (root-commit) 87da6f9] initial [INFO] [stderr] To /tmp/.tmpQ6aS2T/.test-remote.git [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 60235c0] test: add backend mock [INFO] [stdout] 1 file changed, 76 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master aeadf31] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] [master 3f87b18] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpzaCQbE/.test-remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpfeA6uF/.test-remote.git/ [INFO] [stdout] [master 30344f1] test: add prompt source [INFO] [stderr] To /tmp/.tmpzaCQbE/.test-remote.git [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpfeA6uF/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master c901921] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master 92742bf] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test final_review_accepted_amendments_restart_to_planning_then_complete ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpEuwLRv/.git/ [INFO] [stdout] [master (root-commit) c514e95] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 257b816] test: add backend mock [INFO] [stdout] 1 file changed, 121 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master 6dc92f5] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpEuwLRv/.test-remote.git/ [INFO] [stderr] To /tmp/.tmpEuwLRv/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master 455cfb5] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test final_review_restart_cap_triggers_force_complete ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp82z8QM/.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) c514e95] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master e2ce5a6] test: add backend mock [INFO] [stdout] 1 file changed, 89 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master 9e79f69] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp82z8QM/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] test final_review_config_mismatch_invalidates_and_restarts_round ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpsdeLZT/.git/ [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmp82z8QM/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master (root-commit) c514e95] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 13eabec] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master 257b816] test: add backend mock [INFO] [stdout] 1 file changed, 121 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] test refuses_new_loop_when_non_workspace_changes_are_dirty ... ok [INFO] [stdout] test qa_disabled_skips_phase ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master acb1c50] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpsdeLZT/.test-remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpvzI77K/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp5iuvHm/.git/ [INFO] [stdout] [master (root-commit) de1e0f3] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 523d11b] test: add backend mock [INFO] [stdout] 1 file changed, 121 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master (root-commit) de1e0f3] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 523d11b] test: add backend mock [INFO] [stdout] 1 file changed, 121 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stderr] To /tmp/.tmpsdeLZT/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master 04369dc] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master 04369dc] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpvzI77K/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp5iuvHm/.test-remote.git/ [INFO] [stdout] [master c8989e5] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] To /tmp/.tmpvzI77K/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master b7bbb9b] test: add prompt source [INFO] [stderr] To /tmp/.tmp5iuvHm/.test-remote.git [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master b7bbb9b] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test tmux_mode_dry_run_skips_tmux_availability_check ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpZlfENS/.git/ [INFO] [stdout] [master (root-commit) de1e0f3] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 523d11b] test: add backend mock [INFO] [stdout] 1 file changed, 121 insertions(+) [INFO] [stdout] create mode 100755 mock_backend.sh [INFO] [stdout] [master 04369dc] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpZlfENS/.test-remote.git/ [INFO] [stdout] test final_review_resume_skips_completed_proposal_step ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpTwKrUb/.git/ [INFO] [stdout] test qa_pass_proceeds_to_review ... ok [INFO] [stdout] test qa_limit_exceeded_rolls_back ... ok [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpZlfENS/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master (root-commit) de1e0f3] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master b7bbb9b] test: add prompt source [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master a52326c] test: add split backend mocks [INFO] [stdout] 2 files changed, 220 insertions(+) [INFO] [stdout] create mode 100755 mock_claude.sh [INFO] [stdout] create mode 100755 mock_codex.sh [INFO] [stdout] [master 132477d] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpTwKrUb/.test-remote.git/ [INFO] [stdout] test tmux_mode_fails_early_when_tmux_is_unavailable ... ok [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpTwKrUb/.test-remote.git [INFO] [stdout] [master 2288ce4] test: add prompt source [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test qa_fail_retries_implementer_then_passes ... ok [INFO] [stdout] test runs_full_feature_loop_and_commits ... ok [INFO] [stdout] test supports_interrupt_and_resume_from_commit_phase ... ok [INFO] [stdout] test review_iteration_limit_rollback ... ok [INFO] [stdout] test two_loop_happy_path_with_separate_backends ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.75s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 16 tests [INFO] [stderr] Running tests/prd.rs (/opt/rustwide/target/debug/deps/prd-341245d821205fef) [INFO] [stdout] test apply_answers_caps_rerun_to_current_stage ... ok [INFO] [stdout] test llm_gap_detected_questions_answered_reruns_from_correct_stage_then_succeeds ... ok [INFO] [stdout] test max_question_rounds_exceeded_auto_applies_defaults_and_continues ... ok [INFO] [stdout] test non_interactive_auto_applies_suggested_defaults_into_answers ... ok [INFO] [stdout] test gap_analysis_json_parse_failure_retried_three_times_then_falls_back ... ok [INFO] [stdout] test user_quit_during_questions_returns_prd_pipeline_failed_exit_10 ... ok [INFO] [stdout] test forward_impact_stage_advances_without_skipping_stages ... ok [INFO] [stdout] test validation_parse_retry_exhaustion_fails_closed ... ok [INFO] [stdout] test validation_pass_writes_final_prd ... ok [INFO] [stdout] test resume_idea_mismatch_returns_cache_mismatch_error ... ok [INFO] [stdout] test non_interactive_mode_with_llm_gaps_auto_applies_defaults_and_continues ... ok [INFO] [stdout] test validation_fail_returns_exit_11_with_report ... ok [INFO] [stdout] test missing_sections_retry_exhaustion_continues_best_effort ... ok [INFO] [stdout] test resume_skips_cached_stages_with_matching_hashes ... ok [INFO] [stdout] test missing_sections_retried_then_succeeds ... ok [INFO] [stdout] test resume_invalidates_stages_when_answers_change ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s [INFO] [stdout] [INFO] [stderr] Running tests/quick_dev_orchestrator.rs (/opt/rustwide/target/debug/deps/quick_dev_orchestrator-e384e42f537f4fa2) [INFO] [stdout] [INFO] [stdout] running 28 tests [INFO] [stdout] test default_option_values ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpBAYIuE/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpo0U3N0/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpW8sQ8v/.git/ [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpUheVnL/.git/ [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmprpVOWi/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp8GFjR2/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpF5bptH/.git/ [INFO] [stdout] [master (root-commit) a71a9d7] initial [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] [master (root-commit) a71a9d7] initial [INFO] [stderr] hint: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmplGXUAU/.git/ [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) a71a9d7] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) a71a9d7] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) a71a9d7] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master d65a0a3] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master 00cf83d] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master d0609d8] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master db44a9a] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master (root-commit) a71a9d7] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 258520f] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] [master 1d1681d] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master 82fb58a] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master 1851f5b] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpUheVnL/.test-remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpF5bptH/.test-remote.git/ [INFO] [stdout] [master (root-commit) a71a9d7] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master c7a4c19] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpBAYIuE/.test-remote.git/ [INFO] [stdout] [master a23d52d] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master (root-commit) a71a9d7] initial [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmprpVOWi/.test-remote.git/ [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master fa4cc8a] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] [master e1bbfbd] test: add backend mocks [INFO] [stderr] To /tmp/.tmpF5bptH/.test-remote.git [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stderr] hint: [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] [master e6d421c] test: add backend mocks [INFO] [stderr] hint: [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stderr] hint: [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stderr] hint: git branch -m [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master ff1e661] chore: gitignore test remote [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp8GFjR2/.test-remote.git/ [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] [master 93adc0e] chore: gitignore test remote [INFO] [stderr] hint: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmplGXUAU/.test-remote.git/ [INFO] [stderr] hint: [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpW8sQ8v/.test-remote.git/ [INFO] [stderr] To /tmp/.tmpUheVnL/.test-remote.git [INFO] [stdout] [master 7e6c786] test: add prompt [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] [master cc1dacf] test: add prompt [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] [master 3cfa7e6] test: add prompt [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master 391dc0a] chore: gitignore test remote [INFO] [stderr] To /tmp/.tmprpVOWi/.test-remote.git [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] To /tmp/.tmpW8sQ8v/.test-remote.git [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpo0U3N0/.test-remote.git/ [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master 28141af] test: add prompt [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: [INFO] [stdout] [master 71487d0] test: add prompt [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] [master f81154e] test: add prompt [INFO] [stderr] hint: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: git branch -m [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] To /tmp/.tmpBAYIuE/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master d76ab7a] test: add prompt [INFO] [stderr] To /tmp/.tmp8GFjR2/.test-remote.git [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] To /tmp/.tmplGXUAU/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] test equal_backend_rejection ... ok [INFO] [stderr] To /tmp/.tmpo0U3N0/.test-remote.git [INFO] [stdout] test legacy_state_without_counter_fields_defaults_to_zero ... ok [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpyOkuDZ/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master 65f98f1] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master (root-commit) ace6669] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master e1342ee] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] test guard_at_entry_codex_review_skips_reviewer_when_at_limit ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpSxzKEE/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master 2e638d0] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpyOkuDZ/.test-remote.git/ [INFO] [stdout] [master (root-commit) ace6669] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] To /tmp/.tmpyOkuDZ/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master 321980a] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master fc310da] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] test happy_path_review_satisfied_then_complete ... ok [INFO] [stdout] [master 7da90e6] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpDu5rBB/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpSxzKEE/.test-remote.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] test destination_state_persisted_before_checkpoint_plan_to_codex ... ok [INFO] [stdout] test quick_dev_counter_fields_serde_roundtrip ... ok [INFO] [stdout] test quick_dev_phase_serde_roundtrip ... ok [INFO] [stdout] test quick_dev_phase_to_current_phase ... ok [INFO] [stdout] test guard_at_entry_final_review_force_completes_when_at_limit ... ok [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpAwYurK/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmpSxzKEE/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master 7ad3b31] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master (root-commit) ace6669] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) ace6669] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpSMkshM/.git/ [INFO] [stdout] [master d22747d] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master 8afc038] chore: gitignore test remote [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] [master 50923de] test: add backend mocks [INFO] [stderr] hint: [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stderr] hint: [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stderr] hint: [INFO] [stdout] test final_review_reloop_then_complete ... ok [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpDu5rBB/.test-remote.git/ [INFO] [stdout] [master (root-commit) ace6669] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master fc2a5b9] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpAwYurK/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpNhLial/.git/ [INFO] [stdout] [master ed561ef] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master 9369690] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] [master (root-commit) ace6669] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpSMkshM/.test-remote.git/ [INFO] [stderr] To /tmp/.tmpDu5rBB/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] To /tmp/.tmpAwYurK/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master 03ee89b] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master 36c0cb2] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master 42b52b1] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] [master 5e3a782] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpNhLial/.test-remote.git/ [INFO] [stderr] To /tmp/.tmpSMkshM/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master 2ac7bc6] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test missing_reviewer_backend_fails_fast ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] test force_complete_persists_final_review_attempts ... ok [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp2IeLZg/.git/ [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] [master (root-commit) 2e95b0a] initial [INFO] [stderr] hint: [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: [INFO] [stdout] [master 3c88359] test: add backend mocks [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stderr] hint: [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stderr] hint: git branch -m [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stderr] To /tmp/.tmpNhLial/.test-remote.git [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpCi0DCk/.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 2e95b0a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 98a2c84] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master a5bf548] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master 03fa268] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp2IeLZg/.test-remote.git/ [INFO] [stdout] [master 8ea9e8f] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpCi0DCk/.test-remote.git/ [INFO] [stdout] test resume_after_completion_does_not_restart ... ok [INFO] [stderr] To /tmp/.tmp2IeLZg/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpSLU0Vl/.git/ [INFO] [stdout] test max_review_iterations_guard_skips_to_final_review ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpuiHzOA/.git/ [INFO] [stdout] test max_final_review_retries_guard_force_completes ... ok [INFO] [stdout] [master 090f794] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpCi0DCk/.test-remote.git [INFO] [stdout] [master (root-commit) 2e95b0a] initial [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) 2e95b0a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpNkdVKu/.git/ [INFO] [stdout] [master 767d944] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master 4f2b160] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master b578034] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master 0089528] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] [master 2aba08b] chore: gitignore test remote [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpuiHzOA/.test-remote.git/ [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 2e95b0a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpSLU0Vl/.test-remote.git/ [INFO] [stdout] test resume_from_apply_fixes_includes_review_feedback ... ok [INFO] [stdout] [master cc7ec77] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpMP5YPa/.git/ [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpuiHzOA/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master (root-commit) 2e95b0a] initial [INFO] [stderr] To /tmp/.tmpSLU0Vl/.test-remote.git [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] test resume_from_codex_review_phase ... ok [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpmvXp0F/.git/ [INFO] [stdout] [master 423cc63] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master 57277e2] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master 30ed52a] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master ea6340a] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master (root-commit) 2e95b0a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 4220e7d] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpNkdVKu/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpMP5YPa/.test-remote.git/ [INFO] [stdout] [master 9d6ba0a] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stderr] To /tmp/.tmpNkdVKu/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master 475a3b9] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpmvXp0F/.test-remote.git/ [INFO] [stdout] [master 07f5482] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] test resume_from_final_review_phase ... ok [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpGXUxTH/.git/ [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 2e95b0a] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 32a3f58] test: add backend mocks [INFO] [stderr] To /tmp/.tmpmvXp0F/.test-remote.git [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stderr] To /tmp/.tmpMP5YPa/.test-remote.git [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] test resume_from_none_starts_at_plan_and_implement ... ok [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master 604acf8] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpqk6r8D/.git/ [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] [master 46f00f7] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpGXUxTH/.test-remote.git/ [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) dc054b2] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master 07ff407] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] [master 7c9f355] test: add backend mocks [INFO] [stdout] 4 files changed, 145 insertions(+) [INFO] [stdout] create mode 100755 mock_impl.sh [INFO] [stdout] create mode 100755 mock_impl_wrapper.sh [INFO] [stdout] create mode 100755 mock_rev.sh [INFO] [stdout] create mode 100755 mock_rev_wrapper.sh [INFO] [stdout] [master d069920] chore: gitignore test remote [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 .gitignore [INFO] [stderr] To /tmp/.tmpGXUxTH/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpqk6r8D/.test-remote.git/ [INFO] [stdout] [master 4be53ff] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stderr] To /tmp/.tmpqk6r8D/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] test transition_failure_preserves_final_review_counter_on_resume ... ok [INFO] [stdout] test review_iteration_persisted_after_changes_requested ... ok [INFO] [stdout] [master ae1a96c] test: add prompt [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 PROMPT.md [INFO] [stdout] test whitespace_equal_backend_rejection ... ok [INFO] [stdout] test review_loop_with_changes_requested_then_satisfied ... ok [INFO] [stdout] test skip_commit_prevents_git_commits ... ok [INFO] [stdout] test transition_failure_preserves_review_counter_on_resume ... ok [INFO] [stdout] test whitespace_padded_model_equal_backend_rejection ... ok [INFO] [stdout] test high_configured_limits_do_not_hit_fixed_transition_cap ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.18s [INFO] [stdout] [INFO] [stderr] Running tests/reconstruction.rs (/opt/rustwide/target/debug/deps/reconstruction-f6fe09a8be3947ad) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpQmk9jk/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpPtjRuF/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpnu5bWF/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpOaj7Td/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) d12a7db] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpnu5bWF/.test-remote.git/ [INFO] [stdout] [master (root-commit) d12a7db] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) d12a7db] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) d12a7db] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpOaj7Td/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpPtjRuF/.test-remote.git/ [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpQmk9jk/.test-remote.git/ [INFO] [stderr] To /tmp/.tmpnu5bWF/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpQmk9jk/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpPtjRuF/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] To /tmp/.tmpOaj7Td/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] test reconstruction_ignores_stale_state_json ... ok [INFO] [stdout] test no_loop_artifacts_defaults_to_loop_1_planning ... ok [INFO] [stdout] test reconstruction_with_spec_only_defaults_to_checkpoint_position ... ok [INFO] [stdout] test reconstruction_with_spec_and_impl_notes_defaults_to_checkpoint_position ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s [INFO] [stdout] [INFO] [stderr] Running tests/recovery.rs (/opt/rustwide/target/debug/deps/recovery-45408dfceded2eb1) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpil280x/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpRQdtKM/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpBwV7WI/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpmvEjoH/.git/ [INFO] [stdout] [master (root-commit) d12a7db] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] [master (root-commit) d12a7db] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) d12a7db] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpil280x/.test-remote.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpBwV7WI/.test-remote.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpRQdtKM/.test-remote.git/ [INFO] [stdout] [master (root-commit) d12a7db] initial [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 README.md [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpmvEjoH/.test-remote.git/ [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpmvEjoH/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] [master 7722e7d] advance remote base [INFO] [stdout] 23 files changed, 884 insertions(+) [INFO] [stdout] create mode 100644 .test-remote.git/HEAD [INFO] [stdout] create mode 100644 .test-remote.git/config [INFO] [stdout] create mode 100644 .test-remote.git/description [INFO] [stdout] create mode 100755 .test-remote.git/hooks/applypatch-msg.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/commit-msg.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/fsmonitor-watchman.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/post-update.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/pre-applypatch.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/pre-commit.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/pre-merge-commit.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/pre-push.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/pre-rebase.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/pre-receive.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/prepare-commit-msg.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/push-to-checkout.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/sendemail-validate.sample [INFO] [stdout] create mode 100755 .test-remote.git/hooks/update.sample [INFO] [stdout] create mode 100644 .test-remote.git/info/exclude [INFO] [stdout] create mode 100644 .test-remote.git/objects/60/15b9f19393e2b6973ff3f0bdbbe73b1616a4b8 [INFO] [stdout] create mode 100644 .test-remote.git/objects/83/c831f0b085c70509b1fbb0a0131a9a32e691ac [INFO] [stdout] create mode 100644 .test-remote.git/objects/d1/2a7db2a85e92f7e69bcd98b483c9b841feae82 [INFO] [stdout] create mode 100644 .test-remote.git/refs/heads/master [INFO] [stdout] create mode 100644 remote-base-change.txt [INFO] [stderr] To /tmp/.tmpRQdtKM/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpBwV7WI/.test-remote.git [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stdout] branch 'master' set up to track 'origin/master'. [INFO] [stderr] To /tmp/.tmpil280x/.test-remote.git [INFO] [stderr] * [new branch] HEAD -> master [INFO] [stderr] To /tmp/.tmpmvEjoH/.test-remote.git [INFO] [stderr] d12a7db..7722e7d master -> master [INFO] [stdout] HEAD is now at d12a7db initial [INFO] [stdout] test no_checkpoint_defaults_to_loop_1_planning ... ok [INFO] [stdout] test stale_state_json_does_not_affect_checkpoint_position ... ok [INFO] [stdout] test artifacts_without_checkpoint_default_to_loop_1_planning ... ok [INFO] [stderr] Running tests/state.rs (/opt/rustwide/target/debug/deps/state-60ba7af514ed30f2) [INFO] [stdout] test parentless_project_branch_uses_origin_base_ref ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.43s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 25 tests [INFO] [stdout] test test_last_loop_number ... ok [INFO] [stdout] test test_has_in_progress_loop ... ok [INFO] [stdout] test test_acceptance_helper_semantics ... ok [INFO] [stdout] test test_new_project_state_defaults ... ok [INFO] [stdout] test test_next_loop_number_empty ... ok [INFO] [stdout] test test_loop_status_serialization ... ok [INFO] [stdout] test test_completion_verdict_serialization ... ok [INFO] [stdout] test test_final_review_phase_serde_round_trip ... ok [INFO] [stdout] test test_next_loop_number_with_completion_attempts ... ok [INFO] [stdout] test test_next_loop_number_with_loops ... ok [INFO] [stdout] test test_qa_fields_serde_round_trip ... ok [INFO] [stdout] test test_register_completion_attempt ... ok [INFO] [stdout] test test_register_feature_loop ... ok [INFO] [stdout] test test_remove_loop ... ok [INFO] [stdout] test test_phase_serialization ... ok [INFO] [stdout] test test_legacy_state_deserializes_with_qa_defaults ... ok [INFO] [stdout] test test_project_state_with_parent ... ok [INFO] [stdout] test test_project_status_serialization ... ok [INFO] [stdout] test test_serde_deserializes_legacy_acceptance_fields_without_migration ... ok [INFO] [stdout] test test_serde_preserves_new_acceptance_results_when_present ... ok [INFO] [stdout] test test_serde_round_trip ... ok [INFO] [stdout] test test_serialization_emits_acceptance_results_and_omits_legacy_fields ... ok [INFO] [stdout] test test_upsert_acceptance_result_replaces_existing_and_appends_new ... ok [INFO] [stdout] test test_validate_invariants_rejects_duplicate_loop_numbers ... ok [INFO] [stdout] test test_validate_invariants_rejects_missing_current_loop_reference ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/status_history.rs (/opt/rustwide/target/debug/deps/status_history-b3dfc4f2d85f1807) [INFO] [stdout] [INFO] [stdout] running 11 tests [INFO] [stdout] test history_verbose_with_qa_fail_shows_count_and_verdict ... ok [INFO] [stdout] test history_non_verbose_output_unchanged_with_qa ... ok [INFO] [stdout] test history_verbose_zero_qa_attempts_shows_none ... ok [INFO] [stdout] test history_verbose_with_qa_pass_shows_count_and_verdict ... ok [INFO] [stdout] test status_latest_qa_pass_shows_iteration_and_verdict ... ok [INFO] [stdout] test status_qa_verdict_label_correct ... ok [INFO] [stdout] test status_zero_qa_attempts_shows_no_qa_fields ... ok [INFO] [stdout] test history_json_with_qa_data_serializes_correctly ... ok [INFO] [stdout] test legacy_state_without_qa_fields_deserializes_cleanly ... ok [INFO] [stdout] test history_json_output_backward_compatible ... ok [INFO] [stderr] Running tests/tail_tmux.rs (/opt/rustwide/target/debug/deps/tail_tmux-ad2766b97f236814) [INFO] [stdout] test status_latest_qa_fail_shows_iteration_and_verdict ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test parses_tail_without_tmux_flag ... ok [INFO] [stdout] test parses_tail_follow_without_tmux ... ok [INFO] [stdout] test parses_tail_with_tmux_and_other_flags ... ok [INFO] [stdout] test parses_tail_with_tmux_flag ... ok [INFO] [stdout] test tmux_attach_succeeds_when_session_exists ... ok [INFO] [stdout] test tmux_attach_fails_when_session_does_not_exist ... ok [INFO] [stderr] Running tests/templates.rs (/opt/rustwide/target/debug/deps/templates-7d5e08d8d4b6af05) [INFO] [stdout] test tmux_attach_fails_when_attach_returns_nonzero ... ok [INFO] [stdout] test tmux_attach_fails_when_tmux_unavailable ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 12 tests [INFO] [stdout] test test_default_planner_template_contains_required_sections ... ok [INFO] [stderr] Running tests/validate_cli.rs (/opt/rustwide/target/debug/deps/validate_cli-465574dc75740767) [INFO] [stdout] test test_default_completer_template_contains_required_sections ... ok [INFO] [stdout] test test_default_reviewer_template_contains_required_sections ... ok [INFO] [stdout] test test_default_prompt_reviewer_template_contains_required_sections ... ok [INFO] [stdout] test test_default_implementer_template_contains_required_sections ... ok [INFO] [stdout] test test_render_template_file_not_found ... ok [INFO] [stdout] test test_render_template_with_fallback_uses_default_when_file_missing ... ok [INFO] [stdout] test test_render_template_replaces_multiple_variables ... ok [INFO] [stdout] test test_render_template_preserves_unmatched_variables ... ok [INFO] [stdout] test test_render_template_replaces_single_variable ... ok [INFO] [stdout] test test_render_template_with_fallback_prefers_file_when_present ... ok [INFO] [stdout] test test_render_template_empty_vars ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test validate_non_executable_bin_fails_with_error ... ok [INFO] [stdout] test validate_nonexistent_bin_fails_with_error ... ok [INFO] [stderr] Doc-tests ralph [INFO] [stdout] test validate_relative_bin_resolves_correctly ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s [INFO] [stdout] [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" "10f5c0ec291eab01963d19818cba83e0206cf32c70456f671c4fdbc23f6313eb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "10f5c0ec291eab01963d19818cba83e0206cf32c70456f671c4fdbc23f6313eb", kill_on_drop: false }` [INFO] [stdout] 10f5c0ec291eab01963d19818cba83e0206cf32c70456f671c4fdbc23f6313eb