[INFO] cloning repository https://github.com/dominicva/grox [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dominicva/grox" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdominicva%2Fgrox", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdominicva%2Fgrox'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ccf3dcf0fbd076078621536b8edc804674a702b1 [INFO] testing dominicva/grox against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdominicva%2Fgrox" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/dominicva/grox [INFO] finished tweaking git repo https://github.com/dominicva/grox [INFO] tweaked toml for git repo https://github.com/dominicva/grox written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/dominicva/grox on toolchain 1.100.0-beta.1 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/dominicva/grox already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e [INFO] running `Command { std: "docker" "start" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling cc v1.2.59 [INFO] [stderr] Compiling indexmap v2.13.1 [INFO] [stderr] Compiling openssl v0.10.76 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling nix v0.31.2 [INFO] [stderr] Compiling unicode-segmentation v1.13.2 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling quick-xml v0.38.4 [INFO] [stderr] Compiling nibble_vec v0.1.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling linked-hash-map v0.5.6 [INFO] [stderr] Compiling iri-string v0.7.12 [INFO] [stderr] Compiling endian-type v0.2.0 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling radix_trie v0.3.0 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling yaml-rust v0.4.5 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling fxhash v0.2.1 [INFO] [stderr] Compiling fuzzy-matcher v0.3.7 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling newline-converter v0.3.0 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling openssl-sys v0.9.112 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling onig_sys v69.9.1 [INFO] [stderr] Compiling tokio v1.51.0 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling mio v0.8.11 [INFO] [stderr] Compiling plist v1.8.0 [INFO] [stderr] Compiling bincode v1.3.3 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling crossterm v0.25.0 [INFO] [stderr] Compiling home v0.5.12 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling uuid v1.23.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling eventsource-stream v0.2.3 [INFO] [stderr] Compiling inquire v0.7.5 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling rustyline v18.0.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling onig v6.5.1 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling syntect v5.3.0 [INFO] [stderr] Compiling grox-cli v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 1m 46s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.31.2 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4` [INFO] running `Command { std: "docker" "inspect" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling fastrand v2.4.0 [INFO] [stderr] Compiling openssl v0.10.76 [INFO] [stderr] Compiling nix v0.31.2 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling onig v6.5.1 [INFO] [stderr] Compiling inquire v0.7.5 [INFO] [stderr] Compiling syntect v5.3.0 [INFO] [stderr] Compiling rustyline v18.0.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling grox-cli v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 45.80s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.31.2 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4` [INFO] running `Command { std: "docker" "inspect" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.23s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.31.2 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4` [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/build/grox-cli/7713a9d10668366b/out/grox-7713a9d10668366b) [INFO] [stdout] [INFO] [stdout] running 465 tests [INFO] [stdout] test agent::tests::full_history_sent_across_inner_iterations ... ok [INFO] [stdout] test agent::tests::context_refresh_called_after_mutating_tool ... ok [INFO] [stdout] test agent::tests::intermediate_reasoning_round_tripped_in_messages ... ok [INFO] [stdout] test agent::tests::empty_final_text_produces_no_assistant_entry ... ok [INFO] [stdout] test agent::tests::context_refresh_not_called_when_permission_denied ... ok [INFO] [stdout] test agent::tests::max_turns_stops_loop ... ok [INFO] [stdout] test agent::tests::intermediate_encrypted_reasoning_round_tripped_in_messages ... ok [INFO] [stdout] test agent::tests::context_refresh_not_called_for_read_only_tools ... ok [INFO] [stdout] test agent::tests::no_tool_calls_exits_immediately ... ok [INFO] [stdout] test agent::tests::permission_denied_returns_message_to_model ... ok [INFO] [stdout] test agent::tests::returns_transcript_entries_for_simple_response ... ok [INFO] [stdout] test agent::tests::on_reasoning_called_for_intermediate_tool_using_turns ... ok [INFO] [stdout] test agent::tests::returns_transcript_entries_for_tool_use ... ok [INFO] [stdout] test agent::tests::single_tool_call_round_trip ... ok [INFO] [stdout] test agent::tests::no_checkpoint_for_read_only_tools ... ok [INFO] [stdout] test agent::tests::tool_error_returned_to_model ... ok [INFO] [stdout] test agent::tests::no_checkpoint_when_tool_execution_fails ... ok [INFO] [stdout] test agent::tests::no_checkpoint_for_out_of_project_path ... ok [INFO] [stdout] test api::tests::contract_encrypted_reasoning_with_tool_call ... ok [INFO] [stdout] test agent::tests::usage_accumulated_across_inner_iterations ... ok [INFO] [stdout] test api::tests::contract_error_response ... ok [INFO] [stdout] test api::tests::contract_happy_path_text_and_tool_call ... ok [INFO] [stdout] test api::tests::model_rejection_ignores_unrelated_errors ... ok [INFO] [stdout] test api::tests::model_rejection_matches_documented_variants ... ok [INFO] [stdout] test agent::tests::unknown_tool_returns_error_to_model ... ok [INFO] [stdout] test api::tests::parse_done_marker ... ok [INFO] [stdout] test agent::tests::no_checkpoint_when_permission_denied ... ok [INFO] [stdout] test api::tests::contract_reasoning_response ... ok [INFO] [stdout] test api::tests::parse_text_delta ... ok [INFO] [stdout] test api::tests::parse_text_delta_from_json_type_field ... ok [INFO] [stdout] test api::tests::parse_unknown_event_type ... ok [INFO] [stdout] test api::tests::request_includes_prompt_cache_key ... ok [INFO] [stdout] test agent::tests::shell_exec_after_checkpoint_detected_by_rewind ... ok [INFO] [stdout] test api::tests::parse_error_event ... ok [INFO] [stdout] test agent::tests::auth_no_warning_means_no_renderer_call ... ok [INFO] [stdout] test api::tests::parse_invalid_json_errors ... ok [INFO] [stdout] test checkpoint::tests::extract_tool_path_from_valid_json ... ok [INFO] [stdout] test checkpoint::tests::extract_tool_path_invalid_json ... ok [INFO] [stdout] test checkpoint::tests::extract_tool_path_no_path_field ... ok [INFO] [stdout] test checkpoint::tests::file_snapshot_serde_roundtrip ... ok [INFO] [stdout] test checkpoint::tests::file_snapshot_created_sentinel_roundtrip ... ok [INFO] [stdout] test api::tests::request_includes_store_false_when_set ... ok [INFO] [stdout] test agent::tests::checkpoint_emitted_for_file_write ... ok [INFO] [stdout] test agent::tests::shell_exec_warning_across_iterations ... ok [INFO] [stdout] test checkpoint::tests::is_git_repo_false_for_non_git_dir ... ok [INFO] [stdout] test agent::tests::auth_warning_delivered_to_renderer ... ok [INFO] [stdout] test checkpoint::tests::resolve_absolute_path ... ok [INFO] [stdout] test agent::tests::shell_exec_detected_by_rewind_when_after_checkpoint ... ok [INFO] [stdout] test checkpoint::tests::hash_object_different_content_different_hash ... ok [INFO] [stdout] test checkpoint::tests::resolve_relative_path ... ok [INFO] [stdout] test checkpoint::tests::is_git_repo_true_for_git_dir ... ok [INFO] [stdout] test checkpoint::tests::cat_file_blob_roundtrip ... ok [INFO] [stdout] test checkpoint::tests::hash_object_nonexistent_file_fails ... ok [INFO] [stdout] test checkpoint::tests::cat_file_blob_invalid_hash_fails ... ok [INFO] [stdout] test checkpoint::tests::hash_object_stores_and_returns_hash ... ok [INFO] [stdout] test checkpoint::tests::hash_object_readonly_matches_write_version ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_dotdot_escape_rejected ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_existing_file ... ok [INFO] [stdout] test checkpoint::tests::hash_object_same_content_same_hash ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_new_file_in_new_dir ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_normalizes_dot_in_new_path ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_normalizes_dot_components ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_new_file_in_existing_dir ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_normalizes_dotdot_in_new_path ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_rejects_escape ... ok [INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_rejects_absolute_outside ... ok [INFO] [stdout] test command_registry::tests::all_commands_have_descriptions ... ok [INFO] [stdout] test command_registry::tests::all_commands_sorted_alphabetically ... ok [INFO] [stdout] test command_registry::tests::extract_at_alone ... ok [INFO] [stdout] test command_registry::tests::extract_at_prefix ... ok [INFO] [stdout] test command_registry::tests::extract_dot_dot_slash_ignored ... ok [INFO] [stdout] test agent::tests::checkpoint_new_file_in_new_directory ... ok [INFO] [stdout] test command_registry::tests::extract_dot_slash ... ok [INFO] [stdout] test command_registry::tests::extract_empty_line ... ok [INFO] [stdout] test command_registry::tests::extract_absolute_path_ignored ... ok [INFO] [stdout] test command_registry::tests::extract_no_path_token ... ok [INFO] [stdout] test command_registry::tests::extract_tilde_prefix_ignored ... ok [INFO] [stdout] test command_registry::tests::extract_slash_in_token ... ok [INFO] [stdout] test command_registry::tests::find_allows_args_for_optional_arg_commands ... ok [INFO] [stdout] test command_registry::tests::find_empty_returns_none ... ok [INFO] [stdout] test command_registry::tests::find_not_slash_returns_none ... ok [INFO] [stdout] test command_registry::tests::find_rejects_trailing_args_for_no_arg_commands ... ok [INFO] [stdout] test command_registry::tests::find_unknown_returns_none ... ok [INFO] [stdout] test command_registry::tests::find_exact_name_with_args ... ok [INFO] [stdout] test command_registry::tests::find_alias ... ok [INFO] [stdout] test command_registry::tests::find_with_extra_whitespace ... ok [INFO] [stdout] test command_registry::tests::find_exact_name_no_args ... ok [INFO] [stdout] test command_registry::tests::prefix_matches_alias_exact_match_priority ... ok [INFO] [stdout] test command_registry::tests::prefix_matches_multiple ... ok [INFO] [stdout] test command_registry::tests::prefix_matches_exact_match_priority ... ok [INFO] [stdout] test command_registry::tests::prefix_matches_includes_aliases ... ok [INFO] [stdout] test command_registry::tests::prefix_matches_single ... ok [INFO] [stdout] test command_registry::tests::prefix_matches_strips_slash ... ok [INFO] [stdout] test compaction::tests::boundary_6_turns_first_is_old ... ok [INFO] [stdout] test compaction::tests::boundary_all_recent_when_fewer_than_5_turns ... ok [INFO] [stdout] test compaction::tests::boundary_exactly_5_turns_all_recent ... ok [INFO] [stdout] test compaction::tests::boundary_with_tool_turns ... ok [INFO] [stdout] test compaction::tests::compacted_entries_have_recalculated_token_estimates ... ok [INFO] [stdout] test compaction::tests::dedup_normalizes_dot_dot_components ... ok [INFO] [stdout] test compaction::tests::dedup_normalizes_relative_vs_absolute_paths ... ok [INFO] [stdout] test compaction::tests::duplicate_file_read_in_old_region_removed ... ok [INFO] [stdout] test command_registry::tests::prefix_matches_empty_returns_all ... ok [INFO] [stdout] test checkpoint::tests::snapshot_pre_nonexistent_file ... ok [INFO] [stdout] test compaction::tests::empty_transcript_returns_empty ... ok [INFO] [stdout] test compaction::tests::file_read_in_old_region_removed_when_recent_has_same_file ... ok [INFO] [stdout] test compaction::tests::format_entries_empty_transcript ... ok [INFO] [stdout] test compaction::tests::format_entries_includes_all_message_types ... ok [INFO] [stdout] test compaction::tests::format_entries_truncates_long_tool_output ... ok [INFO] [stdout] test compaction::tests::llm_compact_rejects_verbose_summary ... ok [INFO] [stdout] test compaction::tests::llm_compact_no_op_when_all_recent ... ok [INFO] [stdout] test compaction::tests::llm_compact_replaces_old_entries_with_summary ... ok [INFO] [stdout] test compaction::tests::llm_compact_summary_token_estimate_matches_content ... ok [INFO] [stdout] test command_registry::tests::prefix_matches_no_match ... ok [INFO] [stdout] test compaction::tests::llm_compact_uses_single_when_below_overflow ... ok [INFO] [stdout] test compaction::tests::llm_compact_returns_usage ... ok [INFO] [stdout] test compaction::tests::maybe_compact_returns_none_below_threshold ... ok [INFO] [stdout] test compaction::tests::maybe_compact_returns_none_when_above_threshold_but_nothing_to_compact ... ok [INFO] [stdout] test compaction::tests::maybe_compact_escalates_to_llm_when_heuristic_insufficient ... ok [INFO] [stdout] test compaction::tests::maybe_compact_propagates_usage_from_rejected_llm ... ok [INFO] [stdout] test checkpoint::tests::restore_file_skips_newly_created_if_user_modified ... ok [INFO] [stdout] test compaction::tests::no_compaction_when_below_5_turns ... ok [INFO] [stdout] test compaction::tests::old_file_read_result_replaced_with_placeholder ... ok [INFO] [stdout] test compaction::tests::old_file_write_result_replaced_with_placeholder ... ok [INFO] [stdout] test compaction::tests::old_grep_result_replaced_with_placeholder ... ok [INFO] [stdout] test compaction::tests::maybe_compact_returns_some_above_threshold ... ok [INFO] [stdout] test compaction::tests::old_shell_output_truncated ... ok [INFO] [stdout] test compaction::tests::recent_turns_preserved_verbatim ... ok [INFO] [stdout] test compaction::tests::short_shell_output_not_truncated ... ok [INFO] [stdout] test compaction::tests::summarization_prompt_has_all_9_sections ... ok [INFO] [stdout] test compaction::tests::mixed_turn_both_tools_compacted ... ok [INFO] [stdout] test compaction::tests::truncate_shell_7_lines ... ok [INFO] [stdout] test compaction::tests::old_file_edit_result_replaced_with_placeholder ... ok [INFO] [stdout] test agent::tests::checkpoint_equivalent_paths_each_get_own_checkpoint ... ok [INFO] [stdout] test compaction::tests::preflight_compaction_reduces_estimate_below_threshold ... ok [INFO] [stdout] test compaction::tests::llm_compact_uses_chunked_when_old_entries_exceed_80_percent ... ok [INFO] [stdout] test compaction::tests::truncate_shell_exactly_6_lines_no_truncation ... ok [INFO] [stdout] test context_assembler::tests::assistant_message_wire_format ... ok [INFO] [stdout] test compaction::tests::turn_boundary_splits_at_user_message ... ok [INFO] [stdout] test compaction::tests::turn_boundary_does_not_orphan_tool_calls ... ok [INFO] [stdout] test context_assembler::tests::build_messages_with_empty_entries ... ok [INFO] [stdout] test context_assembler::tests::compaction_summary_inlined_into_system_prompt ... ok [INFO] [stdout] test context_assembler::tests::estimate_tokens_empty_transcript ... ok [INFO] [stdout] test context_assembler::tests::encrypted_reasoning_round_tripped_in_assistant_message ... ok [INFO] [stdout] test context_assembler::tests::estimate_tokens_excludes_compaction_summary_from_transcript ... ok [INFO] [stdout] test context_assembler::tests::estimate_tokens_no_double_counting ... ok [INFO] [stdout] test context_assembler::tests::estimate_tokens_matches_actual_build_messages_size ... ok [INFO] [stdout] test context_assembler::tests::estimate_tokens_sums_entries_plus_overhead ... ok [INFO] [stdout] test context_assembler::tests::message_ordering_summary_inlined_then_history ... ok [INFO] [stdout] test context_assembler::tests::multiple_compaction_summaries_only_latest_used ... ok [INFO] [stdout] test context_assembler::tests::no_compaction_summary_leaves_system_prompt_unchanged ... ok [INFO] [stdout] test context_assembler::tests::reasoning_content_round_tripped_in_assistant_message ... ok [INFO] [stdout] test context_assembler::tests::set_system_prompt_updates_overhead ... ok [INFO] [stdout] test context_assembler::tests::system_event_is_skipped ... ok [INFO] [stdout] test context_assembler::tests::tool_call_result_linkage ... ok [INFO] [stdout] test compaction::tests::turn_boundary_fallback_when_no_user_messages ... ok [INFO] [stdout] test context_assembler::tests::no_reasoning_fields_when_none ... ok [INFO] [stdout] test compaction::tests::turn_boundary_single_turn_falls_back_to_midpoint ... ok [INFO] [stdout] test context_assembler::tests::tool_call_wire_format ... ok [INFO] [stdout] test context_assembler::tests::build_messages_starts_with_system_prompt ... ok [INFO] [stdout] test context_assembler::tests::tool_result_wire_format ... ok [INFO] [stdout] test context_assembler::tests::full_conversation_roundtrip ... ok [INFO] [stdout] test context_assembler::tests::estimate_tokens_no_double_count_across_compaction_cycles ... ok [INFO] [stdout] test context_assembler::tests::user_message_wire_format ... ok [INFO] [stdout] test file_index::tests::dot_slash_prefix_stripped ... ok [INFO] [stdout] test file_index::tests::empty_query_returns_all ... ok [INFO] [stdout] test file_index::tests::prefix_matching ... ok [INFO] [stdout] test file_index::tests::directory_suffix ... ok [INFO] [stdout] test model_profile::tests::compaction_threshold_131k_models ... ok [INFO] [stdout] test file_index::tests::refresh_picks_up_new_files ... ok [INFO] [stdout] test file_index::tests::replacement_includes_suffix ... ok [INFO] [stdout] test file_index::tests::basename_matching ... ok [INFO] [stdout] test model_profile::tests::compaction_threshold_2m_models ... ok [INFO] [stdout] test model_profile::tests::estimate_cost_from_usage_cached_tokens ... ok [INFO] [stdout] test model_profile::tests::estimate_cost_from_usage_reasoning_tokens_not_double_counted ... ok [INFO] [stdout] test model_profile::tests::estimate_cost_unknown_model_returns_none ... ok [INFO] [stdout] test model_profile::tests::format_context_window_millions ... ok [INFO] [stdout] test model_profile::tests::effective_ceiling_below_context_window ... ok [INFO] [stdout] test file_index::tests::build_index_from_tempdir ... ok [INFO] [stdout] test model_profile::tests::estimate_cost_known_model ... ok [INFO] [stdout] test model_profile::tests::format_for_picker_date_suffix_still_marked_current ... ok [INFO] [stdout] test model_profile::tests::format_for_picker_non_current_not_marked ... ok [INFO] [stdout] test model_profile::tests::format_for_picker_shows_pricing ... ok [INFO] [stdout] test model_profile::tests::grok_2_known_profile ... ok [INFO] [stdout] test model_profile::tests::format_for_picker_shows_context_window ... ok [INFO] [stdout] test model_profile::tests::format_for_picker_shows_reasoning ... ok [INFO] [stdout] test model_profile::tests::grok_3_known_profile ... ok [INFO] [stdout] test model_profile::tests::grok_3_mini_fast_matches_mini ... ok [INFO] [stdout] test model_profile::tests::format_context_window_thousands ... ok [INFO] [stdout] test model_profile::tests::format_for_picker_current_model_marked ... ok [INFO] [stdout] test model_profile::tests::grok_3_mini_known_profile ... ok [INFO] [stdout] test model_profile::tests::grok_4_multi_agent_date_suffix ... ok [INFO] [stdout] test model_profile::tests::grok_4_base_reasoning ... ok [INFO] [stdout] test model_profile::tests::grok_4_multi_agent_profile ... ok [INFO] [stdout] test model_profile::tests::grok_3_fast_matches_grok_3 ... ok [INFO] [stdout] test model_profile::tests::grok_4_non_reasoning_profile ... ok [INFO] [stdout] test model_profile::tests::known_models_entries_match_for_model ... ok [INFO] [stdout] test model_profile::tests::grok_4_reasoning_date_suffix ... ok [INFO] [stdout] test model_profile::tests::grok_4_non_reasoning_date_suffix ... ok [INFO] [stdout] test model_profile::tests::grok_4_reasoning_profile ... ok [INFO] [stdout] test model_profile::tests::known_models_all_support_tools ... ok [INFO] [stdout] test model_profile::tests::known_models_returns_all_families ... ok [INFO] [stdout] test model_profile::tests::same_family_bare_grok4_matches_reasoning ... ok [INFO] [stdout] test model_profile::tests::same_family_canonical_match ... ok [INFO] [stdout] test model_profile::tests::same_family_date_suffix_matches_canonical ... ok [INFO] [stdout] test model_profile::tests::reasoning_effort_only_on_supported_models ... ok [INFO] [stdout] test model_profile::tests::same_family_different_families ... ok [INFO] [stdout] test model_profile::tests::same_family_mini_fast_matches_mini ... ok [INFO] [stdout] test model_profile::tests::supports_tools_all_known_families ... ok [INFO] [stdout] test model_profile::tests::unknown_model_returns_defaults ... ok [INFO] [stdout] test permissions::tests::default_prompts_for_writes ... ok [INFO] [stdout] test permissions::tests::dotdot_escape_in_new_path_classified_as_outside ... ok [INFO] [stdout] test file_index::tests::gitignore_respected ... ok [INFO] [stdout] test permissions::tests::file_edit_outside_project_prompts ... ok [INFO] [stdout] test permissions::tests::file_edit_classified_same_as_file_write_in_project ... ok [INFO] [stdout] test file_index::tests::results_capped_at_50 ... ok [INFO] [stdout] test permissions::tests::file_edit_readonly_denied ... ok [INFO] [stdout] test permissions::tests::destructive_command_allows_always ... ok [INFO] [stdout] test permissions::tests::new_file_in_new_subdirectory_with_grant_auto_approves ... ok [INFO] [stdout] test permissions::tests::new_file_in_new_subdirectory_classified_as_in_project ... ok [INFO] [stdout] test permissions::tests::per_tool_grant_is_per_tool_not_per_category ... ok [INFO] [stdout] test permissions::tests::per_tool_grant_persists_in_session ... ok [INFO] [stdout] test permissions::tests::destructive_grant_auto_approves_with_check ... ok [INFO] [stdout] test permissions::tests::file_edit_yolo_allowed ... ok [INFO] [stdout] test permissions::tests::per_tool_grant_outside_project_still_prompts ... ok [INFO] [stdout] test permissions::tests::per_tool_grants_reset_on_new_session ... ok [INFO] [stdout] test checkpoint::tests::restore_file_to_previous_state ... ok [INFO] [stdout] test permissions::tests::readonly_denies_destructive ... ok [INFO] [stdout] test permissions::tests::default_prompts_for_shell ... ok [INFO] [stdout] test permissions::tests::readonly_denies_shell ... ok [INFO] [stdout] test permissions::tests::readonly_allows_reads_denies_writes ... ok [INFO] [stdout] test permissions::tests::trust_auto_approves_in_project_writes ... ok [INFO] [stdout] test permissions::tests::relative_path_classified_as_in_project ... ok [INFO] [stdout] test permissions::tests::relative_path_edit_classified_as_in_project ... ok [INFO] [stdout] test permissions::tests::trust_prompts_for_outside_project_writes ... ok [INFO] [stdout] test permissions::tests::trust_prompts_for_destructive ... ok [INFO] [stdout] test permissions::tests::yolo_allows_destructive_shell ... ok [INFO] [stdout] test permissions::tests::trust_with_shell_grant_auto_approves ... ok [INFO] [stdout] test permissions::tests::yolo_allows_everything ... ok [INFO] [stdout] test permissions::tests::yolo_destructive_no_warning ... ok [INFO] [stdout] test prompt::tests::grox_md_is_last_section ... ok [INFO] [stdout] test prompt::tests::identity_is_first_section ... ok [INFO] [stdout] test prompt::tests::prompt_contains_all_sections ... ok [INFO] [stdout] test prompt::tests::prompt_emphasizes_reading_before_writing ... ok [INFO] [stdout] test prompt::tests::prompt_excludes_grox_md_when_absent ... ok [INFO] [stdout] test prompt::tests::prompt_includes_grox_md_when_present ... ok [INFO] [stdout] test prompt::tests::prompt_includes_project_root ... ok [INFO] [stdout] test prompt::tests::prompt_includes_repo_context_when_provided ... ok [INFO] [stdout] test prompt::tests::prompt_excludes_repo_context_when_absent ... ok [INFO] [stdout] test prompt::tests::prompt_sections_are_separated_by_blank_lines ... ok [INFO] [stdout] test prompt::tests::prompt_mentions_all_tools ... ok [INFO] [stdout] test prompt::tests::repo_context_before_grox_md ... ok [INFO] [stdout] test checkpoint::tests::restore_file_deletes_newly_created ... ok [INFO] [stdout] test renderer::tests::default_on_auth_warning_is_noop ... ok [INFO] [stdout] test renderer::tests::format_token_count_1500 ... ok [INFO] [stdout] test renderer::tests::format_token_count_at_1k ... ok [INFO] [stdout] test renderer::tests::format_token_count_below_1k ... ok [INFO] [stdout] test renderer::tests::format_token_count_large ... ok [INFO] [stdout] test renderer::tests::format_token_count_zero ... ok [INFO] [stdout] test renderer::tests::markdown_bold ... ok [INFO] [stdout] test renderer::tests::markdown_empty_bold_passthrough ... ok [INFO] [stdout] test renderer::tests::markdown_empty_line ... ok [INFO] [stdout] test renderer::tests::markdown_heading_h1 ... ok [INFO] [stdout] test renderer::tests::markdown_heading_h2 ... ok [INFO] [stdout] test renderer::tests::markdown_heading_h3 ... ok [INFO] [stdout] test renderer::tests::markdown_heading_with_leading_whitespace ... ok [INFO] [stdout] test permissions::tests::yolo_ignores_grants ... ok [INFO] [stdout] test permissions::tests::safe_commands_dont_match ... ok [INFO] [stdout] test renderer::tests::markdown_multiple_bold ... ok [INFO] [stdout] test renderer::tests::markdown_plain_text_passthrough ... ok [INFO] [stdout] test renderer::tests::markdown_unclosed_bold_passthrough ... ok [INFO] [stdout] test permissions::tests::trust_prompts_for_normal_shell ... ok [INFO] [stdout] test renderer::tests::recording_renderer_captures_auth_warnings ... ok [INFO] [stdout] test renderer::tests::markdown_no_bold_without_stars ... ok [INFO] [stdout] test renderer::tests::recording_renderer_captures_reasoning ... ok [INFO] [stdout] test renderer::tests::record_usage_unknown_model_no_cost ... ok [INFO] [stdout] test renderer::tests::record_usage_accumulates ... ok [INFO] [stdout] test renderer::tests::recording_renderer_captures_tool_calls ... ok [INFO] [stdout] test renderer::tests::recording_renderer_captures_tool_results ... ok [INFO] [stdout] test renderer::tests::recording_renderer_starts_empty ... ok [INFO] [stdout] test renderer::tests::status_line_with_cached ... ok [INFO] [stdout] test renderer::tests::status_line_zero_cost ... ok [INFO] [stdout] test renderer::tests::begin_turn_preserves_thinking_state ... ok [INFO] [stdout] test renderer::tests::recording_renderer_captures_tokens ... ok [INFO] [stdout] test renderer::tests::status_line_basic ... ok [INFO] [stdout] test renderer::tests::summarize_file_read ... ok [INFO] [stdout] test renderer::tests::begin_turn_preserves_cumulative_state ... ok [INFO] [stdout] test renderer::tests::seed_cumulative_replaces_state ... ok [INFO] [stdout] test renderer::tests::summarize_shell_exec_truncation ... ok [INFO] [stdout] test renderer::tests::turn_stats_exact_counts ... ok [INFO] [stdout] test renderer::tests::turn_stats_unknown_model_no_cost ... ok [INFO] [stdout] test renderer::tests::turn_stats_with_cached ... ok [INFO] [stdout] test renderer::tests::summarize_file_write ... ok [INFO] [stdout] test renderer::tests::summarize_grep ... ok [INFO] [stdout] test renderer::tests::thinking_expanded_by_default ... ok [INFO] [stdout] test renderer::tests::toggle_thinking_display_cycles ... ok [INFO] [stdout] test renderer::tests::thinking_expanded_handle_shares_state ... ok [INFO] [stdout] test permissions::tests::destructive_patterns_match ... ok [INFO] [stdout] test repo_context::tests::gather_includes_directory_tree ... ok [INFO] [stdout] test rewind::tests::count_turns_empty ... ok [INFO] [stdout] test rewind::tests::count_turns_multiple ... ok [INFO] [stdout] test rewind::tests::format_empty_result ... ok [INFO] [stdout] test repo_context::tests::gather_in_non_git_dir ... ok [INFO] [stdout] test rewind::tests::format_with_shell_warning ... ok [INFO] [stdout] test rewind::tests::format_with_not_in_git_warning ... ok [INFO] [stdout] test rewind::tests::rewind_to_nonexistent_turn ... ok [INFO] [stdout] test repo_context::tests::gather_skips_hidden_and_noise_dirs ... ok [INFO] [stdout] test rewind::tests::rewind_to_turn_2_keeps_first ... ok [INFO] [stdout] test rewind::tests::rewind_to_turn_1_removes_all ... ok [INFO] [stdout] test repo_context::tests::gather_not_truncated_for_small_repo ... ok [INFO] [stdout] test repo_context::tests::gather_respects_depth_limit ... ok [INFO] [stdout] test rewind::tests::rewind_to_turn_non_git_both_mode ... ok [INFO] [stdout] test rewind::tests::rewind_to_turn_zero ... ok [INFO] [stdout] test rewind::tests::short_path_long ... ok [INFO] [stdout] test rewind::tests::short_path_short ... ok [INFO] [stdout] test rewind::tests::undo_last_turn_empty_transcript ... ok [INFO] [stdout] test permissions::tests::per_tool_grant_shell_exec ... ok [INFO] [stdout] test rewind::tests::rewind_to_turn_non_git_code_only_errors ... ok [INFO] [stdout] test rewind::tests::undo_last_turn_removes_last_user_msg_and_after ... ok [INFO] [stdout] test rewind::tests::rewind_to_turn_non_git_conversation_only_works ... ok [INFO] [stdout] test rewind::tests::undo_non_git_both_mode_graceful ... ok [INFO] [stdout] test api::tests::client_no_store_default_off ... ok [INFO] [stdout] test rewind::tests::undo_non_git_code_only_errors ... ok [INFO] [stdout] test rewind::tests::undo_non_git_conversation_only_works ... ok [INFO] [stdout] test rewind::tests::undo_single_turn ... ok [INFO] [stdout] test checkpoint::tests::snapshot_pre_existing_file ... ok [INFO] [stdout] test session::tests::all_variants_serialize_roundtrip ... ok [INFO] [stdout] test rewind::tests::undo_no_checkpoint_conversation_still_works ... ok [INFO] [stdout] test permissions::tests::readonly_ignores_grants ... ok [INFO] [stdout] test session::tests::append_creates_parent_directories ... ok [INFO] [stdout] test session::tests::assistant_message_token_estimate ... ok [INFO] [stdout] test agent::tests::checkpoint_persisted_despite_later_api_failure ... ok [INFO] [stdout] test session::tests::assistant_message_with_reasoning_roundtrip ... ok [INFO] [stdout] test checkpoint::tests::snapshot_post_records_new_state ... ok [INFO] [stdout] test session::tests::assistant_message_with_reasoning_includes_payload_in_token_estimate ... ok [INFO] [stdout] test checkpoint::tests::restore_file_skips_when_user_modified ... ok [INFO] [stdout] test session::tests::atomic_rewrite_interrupted_leaves_original ... ok [INFO] [stdout] test session::tests::checkpoint_serde_tag ... ok [INFO] [stdout] test session::tests::checkpoint_with_shell_exec_flag ... ok [INFO] [stdout] test session::tests::atomic_rewrite_cleans_up_temp_file ... ok [INFO] [stdout] test session::tests::compaction_summary_token_estimate ... ok [INFO] [stdout] test session::tests::crash_recovery_only_incomplete_line ... ok [INFO] [stdout] test session::tests::checkpoint_token_estimate ... ok [INFO] [stdout] test session::tests::append_and_read_roundtrip ... ok [INFO] [stdout] test repo_context::tests::gather_truncates_at_10k ... ok [INFO] [stdout] test session::tests::crash_recovery_trailing_incomplete_line ... ok [INFO] [stdout] test session::tests::old_transcript_without_reasoning_fields_loads ... ok [INFO] [stdout] test rewind::tests::undo_code_only_keeps_transcript ... ok [INFO] [stdout] test session::tests::read_empty_file_returns_empty_vec ... ok [INFO] [stdout] test session::tests::create_makes_empty_file ... ok [INFO] [stdout] test session::tests::reasoning_fields_omitted_when_none_in_serialization ... ok [INFO] [stdout] test session::tests::read_missing_file_returns_empty_vec ... ok [INFO] [stdout] test rewind::tests::rewind_restores_multiple_checkpoints ... ok [INFO] [stdout] test session::tests::create_is_idempotent ... ok [INFO] [stdout] test agent::tests::checkpoint_deduplicates_same_file_edits ... ok [INFO] [stdout] test session::tests::serde_tags_distinguish_variants ... ok [INFO] [stdout] test session::tests::checkpoint_jsonl_roundtrip ... ok [INFO] [stdout] test agent::tests::checkpoint_emitted_for_file_edit ... ok [INFO] [stdout] test session::tests::session_index_creates_directory_if_missing ... ok [INFO] [stdout] test session::tests::resume_partial_corrupt_transcript_recovers_valid_entries ... ok [INFO] [stdout] test session::tests::resume_prefix_match_finds_session ... ok [INFO] [stdout] test session::tests::session_index_list_empty_dir ... ok [INFO] [stdout] test session::tests::resume_graceful_error_on_missing_transcript ... ok [INFO] [stdout] test session::tests::resume_graceful_error_on_corrupt_transcript ... ok [INFO] [stdout] test session::tests::session_meta_new_has_uuid_and_timestamps ... ok [INFO] [stdout] test session::tests::session_meta_load_missing_returns_error ... ok [INFO] [stdout] test session::tests::session_meta_paths_are_correct ... ok [INFO] [stdout] test rewind::tests::undo_multi_checkpoint_single_turn ... ok [INFO] [stdout] test session::tests::system_event_token_estimate ... ok [INFO] [stdout] test session::tests::tool_call_token_estimate ... ok [INFO] [stdout] test session::tests::tool_result_token_estimate ... ok [INFO] [stdout] test session::tests::session_meta_atomic_write_no_temp_residue ... ok [INFO] [stdout] test session::tests::user_message_token_estimate ... ok [INFO] [stdout] test tools::tests::count_occurrences_empty_needle ... ok [INFO] [stdout] test tools::tests::count_occurrences_multibyte_no_panic ... ok [INFO] [stdout] test tools::tests::count_occurrences_multibyte_overlapping ... ok [INFO] [stdout] test tools::tests::count_occurrences_non_overlapping ... ok [INFO] [stdout] test tools::tests::count_occurrences_none ... ok [INFO] [stdout] test tools::tests::count_occurrences_overlapping ... ok [INFO] [stdout] test tools::tests::definition_has_required_fields ... ok [INFO] [stdout] test tools::tests::file_edit_binary_file ... ok [INFO] [stdout] test tools::tests::file_edit_empty_old_string ... ok [INFO] [stdout] test tools::tests::file_edit_file_not_found ... ok [INFO] [stdout] test tools::tests::file_edit_identical_strings ... ok [INFO] [stdout] test session::tests::atomic_rewrite_replaces_content ... ok [INFO] [stdout] test tools::tests::file_edit_multiple_matches ... ok [INFO] [stdout] test tools::tests::file_edit_multibyte_content_no_panic ... ok [INFO] [stdout] test session::tests::resume_new_messages_append_to_existing_transcript ... ok [INFO] [stdout] test tools::tests::file_edit_outside_project_root ... ok [INFO] [stdout] test rewind::tests::undo_with_checkpoint_restores_files ... ok [INFO] [stdout] test tools::tests::file_edit_rejects_symlink_escape ... ok [INFO] [stdout] test tools::tests::file_edit_replace_all_false_preserves_single_match_behavior ... ok [INFO] [stdout] test tools::tests::file_edit_relative_path_resolves_to_project_root ... ok [INFO] [stdout] test tools::tests::file_edit_replace_all_zero_matches_errors ... ok [INFO] [stdout] test rewind::tests::undo_multi_checkpoint_shell_exec_in_earlier_iteration ... ok [INFO] [stdout] test session::tests::session_meta_save_and_load ... ok [INFO] [stdout] test tools::tests::file_edit_replace_all_single_occurrence ... ok [INFO] [stdout] test tools::tests::file_edit_replace_all_non_overlapping_semantics ... ok [INFO] [stdout] test tools::tests::file_edit_returns_context ... ok [INFO] [stdout] test tools::tests::file_edit_replace_all_replaces_all_occurrences ... ok [INFO] [stdout] test tools::tests::file_edit_zero_matches ... ok [INFO] [stdout] test tools::tests::file_read_missing_path_param ... ok [INFO] [stdout] test tools::tests::file_read_not_found ... ok [INFO] [stdout] test session::tests::resume_most_recent_for_project ... ok [INFO] [stdout] test tools::tests::file_read_large_file_clipped ... ok [INFO] [stdout] test tools::tests::file_read_success ... ok [INFO] [stdout] test tools::tests::file_read_binary_rejected ... ok [INFO] [stdout] test tools::tests::file_edit_single_match ... ok [INFO] [stdout] test tools::tests::from_name_known ... ok [INFO] [stdout] test tools::tests::from_name_unknown ... ok [INFO] [stdout] test tools::tests::file_write_creates_parent_dirs ... ok [INFO] [stdout] test session::tests::session_index_filter_by_project ... ok [INFO] [stdout] test session::tests::session_meta_last_active_updates_on_save ... ok [INFO] [stdout] test tools::tests::file_read_relative_path_resolves_to_project_root ... ok [INFO] [stdout] test tools::tests::file_write_rejects_symlink_escape ... ok [INFO] [stdout] test rewind::tests::undo_shell_exec_warning ... ok [INFO] [stdout] test tools::tests::grep_matches_found ... ok [INFO] [stdout] test tools::tests::grep_defaults_to_project_root ... ok [INFO] [stdout] test tools::tests::grep_invalid_regex ... ok [INFO] [stdout] test session::tests::session_index_list_sorted_by_last_active ... ok [INFO] [stdout] test tools::tests::grep_max_results_cap ... ok [INFO] [stdout] test tools::tests::grep_case_insensitive ... ok [INFO] [stdout] test tools::tests::list_files_nonexistent ... ok [INFO] [stdout] test session::tests::resume_loads_transcript_and_rebuilds_history ... ok [INFO] [stdout] test tools::tests::list_files_populated_dir ... ok [INFO] [stdout] test tools::tests::shell_exec_cwd_escaping_project_root_rejected ... ok [INFO] [stdout] test repo_context::tests::gather_in_git_repo ... ok [INFO] [stdout] test tools::tests::grep_no_matches ... ok [INFO] [stdout] test tools::tests::list_files_empty_dir ... ok [INFO] [stdout] test tools::tests::list_files_relative_path_resolves_to_project_root ... ok [INFO] [stdout] test tools::tests::grep_glob_filter ... ok [INFO] [stdout] test tools::tests::shell_exec_absolute_cwd_inside_project_works ... ok [INFO] [stdout] test tools::tests::shell_exec_nonexistent_cwd ... ok [INFO] [stdout] test util::tests::binary_detection_binary ... ok [INFO] [stdout] test util::tests::binary_detection_empty ... ok [INFO] [stdout] test tools::tests::shell_exec_symlinked_cwd_rejected ... ok [INFO] [stdout] test tools::tests::shell_exec_relative_cwd_escape_rejected ... ok [INFO] [stdout] test tools::tests::shell_exec_happy_path ... ok [INFO] [stdout] test tools::tests::shell_exec_captures_stderr ... ok [INFO] [stdout] test util::tests::clip_over_model_threshold ... ok [INFO] [stdout] test util::tests::detect_root_git_repo ... ok [INFO] [stdout] test util::tests::clip_at_exact_boundary ... ok [INFO] [stdout] test util::tests::clip_over_display_threshold ... ok [INFO] [stdout] test util::tests::detect_root_cargo_project ... ok [INFO] [stdout] test util::tests::binary_detection_text ... ok [INFO] [stdout] test util::tests::detect_root_no_markers_falls_back ... ok [INFO] [stdout] test util::tests::load_grox_md_absent ... ok [INFO] [stdout] test util::tests::load_grox_md_at_exactly_10k ... ok [INFO] [stdout] test util::tests::load_grox_md_truncated_over_10k ... ok [INFO] [stdout] test util::tests::validate_path_outside_root ... ok [INFO] [stdout] test util::tests::load_grox_md_present ... ok [INFO] [stdout] test tools::tests::shell_exec_relative_cwd_resolves_to_project_root ... ok [INFO] [stdout] test tools::tests::shell_exec_timeout_capped_at_300 ... ok [INFO] [stdout] test util::tests::validate_path_new_file_in_root ... ok [INFO] [stdout] test util::tests::clip_under_threshold ... ok [INFO] [stdout] test util::tests::validate_path_within_root ... ok [INFO] [stdout] test util::tests::validate_path_relative_escape ... ok [INFO] [stdout] test util::tests::validate_path_symlink_escape ... ok [INFO] [stdout] test tools::tests::shell_exec_nonzero_exit ... ok [INFO] [stdout] test tools::tests::file_edit_overlapping_matches_detected ... ok [INFO] [stdout] test session::tests::session_meta_serialization_roundtrip ... ok [INFO] [stdout] test session::tests::session_index_ignores_corrupt_files ... ok [INFO] [stdout] test tools::tests::file_write_creates_file ... ok [INFO] [stdout] test tools::tests::shell_exec_custom_cwd ... ok [INFO] [stdout] test tools::tests::shell_exec_default_cwd_is_project_root ... ok [INFO] [stdout] test tools::tests::shell_exec_timeout_kills_process ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 465 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.41s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e", kill_on_drop: false }` [INFO] [stdout] bac7ccaa0405279a94516ce8cfcbd665be74a864953617dc56d947825c927c5e