[INFO] fetching crate agentty 0.5.1...
[INFO] testing agentty-0.5.1 against 1.94.0 for beta-1.95-1
[INFO] extracting crate agentty 0.5.1 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate agentty 0.5.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate agentty 0.5.1
[INFO] tweaked toml for crates.io crate agentty 0.5.1 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate agentty 0.5.1 on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate agentty 0.5.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded mockall_derive v0.14.0
[INFO] [stderr]   Downloaded agent-client-protocol-schema v0.10.8
[INFO] [stderr]   Downloaded askama_macros v0.15.4
[INFO] [stderr]   Downloaded mockall v0.14.0
[INFO] [stderr]   Downloaded askama v0.15.4
[INFO] [stderr]   Downloaded askama_derive v0.15.4
[INFO] [stderr]   Downloaded askama_parser v0.15.4
[INFO] [stderr]   Downloaded agent-client-protocol v0.9.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] da9ee7a8aa387f2211deaa9421af9dcabf625f9e169da6d35268760c460b3284
[INFO] running `Command { std: "docker" "start" "-a" "da9ee7a8aa387f2211deaa9421af9dcabf625f9e169da6d35268760c460b3284", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "da9ee7a8aa387f2211deaa9421af9dcabf625f9e169da6d35268760c460b3284", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "da9ee7a8aa387f2211deaa9421af9dcabf625f9e169da6d35268760c460b3284", kill_on_drop: false }`
[INFO] [stdout] da9ee7a8aa387f2211deaa9421af9dcabf625f9e169da6d35268760c460b3284
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4dae69ad0b60d758b3f0a9d4337c29fa83b8300a865685c79db5418816fb8abb
[INFO] running `Command { std: "docker" "start" "-a" "4dae69ad0b60d758b3f0a9d4337c29fa83b8300a865685c79db5418816fb8abb", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling cc v1.2.55
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling lru v0.16.3
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling kasuari v0.4.11
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling basic-toml v0.1.10
[INFO] [stderr]    Compiling askama_parser v0.15.4
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling askama_derive v0.15.4
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling async-broadcast v0.7.2
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling agent-client-protocol-schema v0.10.8
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling askama_macros v0.15.4
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling askama v0.15.4
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling agent-client-protocol v0.9.4
[INFO] [stderr]    Compiling agentty v0.5.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 45s
[INFO] running `Command { std: "docker" "inspect" "4dae69ad0b60d758b3f0a9d4337c29fa83b8300a865685c79db5418816fb8abb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4dae69ad0b60d758b3f0a9d4337c29fa83b8300a865685c79db5418816fb8abb", kill_on_drop: false }`
[INFO] [stdout] 4dae69ad0b60d758b3f0a9d4337c29fa83b8300a865685c79db5418816fb8abb
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] af1189b75bc305e23d8c5a44c9387571d09604f69d49710861dfca874f9e8ee3
[INFO] running `Command { std: "docker" "start" "-a" "af1189b75bc305e23d8c5a44c9387571d09604f69d49710861dfca874f9e8ee3", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling mockall_derive v0.14.0
[INFO] [stderr]    Compiling predicates-core v1.0.9
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling mockall v0.14.0
[INFO] [stderr]    Compiling downcast v0.11.0
[INFO] [stderr]    Compiling fragile v2.0.1
[INFO] [stderr]    Compiling predicates v3.1.3
[INFO] [stderr]    Compiling predicates-tree v1.0.12
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling agentty v0.5.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "af1189b75bc305e23d8c5a44c9387571d09604f69d49710861dfca874f9e8ee3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "af1189b75bc305e23d8c5a44c9387571d09604f69d49710861dfca874f9e8ee3", kill_on_drop: false }`
[INFO] [stdout] af1189b75bc305e23d8c5a44c9387571d09604f69d49710861dfca874f9e8ee3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] dc09f13ced05b36f4c65d708988dc2b371fa48e2cf778c6b5b8d865dae57244f
[INFO] running `Command { std: "docker" "start" "-a" "dc09f13ced05b36f4c65d708988dc2b371fa48e2cf778c6b5b8d865dae57244f", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/agentty-4a15facab5a0298e)
[INFO] [stdout] 
[INFO] [stdout] running 902 tests
[INFO] [stdout] test app::assist::tests::test_failure_tracker_observe_exceeds_after_identical_streak_limit ... ok
[INFO] [stdout] test app::assist::tests::test_failure_tracker_observe_resets_streak_for_new_fingerprint ... ok
[INFO] [stdout] test app::assist::tests::test_format_detail_lines_returns_bulleted_non_empty_lines ... ok
[INFO] [stdout] test app::merge_queue::tests::test_progress_from_status_updates_done_starts_next_and_clears_active ... ok
[INFO] [stdout] test app::merge_queue::tests::test_is_queued_or_active ... ok
[INFO] [stdout] test app::merge_queue::tests::test_progress_from_status_updates_ignores_unrelated_batches ... ok
[INFO] [stdout] test app::merge_queue::tests::test_progress_from_status_updates_missing_session_starts_next ... ok
[INFO] [stdout] test app::merge_queue::tests::test_progress_from_status_updates_failure_starts_next_and_clears_active ... ok
[INFO] [stdout] test app::session::lifecycle::tests::test_parse_generated_session_title_accepts_plain_title ... ok
[INFO] [stdout] test app::merge_queue::tests::test_progress_from_status_updates_handles_synced_done_without_previous_merging ... ok
[INFO] [stdout] test app::session::lifecycle::tests::test_parse_generated_session_title_normalizes_title_prefix ... ok
[INFO] [stdout] test app::session::lifecycle::tests::test_parse_generated_session_title_accepts_protocol_answer_plain_text ... ok
[INFO] [stdout] test app::session::lifecycle::tests::test_parse_generated_session_title_uses_first_nonempty_line_for_multiline_response ... ok
[INFO] [stdout] test app::session::lifecycle::tests::test_parse_generated_session_title_returns_none_for_question_only_protocol_payload ... ok
[INFO] [stdout] test app::session::lifecycle::tests::test_session_title_generation_prompt_includes_request ... ok
[INFO] [stdout] test app::session::lifecycle::tests::test_prepare_reply_context_first_message_sets_title_from_prompt ... ok
[INFO] [stdout] test app::session::load::tests::merge_loaded_session_status_prefers_handle_for_non_terminal_db_status ... ok
[INFO] [stdout] test app::session::lifecycle::tests::test_prepare_reply_context_follow_up_keeps_existing_title ... ok
[INFO] [stdout] test app::merge_queue::tests::test_pop_next_follows_fifo_order ... ok
[INFO] [stdout] test app::session::load::tests::merge_loaded_session_status_prefers_terminal_status_from_db ... ok
[INFO] [stdout] test app::project::tests::test_previous_project_wraps_to_last_row ... ok
[INFO] [stdout] test app::session::merge::tests::test_detail_message_for_uncommitted_changes_uses_sentence_lines ... ok
[INFO] [stdout] test app::project::tests::test_next_project_wraps_to_first_row ... ok
[INFO] [stdout] test app::session::merge::tests::test_format_conflicted_file_list_returns_bulleted_lines ... ok
[INFO] [stdout] test app::session::merge::tests::test_conflicted_file_fingerprint_missing_file_is_stable ... ok
[INFO] [stdout] test app::session::merge::tests::test_conflicted_file_fingerprint_changes_with_file_content ... ok
[INFO] [stdout] test app::session::merge::tests::test_conflicted_file_fingerprint_stable_for_unchanged_content ... ok
[INFO] [stdout] test app::session::merge::tests::test_rebase_assist_prompt_includes_branch_and_files ... ok
[INFO] [stdout] test app::session::merge::tests::test_conflicted_file_fingerprint_order_independent ... ok
[INFO] [stdout] test app::session::merge::tests::test_session_title_and_summary_from_commit_message ... ok
[INFO] [stdout] test app::session::merge::tests::test_session_title_and_summary_from_commit_message_empty_uses_fallback ... ok
[INFO] [stdout] test app::session::merge::tests::test_session_title_and_summary_from_commit_message_skips_blank_prefix ... ok
[INFO] [stdout] test app::session::merge::tests::test_sync_main_for_project_fails_after_max_assistance_attempts ... ok
[INFO] [stdout] test app::session::merge::tests::test_sync_main_for_project_resolves_conflicts_with_assistance ... ok
[INFO] [stdout] test app::session::refresh::tests::test_is_session_refresh_due_returns_false_before_deadline ... ok
[INFO] [stdout] test app::session::refresh::tests::test_is_session_refresh_due_returns_true_at_deadline ... ok
[INFO] [stdout] test app::session::task::tests::test_auto_commit_assist_prompt_includes_commit_error ... ok
[INFO] [stdout] test app::session::merge::tests::test_execute_rebase_workflow_aborts_when_assist_loop_fails ... ok
[INFO] [stdout] test app::session::merge::tests::test_run_rebase_start_reports_cleanup_failure_for_stale_rebase_state ... ok
[INFO] [stdout] test app::session::load::tests::test_load_sessions_preserves_live_handle_output_and_status ... ok
[INFO] [stdout] test app::session::task::tests::test_format_commit_error_for_display_returns_bulleted_lines ... ok
[INFO] [stdout] test app::session::load::tests::test_load_sessions_terminal_db_status_overrides_handle_status ... ok
[INFO] [stdout] test app::session::merge::tests::test_rebase_assist_input_clone ... ok
[INFO] [stdout] test app::session::merge::tests::test_run_rebase_start_recovers_stale_rebase_state_and_retries ... ok
[INFO] [stdout] test app::session::merge::tests::test_run_rebase_assist_loop_core_aborts_on_early_error ... ok
[INFO] [stdout] test app::session::task::tests::test_capture_raw_output_routes_progress_lines_to_ui_event_only ... ok
[INFO] [stdout] test app::session::task::tests::test_commit_changes_with_assist_returns_commit_hash_from_mock_git_client ... ok
[INFO] [stdout] test app::session::task::tests::test_handle_auto_commit_reports_when_no_changes_exist ... ok
[INFO] [stdout] test app::session::task::tests::test_handle_auto_commit_appends_commit_error_from_mock_git_client ... ok
[INFO] [stdout] test app::session::task::tests::test_capture_raw_output_routes_response_content_to_output_buffer_and_db ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_returns_error_for_non_zero_exit_status ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_deduplicates_repeated_progress_updates ... ok
[INFO] [stdout] test app::session::task::tests::test_status_requires_full_refresh_for_lifecycle_statuses ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_streams_claude_output_with_compact_progress ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_appends_output_without_committing ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_streams_codex_output_with_spacing_between_messages ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_streams_codex_output_without_duplication ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_streams_gemini_output_with_compact_progress ... ok
[INFO] [stdout] test app::session::tests::test_capture_raw_output ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_streams_codex_structured_output_without_raw_json ... ok
[INFO] [stdout] test app::session::tests::test_cleanup_merged_session_worktree_without_repo_hint ... ok
[INFO] [stdout] test app::session::tests::test_commit_changes_amends_existing_session_commit ... ok
[INFO] [stdout] test app::session::tests::test_cancel_session_invalid_id ... ok
[INFO] [stdout] test app::session::task::tests::test_run_agent_assist_task_unwraps_structured_output_in_non_stream_fallback ... ok
[INFO] [stdout] test app::session::tests::test_cancel_session ... ok
[INFO] [stdout] test app::session::tests::test_active_project_id_getter ... ok
[INFO] [stdout] test app::session::tests::test_cancel_session_requires_review_status ... ok
[INFO] [stdout] test app::session::tests::test_create_session_cleans_up_on_error ... ok
[INFO] [stdout] test app::session::tests::test_create_session ... ok
[INFO] [stdout] test app::session::tests::test_cancel_session_triggers_app_server_shutdown ... ok
[INFO] [stdout] test app::session::tests::test_create_session_reads_default_smart_model_from_db_setting ... ok
[INFO] [stdout] test app::session::tests::test_create_session_reads_legacy_default_model_setting_when_default_smart_key_is_missing ... ok
[INFO] [stdout] test app::session::tests::test_create_session_keeps_default_smart_model_setting_when_session_model_changes ... ok
[INFO] [stdout] test app::session::tests::test_create_session_scoped_to_project ... ok
[INFO] [stdout] test app::session::tests::test_create_session_with_git_no_actual_repo ... ok
[INFO] [stdout] test app::session::tests::test_create_session_persists_default_smart_model_setting_when_last_used_model_is_enabled ... ok
[INFO] [stdout] test app::session::tests::test_create_session_uses_default_smart_model_setting_and_most_recent_permission_mode ... ok
[INFO] [stdout] test app::session::tests::test_fallback_merge_commit_message ... ok
[INFO] [stdout] test app::session::tests::test_create_session_without_git ... ok
[INFO] [stdout] test app::session::tests::test_delete_session_without_git ... ok
[INFO] [stdout] test app::session::tests::test_delete_session ... ok
[INFO] [stdout] test app::session::tests::test_delete_last_session_update_selection ... ok
[INFO] [stdout] test app::session::tests::test_delete_selected_session_edge_cases ... ok
[INFO] [stdout] test app::session::tests::test_git_branch_getter_without_branch ... ok
[INFO] [stdout] test app::session::tests::test_esc_deletes_blank_session ... ok
[INFO] [stdout] test app::session::tests::test_git_branch_getter_with_branch ... ok
[INFO] [stdout] test app::session::tests::test_done_status_triggers_app_server_shutdown ... ok
[INFO] [stdout] test app::session::tests::test_load_done_session_without_folder_kept ... ok
[INFO] [stdout] test app::session::tests::test_load_existing_sessions ... ok
[INFO] [stdout] test app::session::tests::test_merge_commit_message_prompt_uses_git_commit_default_format ... ok
[INFO] [stdout] test app::session::tests::test_load_existing_sessions_ordered_by_updated_at_desc ... ok
[INFO] [stdout] test app::session::tests::test_load_in_progress_session_without_folder_skipped ... ok
[INFO] [stdout] test app::session::tests::test_load_sessions_aggregates_daily_activity ... ok
[INFO] [stdout] test app::session::tests::test_load_sessions_invalid_path ... ok
[INFO] [stdout] test app::session::tests::test_load_sessions_keeps_daily_activity_after_session_deletion ... ok
[INFO] [stdout] test app::session::tests::test_load_sessions_uses_persisted_size_for_done_status ... ok
[INFO] [stdout] test app::session::tests::test_merge_session_invalid_id ... ok
[INFO] [stdout] test app::session::tests::test_load_sessions_uses_persisted_size_for_non_terminal_status ... ok
[INFO] [stdout] test app::session::tests::test_merge_session_marks_done_when_changes_are_already_in_base ... ok
[INFO] [stdout] test app::session::tests::test_merge_session_no_git ... ok
[INFO] [stdout] test app::session::tests::test_merge_session_removes_worktree_and_branch_after_success ... ok
[INFO] [stdout] test app::session::tests::test_parse_merge_commit_message_response_with_json ... ok
[INFO] [stdout] test app::session::tests::test_parse_merge_commit_message_response_with_wrapped_json ... ok
[INFO] [stdout] test app::session::tests::test_merge_session_queue_processes_sessions_in_fifo_order ... ok
[INFO] [stdout] test app::session::tests::test_navigation ... ok
[INFO] [stdout] test app::session::tests::test_navigation_empty ... ok
[INFO] [stdout] test app::session::tests::test_navigation_follows_grouped_order_and_skips_group_headers ... ok
[INFO] [stdout] test app::session::tests::test_navigation_recovery ... ok
[INFO] [stdout] test app::session::tests::test_next_tab ... ok
[INFO] [stdout] test app::session::tests::test_new_app_empty ... ok
[INFO] [stdout] test app::session::tests::test_rebase_session_no_git ... ok
[INFO] [stdout] test app::session::tests::test_rebase_session_invalid_id ... ok
[INFO] [stdout] test app::session::tests::test_rebase_session_requires_review_status ... ok
[INFO] [stdout] test app::session::tests::test_rebase_session_auto_commits_uncommitted_changes ... ok
[INFO] [stdout] test app::session::tests::test_rebase_session_updates_session_worktree_to_base_head ... ok
[INFO] [stdout] test app::session::tests::test_refresh_sessions_if_needed_reloads_and_preserves_selection ... ok
[INFO] [stdout] test app::session::tests::test_refresh_sessions_if_needed_remaps_view_mode_index ... ok
[INFO] [stdout] test app::session::tests::test_session_branch_uses_first_8_chars ... ok
[INFO] [stdout] test app::session::tests::test_refresh_session_size_recomputes_and_persists_size ... ok
[INFO] [stdout] test app::session::tests::test_session_folder_uses_first_8_chars ... ok
[INFO] [stdout] test app::session::tests::test_reply_first_message_uses_full_prompt_text_as_title ... ok
[INFO] [stdout] test app::session::tests::test_reply_turn_completion_persists_session_size ... ok
[INFO] [stdout] test app::session::tests::test_reply ... ok
[INFO] [stdout] test app::session::tests::test_reply_with_backend_replays_history_after_app_restart_for_review_session ... ok
[INFO] [stdout] test app::session::tests::test_sync_main_pushes_local_commits_to_remote ... ok
[INFO] [stdout] test app::session::tests::test_selected_session ... ok
[INFO] [stdout] test app::session::tests::test_spawn_integration ... ok
[INFO] [stdout] test app::session::tests::test_sync_main_requires_clean_selected_project_branch ... ok
[INFO] [stdout] test app::session::tests::test_reply_with_backend_replays_history_once_after_model_switch ... ok
[INFO] [stdout] test app::session::worker::tests::test_agent_response_questions_preserves_ordered_list_as_single_question_text ... ok
[INFO] [stdout] test app::session::worker::tests::test_agent_response_questions_returns_only_question_messages ... ok
[INFO] [stdout] test app::session::worker::tests::test_build_assistant_transcript_output_falls_back_to_question_text ... ok
[INFO] [stdout] test app::session::worker::tests::test_build_assistant_transcript_output_prefers_answer_messages ... ok
[INFO] [stdout] test app::session::worker::tests::test_build_assistant_transcript_output_returns_none_for_blank_messages ... ok
[INFO] [stdout] test app::session::tests::test_sync_main_returns_error_without_upstream_remote ... ok
[INFO] [stdout] test app::session::worker::tests::test_session_command_kind_values ... ok
[INFO] [stdout] test app::session::tests::test_spawn_session_task_skips_commit_when_nothing_to_commit ... ok
[INFO] [stdout] test app::session::tests::test_sync_main_uses_active_project_branch_from_context ... ok
[INFO] [stdout] test app::session_state::tests::sync_from_handles_updates_output_when_same_length_content_changes ... ok
[INFO] [stdout] test app::session_state::tests::sync_session_with_handles_appends_suffix_for_extended_output ... ok
[INFO] [stdout] test app::session_state::tests::sync_session_with_handles_equal_length_sync ... ok
[INFO] [stdout] test app::session::tests::test_start_session_uses_full_prompt_text_as_title ... ok
[INFO] [stdout] test app::session_state::tests::sync_session_with_handles_replaces_output_when_prefix_changes ... ok
[INFO] [stdout] test app::settings::tests::footer_hint_returns_editing_text_when_text_input_is_active ... ok
[INFO] [stdout] test app::settings::tests::is_editing_text_input_returns_false_by_default ... ok
[INFO] [stdout] test app::settings::tests::next_moves_selection_to_default_smart_model_row ... ok
[INFO] [stdout] test app::settings::tests::previous_wraps_to_open_command_row_from_reasoning_level_row ... ok
[INFO] [stdout] test app::settings::tests::setting_name_as_str_returns_default_review_model ... ok
[INFO] [stdout] test app::settings::tests::setting_name_as_str_returns_default_fast_model ... ok
[INFO] [stdout] test app::settings::tests::setting_name_as_str_returns_default_smart_model ... ok
[INFO] [stdout] test app::settings::tests::setting_name_as_str_returns_last_used_model_as_default ... ok
[INFO] [stdout] test app::settings::tests::setting_name_as_str_returns_reasoning_level ... ok
[INFO] [stdout] test app::settings::tests::settings_rows_include_reasoning_smart_fast_review_model_and_open_command ... ok
[INFO] [stdout] test app::settings::tests::settings_rows_show_cursor_for_open_command_while_editing ... ok
[INFO] [stdout] test app::settings::tests::settings_rows_show_default_fast_model_value ... ok
[INFO] [stdout] test app::settings::tests::settings_rows_show_default_review_model_value ... ok
[INFO] [stdout] test app::settings::tests::settings_rows_show_empty_placeholder_for_open_command ... ok
[INFO] [stdout] test app::settings::tests::settings_rows_show_last_used_model_as_default_value_when_enabled ... ok
[INFO] [stdout] test app::settings::tests::settings_rows_show_reasoning_level_value ... ok
[INFO] [stdout] test app::tab::tests::test_tab_manager_new_defaults_to_projects ... ok
[INFO] [stdout] test app::tab::tests::test_tab_manager_next_cycles_tabs ... ok
[INFO] [stdout] test app::tab::tests::test_tab_manager_previous_cycles_tabs ... ok
[INFO] [stdout] test app::tab::tests::test_tab_manager_set_updates_current_tab ... ok
[INFO] [stdout] test app::tab::tests::test_tab_next ... ok
[INFO] [stdout] test app::tab::tests::test_tab_previous ... ok
[INFO] [stdout] test app::tab::tests::test_tab_title ... ok
[INFO] [stdout] test app::settings::tests::setting_name_as_str_returns_open_command ... ok
[INFO] [stdout] test app::task::tests::test_focused_review_assist_command_mode_always_uses_start ... ok
[INFO] [stdout] test app::task::tests::test_focused_review_assist_prompt_enforces_read_only_constraints ... ok
[INFO] [stdout] test app::task::tests::test_plain_text_response_passes_through_unchanged ... ok
[INFO] [stdout] test app::task::tests::test_structured_agent_response_is_unwrapped_to_display_text ... ok
[INFO] [stdout] test app::tests::app_event_batch_collect_event_keeps_latest_agent_response_update ... ok
[INFO] [stdout] test app::tests::app_event_batch_collect_event_keeps_latest_at_mention_entries_update ... ok
[INFO] [stdout] test app::session::tests::test_start_session ... ok
[INFO] [stdout] test app::session::worker::tests::test_fail_unfinished_operations_from_previous_run_restores_session_review_status ... ok
[INFO] [stdout] test app::tests::discover_home_project_paths_includes_git_repos_and_excludes_session_worktrees ... ok
[INFO] [stdout] test app::session::tests::test_spawn_session_task_auto_commits_changes ... ok
[INFO] [stdout] test app::tests::is_session_worktree_project_path_returns_false_for_main_repository_path ... ok
[INFO] [stdout] test app::tests::is_session_worktree_project_path_returns_true_for_agentty_worktree_path ... ok
[INFO] [stdout] test app::tests::open_command_to_run_preserves_existing_exec_prefix_when_provided ... ok
[INFO] [stdout] test app::tests::open_command_to_run_returns_none_for_empty_input ... ok
[INFO] [stdout] test app::tests::open_command_to_run_trims_whitespace_without_prefixing_exec ... ok
[INFO] [stdout] test app::session::worker::tests::test_should_skip_worker_command_when_cancel_is_requested ... ok
[INFO] [stdout] test app::session::worker::tests::test_should_skip_worker_command_without_cancel_request ... ok
[INFO] [stdout] test app::tests::resolve_agentty_home_falls_back_to_home_directory_when_override_is_empty ... ok
[INFO] [stdout] test app::tests::resolve_agentty_home_falls_back_to_relative_directory_without_home_dir ... ok
[INFO] [stdout] test app::tests::resolve_agentty_home_returns_env_override_when_set ... ok
[INFO] [stdout] test app::tests::apply_app_events_agent_response_switches_view_mode_to_question_mode ... ok
[INFO] [stdout] test app::session::tests::test_working_dir_getter ... ok
[INFO] [stdout] test app::tests::sync_main_popup_mode_auth_failure_shows_authorization_guidance ... ok
[INFO] [stdout] test app::tests::sync_main_popup_mode_blocked_message_tracks_project_and_branch ... ok
[INFO] [stdout] test app::tests::sync_main_popup_mode_success_message_tracks_project_and_branch ... ok
[INFO] [stdout] test app::tests::apply_app_events_refresh_sessions_reloads_project_active_session_count ... ok
[INFO] [stdout] test domain::agent::tests::test_parse_model_maps_legacy_gpt_52_codex_to_codex_spark ... ok
[INFO] [stdout] test domain::agent::tests::test_parse_model_returns_none_for_models_from_other_providers ... ok
[INFO] [stdout] test domain::agent::tests::test_reasoning_level_from_str_parses_supported_values ... ok
[INFO] [stdout] test domain::agent::tests::test_reasoning_level_from_str_rejects_unknown_values ... ok
[INFO] [stdout] test domain::input::tests::test_delete_current_line_clears_single_line_content ... ok
[INFO] [stdout] test domain::input::tests::test_delete_current_line_removes_first_line_and_following_newline ... ok
[INFO] [stdout] test domain::input::tests::test_delete_current_line_removes_last_line_and_preceding_newline ... ok
[INFO] [stdout] test domain::input::tests::test_delete_current_line_removes_middle_line_and_preceding_newline ... ok
[INFO] [stdout] test domain::input::tests::test_insert_text_at_end_updates_text_and_cursor ... ok
[INFO] [stdout] test domain::input::tests::test_insert_text_in_middle_preserves_surrounding_content ... ok
[INFO] [stdout] test domain::permission::tests::test_from_str_accepts_auto_edit ... ok
[INFO] [stdout] test domain::permission::tests::test_from_str_rejects_removed_permission_modes ... ok
[INFO] [stdout] test domain::project::tests::test_display_label_falls_back_to_path_folder_name ... ok
[INFO] [stdout] test domain::project::tests::test_display_label_prefers_display_name ... ok
[INFO] [stdout] test domain::session::tests::test_status_display_queued ... ok
[INFO] [stdout] test domain::session::tests::test_status_from_str_queued ... ok
[INFO] [stdout] test domain::session::tests::test_status_transition_queued_to_in_progress_is_rejected ... ok
[INFO] [stdout] test domain::session::tests::test_status_transition_queued_to_merging ... ok
[INFO] [stdout] test domain::session::tests::test_status_transition_review_to_queued ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_agent_command_mode_start_plain_disables_structured_protocol ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_agent_command_mode_start_uses_structured_protocol ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_build_resume_prompt_includes_session_output_and_prompt ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_build_resume_prompt_returns_original_prompt_when_output_is_blank ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_build_resume_prompt_returns_original_prompt_without_output ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_prepend_protocol_instructions_with_schema_adds_protocol_instructions ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_prepend_protocol_instructions_with_schema_is_idempotent ... ok
[INFO] [stdout] test app::tests::apply_app_events_agent_response_keeps_list_mode_when_not_viewing_session ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_prepend_protocol_instructions_without_schema_adds_protocol_instructions ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_prepend_repo_root_path_instructions_adds_contract ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_prepend_repo_root_path_instructions_is_idempotent ... ok
[INFO] [stdout] test infra::agent::backend::tests::test_transport_mode_reports_expected_transport_by_provider ... ok
[INFO] [stdout] test infra::agent::claude::tests::test_claude_command_includes_repo_root_path_instructions ... ok
[INFO] [stdout] test infra::agent::claude::tests::test_claude_auto_edit_mode_uses_allowed_tools_edit ... ok
[INFO] [stdout] test infra::agent::claude::tests::test_claude_start_command_includes_json_schema ... ok
[INFO] [stdout] test infra::agent::codex::tests::build_command_includes_repo_root_path_instructions ... ok
[INFO] [stdout] test infra::agent::claude::tests::test_claude_start_plain_command_enforces_json_schema ... ok
[INFO] [stdout] test infra::agent::codex::tests::build_resume_command_appends_root_instructions_and_session_output ... ok
[INFO] [stdout] test app::tests::open_session_worktree_in_tmux_runs_configured_open_command_when_window_opens ... ok
[INFO] [stdout] test infra::agent::codex::tests::build_start_command_appends_root_instructions ... ok
[INFO] [stdout] test infra::agent::codex::tests::build_resume_command_uses_plain_prompt_without_session_output ... ok
[INFO] [stdout] test infra::agent::codex::tests::build_start_plain_command_skips_protocol_instructions ... ok
[INFO] [stdout] test infra::agent::gemini::tests::test_gemini_command_includes_repo_root_path_instructions ... ok
[INFO] [stdout] test infra::agent::gemini::tests::test_gemini_setup_creates_no_files ... ok
[INFO] [stdout] test infra::agent::gemini::tests::test_gemini_start_plain_command_skips_protocol_instructions ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_agent_response_output_schema_contains_message_type_enum_values ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_agent_response_output_schema_contains_required_fields ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_agent_response_output_schema_json_is_parseable_value ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_agent_response_output_schema_ref_objects_have_no_sibling_keywords ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_agent_response_output_schema_does_not_contain_one_of ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_agent_response_plain_constructor ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_agent_response_serde_round_trip ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_normalize_stream_assistant_chunk_protocol_fragment ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_normalize_stream_assistant_chunk_question_only_payload ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_normalize_stream_assistant_chunk_structured_payload ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_empty_messages_falls_back_to_plain_text ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_malformed_json_fallback ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_non_schema_payload_falls_back_to_plain_text ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_plain_text_fallback ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_preserves_fallback_whitespace ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_strict_extracts_json_object_from_wrapped_text ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_strict_rejects_plain_text ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_strict_skips_invalid_embedded_json_before_valid_payload ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_answers_returns_only_answer_messages_in_order ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_normalize_stream_assistant_chunk_plain_text ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_structured_json_in_code_fence_extracts_payload ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_strict_structured_json_payload ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_structured_json_payload ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_structured_json_with_mixed_messages ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_unknown_message_fields_fallback ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_parse_agent_response_unknown_top_level_fields_fallback ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_questions_returns_only_question_messages_in_order ... ok
[INFO] [stdout] test infra::agent::protocol::tests::test_to_answer_display_text_uses_only_answer_messages ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::compact_codex_progress_message_returns_compacting_for_context_compaction ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_claude_parse_response_reads_result_from_json_array_payload ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_claude_parse_response_reads_result_payload ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_claude_parse_response_reads_usage_when_result_is_missing ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_claude_parse_response_uses_stream_message_when_result_is_empty ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_claude_stream_output_line_ignores_result_events_for_delta_streaming ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_claude_stream_output_line_maps_tool_use_blocks_to_progress ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_claude_stream_output_line_reads_assistant_message_content_blocks ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_claude_stream_output_line_reads_message_event_content ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_response_codex_falls_back_to_reasoning_without_agent_message ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_response_codex_ignores_completion_status_as_final_message ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_response_codex_ignores_trailing_completion_status_message ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_response_codex_prefers_agent_message_over_trailing_reasoning_payload ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_stream_output_line_codex_ignores_completion_status_messages ... ok
[INFO] [stdout] test infra::agent::response_parser::tests::test_parse_stream_output_line_codex_keeps_assistant_message_content ... ok
[INFO] [stdout] test infra::app_server::tests::read_latest_session_output_falls_back_to_snapshot_when_live_buffer_is_empty ... ok
[INFO] [stdout] test infra::app_server::tests::read_latest_session_output_falls_back_to_snapshot_when_no_live_buffer ... ok
[INFO] [stdout] test infra::app_server::tests::read_latest_session_output_prefers_live_buffer_over_snapshot ... ok
[INFO] [stdout] test infra::app_server::tests::read_latest_session_output_returns_none_when_both_are_absent ... ok
[INFO] [stdout] test infra::app_server::tests::run_turn_with_restart_retry_restarts_once_after_first_failure ... ok
[INFO] [stdout] test infra::app_server::tests::run_turn_with_restart_retry_skips_replay_when_runtime_restores_context ... ok
[INFO] [stdout] test infra::app_server::tests::run_turn_with_restart_retry_uses_live_output_on_retry ... ok
[INFO] [stdout] test infra::app_server::tests::turn_prompt_for_runtime_adds_repo_root_path_instructions_without_context_reset ... ok
[INFO] [stdout] test infra::app_server_router::tests::run_turn_returns_error_for_unknown_model ... ok
[INFO] [stdout] test infra::app_server_router::tests::run_turn_routes_codex_models_to_codex_client ... ok
[INFO] [stdout] test infra::app_server::tests::take_session_returns_stored_runtime ... ok
[INFO] [stdout] test infra::app_server::tests::turn_prompt_for_runtime_replays_session_output_after_context_reset_with_path_instructions ... ok
[INFO] [stdout] test infra::app_server_router::tests::shutdown_session_propagates_to_all_provider_clients ... ok
[INFO] [stdout] test infra::app_server_router::tests::run_turn_routes_gemini_models_to_gemini_client ... ok
[INFO] [stdout] test infra::app_server_transport::tests::extract_json_error_message_returns_message_string ... ok
[INFO] [stdout] test infra::app_server_transport::tests::extract_json_error_message_returns_none_without_error ... ok
[INFO] [stdout] test infra::app_server_transport::tests::extract_json_error_message_returns_none_without_message_field ... ok
[INFO] [stdout] test infra::app_server_transport::tests::response_id_matches_returns_false_for_different_id ... ok
[INFO] [stdout] test infra::app_server_transport::tests::response_id_matches_returns_false_for_integer_id ... ok
[INFO] [stdout] test infra::app_server_transport::tests::response_id_matches_returns_false_when_id_is_missing ... ok
[INFO] [stdout] test infra::app_server_transport::tests::response_id_matches_returns_true_for_matching_string_id ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_client_failure_returns_agent_error ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_bridges_delta_assistant_message_unchanged ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_bridges_progress_update_as_progress_event ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_codex_keeps_plain_text_without_repair_retry ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_codex_suppresses_non_delta_assistant_messages ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_codex_suppresses_non_delta_structured_json_streaming ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_gemini_suppresses_streamed_assistant_messages ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_passes_and_returns_provider_conversation_id ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_repairs_invalid_structured_output_for_gemini ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_returns_correct_token_counts_and_context_reset ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_routes_codex_thinking_delta_to_thought_event ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_routes_codex_thinking_delta_with_uppercase_phase_to_thought_event ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_skips_delta_protocol_json_fragments ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_normalize_stream_response_content_keeps_answer_text_only ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_normalize_stream_response_content_keeps_plain_text ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_normalize_stream_response_content_suppresses_json_fragment ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_normalize_stream_response_content_suppresses_question_only_payload ... ok
[INFO] [stdout] test infra::channel::app_server::tests::test_run_turn_skips_whitespace_only_assistant_messages ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_run_turn_kill_signal_returns_err_without_stopped_delta ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_run_turn_clean_exit_returns_ok_result_without_context_reset ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_run_turn_spawn_failure_returns_err_without_delta ... ok
[INFO] [stdout] test infra::codex_app_server::tests::approval_policy_maps_auto_edit_mode ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_run_turn_repairs_invalid_structured_output_for_claude ... ok
[INFO] [stdout] test infra::channel::cli::tests::test_run_turn_streams_deltas_and_progress_for_strict_protocol_provider ... ok
[INFO] [stdout] test infra::codex_app_server::tests::auto_compact_input_token_threshold_falls_back_to_128k_limit_for_unknown_models ... ok
[INFO] [stdout] test infra::codex_app_server::tests::auto_compact_input_token_threshold_uses_128k_limit_for_codex_spark ... ok
[INFO] [stdout] test infra::codex_app_server::tests::auto_compact_input_token_threshold_uses_400k_limit_for_codex_models ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_pre_action_approval_response_for_command_request_uses_mode_decision ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_pre_action_approval_response_for_legacy_request_uses_legacy_decision ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_pre_action_approval_response_returns_none_for_non_approval_method ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_thread_resume_payload_sets_thread_id_and_model ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_thread_start_payload_does_not_set_root_instruction_fields ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_thread_start_payload_sets_live_web_search_config_without_dynamic_tools ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_thread_start_payload_uses_thread_folder_as_cwd ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_turn_start_payload_sets_structured_output_schema ... ok
[INFO] [stdout] test infra::codex_app_server::tests::build_turn_start_payload_uses_thread_folder_as_cwd ... ok
[INFO] [stdout] test infra::codex_app_server::tests::camel_to_snake_converts_camel_case_strings ... ok
[INFO] [stdout] test infra::codex_app_server::tests::compaction_timeout_error_includes_timeout_seconds ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_accepts_assistant_message_item_alias ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_delta_ignores_content_delta_for_agent_message_item ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_delta_ignores_content_for_agent_message_delta_notification ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_delta_returns_content_delta_for_reasoning_item ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_delta_returns_content_for_plan_delta_notification ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_delta_returns_content_for_reasoning_text_delta_notification ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_ignores_agent_message_with_thought_phase ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_ignores_completion_status_lines ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_ignores_reasoning_item ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_preserves_phase_for_agent_message_item ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_agent_message_returns_content_text_for_agent_message_item ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_handoff_turn_id_from_completion_returns_none_when_not_waiting_or_active ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_handoff_turn_id_from_completion_returns_turn_id_when_waiting ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_item_started_progress_normalizes_camel_case_item_type ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_item_started_progress_returns_none_for_agent_message ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_item_started_progress_returns_none_for_non_item_started_method ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_item_started_progress_returns_progress_for_command_execution ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_item_started_progress_returns_thinking_for_reasoning ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_thread_token_usage_for_turn_ignores_other_turn_ids ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_thread_token_usage_for_turn_reads_last_usage_for_matching_turn_id ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_completed_error_message_includes_codex_error_info ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_completed_error_message_omits_absent_codex_error_info ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_id_from_turn_start_response_returns_turn_id ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_id_from_turn_start_response_supports_flat_fields ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_id_from_turn_start_response_supports_nested_flat_turn_fields ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_id_from_turn_started_notification_returns_turn_id ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_id_from_turn_started_notification_supports_flat_fields ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_id_from_turn_started_notification_supports_nested_flat_turn_fields ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_usage_for_turn_ignores_other_turn_ids ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_usage_for_turn_reads_matching_turn_id ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_usage_reads_camel_case_fields ... ok
[INFO] [stdout] test infra::codex_app_server::tests::finalize_turn_completion_returns_latest_non_empty_assistant_message_for_completed_turn ... ok
[INFO] [stdout] test infra::codex_app_server::tests::extract_turn_usage_returns_none_when_usage_is_missing ... ok
[INFO] [stdout] test infra::codex_app_server::tests::finalize_turn_completion_streams_error_message_for_non_completed_turn ... ok
[INFO] [stdout] test infra::codex_app_server::tests::interrupted_turn_completion_with_error_is_not_treated_as_handoff ... ok
[INFO] [stdout] test infra::codex_app_server::tests::interrupted_turn_completion_without_error_is_treated_as_handoff ... ok
[INFO] [stdout] test infra::codex_app_server::tests::is_context_window_exceeded_error_detects_structured_error ... ok
[INFO] [stdout] test infra::codex_app_server::tests::is_context_window_exceeded_error_returns_false_for_other_errors ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_accepts_matching_flat_turn_id_fields ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_accepts_matching_nested_flat_turn_id_fields ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_accepts_matching_turn_id ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_ignores_missing_turn_id_for_expected_turn_id ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_ignores_other_turn_ids ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_ignores_notifications_before_turn_id_is_known ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_returns_error_for_failed_turn ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_returns_error_for_interrupted_turn ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_returns_error_for_unfinished_turn_without_error_payload ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_returns_error_when_status_is_missing ... ok
[INFO] [stdout] test infra::codex_app_server::tests::parse_turn_completed_returns_success_for_completed_turn ... ok
[INFO] [stdout] test infra::codex_app_server::tests::resolve_turn_usage_falls_back_to_stream_usage_when_completed_usage_is_missing ... ok
[INFO] [stdout] test infra::codex_app_server::tests::resolve_turn_usage_prefers_completed_usage_over_stream_usage ... ok
[INFO] [stdout] test infra::codex_app_server::tests::stream_turn_content_from_response_emits_phase_progress_once_per_phase ... ok
[INFO] [stdout] test infra::codex_app_server::tests::stream_turn_content_from_response_ignores_agent_message_delta_notifications ... ok
[INFO] [stdout] test infra::codex_app_server::tests::thread_sandbox_mode_maps_auto_edit_mode ... ok
[INFO] [stdout] test infra::codex_app_server::tests::turn_completed_timeout_error_includes_timeout_seconds ... ok
[INFO] [stdout] test infra::codex_app_server::tests::turn_prompt_for_runtime_adds_repo_root_path_instructions_without_context_reset ... ok
[INFO] [stdout] test infra::codex_app_server::tests::turn_prompt_for_runtime_replays_session_output_after_context_reset_with_path_instructions ... ok
[INFO] [stdout] test infra::codex_app_server::tests::turn_sandbox_policy_enables_network_access_for_workspace_write ... ok
[INFO] [stdout] test infra::codex_app_server::tests::update_turn_usage_from_response_prefers_thread_token_usage_updates ... ok
[INFO] [stdout] test infra::codex_app_server::tests::web_search_mode_maps_auto_edit_mode ... ok
[INFO] [stdout] test app::tests::open_session_worktree_in_tmux_skips_open_command_when_setting_is_blank ... ok
[INFO] [stdout] test app::tests::stats_for_session_returns_duration_and_usage_rows ... ok
[INFO] [stdout] test app::tests::stats_for_session_returns_none_duration_for_unknown_session ... ok
[INFO] [stdout] test infra::db::tests::test_insert_session_creation_activity_at_persists_timestamp ... ok
[INFO] [stdout] test app::tests::test_new_prefers_active_session_for_initial_selection ... ok
[INFO] [stdout] test infra::db::tests::test_insert_session_creation_activity_at_ignores_duplicates_per_session ... ok
[INFO] [stdout] test infra::db::tests::test_load_projects_with_stats_returns_session_counts_and_last_update ... ok
[INFO] [stdout] test infra::db::tests::test_reasoning_level_round_trip_uses_typed_setting_helpers ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_case_insensitive ... ok
[INFO] [stdout] test infra::db::tests::test_load_reasoning_level_defaults_when_setting_is_missing_or_invalid ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_fuzzy_match ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_fuzzy_no_match_wrong_order ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_fuzzy_ranks_consecutive_higher ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_fuzzy_ranks_segment_start_higher ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_empty_query_returns_all ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_matches_path_segments ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_no_match ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_prioritizes_basename_match ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_trailing_slash_matches_exact_directory ... ok
[INFO] [stdout] test infra::file_index::tests::test_filter_entries_trailing_slash_prioritizes_directories ... ok
[INFO] [stdout] test infra::file_index::tests::test_fuzzy_score_consecutive_beats_scattered ... ok
[INFO] [stdout] test infra::file_index::tests::test_fuzzy_score_returns_none_for_no_match ... ok
[INFO] [stdout] test infra::file_index::tests::test_fuzzy_score_returns_some_for_match ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_empty_directory ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_excludes_root_directory ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_for_explorer_respects_custom_limits ... ok
[INFO] [stdout] test infra::db::tests::test_load_session_activity_timestamps_keeps_deleted_session_history ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_includes_directories ... ok
[INFO] [stdout] test app::tests::discover_home_project_paths_respects_repository_limit ... ok
[INFO] [stdout] test infra::db::tests::test_set_project_favorite_updates_project_state ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_respects_gitignore ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_includes_non_ignored_dotfiles ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_returns_sorted_entries ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_returns_relative_paths ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_respects_max_depth ... ok
[INFO] [stdout] test infra::file_index::tests::test_sort_and_limit_entries_truncates_after_sort ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_sorts_directories_before_files ... ok
[INFO] [stdout] test infra::gemini_acp::tests::bootstrap_runtime_session_initializes_then_creates_session ... ok
[INFO] [stdout] test infra::gemini_acp::tests::build_permission_response_ignores_mismatched_session_id ... ok
[INFO] [stdout] test infra::gemini_acp::tests::build_permission_response_prefers_allow_always_over_allow_once ... ok
[INFO] [stdout] test infra::gemini_acp::tests::bootstrap_runtime_session_returns_initialize_error_without_session_creation ... ok
[INFO] [stdout] test infra::gemini_acp::tests::build_permission_response_returns_cancelled_when_options_field_is_missing ... ok
[INFO] [stdout] test infra::gemini_acp::tests::build_permission_response_returns_cancelled_without_options ... ok
[INFO] [stdout] test infra::gemini_acp::tests::build_permission_response_selects_allow_once_when_allow_always_is_missing ... ok
[INFO] [stdout] test infra::gemini_acp::tests::extract_assistant_message_chunk_returns_text_for_message_chunk ... ok
[INFO] [stdout] test infra::gemini_acp::tests::extract_assistant_message_chunk_reads_text_from_nested_parts ... ok
[INFO] [stdout] test infra::gemini_acp::tests::extract_progress_update_returns_thinking_for_thought_chunks ... ok
[INFO] [stdout] test infra::gemini_acp::tests::extract_progress_update_returns_tool_title_for_in_progress_tool_call ... ok
[INFO] [stdout] test infra::gemini_acp::tests::extract_progress_update_returns_tool_completed_for_completed_tool_call ... ok
[INFO] [stdout] test infra::gemini_acp::tests::extract_session_update_kind_reads_matching_update_kind ... ok
[INFO] [stdout] test infra::gemini_acp::tests::extract_session_update_kind_ignores_mismatched_session ... ok
[INFO] [stdout] test infra::gemini_acp::tests::initialize_runtime_returns_error_for_json_rpc_error_payload ... ok
[INFO] [stdout] test infra::db::tests::test_session_provider_conversation_id_round_trip_and_clear ... ok
[INFO] [stdout] test infra::gemini_acp::tests::parse_prompt_completion_response_returns_error_without_result_payload ... ok
[INFO] [stdout] test infra::gemini_acp::tests::parse_prompt_completion_response_returns_usage_and_assistant_message ... ok
[INFO] [stdout] test infra::gemini_acp::tests::parse_session_new_response_returns_error_when_session_id_is_missing ... ok
[INFO] [stdout] test infra::gemini_acp::tests::initialize_runtime_writes_initialize_then_initialized_notification ... ok
[INFO] [stdout] test infra::gemini_acp::tests::parse_prompt_completion_response_reads_output_content_parts ... ok
[INFO] [stdout] test infra::gemini_acp::tests::parse_session_new_response_returns_json_rpc_error_message ... ok
[INFO] [stdout] test infra::gemini_acp::tests::parse_session_new_response_returns_session_id_for_success_payload ... ok
[INFO] [stdout] test infra::gemini_acp::tests::run_turn_with_runtime_handles_permission_progress_chunk_and_completion ... ok
[INFO] [stdout] test infra::gemini_acp::tests::start_session_writes_session_new_and_returns_session_id ... ok
[INFO] [stdout] test infra::gemini_acp::tests::stream_assistant_chunk_ignores_empty_chunks ... ok
[INFO] [stdout] test infra::gemini_acp::tests::stream_assistant_chunk_sends_assistant_message_event_for_non_empty_chunks ... ok
[INFO] [stdout] test infra::gemini_acp::tests::parse_prompt_completion_response_reads_snake_case_usage_fields ... ok
[INFO] [stdout] test infra::git::repo::tests::test_apply_non_interactive_environment_sets_git_prompt_controls ... ok
[INFO] [stdout] test infra::db::tests::test_set_and_load_active_project_id_round_trip ... ok
[INFO] [stdout] test infra::db::tests::test_setting_round_trip_supports_default_smart_fast_and_review_models ... ok
[INFO] [stdout] test infra::git::rebase::tests::test_run_git_command_with_index_lock_retry_does_not_sleep_for_non_lock_errors ... ok
[INFO] [stdout] test infra::git::rebase::tests::test_run_git_command_with_index_lock_retry_retries_and_sleeps_before_success ... ok
[INFO] [stdout] test infra::git::tests::test_abort_rebase_returns_error_without_rebase_state_or_stale_metadata ... ok
[INFO] [stdout] test infra::git::tests::test_abort_rebase_cleans_stale_rebase_merge_metadata ... ok
[INFO] [stdout] test infra::git::tests::test_commit_all_preserving_single_commit_amends_existing_session_commit ... ok
[INFO] [stdout] test infra::git::tests::test_is_no_upstream_error_detects_upstream_hint ... ok
[INFO] [stdout] test infra::git::tests::test_is_rebase_conflict_detects_committing_not_possible ... ok
[INFO] [stdout] test infra::git::tests::test_is_rebase_conflict_detects_conflict_keyword ... ok
[INFO] [stdout] test infra::git::tests::test_is_rebase_conflict_detects_could_not_apply ... ok
[INFO] [stdout] test infra::git::tests::test_is_rebase_conflict_detects_mark_as_resolved ... ok
[INFO] [stdout] test infra::git::tests::test_is_rebase_conflict_detects_unresolved_conflict ... ok
[INFO] [stdout] test infra::git::tests::test_is_rebase_conflict_returns_false_for_index_lock_error ... ok
[INFO] [stdout] test infra::git::tests::test_is_rebase_conflict_returns_false_for_unrelated_error ... ok
[INFO] [stdout] test infra::git::tests::test_diff_does_not_include_base_only_commits ... ok
[INFO] [stdout] test infra::git::tests::test_diff_hides_leading_squash_merged_commit_for_non_rebased_session ... ok
[INFO] [stdout] test infra::git::tests::test_commit_all_preserving_single_commit_creates_first_commit ... ok
[INFO] [stdout] test infra::git::tests::test_is_worktree_clean_returns_false_for_dirty_repo ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_respects_max_entries ... ok
[INFO] [stdout] test infra::git::tests::test_list_local_commit_titles_returns_error_without_upstream ... ok
[INFO] [stdout] test infra::git::tests::test_main_repo_root_returns_repo_root_for_main_worktree ... ok
[INFO] [stdout] test infra::git::tests::test_is_worktree_clean_returns_true_for_clean_repo ... ok
[INFO] [stdout] test infra::git::tests::test_list_upstream_commit_titles_returns_error_without_upstream ... ok
[INFO] [stdout] test infra::git::tests::test_diff_keeps_new_commits_after_leading_squash_merged_commit ... ok
[INFO] [stdout] test infra::git::tests::test_main_repo_root_returns_shared_repo_root_for_linked_worktree ... ok
[INFO] [stdout] test infra::git::tests::test_list_local_commit_titles_returns_new_local_commit_titles ... ok
[INFO] [stdout] test infra::git::tests::test_push_current_branch_returns_error_without_remote ... ok
[INFO] [stdout] test infra::git::tests::test_pull_rebase_returns_error_without_upstream ... ok
[INFO] [stdout] test infra::tmux::tests::parse_tmux_window_id_returns_none_for_invalid_utf8 ... ok
[INFO] [stdout] test infra::tmux::tests::parse_tmux_window_id_trims_newline_and_returns_window_id ... ok
[INFO] [stdout] test infra::version::tests::test_fetch_latest_npm_version_tag_sync_falls_back_to_registry_curl ... ok
[INFO] [stdout] test infra::git::tests::test_commit_all_preserving_single_commit_retries_index_lock_and_succeeds ... ok
[INFO] [stdout] test infra::version::tests::test_is_newer_than_current_version_returns_false_when_candidate_is_not_newer ... ok
[INFO] [stdout] test infra::version::tests::test_fetch_latest_npm_version_tag_sync_prefers_npm_cli_result ... ok
[INFO] [stdout] test infra::version::tests::test_is_newer_than_current_version_returns_true_when_candidate_is_newer ... ok
[INFO] [stdout] test infra::version::tests::test_parse_npm_cli_version_response_accepts_json_string ... ok
[INFO] [stdout] test infra::version::tests::test_parse_version_accepts_prefixed_version ... ok
[INFO] [stdout] test infra::version::tests::test_parse_version_rejects_invalid_version ... ok
[INFO] [stdout] test infra::version::tests::test_version_tag_prefixes_semver_with_v ... ok
[INFO] [stdout] test runtime::event::tests::test_spawn_event_reader_with_source_forwards_event_to_channel ... ok
[INFO] [stdout] test runtime::event::tests::test_spawn_event_reader_with_source_skips_polling_when_paused ... ok
[INFO] [stdout] test infra::version::tests::test_parse_registry_latest_response_extracts_version ... ok
[INFO] [stdout] test runtime::event::tests::test_spawn_event_reader_with_source_skips_read_when_poll_returns_false ... ok
[INFO] [stdout] test runtime::event::tests::test_spawn_event_reader_with_source_stops_when_receiver_is_dropped ... ok
[INFO] [stdout] test infra::file_index::tests::test_list_files_for_explorer_can_be_unbounded ... ok
[INFO] [stdout] test infra::git::tests::test_squash_merge_returns_already_present_when_changes_exist_in_target ... ok
[INFO] [stdout] test runtime::key_handler::tests::test_handle_confirmation_decision_cancel_returns_to_list ... ok
[INFO] [stdout] test infra::git::tests::test_pull_rebase_targets_local_upstream_when_upstream_name_has_no_remote_prefix ... ok
[INFO] [stdout] test runtime::mode::confirmation::tests::test_handle_enter_uses_selected_option ... ok
[INFO] [stdout] test runtime::mode::confirmation::tests::test_handle_returns_cancel_for_escape ... ok
[INFO] [stdout] test runtime::mode::confirmation::tests::test_handle_returns_cancel_for_no_shortcut ... ok
[INFO] [stdout] test infra::git::tests::test_squash_merge_returns_committed_when_changes_exist ... ok
[INFO] [stdout] test runtime::mode::confirmation::tests::test_handle_returns_confirm_for_yes_shortcut ... ok
[INFO] [stdout] test runtime::mode::confirmation::tests::test_handle_updates_selection_with_arrow_keys ... ok
[INFO] [stdout] test runtime::mode::confirmation::tests::test_handle_updates_selection_with_h_and_l_shortcuts ... ok
[INFO] [stdout] test infra::git::tests::test_pull_rebase_targets_single_upstream_when_merge_targets_are_ambiguous ... ok
[INFO] [stdout] test infra::git::tests::test_list_upstream_commit_titles_returns_new_upstream_commit_titles ... FAILED
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_down_key_increments_scroll_offset ... ok
[INFO] [stdout] test runtime::key_handler::tests::test_handle_confirmation_decision_confirm_quits_when_no_session_context ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_j_resets_scroll_offset ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_j_wraps_file_selection_from_last_to_first ... ok
[INFO] [stdout] test runtime::key_handler::tests::test_handle_confirmation_decision_cancel_restores_view_for_merge_confirmation ... ok
[INFO] [stdout] test runtime::key_handler::tests::test_handle_confirmation_decision_confirm_deletes_session_when_context_exists ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_k_wraps_file_selection_from_first_to_last ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_k_resets_scroll_offset ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_non_diff_mode_leaves_mode_unchanged ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_shift_k_saturates_scroll_offset_at_zero ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_question_mark_opens_help_overlay ... ok
[INFO] [stdout] test runtime::key_handler::tests::test_handle_confirmation_decision_confirm_queues_merge_with_view_restore ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_up_key_saturates_scroll_offset_at_zero ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_quit_key_returns_to_view_mode ... ok
[INFO] [stdout] test runtime::mode::diff::tests::test_handle_shift_j_increments_scroll_offset ... ok
[INFO] [stdout] test runtime::mode::help::tests::test_handle_down_key_increments_scroll_offset ... ok
[INFO] [stdout] test runtime::mode::help::tests::test_handle_non_help_mode_leaves_mode_unchanged ... ok
[INFO] [stdout] test runtime::mode::help::tests::test_handle_quit_key_restores_view_mode ... ok
[INFO] [stdout] test runtime::mode::help::tests::test_handle_restores_diff_mode_with_content ... ok
[INFO] [stdout] test runtime::mode::help::tests::test_handle_question_mark_restores_list_mode ... ok
[INFO] [stdout] test runtime::mode::help::tests::test_handle_up_key_saturates_at_zero ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_backtab_key_cycles_tabs_backward ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_add_key_creates_session_and_opens_prompt_mode ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_delete_key_opens_delete_confirmation ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_backspace_key_removes_open_command_character_while_editing ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_char_key_appends_open_command_value_while_editing ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_opens_canceled_session ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_e_key_without_session_selection_keeps_list_mode ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_e_key_with_selected_session_keeps_list_mode ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_delete_key_without_selection_does_nothing ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_opens_selected_session_in_view_mode ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_opens_done_session ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_opens_selected_question_session_in_question_mode ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_starts_open_command_editing_in_settings_tab ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_refreshes_session_size_in_background ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_question_mark_opens_help_overlay ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_quit_key_shows_confirm_quit_overlay ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_build_stats_markdown_renders_aligned_usage_table_without_box ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_build_stats_markdown_renders_no_usage_message ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_format_duration_large ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_format_duration_mixed ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_format_duration_zero ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_format_stats_metric_line_uses_tab_delimiter ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_switches_to_sessions_tab_from_projects_tab ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_without_session_selection_keeps_list_mode ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_enter_key_stops_open_command_editing_when_already_editing ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_sync_key_opens_popup_when_main_has_uncommitted_changes ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_sync_key_shows_failure_when_upstream_is_missing ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_sync_key_is_case_insensitive ... ok
[INFO] [stdout] test runtime::mode::list::tests::test_handle_sync_key_uses_project_name_and_branch_in_popup_message ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_backspace_with_shift_removes_whitespace_separators ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_at_mention_select_dismisses_stale_mention_state ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_at_mention_select_inserts_directory_with_trailing_slash ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_backspace_resets_history_navigation ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_paste_inserts_multiline_content_with_normalized_newlines ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_backspace_with_alt_removes_whole_word ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_backspace_with_shift_removes_whole_word ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_active_at_mention_false_for_email_pattern ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_active_at_mention_false_without_state ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_active_at_mention_true_for_valid_query ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_control_line_delete_key_accepts_ctrl_u ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_control_line_delete_key_rejects_plain_u ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_control_newline_key_accepts_ctrl_j ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_control_newline_key_accepts_ctrl_m ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_control_newline_key_rejects_plain_j ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_enter_key_for_carriage_return ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_enter_key_for_enter ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_enter_key_for_line_feed ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_enter_key_for_other_key ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_line_delete_backspace_accepts_super_modifier ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_line_delete_backspace_rejects_plain_backspace ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_plain_char_key_for_plain_character ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_plain_char_key_rejects_modifier_keys ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_plain_char_key_rejects_other_character ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_word_delete_backspace_accepts_alt_modifier ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_word_delete_backspace_accepts_shift_modifier ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_is_word_delete_backspace_rejects_plain_backspace ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_cancel_key_deletes_blank_session ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_left_with_shift_skips_whitespace_separators ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_backspace_with_super_deletes_full_line ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_normalize_pasted_text_replaces_carriage_returns ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_prompt_slash_commands_lists_all_commands ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_prompt_slash_commands_match_model ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_prompt_slash_commands_match_stats ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_prompt_slash_commands_no_match ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_prompt_slash_option_count_for_agent_stage ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_prompt_slash_option_count_for_model_stage ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_left_with_shift_moves_cursor_to_previous_word_start ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_insert_newline_for_alt_carriage_return ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_insert_newline_for_alt_enter ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_insert_newline_for_alt_line_feed ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_insert_newline_for_alt_shift_enter ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_not_insert_newline_for_control_enter ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_not_insert_newline_for_non_enter_key ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_not_insert_newline_for_plain_enter ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_not_insert_newline_for_shift_carriage_return ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_not_insert_newline_for_shift_enter ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_should_not_insert_newline_for_shift_line_feed ... ok
[INFO] [stdout] test runtime::mode::question::tests::test_build_question_reply_prompt_formats_all_pairs ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_char_activates_and_clears_at_mention_state ... ok
[INFO] [stdout] test runtime::mode::question::tests::test_handle_enter_on_last_question_transitions_to_view_mode ... ok
[INFO] [stdout] test runtime::mode::question::tests::test_handle_enter_with_blank_response_records_no_answer ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_line_delete_with_ctrl_u_deletes_full_line ... ok
[INFO] [stdout] test runtime::mode::question::tests::test_handle_escape_skips_question_with_no_answer ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_can_open_session_worktree_disables_canceled_state ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_can_open_session_worktree_disables_done_state ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_can_open_session_worktree_disables_queued_state ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_can_open_session_worktree_enables_review_state ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_handle_prompt_right_with_shift_moves_cursor_to_next_word_start ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_navigate_prompt_history_down_restores_draft_after_latest_entry ... ok
[INFO] [stdout] test runtime::mode::question::tests::test_handle_paste_normalizes_line_endings ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_done_output_toggle_key_accepts_done_status_with_t ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_done_output_toggle_key_rejects_control_modified_key ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_done_output_toggle_key_rejects_non_done_status ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_focused_review_loading_status_message_matches_model_aware_message ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_focused_review_loading_status_message_rejects_unrelated_message ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_view_action_allowed_only_for_non_done_non_in_progress_status ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_view_diff_allowed_only_for_review_status ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_view_focused_review_allowed_only_for_review_status ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_view_worktree_open_allowed_returns_false_for_canceled ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_view_worktree_open_allowed_returns_false_for_merge_queue_statuses ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_is_view_worktree_open_allowed_returns_true_for_in_progress ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_prompt_context_marks_email_pattern_as_inactive_mention ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_prompt_history_entries_extracts_user_prompts ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_prompt_history_entries_ignores_non_prompt_lines ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_prompt_history_entries_keeps_multiline_prompts ... ok
[INFO] [stdout] test runtime::mode::prompt::tests::test_navigate_prompt_history_up_selects_latest_entry_and_saves_draft ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_append_output_for_session_appends_text ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_focused_review_assist_model_returns_default_review_model_setting ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_scroll_offset_down_returns_none_at_end_of_content ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_scroll_offset_up_uses_bottom_when_scroll_is_unset ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_apply_view_scroll_and_output_mode_updates_focused_review_state ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_focused_review_diff_for_view_session_returns_empty_diff_message ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_open_merge_confirmation_sets_confirmation_mode_with_view_restore_state ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_focused_review_diff_for_view_session_returns_git_diff_text ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_view_session_state_maps_merge_queue_statuses ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_view_session_state_maps_rebasing_status ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_rebase_view_session_appends_error_output_without_review_status ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_scroll_offset_down_does_not_jump_to_bottom_for_wrapped_output ... ok
[INFO] [stdout] test runtime::mode::sync_blocked::tests::test_format_sync_success_message_includes_markdown_sections ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_view_context_returns_none_for_non_view_mode ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_show_diff_for_view_session_switches_mode_to_diff ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_view_context_returns_existing_session_details ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_question_mark_sets_help_mode_from_view_context ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_view_context_falls_back_to_list_when_session_is_missing ... ok
[INFO] [stdout] test runtime::terminal::tests::launch_external_editor_passes_working_directory_binary_and_args ... ok
[INFO] [stdout] test runtime::terminal::tests::launch_external_editor_returns_launcher_error ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_activity_day_key_with_offset_applies_negative_offset ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_activity_day_key_with_offset_applies_positive_offset ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_build_activity_heatmap_grid_places_values_in_expected_cells ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_build_heatmap_month_row_places_labels_on_week_columns ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_build_visible_heatmap_month_row_uses_trailing_weeks ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_heatmap_intensity_level_scales_from_zero_to_max ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_heatmap_max_count_returns_largest_daily_value ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_heatmap_month_markers_start_on_month_changes ... ok
[INFO] [stdout] test ui::activity_heatmap::tests::test_visible_heatmap_week_count_clamps_to_available_width ... ok
[INFO] [stdout] test ui::components::chat_input::tests::test_builder_methods ... ok
[INFO] [stdout] test ui::components::chat_input::tests::test_total_viewport_line_count_uses_cursor_row_when_cursor_is_below_last_display_line ... ok
[INFO] [stdout] test ui::components::confirmation_overlay::tests::test_confirmation_overlay_new_stores_fields ... ok
[INFO] [stdout] test runtime::mode::sync_blocked::tests::test_handle_enter_closes_sync_blocked_popup ... ok
[INFO] [stdout] test ui::components::confirmation_overlay::tests::test_confirmation_overlay_render_hides_bottom_navigation_hints ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_file_list_lines_with_nested_structure ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_file_list_lines_with_no_files ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_file_list_lines_with_nonstandard_header ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_file_list_lines_with_rename ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_file_list_lines_with_same_path ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_file_tree_items_nested_structure ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_file_tree_items_returns_folders_and_files ... ok
[INFO] [stdout] test ui::components::confirmation_overlay::tests::test_confirmation_overlay_render_preserves_choices_for_long_message ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_file_tree_items_with_rename ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_filter_diff_lines_by_file ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_filter_diff_lines_by_folder ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_next_selected_index_wraps_from_last_to_first ... ok
[INFO] [stdout] test ui::components::file_explorer::tests::test_previous_selected_index_wraps_from_first_to_last ... ok
[INFO] [stdout] test ui::components::footer_bar::tests::test_footer_bar_new_with_git_branch ... ok
[INFO] [stdout] test ui::components::footer_bar::tests::test_footer_bar_new_without_git_branch ... ok
[INFO] [stdout] test ui::components::footer_bar::tests::test_footer_bar_render_with_git_branch ... ok
[INFO] [stdout] test ui::components::footer_bar::tests::test_footer_bar_render_with_git_status ... ok
[INFO] [stdout] test ui::components::help_overlay::tests::test_centered_rect_centers_within_area ... ok
[INFO] [stdout] test ui::components::help_overlay::tests::test_centered_rect_clamps_to_area_when_small ... ok
[INFO] [stdout] test ui::components::footer_bar::tests::test_footer_bar_render_without_git_branch ... ok
[INFO] [stdout] test ui::components::help_overlay::tests::test_centered_rect_respects_minimum_dimensions ... ok
[INFO] [stdout] test ui::components::help_overlay::tests::test_help_overlay_new_stores_fields ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_info_overlay_new_stores_fields ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_info_overlay_render_includes_ok_indicator ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_info_overlay_render_includes_loading_indicator_when_loading ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_markdown_message_with_block_headers_formats_sync_sections ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_markdown_message_with_block_headers_inserts_missing_section_spacing ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_message_lines_highlight_inline_code_segments ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_info_overlay_render_keeps_ok_indicator_for_multiline_message ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_message_lines_keeps_each_sentence_on_its_own_line ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_builder_methods ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_horizontal_border_width_is_zero_without_vertical_borders ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_appends_empty_line_before_spinner ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_appends_empty_line_when_done ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_done_focused_review_mode_shows_summary_toggle_action ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_done_output_mode_shows_summary_toggle_action ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_done_summary_mode_shows_output_toggle_action ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_focused_review_mode_prefers_assisted_text ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_focused_review_mode_shows_status_message ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_focused_review_mode_shows_unavailable_message_without_assisted_text ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_render_user_prompt_with_cyan_bold_styling ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_use_full_panel_width_without_vertical_borders ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_uses_streamed_output_for_done_session_in_output_mode ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_uses_summary_for_canceled_session ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_lines_uses_summary_for_done_session ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_text_with_spaced_user_input_adds_empty_line_before_and_after ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_text_with_spaced_user_input_keeps_existing_empty_lines ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_output_text_with_spaced_user_input_keeps_multiline_user_prompt_together ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_rendered_line_count_counts_wrapped_content ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_status_message_for_merging ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_status_message_for_queued ... ok
[INFO] [stdout] test ui::components::session_output::tests::test_status_message_uses_active_progress_with_animated_suffix ... ok
[INFO] [stdout] test ui::components::status_bar::tests::test_status_bar_new_stores_versions ... ok
[INFO] [stdout] test ui::components::status_bar::tests::test_status_bar_render_shows_current_version_without_update ... ok
[INFO] [stdout] test ui::components::status_bar::tests::test_status_bar_render_shows_update_notice_when_available ... ok
[INFO] [stdout] test ui::components::tab::tests::test_tab_spans_highlight_the_active_tab ... ok
[INFO] [stdout] test ui::components::tab::tests::test_tab_spans_include_selected_project_name_in_sessions_label ... ok
[INFO] [stdout] test ui::components::tab::tests::test_tab_spans_use_equal_spacing_between_labels ... ok
[INFO] [stdout] test ui::diff_util::tests::test_build_focused_review_text_handles_empty_diff ... ok
[INFO] [stdout] test ui::diff_util::tests::test_build_focused_review_text_includes_summary_and_critical_highlights ... ok
[INFO] [stdout] test ui::components::info_overlay::tests::test_result_state_centers_branch_header_like_loading_state ... ok
[INFO] [stdout] test ui::diff_util::tests::test_build_focused_review_text_uses_fallback_when_summary_and_critical_hits_missing ... ok
[INFO] [stdout] test ui::diff_util::tests::test_diff_line_change_totals ... ok
[INFO] [stdout] test ui::diff_util::tests::test_diff_line_change_totals_ignores_headers ... ok
[INFO] [stdout] test ui::diff_util::tests::test_max_diff_line_number ... ok
[INFO] [stdout] test ui::diff_util::tests::test_max_diff_line_number_empty ... ok
[INFO] [stdout] test ui::diff_util::tests::test_parse_diff_lines_empty ... ok
[INFO] [stdout] test ui::diff_util::tests::test_parse_diff_lines_full ... ok
[INFO] [stdout] test ui::diff_util::tests::test_parse_hunk_header_basic ... ok
[INFO] [stdout] test ui::diff_util::tests::test_parse_hunk_header_invalid ... ok
[INFO] [stdout] test ui::diff_util::tests::test_parse_hunk_header_no_count ... ok
[INFO] [stdout] test ui::diff_util::tests::test_parse_hunk_header_with_context ... ok
[INFO] [stdout] test ui::diff_util::tests::test_wrap_diff_content_empty ... ok
[INFO] [stdout] test ui::diff_util::tests::test_wrap_diff_content_exact ... ok
[INFO] [stdout] test ui::diff_util::tests::test_wrap_diff_content_fits ... ok
[INFO] [stdout] test ui::diff_util::tests::test_wrap_diff_content_wraps ... ok
[INFO] [stdout] test ui::icon::tests::test_as_str ... ok
[INFO] [stdout] test ui::icon::tests::test_current_spinner ... ok
[INFO] [stdout] test ui::icon::tests::test_display_matches_as_str ... ok
[INFO] [stdout] test ui::icon::tests::test_spinner_frames ... ok
[INFO] [stdout] test ui::icon::tests::test_spinner_wraps ... ok
[INFO] [stdout] test ui::layout::tests::test_calculate_input_height ... ok
[INFO] [stdout] test ui::layout::tests::test_calculate_input_viewport_clamps_cursor_to_last_line ... ok
[INFO] [stdout] test ui::layout::tests::test_calculate_input_viewport_with_scroll ... ok
[INFO] [stdout] test ui::layout::tests::test_calculate_input_viewport_without_scroll ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_at_mention_highlighting ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_cursor_at_start ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_cursor_before_wrapped_char ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_cursor_in_middle ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_cursor_moves_to_next_line_before_wrapped_word ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_cursor_on_second_line ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_empty ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_exact_fit ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_explicit_newline ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_multiline_exact_fit ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_multiple_newlines ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_no_highlight_for_email ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_single_line ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_wrap ... ok
[INFO] [stdout] test ui::layout::tests::test_compute_input_layout_wraps_whole_words_when_they_fit_on_next_line ... ok
[INFO] [stdout] test ui::layout::tests::test_input_cursor_position_accounts_for_border_and_offsets ... ok
[INFO] [stdout] test ui::layout::tests::test_move_input_cursor_down_on_wrapped_layout ... ok
[INFO] [stdout] test ui::layout::tests::test_move_input_cursor_up_on_wrapped_layout ... ok
[INFO] [stdout] test ui::layout::tests::test_placeholder_cursor_position_accounts_for_border_and_prompt_prefix ... ok
[INFO] [stdout] test ui::layout::tests::test_slash_menu_dropdown_height_includes_border_lines ... ok
[INFO] [stdout] test ui::layout::tests::test_slash_menu_dropdown_height_saturates_at_u16_max ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_keeps_prompt_continuation_line_verbatim ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_leaves_unmatched_inline_delimiters_literal ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_parses_inline_styles ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_renders_fenced_code_without_inline_parsing ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_renders_horizontal_rule ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_renders_stats_metric_with_fixed_alignment ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_renders_stats_section_title_style ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_styles_heading ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_styles_multiline_user_prompt ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_styles_user_prompt ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_treats_unclosed_fence_as_code ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_wraps_blockquote_with_prefix ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_wraps_bullets_with_continuation_indent ... ok
[INFO] [stdout] test ui::markdown::tests::test_render_markdown_wraps_numbered_list_with_continuation_indent ... ok
[INFO] [stdout] test ui::overlays::tests::test_sync_popup_message_with_branch_only ... ok
[INFO] [stdout] test ui::overlays::tests::test_sync_popup_message_with_project_and_branch ... ok
[INFO] [stdout] test ui::overlays::tests::test_sync_popup_message_with_project_only ... ok
[INFO] [stdout] test ui::overlays::tests::test_sync_popup_message_without_project_or_branch ... ok
[INFO] [stdout] test ui::layout::tests::test_first_table_column_width_uses_remaining_layout_space ... ok
[INFO] [stdout] test ui::pages::diff::tests::test_selected_diff_lines_returns_filtered_section_for_selected_file ... ok
[INFO] [stdout] test ui::pages::diff::tests::test_selected_diff_lines_returns_full_diff_when_index_is_out_of_bounds ... ok
[INFO] [stdout] test ui::pages::project_list::tests::test_format_last_opened_uses_iso_like_date ... ok
[INFO] [stdout] test ui::pages::project_list::tests::test_project_row_values_mark_active_project_title ... ok
[INFO] [stdout] test ui::pages::project_list::tests::test_project_row_values_show_metadata ... ok
[INFO] [stdout] test ui::pages::project_list::tests::test_session_count_line_colors_active_indicator_yellow ... ok
[INFO] [stdout] test ui::pages::project_list::tests::test_session_count_line_shows_plain_total_without_active ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_bottom_height_caps_prompt_input_panel_to_ten_lines ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_bottom_height_preserves_space_for_output_area ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_bottom_height_question_mode_includes_question_input_and_help_rows ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_bottom_height_question_mode_preserves_space_for_output_area ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_at_mention_menu_caps_at_10 ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_at_mention_menu_clamps_selected_index ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_at_mention_menu_directory_has_trailing_slash ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_at_mention_menu_empty_query_returns_all ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_at_mention_menu_no_matches ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_at_mention_menu_scroll_window ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_at_mention_menu_with_matches ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_at_mention_menu_with_trailing_slash_includes_exact_directory ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_slash_menu_for_agent_stage_has_agent_descriptions ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_slash_menu_for_command_stage_has_description ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_slash_menu_for_command_stage_includes_commands ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_build_slash_menu_for_model_stage_has_model_descriptions ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_command_description_stats ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_rendered_output_line_count_counts_wrapped_content ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_canceled_shows_only_back_scroll_and_help ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_done_focused_review_mode_shows_summary_toggle_hint ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_done_hides_open_hint ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_done_output_mode_shows_summary_toggle_hint ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_in_progress_shows_open_and_hides_diff ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_includes_reply_open_and_git_actions ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_merge_queue_statuses_hide_open_editor ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_rebasing_keeps_open ... ok
[INFO] [stdout] test ui::pages::session_chat::tests::test_view_help_text_review_shows_focused_review_and_hides_diff_hint ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_content_chunks_use_horizontal_margin_without_top_spacing ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_grouped_session_indexes_orders_selectable_sessions_without_headers ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_grouped_session_rows_includes_placeholder_for_groups_without_sessions ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_grouped_session_rows_orders_merge_queue_before_active_and_archive_sessions ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_model_column_width_uses_longest_model_value ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_preferred_initial_session_index_falls_back_to_first_grouped_session ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_preferred_initial_session_index_prefers_active_group_when_available ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_prepare_grouped_table_state_resets_offset_and_sets_selected_group_row ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_project_column_width_uses_longest_project_value ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_selected_render_row_maps_original_selection_to_grouped_index ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_session_list_help_text_hides_cancel_for_non_review_session ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_session_list_help_text_includes_open_editor_for_selected_session ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_session_list_help_text_includes_open_for_canceled_session ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_session_list_help_text_includes_sync_for_non_empty_sessions ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_size_color_uses_expected_palette ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_size_column_width_uses_header_width ... ok
[INFO] [stdout] test ui::pages::session_list::tests::test_status_column_width_uses_longest_possible_status_label ... ok
[INFO] [stdout] test ui::pages::stats::tests::test_build_heatmap_lines_trims_visible_weeks_on_narrow_width ... ok
[INFO] [stdout] test ui::pages::stats::tests::test_build_heatmap_lines_uses_persisted_activity_for_max_count ... ok
[INFO] [stdout] test ui::pages::diff::tests::test_render_shows_updated_diff_help_hint ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_view_total_lines_counts_wrapped_output_lines ... ok
[INFO] [stdout] test ui::pages::stats::tests::test_render_does_not_show_session_summary_panel ... ok
[INFO] [stdout] test ui::state::app_mode::tests::test_confirmation_view_mode_into_view_mode_restores_snapshot_values ... ok
[INFO] [stdout] test ui::state::app_mode::tests::test_done_session_output_mode_toggle_switches_between_variants ... ok
[INFO] [stdout] test ui::state::app_mode::tests::test_help_context_list_keybindings_return_stored_actions ... ok
[INFO] [stdout] test ui::state::app_mode::tests::test_help_context_restore_mode_ignores_view_help_flags ... ok
[INFO] [stdout] test ui::state::app_mode::tests::test_help_context_view_keybindings_for_in_progress_hide_edit_actions ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_footer_text_joins_actions_in_order ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_session_list_actions_hide_enter_without_openable_session ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_session_list_footer_actions_hides_non_critical_session_commands ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_actions_done_shows_toggle_and_hides_edit_actions ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_actions_in_progress_shows_open_and_hides_edit_actions ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_actions_interactive_hides_diff ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_actions_merge_queue_hides_open_nvim_and_stop ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_actions_rebasing_shows_open_without_stop ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_actions_review_shows_diff ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_footer_actions_merge_queue_hides_open_nvim_and_stop ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_footer_actions_rebasing_shows_open_without_stop ... ok
[INFO] [stdout] test ui::state::help_action::tests::test_view_footer_actions_review_shows_advanced_actions ... ok
[INFO] [stdout] test ui::text_util::tests::test_format_duration_compact ... ok
[INFO] [stdout] test ui::text_util::tests::test_format_token_count ... ok
[INFO] [stdout] test ui::text_util::tests::test_format_token_count_millions ... ok
[INFO] [stdout] test ui::text_util::tests::test_format_token_count_small ... ok
[INFO] [stdout] test ui::text_util::tests::test_format_token_count_thousands ... ok
[INFO] [stdout] test ui::text_util::tests::test_truncate_with_ellipsis_adds_three_dots_when_text_overflows ... ok
[INFO] [stdout] test ui::text_util::tests::test_truncate_with_ellipsis_keeps_full_text_when_it_fits ... ok
[INFO] [stdout] test ui::text_util::tests::test_truncate_with_ellipsis_uses_only_dots_for_tiny_widths ... ok
[INFO] [stdout] test ui::text_util::tests::test_wrap_lines_basic ... ok
[INFO] [stdout] test ui::text_util::tests::test_wrap_lines_wrapping ... ok
[INFO] [stdout] test ui::text_util::tests::test_wrap_styled_line_collapses_extra_whitespace ... ok
[INFO] [stdout] test ui::text_util::tests::test_wrap_styled_line_wraps_and_preserves_style ... ok
[INFO] [stdout] test ui::text_util::tests::test_wrap_styled_line_zero_width_returns_original_line ... ok
[INFO] [stdout] test ui::pages::stats::tests::test_render_shows_session_token_table ... ok
[INFO] [stdout] test runtime::mode::sync_blocked::tests::test_handle_esc_closes_sync_blocked_popup ... ok
[INFO] [stdout] test runtime::mode::sync_blocked::tests::test_handle_other_key_keeps_sync_blocked_popup_open ... ok
[INFO] [stdout] test runtime::mode::sync_blocked::tests::test_handle_r_keeps_sync_blocked_popup_open ... ok
[INFO] [stdout] test runtime::mode::sync_blocked::tests::test_handle_enter_does_not_close_loading_sync_popup ... ok
[INFO] [stdout] test runtime::mode::session_view::tests::test_view_total_lines_respects_done_output_mode ... ok
[INFO] [stdout] test ui::pages::stats::tests::test_render_shows_activity_heatmap_legend ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- infra::git::tests::test_list_upstream_commit_titles_returns_new_upstream_commit_titles stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'infra::git::tests::test_list_upstream_commit_titles_returns_new_upstream_commit_titles' (1051) panicked at src/infra/git.rs:477:9:
[INFO] [stdout] git command ["push", "origin", "main"] failed: error: src refspec main does not match any
[INFO] [stdout] error: failed to push some refs to '/tmp/.tmpFBZkEY'
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x630a449b0742 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x630a449b0742 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x630a449b0742 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x630a449b0742 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x630a449c336a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x630a449c336a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x630a4497b566 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x630a4497b566 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x630a4498dd09 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x630a4498dd09 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x630a4498dba1 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x630a44199b6e - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x630a44199b6e - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x630a4498e032 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x630a4498e032 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x630a4498ddc8 - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x630a44988619 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x630a4496e99d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x630a449cbb3c - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x630a43df7710 - agentty::infra::git::tests::run_git_command::hf620da0611d5681f
[INFO] [stdout]                                at /opt/rustwide/workdir/src/infra/git.rs:477:9
[INFO] [stdout]   20:     0x630a43dff686 - agentty::infra::git::tests::test_list_upstream_commit_titles_returns_new_upstream_commit_titles::{{closure}}::h74c573be0752123a
[INFO] [stdout]                                at /opt/rustwide/workdir/src/infra/git.rs:998:9
[INFO] [stdout]   21:     0x630a43d7f162 - <core::pin::Pin<P> as core::future::future::Future>::poll::h08ebdb3cf134aa0d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x630a43d7f93d - <core::pin::Pin<P> as core::future::future::Future>::poll::h8a2045acac4a4bc7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x630a43fbfe8d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::h9b848c0ed7db0081
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   24:     0x630a43fbfd9b - tokio::task::coop::with_budget::h30821ac0476b9ca8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   25:     0x630a43fbfd9b - tokio::task::coop::budget::hde4a9dc27c199eb6
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   26:     0x630a43fbfd9b - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::h8fb09ff6dac1b1a9
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   27:     0x630a43fbd4e0 - tokio::runtime::scheduler::current_thread::Context::enter::h9bc6b802b8723d11
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   28:     0x630a43fbf2bd - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::ha209d2f734dd2724
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   29:     0x630a43fbe494 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::h4adcc3cf915971cd
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   30:     0x630a4414568b - tokio::runtime::context::scoped::Scoped<T>::set::h4b752851217b662f
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   31:     0x630a44090899 - tokio::runtime::context::set_scheduler::{{closure}}::ha41066ae5294af28
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   32:     0x630a43ae2052 - std::thread::local::LocalKey<T>::try_with::h4757fac6dfba00f0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   33:     0x630a43ae137e - std::thread::local::LocalKey<T>::with::h379c8d11dd32039f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   34:     0x630a440907cd - tokio::runtime::context::set_scheduler::hf1bdc1f1c0c43ee4
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   35:     0x630a43fbe240 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::hf2e8e176904004f0
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   36:     0x630a43fbe4f6 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::h1e5133bd9a4c7d57
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   37:     0x630a43fb6f70 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::haf563ec705dbd1fb
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   38:     0x630a43cc90d3 - tokio::runtime::context::runtime::enter_runtime::he8aa470286ea33b5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   39:     0x630a43fb69e1 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h8446be8c902b6ee0
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   40:     0x630a43b86674 - tokio::runtime::runtime::Runtime::block_on_inner::h0443e15ffa409014
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   41:     0x630a43b8694c - tokio::runtime::runtime::Runtime::block_on::hff547070cd4a0883
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   42:     0x630a43dfecf3 - agentty::infra::git::tests::test_list_upstream_commit_titles_returns_new_upstream_commit_titles::hf46f7aad85ac63d9
[INFO] [stdout]                                at /opt/rustwide/workdir/src/infra/git.rs:1007:68
[INFO] [stdout]   43:     0x630a43dfed87 - agentty::infra::git::tests::test_list_upstream_commit_titles_returns_new_upstream_commit_titles::{{closure}}::h067f3e6f25551454
[INFO] [stdout]                                at /opt/rustwide/workdir/src/infra/git.rs:965:83
[INFO] [stdout]   44:     0x630a43a5c126 - core::ops::function::FnOnce::call_once::hd7a06e402778df1d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x630a4419992b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x630a4419992b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   47:     0x630a441ad33a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   48:     0x630a441ad33a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   49:     0x630a441ad33a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   50:     0x630a441ad33a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   51:     0x630a441ad33a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   52:     0x630a441ad33a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   53:     0x630a441ad33a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   54:     0x630a44187794 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   55:     0x630a44187794 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   56:     0x630a4418b132 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   57:     0x630a4418b132 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   58:     0x630a4418b132 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   59:     0x630a4418b132 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   60:     0x630a4418b132 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   61:     0x630a4418b132 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   62:     0x630a4418b132 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   63:     0x630a4498357f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   64:     0x630a4498357f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   65:     0x7098445d6aa4 - <unknown>
[INFO] [stdout]   66:     0x709844663a64 - clone
[INFO] [stdout]   67:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     infra::git::tests::test_list_upstream_commit_titles_returns_new_upstream_commit_titles
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 901 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.41s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "dc09f13ced05b36f4c65d708988dc2b371fa48e2cf778c6b5b8d865dae57244f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dc09f13ced05b36f4c65d708988dc2b371fa48e2cf778c6b5b8d865dae57244f", kill_on_drop: false }`
[INFO] [stdout] dc09f13ced05b36f4c65d708988dc2b371fa48e2cf778c6b5b8d865dae57244f
