[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.99.0-beta.8+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-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/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-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/dominicva/grox on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded plist v1.8.0
[INFO] [stderr]   Downloaded fastrand v2.4.0
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.67
[INFO] [stderr]   Downloaded endian-type v0.2.0
[INFO] [stderr]   Downloaded newline-converter v0.3.0
[INFO] [stderr]   Downloaded onig v6.5.1
[INFO] [stderr]   Downloaded cc v1.2.59
[INFO] [stderr]   Downloaded clap_derive v4.6.0
[INFO] [stderr]   Downloaded clap v4.6.0
[INFO] [stderr]   Downloaded indexmap v2.13.1
[INFO] [stderr]   Downloaded inquire v0.7.5
[INFO] [stderr]   Downloaded rustyline v18.0.0
[INFO] [stderr]   Downloaded radix_trie v0.3.0
[INFO] [stderr]   Downloaded nix v0.31.2
[INFO] [stderr]   Downloaded web-sys v0.3.94
[INFO] [stderr]   Downloaded onig_sys v69.9.1
[INFO] [stderr]   Downloaded libc v0.2.184
[INFO] [stderr]   Downloaded tokio v1.51.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/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] de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3
[INFO] running `Command { std: "docker" "start" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3", 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" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3", 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" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "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 zerovec-derive v0.11.3
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling indexmap v2.13.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling nix v0.31.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling nibble_vec v0.1.0
[INFO] [stderr]    Compiling quick-xml v0.38.4
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling endian-type v0.2.0
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling radix_trie v0.3.0
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling onig_sys v69.9.1
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling tokio v1.51.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling plist v1.8.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling crossterm v0.25.0
[INFO] [stderr]    Compiling newline-converter v0.3.0
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling inquire v0.7.5
[INFO] [stderr]    Compiling eventsource-stream v0.2.3
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling rustyline v18.0.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling regex v1.12.3
[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 onig v6.5.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling syntect v5.3.0
[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 1m 53s
[INFO] running `Command { std: "docker" "inspect" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3", 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" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "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 onig v6.5.1
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling inquire v0.7.5
[INFO] [stderr]    Compiling syntect v5.3.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rustyline v18.0.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 44.67s
[INFO] running `Command { std: "docker" "inspect" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3", 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" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.37s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/grox-7713a9d10668366b)
[INFO] [stdout] 
[INFO] [stdout] running 465 tests
[INFO] [stdout] test agent::tests::context_refresh_not_called_when_permission_denied ... ok
[INFO] [stdout] test agent::tests::context_refresh_called_after_mutating_tool ... ok
[INFO] [stdout] test agent::tests::max_turns_stops_loop ... ok
[INFO] [stdout] test agent::tests::context_refresh_not_called_for_read_only_tools ... ok
[INFO] [stdout] test agent::tests::intermediate_encrypted_reasoning_round_tripped_in_messages ... ok
[INFO] [stdout] test agent::tests::full_history_sent_across_inner_iterations ... ok
[INFO] [stdout] test agent::tests::empty_final_text_produces_no_assistant_entry ... ok
[INFO] [stdout] test agent::tests::intermediate_reasoning_round_tripped_in_messages ... ok
[INFO] [stdout] test agent::tests::auth_no_warning_means_no_renderer_call ... ok
[INFO] [stdout] test agent::tests::auth_warning_delivered_to_renderer ... ok
[INFO] [stdout] test agent::tests::no_tool_calls_exits_immediately ... ok
[INFO] [stdout] test agent::tests::on_reasoning_called_for_intermediate_tool_using_turns ... ok
[INFO] [stdout] test agent::tests::permission_denied_returns_message_to_model ... ok
[INFO] [stdout] test agent::tests::single_tool_call_round_trip ... ok
[INFO] [stdout] test agent::tests::tool_error_returned_to_model ... ok
[INFO] [stdout] test agent::tests::returns_transcript_entries_for_tool_use ... ok
[INFO] [stdout] test agent::tests::usage_accumulated_across_inner_iterations ... ok
[INFO] [stdout] test agent::tests::unknown_tool_returns_error_to_model ... ok
[INFO] [stdout] test api::tests::contract_encrypted_reasoning_with_tool_call ... 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 agent::tests::returns_transcript_entries_for_simple_response ... ok
[INFO] [stdout] test api::tests::contract_reasoning_response ... ok
[INFO] [stdout] test api::tests::model_rejection_matches_documented_variants ... ok
[INFO] [stdout] test api::tests::model_rejection_ignores_unrelated_errors ... ok
[INFO] [stdout] test api::tests::parse_error_event ... ok
[INFO] [stdout] test api::tests::parse_invalid_json_errors ... ok
[INFO] [stdout] test api::tests::parse_text_delta ... ok
[INFO] [stdout] test api::tests::parse_done_marker ... 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_store_false_when_set ... ok
[INFO] [stdout] test api::tests::request_includes_prompt_cache_key ... ok
[INFO] [stdout] test agent::tests::no_checkpoint_when_tool_execution_fails ... 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 agent::tests::checkpoint_emitted_for_file_write ... ok
[INFO] [stdout] test agent::tests::checkpoint_new_file_in_new_directory ... ok
[INFO] [stdout] test checkpoint::tests::file_snapshot_created_sentinel_roundtrip ... ok
[INFO] [stdout] test checkpoint::tests::file_snapshot_serde_roundtrip ... ok
[INFO] [stdout] test agent::tests::no_checkpoint_for_read_only_tools ... ok
[INFO] [stdout] test agent::tests::no_checkpoint_when_permission_denied ... ok
[INFO] [stdout] test agent::tests::shell_exec_after_checkpoint_detected_by_rewind ... ok
[INFO] [stdout] test checkpoint::tests::is_git_repo_false_for_non_git_dir ... ok
[INFO] [stdout] test agent::tests::no_checkpoint_for_out_of_project_path ... ok
[INFO] [stdout] test checkpoint::tests::resolve_absolute_path ... ok
[INFO] [stdout] test checkpoint::tests::resolve_relative_path ... ok
[INFO] [stdout] test agent::tests::shell_exec_warning_across_iterations ... ok
[INFO] [stdout] test checkpoint::tests::is_git_repo_true_for_git_dir ... ok
[INFO] [stdout] test checkpoint::tests::hash_object_nonexistent_file_fails ... ok
[INFO] [stdout] test agent::tests::shell_exec_detected_by_rewind_when_after_checkpoint ... ok
[INFO] [stdout] test agent::tests::checkpoint_equivalent_paths_each_get_own_checkpoint ... ok
[INFO] [stdout] test agent::tests::checkpoint_persisted_despite_later_api_failure ... ok
[INFO] [stdout] test agent::tests::checkpoint_deduplicates_same_file_edits ... ok
[INFO] [stdout] test checkpoint::tests::cat_file_blob_invalid_hash_fails ... ok
[INFO] [stdout] test agent::tests::checkpoint_emitted_for_file_edit ... ok
[INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_existing_file ... ok
[INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_dotdot_escape_rejected ... ok
[INFO] [stdout] test checkpoint::tests::hash_object_readonly_matches_write_version ... ok
[INFO] [stdout] test checkpoint::tests::hash_object_different_content_different_hash ... ok
[INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_new_file_in_existing_dir ... ok
[INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_normalizes_dot_components ... 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_dotdot_in_new_path ... ok
[INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_rejects_absolute_outside ... ok
[INFO] [stdout] test checkpoint::tests::validate_checkpoint_path_rejects_escape ... 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 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::find_alias ... 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_exact_name_no_args ... ok
[INFO] [stdout] test command_registry::tests::find_exact_name_with_args ... ok
[INFO] [stdout] test command_registry::tests::find_not_slash_returns_none ... ok
[INFO] [stdout] test command_registry::tests::all_commands_have_descriptions ... ok
[INFO] [stdout] test command_registry::tests::extract_at_alone ... ok
[INFO] [stdout] test command_registry::tests::all_commands_sorted_alphabetically ... ok
[INFO] [stdout] test checkpoint::tests::restore_file_deletes_newly_created ... ok
[INFO] [stdout] test command_registry::tests::extract_slash_in_token ... ok
[INFO] [stdout] test command_registry::tests::find_rejects_trailing_args_for_no_arg_commands ... ok
[INFO] [stdout] test command_registry::tests::prefix_matches_alias_exact_match_priority ... ok
[INFO] [stdout] test command_registry::tests::prefix_matches_empty_returns_all ... ok
[INFO] [stdout] test command_registry::tests::prefix_matches_exact_match_priority ... ok
[INFO] [stdout] test command_registry::tests::prefix_matches_no_match ... ok
[INFO] [stdout] test command_registry::tests::find_unknown_returns_none ... ok
[INFO] [stdout] test command_registry::tests::prefix_matches_single ... ok
[INFO] [stdout] test command_registry::tests::prefix_matches_multiple ... ok
[INFO] [stdout] test command_registry::tests::find_with_extra_whitespace ... ok
[INFO] [stdout] test command_registry::tests::prefix_matches_includes_aliases ... 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::dedup_normalizes_dot_dot_components ... ok
[INFO] [stdout] test compaction::tests::compacted_entries_have_recalculated_token_estimates ... ok
[INFO] [stdout] test compaction::tests::boundary_6_turns_first_is_old ... ok
[INFO] [stdout] test compaction::tests::dedup_normalizes_relative_vs_absolute_paths ... ok
[INFO] [stdout] test compaction::tests::empty_transcript_returns_empty ... ok
[INFO] [stdout] test command_registry::tests::prefix_matches_strips_slash ... ok
[INFO] [stdout] test checkpoint::tests::hash_object_same_content_same_hash ... ok
[INFO] [stdout] test compaction::tests::duplicate_file_read_in_old_region_removed ... 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_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_replaces_old_entries_with_summary ... ok
[INFO] [stdout] test compaction::tests::llm_compact_returns_usage ... ok
[INFO] [stdout] test compaction::tests::llm_compact_summary_token_estimate_matches_content ... ok
[INFO] [stdout] test compaction::tests::llm_compact_uses_single_when_below_overflow ... ok
[INFO] [stdout] test compaction::tests::llm_compact_no_op_when_all_recent ... ok
[INFO] [stdout] test compaction::tests::format_entries_empty_transcript ... ok
[INFO] [stdout] test compaction::tests::mixed_turn_both_tools_compacted ... ok
[INFO] [stdout] test compaction::tests::no_compaction_when_below_5_turns ... ok
[INFO] [stdout] test compaction::tests::maybe_compact_propagates_usage_from_rejected_llm ... 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::maybe_compact_returns_some_above_threshold ... ok
[INFO] [stdout] test compaction::tests::maybe_compact_returns_none_below_threshold ... ok
[INFO] [stdout] test compaction::tests::maybe_compact_escalates_to_llm_when_heuristic_insufficient ... ok
[INFO] [stdout] test compaction::tests::old_file_edit_result_replaced_with_placeholder ... ok
[INFO] [stdout] test checkpoint::tests::snapshot_pre_nonexistent_file ... ok
[INFO] [stdout] test checkpoint::tests::cat_file_blob_roundtrip ... ok
[INFO] [stdout] test compaction::tests::maybe_compact_returns_none_when_above_threshold_but_nothing_to_compact ... ok
[INFO] [stdout] test compaction::tests::preflight_compaction_reduces_estimate_below_threshold ... ok
[INFO] [stdout] test compaction::tests::short_shell_output_not_truncated ... ok
[INFO] [stdout] test compaction::tests::truncate_shell_exactly_6_lines_no_truncation ... ok
[INFO] [stdout] test compaction::tests::turn_boundary_does_not_orphan_tool_calls ... ok
[INFO] [stdout] test compaction::tests::turn_boundary_fallback_when_no_user_messages ... ok
[INFO] [stdout] test compaction::tests::turn_boundary_single_turn_falls_back_to_midpoint ... ok
[INFO] [stdout] test context_assembler::tests::build_messages_starts_with_system_prompt ... ok
[INFO] [stdout] test compaction::tests::turn_boundary_splits_at_user_message ... ok
[INFO] [stdout] test compaction::tests::recent_turns_preserved_verbatim ... ok
[INFO] [stdout] test context_assembler::tests::assistant_message_wire_format ... ok
[INFO] [stdout] test compaction::tests::truncate_shell_7_lines ... ok
[INFO] [stdout] test context_assembler::tests::compaction_summary_inlined_into_system_prompt ... ok
[INFO] [stdout] test compaction::tests::llm_compact_uses_chunked_when_old_entries_exceed_80_percent ... ok
[INFO] [stdout] test compaction::tests::old_grep_result_replaced_with_placeholder ... ok
[INFO] [stdout] test compaction::tests::summarization_prompt_has_all_9_sections ... ok
[INFO] [stdout] test context_assembler::tests::estimate_tokens_no_double_count_across_compaction_cycles ... ok
[INFO] [stdout] test compaction::tests::old_shell_output_truncated ... ok
[INFO] [stdout] test context_assembler::tests::estimate_tokens_sums_entries_plus_overhead ... ok
[INFO] [stdout] test context_assembler::tests::estimate_tokens_no_double_counting ... ok
[INFO] [stdout] test context_assembler::tests::encrypted_reasoning_round_tripped_in_assistant_message ... ok
[INFO] [stdout] test context_assembler::tests::message_ordering_summary_inlined_then_history ... 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::estimate_tokens_excludes_compaction_summary_from_transcript ... ok
[INFO] [stdout] test context_assembler::tests::estimate_tokens_empty_transcript ... ok
[INFO] [stdout] test context_assembler::tests::tool_call_result_linkage ... ok
[INFO] [stdout] test context_assembler::tests::build_messages_with_empty_entries ... ok
[INFO] [stdout] test context_assembler::tests::estimate_tokens_matches_actual_build_messages_size ... ok
[INFO] [stdout] test context_assembler::tests::full_conversation_roundtrip ... ok
[INFO] [stdout] test context_assembler::tests::user_message_wire_format ... ok
[INFO] [stdout] test file_index::tests::basename_matching ... ok
[INFO] [stdout] test context_assembler::tests::tool_call_wire_format ... ok
[INFO] [stdout] test file_index::tests::build_index_from_tempdir ... ok
[INFO] [stdout] test context_assembler::tests::multiple_compaction_summaries_only_latest_used ... ok
[INFO] [stdout] test context_assembler::tests::tool_result_wire_format ... ok
[INFO] [stdout] test checkpoint::tests::restore_file_skips_when_user_modified ... ok
[INFO] [stdout] test checkpoint::tests::restore_file_skips_newly_created_if_user_modified ... ok
[INFO] [stdout] test checkpoint::tests::snapshot_post_records_new_state ... ok
[INFO] [stdout] test context_assembler::tests::no_compaction_summary_leaves_system_prompt_unchanged ... ok
[INFO] [stdout] test context_assembler::tests::no_reasoning_fields_when_none ... ok
[INFO] [stdout] test checkpoint::tests::snapshot_pre_existing_file ... ok
[INFO] [stdout] test checkpoint::tests::hash_object_stores_and_returns_hash ... ok
[INFO] [stdout] test model_profile::tests::compaction_threshold_131k_models ... ok
[INFO] [stdout] test file_index::tests::directory_suffix ... ok
[INFO] [stdout] test model_profile::tests::effective_ceiling_below_context_window ... 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 file_index::tests::dot_slash_prefix_stripped ... ok
[INFO] [stdout] test file_index::tests::refresh_picks_up_new_files ... 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 checkpoint::tests::restore_file_to_previous_state ... ok
[INFO] [stdout] test model_profile::tests::format_for_picker_current_model_marked ... ok
[INFO] [stdout] test model_profile::tests::format_context_window_thousands ... ok
[INFO] [stdout] test model_profile::tests::format_for_picker_date_suffix_still_marked_current ... ok
[INFO] [stdout] test model_profile::tests::estimate_cost_known_model ... ok
[INFO] [stdout] test file_index::tests::empty_query_returns_all ... 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_context_window ... ok
[INFO] [stdout] test model_profile::tests::compaction_threshold_2m_models ... ok
[INFO] [stdout] test file_index::tests::prefix_matching ... ok
[INFO] [stdout] test file_index::tests::replacement_includes_suffix ... ok
[INFO] [stdout] test model_profile::tests::format_for_picker_shows_pricing ... ok
[INFO] [stdout] test model_profile::tests::grok_3_mini_known_profile ... ok
[INFO] [stdout] test model_profile::tests::grok_3_mini_fast_matches_mini ... ok
[INFO] [stdout] test model_profile::tests::grok_2_known_profile ... ok
[INFO] [stdout] test model_profile::tests::known_models_all_support_tools ... ok
[INFO] [stdout] test model_profile::tests::known_models_entries_match_for_model ... ok
[INFO] [stdout] test model_profile::tests::known_models_returns_all_families ... ok
[INFO] [stdout] test model_profile::tests::grok_4_non_reasoning_profile ... ok
[INFO] [stdout] test model_profile::tests::reasoning_effort_only_on_supported_models ... ok
[INFO] [stdout] test model_profile::tests::format_for_picker_shows_reasoning ... ok
[INFO] [stdout] test model_profile::tests::grok_3_fast_matches_grok_3 ... ok
[INFO] [stdout] test model_profile::tests::grok_3_known_profile ... ok
[INFO] [stdout] test model_profile::tests::same_family_date_suffix_matches_canonical ... ok
[INFO] [stdout] test model_profile::tests::same_family_canonical_match ... ok
[INFO] [stdout] test model_profile::tests::same_family_bare_grok4_matches_reasoning ... ok
[INFO] [stdout] test model_profile::tests::grok_4_base_reasoning ... ok
[INFO] [stdout] test model_profile::tests::grok_4_non_reasoning_date_suffix ... ok
[INFO] [stdout] test model_profile::tests::grok_4_reasoning_date_suffix ... ok
[INFO] [stdout] test model_profile::tests::grok_4_multi_agent_profile ... ok
[INFO] [stdout] test model_profile::tests::same_family_different_families ... ok
[INFO] [stdout] test file_index::tests::results_capped_at_50 ... 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::file_edit_outside_project_prompts ... ok
[INFO] [stdout] test permissions::tests::file_edit_readonly_denied ... ok
[INFO] [stdout] test model_profile::tests::same_family_mini_fast_matches_mini ... 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::file_edit_classified_same_as_file_write_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::default_prompts_for_writes ... ok
[INFO] [stdout] test permissions::tests::per_tool_grant_outside_project_still_prompts ... ok
[INFO] [stdout] test permissions::tests::dotdot_escape_in_new_path_classified_as_outside ... ok
[INFO] [stdout] test permissions::tests::file_edit_yolo_allowed ... ok
[INFO] [stdout] test permissions::tests::new_file_in_new_subdirectory_classified_as_in_project ... ok
[INFO] [stdout] test permissions::tests::per_tool_grants_reset_on_new_session ... ok
[INFO] [stdout] test model_profile::tests::grok_4_reasoning_profile ... 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::trust_prompts_for_destructive ... ok
[INFO] [stdout] test permissions::tests::destructive_grant_auto_approves_with_check ... ok
[INFO] [stdout] test permissions::tests::default_prompts_for_shell ... ok
[INFO] [stdout] test file_index::tests::gitignore_respected ... ok
[INFO] [stdout] test model_profile::tests::grok_4_multi_agent_date_suffix ... ok
[INFO] [stdout] test permissions::tests::readonly_ignores_grants ... ok
[INFO] [stdout] test permissions::tests::readonly_denies_destructive ... ok
[INFO] [stdout] test permissions::tests::relative_path_edit_classified_as_in_project ... ok
[INFO] [stdout] test permissions::tests::readonly_denies_shell ... ok
[INFO] [stdout] test prompt::tests::prompt_contains_all_sections ... ok
[INFO] [stdout] test prompt::tests::identity_is_first_section ... ok
[INFO] [stdout] test permissions::tests::trust_prompts_for_outside_project_writes ... ok
[INFO] [stdout] test prompt::tests::grox_md_is_last_section ... ok
[INFO] [stdout] test permissions::tests::yolo_allows_destructive_shell ... ok
[INFO] [stdout] test permissions::tests::yolo_destructive_no_warning ... ok
[INFO] [stdout] test prompt::tests::prompt_emphasizes_reading_before_writing ... ok
[INFO] [stdout] test permissions::tests::trust_with_shell_grant_auto_approves ... ok
[INFO] [stdout] test permissions::tests::yolo_ignores_grants ... ok
[INFO] [stdout] test prompt::tests::prompt_excludes_grox_md_when_absent ... ok
[INFO] [stdout] test prompt::tests::prompt_excludes_repo_context_when_absent ... ok
[INFO] [stdout] test permissions::tests::readonly_allows_reads_denies_writes ... ok
[INFO] [stdout] test permissions::tests::yolo_allows_everything ... ok
[INFO] [stdout] test prompt::tests::prompt_includes_repo_context_when_provided ... ok
[INFO] [stdout] test prompt::tests::prompt_mentions_all_tools ... ok
[INFO] [stdout] test prompt::tests::prompt_sections_are_separated_by_blank_lines ... ok
[INFO] [stdout] test prompt::tests::prompt_includes_grox_md_when_present ... ok
[INFO] [stdout] test renderer::tests::format_token_count_below_1k ... ok
[INFO] [stdout] test prompt::tests::prompt_includes_project_root ... ok
[INFO] [stdout] test permissions::tests::trust_prompts_for_normal_shell ... ok
[INFO] [stdout] test prompt::tests::repo_context_before_grox_md ... ok
[INFO] [stdout] test renderer::tests::format_token_count_at_1k ... ok
[INFO] [stdout] test renderer::tests::format_token_count_large ... ok
[INFO] [stdout] test renderer::tests::markdown_empty_line ... ok
[INFO] [stdout] test renderer::tests::markdown_multiple_bold ... ok
[INFO] [stdout] test renderer::tests::markdown_no_bold_without_stars ... ok
[INFO] [stdout] test renderer::tests::markdown_plain_text_passthrough ... ok
[INFO] [stdout] test renderer::tests::format_token_count_zero ... ok
[INFO] [stdout] test renderer::tests::markdown_unclosed_bold_passthrough ... ok
[INFO] [stdout] test renderer::tests::markdown_empty_bold_passthrough ... 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::begin_turn_preserves_cumulative_state ... ok
[INFO] [stdout] test renderer::tests::recording_renderer_captures_auth_warnings ... ok
[INFO] [stdout] test renderer::tests::recording_renderer_captures_tool_calls ... ok
[INFO] [stdout] test renderer::tests::markdown_heading_h3 ... ok
[INFO] [stdout] test renderer::tests::recording_renderer_captures_reasoning ... ok
[INFO] [stdout] test renderer::tests::markdown_heading_with_leading_whitespace ... ok
[INFO] [stdout] test renderer::tests::recording_renderer_captures_tokens ... ok
[INFO] [stdout] test renderer::tests::recording_renderer_starts_empty ... ok
[INFO] [stdout] test renderer::tests::markdown_bold ... ok
[INFO] [stdout] test renderer::tests::recording_renderer_captures_tool_results ... ok
[INFO] [stdout] test renderer::tests::begin_turn_preserves_thinking_state ... 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::status_line_with_cached ... ok
[INFO] [stdout] test permissions::tests::per_tool_grant_shell_exec ... ok
[INFO] [stdout] test renderer::tests::seed_cumulative_replaces_state ... ok
[INFO] [stdout] test renderer::tests::turn_stats_exact_counts ... ok
[INFO] [stdout] test renderer::tests::status_line_basic ... ok
[INFO] [stdout] test renderer::tests::summarize_grep ... ok
[INFO] [stdout] test renderer::tests::status_line_zero_cost ... ok
[INFO] [stdout] test renderer::tests::summarize_file_read ... ok
[INFO] [stdout] test renderer::tests::summarize_shell_exec_truncation ... ok
[INFO] [stdout] test renderer::tests::summarize_file_write ... ok
[INFO] [stdout] test renderer::tests::turn_stats_with_cached ... ok
[INFO] [stdout] test renderer::tests::markdown_heading_h1 ... ok
[INFO] [stdout] test renderer::tests::markdown_heading_h2 ... 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_with_not_in_git_warning ... ok
[INFO] [stdout] test rewind::tests::format_with_shell_warning ... ok
[INFO] [stdout] test permissions::tests::destructive_patterns_match ... ok
[INFO] [stdout] test rewind::tests::format_empty_result ... ok
[INFO] [stdout] test renderer::tests::turn_stats_unknown_model_no_cost ... ok
[INFO] [stdout] test rewind::tests::rewind_to_nonexistent_turn ... ok
[INFO] [stdout] test renderer::tests::thinking_expanded_by_default ... ok
[INFO] [stdout] test renderer::tests::thinking_expanded_handle_shares_state ... ok
[INFO] [stdout] test rewind::tests::rewind_to_turn_1_removes_all ... ok
[INFO] [stdout] test rewind::tests::rewind_to_turn_zero ... ok
[INFO] [stdout] test renderer::tests::toggle_thinking_display_cycles ... ok
[INFO] [stdout] test permissions::tests::safe_commands_dont_match ... ok
[INFO] [stdout] test rewind::tests::short_path_long ... ok
[INFO] [stdout] test rewind::tests::undo_last_turn_empty_transcript ... ok
[INFO] [stdout] test rewind::tests::short_path_short ... 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_code_only_errors ... ok
[INFO] [stdout] test rewind::tests::rewind_to_turn_non_git_conversation_only_works ... ok
[INFO] [stdout] test rewind::tests::rewind_to_turn_2_keeps_first ... ok
[INFO] [stdout] test rewind::tests::undo_non_git_both_mode_graceful ... ok
[INFO] [stdout] test repo_context::tests::gather_in_non_git_dir ... ok
[INFO] [stdout] test repo_context::tests::gather_not_truncated_for_small_repo ... ok
[INFO] [stdout] test rewind::tests::undo_non_git_conversation_only_works ... ok
[INFO] [stdout] test rewind::tests::undo_non_git_code_only_errors ... ok
[INFO] [stdout] test repo_context::tests::gather_skips_hidden_and_noise_dirs ... ok
[INFO] [stdout] test session::tests::all_variants_serialize_roundtrip ... ok
[INFO] [stdout] test rewind::tests::undo_single_turn ... ok
[INFO] [stdout] test session::tests::assistant_message_token_estimate ... ok
[INFO] [stdout] test session::tests::assistant_message_with_reasoning_includes_payload_in_token_estimate ... ok
[INFO] [stdout] test session::tests::assistant_message_with_reasoning_roundtrip ... 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 session::tests::append_creates_parent_directories ... ok
[INFO] [stdout] test repo_context::tests::gather_includes_directory_tree ... ok
[INFO] [stdout] test api::tests::client_no_store_default_off ... ok
[INFO] [stdout] test session::tests::checkpoint_serde_tag ... ok
[INFO] [stdout] test session::tests::atomic_rewrite_interrupted_leaves_original ... ok
[INFO] [stdout] test session::tests::checkpoint_token_estimate ... ok
[INFO] [stdout] test session::tests::checkpoint_with_shell_exec_flag ... ok
[INFO] [stdout] test session::tests::crash_recovery_only_incomplete_line ... ok
[INFO] [stdout] test session::tests::compaction_summary_token_estimate ... ok
[INFO] [stdout] test session::tests::atomic_rewrite_cleans_up_temp_file ... ok
[INFO] [stdout] test session::tests::append_and_read_roundtrip ... ok
[INFO] [stdout] test session::tests::checkpoint_jsonl_roundtrip ... ok
[INFO] [stdout] test session::tests::old_transcript_without_reasoning_fields_loads ... ok
[INFO] [stdout] test session::tests::crash_recovery_trailing_incomplete_line ... ok
[INFO] [stdout] test session::tests::read_empty_file_returns_empty_vec ... ok
[INFO] [stdout] test session::tests::read_missing_file_returns_empty_vec ... ok
[INFO] [stdout] test session::tests::reasoning_fields_omitted_when_none_in_serialization ... ok
[INFO] [stdout] test session::tests::create_makes_empty_file ... ok
[INFO] [stdout] test rewind::tests::undo_no_checkpoint_conversation_still_works ... ok
[INFO] [stdout] test session::tests::create_is_idempotent ... ok
[INFO] [stdout] test session::tests::atomic_rewrite_replaces_content ... ok
[INFO] [stdout] test session::tests::resume_graceful_error_on_missing_transcript ... ok
[INFO] [stdout] test session::tests::serde_tags_distinguish_variants ... ok
[INFO] [stdout] test session::tests::resume_graceful_error_on_corrupt_transcript ... ok
[INFO] [stdout] test session::tests::session_index_creates_directory_if_missing ... ok
[INFO] [stdout] test session::tests::session_index_list_empty_dir ... 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_ignores_corrupt_files ... ok
[INFO] [stdout] test session::tests::session_meta_atomic_write_no_temp_residue ... 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 session::tests::session_meta_new_has_uuid_and_timestamps ... ok
[INFO] [stdout] test session::tests::session_meta_serialization_roundtrip ... 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::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 session::tests::resume_new_messages_append_to_existing_transcript ... 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 tools::tests::file_edit_multibyte_content_no_panic ... ok
[INFO] [stdout] test session::tests::session_index_filter_by_project ... ok
[INFO] [stdout] test tools::tests::file_edit_outside_project_root ... ok
[INFO] [stdout] test session::tests::resume_most_recent_for_project ... ok
[INFO] [stdout] test session::tests::session_meta_last_active_updates_on_save ... ok
[INFO] [stdout] test tools::tests::file_edit_multiple_matches ... ok
[INFO] [stdout] test session::tests::session_meta_save_and_load ... ok
[INFO] [stdout] test tools::tests::file_edit_replace_all_false_preserves_single_match_behavior ... ok
[INFO] [stdout] test tools::tests::file_edit_overlapping_matches_detected ... ok
[INFO] [stdout] test tools::tests::file_edit_rejects_symlink_escape ... ok
[INFO] [stdout] test rewind::tests::undo_multi_checkpoint_shell_exec_in_earlier_iteration ... ok
[INFO] [stdout] test rewind::tests::undo_code_only_keeps_transcript ... ok
[INFO] [stdout] test session::tests::resume_loads_transcript_and_rebuilds_history ... ok
[INFO] [stdout] test session::tests::session_index_list_sorted_by_last_active ... 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 tools::tests::file_edit_replace_all_non_overlapping_semantics ... ok
[INFO] [stdout] test tools::tests::file_edit_replace_all_single_occurrence ... ok
[INFO] [stdout] test tools::tests::file_edit_replace_all_replaces_all_occurrences ... ok
[INFO] [stdout] test rewind::tests::undo_multi_checkpoint_single_turn ... ok
[INFO] [stdout] test tools::tests::file_edit_returns_context ... ok
[INFO] [stdout] test rewind::tests::undo_with_checkpoint_restores_files ... ok
[INFO] [stdout] test rewind::tests::rewind_restores_multiple_checkpoints ... ok
[INFO] [stdout] test tools::tests::file_edit_single_match ... ok
[INFO] [stdout] test tools::tests::file_read_missing_path_param ... ok
[INFO] [stdout] test tools::tests::file_read_binary_rejected ... 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_rejects_symlink_escape ... ok
[INFO] [stdout] test tools::tests::file_read_large_file_clipped ... ok
[INFO] [stdout] test tools::tests::grep_invalid_regex ... ok
[INFO] [stdout] test tools::tests::grep_defaults_to_project_root ... ok
[INFO] [stdout] test tools::tests::file_write_creates_parent_dirs ... ok
[INFO] [stdout] test tools::tests::file_read_not_found ... ok
[INFO] [stdout] test tools::tests::list_files_empty_dir ... ok
[INFO] [stdout] test tools::tests::file_read_relative_path_resolves_to_project_root ... ok
[INFO] [stdout] test tools::tests::file_read_success ... ok
[INFO] [stdout] test tools::tests::list_files_populated_dir ... ok
[INFO] [stdout] test tools::tests::list_files_nonexistent ... ok
[INFO] [stdout] test tools::tests::file_write_creates_file ... 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::grep_matches_found ... ok
[INFO] [stdout] test tools::tests::shell_exec_cwd_escaping_project_root_rejected ... ok
[INFO] [stdout] test tools::tests::shell_exec_relative_cwd_escape_rejected ... ok
[INFO] [stdout] test tools::tests::file_edit_zero_matches ... ok
[INFO] [stdout] test tools::tests::shell_exec_nonexistent_cwd ... ok
[INFO] [stdout] test tools::tests::grep_no_matches ... ok
[INFO] [stdout] test util::tests::binary_detection_binary ... ok
[INFO] [stdout] test tools::tests::shell_exec_symlinked_cwd_rejected ... ok
[INFO] [stdout] test util::tests::binary_detection_text ... ok
[INFO] [stdout] test util::tests::clip_at_exact_boundary ... ok
[INFO] [stdout] test tools::tests::grep_max_results_cap ... ok
[INFO] [stdout] test util::tests::clip_over_display_threshold ... ok
[INFO] [stdout] test util::tests::clip_over_model_threshold ... ok
[INFO] [stdout] test util::tests::clip_under_threshold ... ok
[INFO] [stdout] test util::tests::detect_root_cargo_project ... ok
[INFO] [stdout] test tools::tests::shell_exec_timeout_capped_at_300 ... ok
[INFO] [stdout] test util::tests::load_grox_md_absent ... ok
[INFO] [stdout] test util::tests::binary_detection_empty ... ok
[INFO] [stdout] test util::tests::load_grox_md_at_exactly_10k ... ok
[INFO] [stdout] test util::tests::detect_root_git_repo ... ok
[INFO] [stdout] test repo_context::tests::gather_truncates_at_10k ... ok
[INFO] [stdout] test util::tests::detect_root_no_markers_falls_back ... ok
[INFO] [stdout] test util::tests::load_grox_md_present ... ok
[INFO] [stdout] test util::tests::load_grox_md_truncated_over_10k ... ok
[INFO] [stdout] test util::tests::validate_path_new_file_in_root ... ok
[INFO] [stdout] test util::tests::validate_path_outside_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_captures_stderr ... ok
[INFO] [stdout] test tools::tests::shell_exec_absolute_cwd_inside_project_works ... ok
[INFO] [stdout] test tools::tests::shell_exec_happy_path ... ok
[INFO] [stdout] test tools::tests::grep_case_insensitive ... ok
[INFO] [stdout] test tools::tests::shell_exec_nonzero_exit ... ok
[INFO] [stdout] test tools::tests::shell_exec_relative_cwd_resolves_to_project_root ... 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 rewind::tests::undo_shell_exec_warning ... ok
[INFO] [stdout] test util::tests::validate_path_within_root ... ok
[INFO] [stdout] test repo_context::tests::gather_in_git_repo ... 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.42s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3", kill_on_drop: false }`
[INFO] [stdout] de2fefa2e6a4fd05b7f4c288a9a8e9477d1f2335f149c54488812993afd10cc3
