[INFO] fetching crate rskim 2.5.0... [INFO] testing rskim-2.5.0 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-2 [INFO] extracting crate rskim 2.5.0 into /workspace/builds/worker-3-tc2/source [INFO] started tweaking crates.io crate rskim 2.5.0 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate rskim 2.5.0 [INFO] tweaked toml for crates.io crate rskim 2.5.0 written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate rskim 2.5.0 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate rskim 2.5.0 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3215b4c8c818e1c0e12e150926bfec1ed2f003d13328a519b95d32aa3d107fc1 [INFO] running `Command { std: "docker" "start" "-a" "3215b4c8c818e1c0e12e150926bfec1ed2f003d13328a519b95d32aa3d107fc1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3215b4c8c818e1c0e12e150926bfec1ed2f003d13328a519b95d32aa3d107fc1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3215b4c8c818e1c0e12e150926bfec1ed2f003d13328a519b95d32aa3d107fc1", kill_on_drop: false }` [INFO] [stdout] 3215b4c8c818e1c0e12e150926bfec1ed2f003d13328a519b95d32aa3d107fc1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e92c9aaa4bf89b90759948c624b0eec65e9cd0b651683a5cf8be8cfb2719c800 [INFO] running `Command { std: "docker" "start" "-a" "e92c9aaa4bf89b90759948c624b0eec65e9cd0b651683a5cf8be8cfb2719c800", kill_on_drop: false }` [INFO] [stderr] Compiling find-msvc-tools v0.1.3 [INFO] [stderr] Compiling proc-macro2 v1.0.101 [INFO] [stderr] Compiling tree-sitter-language v0.1.5 [INFO] [stderr] Compiling unicode-ident v1.0.19 [INFO] [stderr] Compiling quote v1.0.41 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling regex-syntax v0.8.6 [INFO] [stderr] Compiling hashbrown v0.16.0 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling generic-array v0.14.9 [INFO] [stderr] Compiling cc v1.2.40 [INFO] [stderr] Compiling zerocopy v0.8.47 [INFO] [stderr] Compiling serde_json v1.0.145 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling cfg-if v1.0.3 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling indexmap v2.12.0 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling anstyle-query v1.1.4 [INFO] [stderr] Compiling pkg-config v0.3.32 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling libc v0.2.176 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling tree-sitter-java v0.23.5 [INFO] [stderr] Compiling tree-sitter-kotlin-ng v1.1.0 [INFO] [stderr] Compiling libsqlite3-sys v0.28.0 [INFO] [stderr] Compiling tree-sitter-cpp v0.23.4 [INFO] [stderr] Compiling tree-sitter-python v0.25.0 [INFO] [stderr] Compiling tree-sitter-rust v0.24.0 [INFO] [stderr] Compiling tree-sitter-ruby v0.23.1 [INFO] [stderr] Compiling regex-automata v0.4.11 [INFO] [stderr] Compiling tree-sitter-sequel v0.3.11 [INFO] [stderr] Compiling tree-sitter-go v0.25.0 [INFO] [stderr] Compiling tree-sitter-typescript v0.23.2 [INFO] [stderr] Compiling tree-sitter-swift v0.7.1 [INFO] [stderr] Compiling tree-sitter-md v0.5.1 [INFO] [stderr] Compiling tree-sitter-c v0.24.1 [INFO] [stderr] Compiling tree-sitter-javascript v0.25.0 [INFO] [stderr] Compiling tree-sitter-c-sharp v0.23.1 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling bit-vec v0.6.3 [INFO] [stderr] Compiling clap_lex v0.7.5 [INFO] [stderr] Compiling clap_builder v4.5.48 [INFO] [stderr] Compiling bit-set v0.5.3 [INFO] [stderr] Compiling tree-sitter v0.25.10 [INFO] [stderr] Compiling bstr v1.12.0 [INFO] [stderr] Compiling regex v1.11.3 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling clap_derive v4.5.47 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling serde_yaml_ng v0.10.0 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling clap v4.5.48 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling fancy-regex v0.13.0 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling vte v0.14.1 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling bitflags v2.9.4 [INFO] [stderr] Compiling tiktoken-rs v0.7.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling strip-ansi-escapes v0.2.1 [INFO] [stderr] Compiling clap_complete v4.6.0 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling colored v2.2.0 [INFO] [stderr] Compiling rskim-core v2.5.0 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling rskim v2.5.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 14s [INFO] running `Command { std: "docker" "inspect" "e92c9aaa4bf89b90759948c624b0eec65e9cd0b651683a5cf8be8cfb2719c800", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e92c9aaa4bf89b90759948c624b0eec65e9cd0b651683a5cf8be8cfb2719c800", kill_on_drop: false }` [INFO] [stdout] e92c9aaa4bf89b90759948c624b0eec65e9cd0b651683a5cf8be8cfb2719c800 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] d086e77e4aca293f40ae0fb5467156e9bc9a119c31b4c579eb83389ad1afbca7 [INFO] running `Command { std: "docker" "start" "-a" "d086e77e4aca293f40ae0fb5467156e9bc9a119c31b4c579eb83389ad1afbca7", kill_on_drop: false }` [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling bitflags v2.9.4 [INFO] [stderr] Compiling predicates-core v1.0.9 [INFO] [stderr] Compiling doc-comment v0.3.3 [INFO] [stderr] Compiling float-cmp v0.10.0 [INFO] [stderr] Compiling normalize-line-endings v0.3.0 [INFO] [stderr] Compiling difflib v0.4.0 [INFO] [stderr] Compiling termtree v0.5.1 [INFO] [stderr] Compiling assert_cmd v2.0.17 [INFO] [stderr] Compiling rustix v1.1.2 [INFO] [stderr] Compiling predicates-tree v1.0.12 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling predicates v3.1.3 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling tempfile v3.23.0 [INFO] [stderr] Compiling rskim v2.5.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 55.46s [INFO] running `Command { std: "docker" "inspect" "d086e77e4aca293f40ae0fb5467156e9bc9a119c31b4c579eb83389ad1afbca7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d086e77e4aca293f40ae0fb5467156e9bc9a119c31b4c579eb83389ad1afbca7", kill_on_drop: false }` [INFO] [stdout] d086e77e4aca293f40ae0fb5467156e9bc9a119c31b4c579eb83389ad1afbca7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 319cd440ab4fa495ebbaca6536cd0ea4b24cc7b4a309d9eca7f2a659a132abb1 [INFO] running `Command { std: "docker" "start" "-a" "319cd440ab4fa495ebbaca6536cd0ea4b24cc7b4a309d9eca7f2a659a132abb1", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.27s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/skim-ea366931550292ac) [INFO] [stdout] [INFO] [stdout] running 1463 tests [INFO] [stdout] test analytics::tests::test_analytics_disabled_case_insensitive ... ok [INFO] [stdout] test analytics::tests::test_analytics_disabled_with_value_1 ... ok [INFO] [stdout] test analytics::tests::test_analytics_disabled_with_value_true ... ok [INFO] [stdout] test analytics::tests::test_analytics_enabled_with_value_no ... ok [INFO] [stdout] test analytics::tests::test_analytics_enabled_with_empty_string ... ok [INFO] [stdout] test analytics::tests::test_analytics_enabled_with_value_0 ... ok [INFO] [stdout] test analytics::tests::test_analytics_enabled_with_value_false ... ok [INFO] [stdout] test analytics::tests::test_estimate_calculation ... ok [INFO] [stdout] test analytics::tests::test_flush_pending_empty_is_noop ... ok [INFO] [stdout] test analytics::tests::test_analytics_disabled_with_value_yes ... ok [INFO] [stdout] test analytics::tests::test_flush_pending_idempotent ... ok [INFO] [stdout] test analytics::tests::test_analytics_meta_table_created_by_migration ... ok [INFO] [stdout] test analytics::tests::test_negative_savings_clamped_at_recording ... ok [INFO] [stdout] test analytics::tests::test_command_breakdown ... ok [INFO] [stdout] test analytics::tests::test_pricing_default ... ok [INFO] [stdout] test analytics::tests::test_pricing_default_is_standard ... ok [INFO] [stdout] test analytics::tests::test_pricing_infinity_falls_back_to_default ... ok [INFO] [stdout] test analytics::tests::test_pricing_nan_falls_back_to_default ... ok [INFO] [stdout] test analytics::tests::test_pricing_negative_falls_back_to_default ... ok [INFO] [stdout] test analytics::tests::test_pricing_tiers ... ok [INFO] [stdout] test analytics::tests::test_daily_breakdown_groups_correctly ... ok [INFO] [stdout] test analytics::tests::test_language_breakdown ... ok [INFO] [stdout] test analytics::tests::test_pricing_zero_is_valid ... ok [INFO] [stdout] test analytics::tests::test_db_file_permissions_are_owner_only ... ok [INFO] [stdout] test analytics::tests::test_mode_breakdown ... ok [INFO] [stdout] test analytics::tests::test_clean_invalid_records ... ok [INFO] [stdout] test analytics::tests::test_clear_deletes_all ... ok [INFO] [stdout] test analytics::tests::test_open_creates_tables ... ok [INFO] [stdout] test analytics::tests::test_query_negative_savings_returns_zero ... ok [INFO] [stdout] test analytics::tests::test_record_and_query_summary ... ok [INFO] [stdout] test analytics::tests::test_since_clause_with_extra_no_since ... ok [INFO] [stdout] test analytics::tests::test_since_clause_with_extra_with_since ... ok [INFO] [stdout] test analytics::tests::test_record_truncates_long_original_cmd ... ok [INFO] [stdout] test analytics::tests::test_record_truncates_multibyte_utf8_original_cmd_at_char_boundary ... ok [INFO] [stdout] test analytics::tests::test_prune_removes_old_records ... ok [INFO] [stdout] test analytics::tests::test_query_by_original_cmd_grouping ... ok [INFO] [stdout] test cache::tests::test_cache_key_generation ... ok [INFO] [stdout] test cache::tests::test_cache_read_write ... ok [INFO] [stdout] test cache::tests::test_cache_read_write_with_token_budget ... ok [INFO] [stdout] test cache::tests::test_cache_stores_effective_mode ... ok [INFO] [stdout] test cascade::tests::test_cascade_errors_when_no_mode_produces_output ... ok [INFO] [stdout] test analytics::tests::test_register_thread_normal_path_succeeds ... ok [INFO] [stdout] test analytics::tests::test_register_and_flush_round_trip ... ok [INFO] [stdout] test analytics::tests::test_wal_mode_enabled ... ok [INFO] [stdout] test analytics::tests::test_tier_distribution ... ok [INFO] [stdout] test cascade::tests::test_serde_cascade_errors_when_no_output ... ok [INFO] [stdout] test analytics::tests::test_query_by_original_cmd_limited_to_15 ... ok [INFO] [stdout] test analytics::tests::test_since_filter ... ok [INFO] [stdout] test cascade::tests::test_serde_cascade_returns_starting_mode_when_within_budget ... ok [INFO] [stdout] test cascade::tests::test_cascade_returns_first_mode_when_within_budget ... ok [INFO] [stdout] test cascade::tests::test_cascade_single_mode_types ... ok [INFO] [stdout] test cascade::tests::test_serde_cascade_escalates_from_full_to_structure ... ok [INFO] [stdout] test cascade::tests::test_serde_cascade_full_to_structure_exceeds_falls_to_truncation ... ok [INFO] [stdout] test cascade::tests::test_cascade_falls_through_to_line_truncation ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_detect_pretooluse_hook_integrity_missing_script ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_detect_pretooluse_hook_integrity_ok ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_has_skim_hook_in_settings_false ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_has_skim_hook_in_settings_no_hooks ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_has_skim_hook_in_settings_true ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_detect_pretooluse_hook_integrity_tampered ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_read_settings_guarded_valid ... ok [INFO] [stdout] test cmd::agents::tests::test_agent_kind_cli_name ... ok [INFO] [stdout] test cmd::agents::tests::test_agent_kind_all_supported ... ok [INFO] [stdout] test cmd::agents::tests::test_agents_help_flag ... ok [INFO] [stdout] test cmd::agents::tests::test_hook_status_display ... ok [INFO] [stdout] test cmd::agents::util::tests::test_count_files_recursive_empty_dir ... ok [INFO] [stdout] test cascade::tests::test_cascade_escalates_to_more_aggressive_mode ... ok [INFO] [stdout] test cmd::agents::util::tests::test_dir_size_human_formats ... ok [INFO] [stdout] test cmd::agents::util::tests::test_count_files_recursive_with_files ... ok [INFO] [stdout] test cmd::agents::util::tests::test_tilde_path_with_home ... ok [INFO] [stdout] test cmd::agents::util::tests::test_tilde_path_without_home_prefix ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_detect_all_agents_returns_all_kinds ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_flag_injection_skipped ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_inject_flag_no_separator ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_inject_flag_before_separator ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_tier1_build_success ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_tier1_build_failure ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_tier1_clippy_warnings ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_tier1_clippy_warning_codes_grouped ... ok [INFO] [stdout] test cmd::agents::tests::test_agents_run_no_crash ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_user_has_flag_absent ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_user_has_flag_present ... ok [INFO] [stdout] test cmd::agents::tests::test_agents_json_output_valid_json ... ok [INFO] [stdout] test cmd::build::tsc::tests::test_tier1_tsc_errors ... ok [INFO] [stdout] test cascade::tests::test_serde_cascade_structure_start_exceeds_falls_to_truncation ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_tier3_passthrough ... ok [INFO] [stdout] test cmd::build::tsc::tests::test_tsc_group_by_file ... ok [INFO] [stdout] test cmd::build::tsc::tests::test_tier1_tsc_success ... ok [INFO] [stdout] test cmd::build::tsc::tests::test_tier2_tsc_errors_on_stdout ... ok [INFO] [stdout] test cmd::discover::tests::test_analyze_excludes_already_rewritten_commands ... ok [INFO] [stdout] test cmd::build::tsc::tests::test_tier3_passthrough ... ok [INFO] [stdout] test cmd::discover::tests::test_classify_bash_already_compact_commands ... ok [INFO] [stdout] test cmd::discover::tests::test_classify_bash_non_rewritable_commands ... ok [INFO] [stdout] test cmd::discover::tests::test_classify_bash_rewritable_commands ... ok [INFO] [stdout] test cmd::discover::tests::test_classify_bash_skips_skim_commands ... ok [INFO] [stdout] test cmd::discover::tests::test_is_skimmable_file ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_agent ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_and_command_are_in_sync ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_debug ... ok [INFO] [stdout] test cmd::discover::tests::test_analyze_counts_non_skim_commands ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_defaults ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_json ... ok [INFO] [stdout] test cmd::discover::tests::test_analyze_collects_non_rewritable_when_debug ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_session_latest ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_unknown_agent ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_since ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_duration_ago_days ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_duration_ago_hours ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_duration_ago_weeks ... ok [INFO] [stdout] test cmd::discover::tests::test_would_rewrite_basic ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_args_unknown_flag ... ok [INFO] [stdout] test cmd::discover::tests::test_parse_duration_ago_invalid ... ok [INFO] [stdout] test cmd::discover::tests::test_would_rewrite_file_ops ... ok [INFO] [stdout] test cmd::discover::tests::test_would_rewrite_lint_and_infra_tools ... ok [INFO] [stdout] test cmd::discover::tests::test_would_rewrite_targets ... ok [INFO] [stdout] test cmd::file::find::tests::test_display_format ... ok [INFO] [stdout] test cmd::file::find::tests::test_tier1_empty_on_success_returns_zero_result ... ok [INFO] [stdout] test cmd::file::find::tests::test_tier1_find_large_truncates ... ok [INFO] [stdout] test cmd::file::find::tests::test_tier1_find_small ... ok [INFO] [stdout] test cmd::file::find::tests::test_tier3_empty_on_error_is_passthrough ... ok [INFO] [stdout] test cmd::file::find::tests::test_parse_impl_error_with_output_still_parses ... ok [INFO] [stdout] test cmd::file::find::tests::test_parse_impl_full_on_small_input ... ok [INFO] [stdout] test cmd::file::grep::tests::test_display_format ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_user_message_format_skips_injection_and_falls_through ... ok [INFO] [stdout] test cmd::file::grep::tests::test_file_grouping ... ok [INFO] [stdout] test cmd::file::grep::tests::test_max_matches_per_file_cap ... ok [INFO] [stdout] test cmd::file::grep::tests::test_parse_impl_produces_full ... ok [INFO] [stdout] test cmd::build::cargo::tests::test_tier2_regex_errors ... ok [INFO] [stdout] test cmd::file::grep::tests::test_parse_impl_empty_is_passthrough ... ok [INFO] [stdout] test cmd::file::ls::tests::test_build_tree_footer_no_hidden_no_summary ... ok [INFO] [stdout] test cmd::file::grep::tests::test_summary_line_present ... ok [INFO] [stdout] test cmd::file::grep::tests::test_tier1_grep_basic ... ok [INFO] [stdout] test cmd::file::ls::tests::test_build_tree_footer_depth_hidden_count ... ok [INFO] [stdout] test cmd::file::ls::tests::test_count_tree_depth_nested ... ok [INFO] [stdout] test cmd::file::ls::tests::test_count_tree_depth_root ... ok [INFO] [stdout] test cmd::file::ls::tests::test_empty_output_passthrough ... ok [INFO] [stdout] test cmd::file::ls::tests::test_prepare_tree_args_injects_charset ... ok [INFO] [stdout] test cmd::file::ls::tests::test_prepare_tree_args_no_inject_when_present ... ok [INFO] [stdout] test cmd::file::ls::tests::test_parse_ls_impl_plain_is_degraded ... ok [INFO] [stdout] test cmd::file::ls::tests::test_tier2_ls_basic ... ok [INFO] [stdout] test cmd::file::ls::tests::test_tier1_ls_la ... ok [INFO] [stdout] test cmd::file::ls::tests::test_parse_ls_impl_long_form_is_full ... ok [INFO] [stdout] test cmd::file::rg::tests::test_parse_impl_empty_is_passthrough ... ok [INFO] [stdout] test cmd::file::rg::tests::test_parse_impl_json_is_full ... ok [INFO] [stdout] test cmd::file::rg::tests::test_parse_impl_text_is_degraded ... ok [INFO] [stdout] test cmd::file::rg::tests::test_prepare_args_injects_json ... ok [INFO] [stdout] test cmd::file::rg::tests::test_prepare_args_no_inject_when_count_flag ... ok [INFO] [stdout] test cmd::file::rg::tests::test_prepare_args_no_inject_when_json_present ... ok [INFO] [stdout] test cmd::file::rg::tests::test_tier1_non_json_returns_none ... ok [INFO] [stdout] test cmd::file::rg::tests::test_tier1_rg_json ... ok [INFO] [stdout] test cmd::file::rg::tests::test_tier2_rg_text ... ok [INFO] [stdout] test cmd::file::tests::test_sanitize_for_display_clean_input ... ok [INFO] [stdout] test cmd::file::tests::test_sanitize_for_display_rejects_non_ascii ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_build_changed_lines_additions ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_build_changed_lines_context_only ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_build_changed_lines_deletions_mark_boundary ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_build_changed_lines_empty_hunks ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_build_changed_lines_multiple_hunks ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_find_changed_nodes_empty_hunks ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_find_changed_nodes_function_overlaps_hunk ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_find_changed_nodes_import_overlaps ... ok [INFO] [stdout] test cmd::file::ls::tests::test_parse_tree_degradation_marker_uses_tree_prefix ... ok [INFO] [stdout] test cmd::file::ls::tests::test_parse_tree_impl_produces_result ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_find_changed_nodes_nested_class_method ... ok [INFO] [stdout] test cmd::file::ls::tests::test_tree_text_depth_cap_reports_count ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_is_container_node_class ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_is_container_node_function_is_not ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_is_container_node_rust_impl ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_collect_hunks_empty_input ... ok [INFO] [stdout] test cmd::git::diff::ast::tests::test_is_container_node_rust_struct ... ok [INFO] [stdout] test cmd::agents::detection::tests::test_read_settings_guarded_rejects_oversized ... ok [INFO] [stdout] test cmd::file::rg::tests::test_max_matches_per_file_cap ... ok [INFO] [stdout] test cmd::file::ls::tests::test_tier2_tree_basic ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_file_status_from_deleted_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_file_status_modified ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_file_status_from_new_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_collect_hunks_stops_at_next_diff_header ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_collect_hunks_two_hunks ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_hunk_content_new_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_collect_hunks_skips_non_patch_lines ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_hunk_content_single_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_diff_git_header_fallback_no_b_prefix ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_diff_git_header_path_with_b_directory ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_diff_git_header_simple ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_diff_git_header_different_paths ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_diff_git_header_multiple_b_components ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_hunk_header_single_line ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_hunk_header_with_context_label ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_hunk_header_zero_count ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_unified_diff_binary_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_unified_diff_deleted_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_unified_diff_empty ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_unified_diff_multi_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_unified_diff_new_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_unified_diff_renamed_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_unified_diff_whitespace_only ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_resolve_file_info_binary ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_resolve_file_info_deleted_file_uses_a_path ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_resolve_file_info_modified_fallback_dev_null_minus ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_resolve_file_info_modified_fallback_dev_null_plus ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_diff_git_header_no_separator ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_resolve_file_info_new_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_resolve_file_info_renamed_with_from ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_resolve_file_info_renamed_without_from_falls_back_to_a_path ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_scan_extended_headers_binary ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_hunk_header_basic ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_scan_extended_headers_deleted_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_scan_extended_headers_new_file ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_scan_extended_headers_rename_to_only ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_collect_hunks_single_hunk ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_hunk_header_malformed ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_scan_extended_headers_stops_at_next_diff_header ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_scan_extended_headers_rename_with_from ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_scan_extended_headers_start_offset ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_hunk_header_large_line_numbers ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_scan_extended_headers_stops_at_hunk_header ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_diff_result_display ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_line_number_width_helper ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_strip_ab_prefix ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_diff_result_serde_roundtrip ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_added_file ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_binary_file ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_parser_cache_reuse_does_not_corrupt_output ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_changed_only_no_duplicate_parent_header_when_range_starts_at_header ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_changed_only_no_duplicate_close_brace_when_range_ends_at_close ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_deleted_file ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_changed_only_no_duplicate_header_two_children_same_parent ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_diff_file_skip_ast_uses_raw_hunks ... ok [INFO] [stdout] test cmd::git::diff::parse::tests::test_parse_unified_diff_single_file ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_node_with_hunks_clips_to_node_boundaries_when_hunk_spans_two_nodes ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_raw_hunks_multi_hunk_line_tracking ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_raw_hunks_shows_line_numbers ... ok [INFO] [stdout] test cmd::git::diff::render::tests::test_render_renamed_file_header ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_extract_range_right_no_separator_returns_none ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_extract_range_right_three_dot_empty_right_returns_head ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_extract_range_right_three_dot_with_content ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_extract_range_right_two_dot_empty_right_returns_head ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_extract_range_right_two_dot_with_content ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_get_file_source_rejects_null_byte ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_get_file_source_with_c_flag_path ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_git_show_rejects_dash_ref_spec ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_get_file_source_rejects_path_traversal ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_resolve_work_tree_none ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_resolve_work_tree_with_c_flag ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_resolve_work_tree_with_work_tree_equals ... ok [INFO] [stdout] test cmd::git::diff::source::tests::test_resolve_work_tree_with_work_tree_flag ... ok [INFO] [stdout] test cmd::git::diff::tests::test_diff_stderr_notice_format_is_documented ... ok [INFO] [stdout] test cmd::git::diff::tests::test_parse_diff_mode_extraction_structure ... ok [INFO] [stdout] test cmd::git::diff::tests::test_parse_diff_mode_extraction_unknown_mode ... ok [INFO] [stdout] test cmd::git::diff::tests::test_parse_diff_mode_short_m_not_consumed_as_mode ... ok [INFO] [stdout] test cmd::git::diff::tests::test_parse_diff_mode_short_m_passed_through_to_git ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_add_to_submodule_creates_section ... ok [INFO] [stdout] test cmd::git::diff::tests::test_empty_diff_produces_no_stdout_output ... ok [INFO] [stdout] test cmd::git::diff::tests::test_parse_diff_mode_extraction_default ... ok [INFO] [stdout] test cmd::git::diff::tests::test_parse_diff_mode_extraction_full ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_extract_pruned_ref ... ok [INFO] [stdout] test cmd::git::diff::tests::test_parse_diff_mode_missing_value ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_add_to_submodule_appends_to_existing ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_extract_ref_name_new_branch ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_extract_ref_name_new_tag ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_empty ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_forced_update ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_extract_updated_ref_forced ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_progress_stripped ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_extract_updated_ref_normal ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_submodule_then_toplevel ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_multiple_remotes ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_new_branches_in_details ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_new_branches_only ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_submodules ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_up_to_date_fixture ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_with_prune ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_with_updates ... ok [INFO] [stdout] test cmd::git::fetch::tests::test_parse_fetch_whitespace_only ... ok [INFO] [stdout] test cmd::git::log::tests::test_parse_log_empty ... ok [INFO] [stdout] test cmd::git::log::tests::test_parse_log_format ... ok [INFO] [stdout] test cmd::git::log::tests::test_parse_log_parse_tier_is_full ... ok [INFO] [stdout] test cmd::git::log::tests::test_parse_log_single_commit ... ok [INFO] [stdout] test cmd::git::show::tests::test_commit_mode_parses_fixture_and_renders_diff ... ok [INFO] [stdout] test cmd::git::show::tests::test_detect_commit_mode_default_head ... ok [INFO] [stdout] test cmd::git::show::tests::test_detect_commit_mode_single_ref ... ok [INFO] [stdout] test cmd::git::show::tests::test_detect_file_content_mode_simple ... ok [INFO] [stdout] test cmd::git::show::tests::test_detect_flags_ignored_in_mode_detection ... ok [INFO] [stdout] test cmd::git::show::tests::test_detect_multiple_refs_passthrough ... ok [INFO] [stdout] test cmd::git::show::tests::test_file_content_mode_language_detection_unknown ... ok [INFO] [stdout] test cmd::git::show::tests::test_detect_commit_mode_with_path_filter ... ok [INFO] [stdout] test cmd::git::show::tests::test_detect_file_content_mode_empty_ref ... ok [INFO] [stdout] test cmd::git::show::tests::test_format_flag_passthrough_detection ... ok [INFO] [stdout] test cmd::git::show::tests::test_detect_file_content_mode_with_slashes_in_ref ... ok [INFO] [stdout] test cmd::git::show::tests::test_no_passthrough_flags_does_not_trigger ... ok [INFO] [stdout] test cmd::git::show::tests::test_file_content_mode_json_rejected ... ok [INFO] [stdout] test cmd::git::show::tests::test_file_content_mode_language_detection_rs ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_annotated_tag_returns_none ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_basic ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_empty_body ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_empty_returns_none ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_crlf_line_endings ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_merge_parents ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_multi_paragraph_body ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_no_trailing_newline ... ok [INFO] [stdout] test cmd::git::show::tests::test_parse_commit_header_signed_commit ... ok [INFO] [stdout] test cmd::git::show::tests::test_passthrough_flags_all_rewrite_correctly ... ok [INFO] [stdout] test cmd::git::show::tests::test_render_show_diff_full_fixture_tier1 ... ok [INFO] [stdout] test cmd::git::show::tests::test_render_show_diff_header_only_commit ... ok [INFO] [stdout] test cmd::git::show::tests::test_render_show_diff_non_commit_returns_none ... ok [INFO] [stdout] test cmd::git::show::tests::test_render_show_diff_unsupported_extension_yields_some ... ok [INFO] [stdout] test cmd::git::show::tests::test_split_refpath_colon_in_path ... ok [INFO] [stdout] test cmd::git::show::tests::test_split_refpath_empty_ref ... ok [INFO] [stdout] test cmd::git::show::tests::test_split_refpath_no_colon_returns_whole_token ... ok [INFO] [stdout] test cmd::git::show::tests::test_split_refpath_simple ... ok [INFO] [stdout] test cmd::git::show::tests::test_split_refpath_slashes_in_ref ... ok [INFO] [stdout] test cmd::git::show::tests::test_file_content_mode_transforms_supported_language ... ok [INFO] [stdout] test cmd::git::show::tests::test_stat_family_flag_passthrough_detection ... ok [INFO] [stdout] test cmd::git::show::tests::test_show_no_panic_on_malformed_commit_header ... ok [INFO] [stdout] test cmd::git::status::tests::test_extract_last_path_with_spaces ... ok [INFO] [stdout] test cmd::git::show::tests::test_show_no_panic_on_empty_diff_body ... ok [INFO] [stdout] test cmd::git::status::tests::test_flag_stripping_preserves_non_conflicting_flags ... ok [INFO] [stdout] test cmd::git::status::tests::test_flag_stripping_mixed_input ... ok [INFO] [stdout] test cmd::git::status::tests::test_flag_stripping_removes_conflicting_flags ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_diff_stat_empty ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_status_clean ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_status_dirty ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_status_garbage_input_no_panic ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_status_null_bytes_no_panic ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_status_partial_v2_line_no_panic ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_status_path_with_spaces ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_status_shows_all_files ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_status_unmerged_entries ... ok [INFO] [stdout] test cmd::git::tests::test_diff_no_passthrough_without_flag ... ok [INFO] [stdout] test cmd::git::tests::test_diff_passthrough_with_check ... ok [INFO] [stdout] test cmd::git::tests::test_diff_passthrough_with_name_only ... ok [INFO] [stdout] test cmd::git::tests::test_diff_passthrough_with_numstat ... ok [INFO] [stdout] test cmd::git::tests::test_diff_passthrough_with_shortstat ... ok [INFO] [stdout] test cmd::git::tests::test_finalize_git_output_accepts_empty_strings ... ok [INFO] [stdout] test cmd::git::tests::test_log_detects_max_count ... ok [INFO] [stdout] test cmd::git::tests::test_log_no_limit_flag ... ok [INFO] [stdout] test cmd::git::tests::test_log_detects_n_flag ... ok [INFO] [stdout] test cmd::git::tests::test_log_passthrough_with_format ... ok [INFO] [stdout] test cmd::git::tests::test_log_passthrough_with_format_equals ... ok [INFO] [stdout] test cmd::git::tests::test_log_passthrough_with_oneline ... ok [INFO] [stdout] test cmd::git::tests::test_map_exit_code_failure ... ok [INFO] [stdout] test cmd::git::tests::test_map_exit_code_none ... ok [INFO] [stdout] test cmd::git::tests::test_split_no_global_flags ... ok [INFO] [stdout] test cmd::git::tests::test_split_with_no_optional_locks ... ok [INFO] [stdout] test cmd::git::tests::test_split_with_no_pager ... ok [INFO] [stdout] test cmd::git::tests::test_status_passthrough_with_porcelain ... ok [INFO] [stdout] test cmd::git::tests::test_status_passthrough_with_porcelain_v2 ... ok [INFO] [stdout] test cmd::git::tests::test_status_passthrough_with_short ... ok [INFO] [stdout] test cmd::git::tests::test_map_exit_code_success ... ok [INFO] [stdout] test cmd::git::tests::test_split_multiple_global_flags ... ok [INFO] [stdout] test cmd::hook_log::tests::test_archive_path_format ... ok [INFO] [stdout] test cmd::git::tests::test_split_with_c_flag ... ok [INFO] [stdout] test cmd::git::tests::test_split_with_git_dir_equals ... ok [INFO] [stdout] test cmd::git::tests::test_user_has_flag_empty_args ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_diff_stat ... ok [INFO] [stdout] test cmd::git::status::tests::test_parse_diff_stat_binary_files ... ok [INFO] [stdout] test cmd::hook_log::tests::test_rotation_missing_file_is_noop ... ok [INFO] [stdout] test cmd::hook_log::tests::test_rotation_not_triggered_under_limit ... ok [INFO] [stdout] test cmd::hook_log::tests::test_log_rotation_at_1mb ... ok [INFO] [stdout] test cmd::hook_log::tests::test_log_hook_warning_triggers_rotation ... ok [INFO] [stdout] test cmd::hook_log::tests::test_rotation_shifts_existing_archives ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_format_response_no_permission_decision ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_format_response ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_agent_kind ... ok [INFO] [stdout] test cmd::hook_log::tests::test_timestamp_string_format ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_generate_script ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_generate_script_init_comment ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_hook_support ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_install_default ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_parse_input_missing_command ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_parse_input_missing_tool_input ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_parse_input_valid ... ok [INFO] [stdout] test cmd::hooks::claude::tests::test_claude_uninstall_default ... ok [INFO] [stdout] test cmd::hooks::codex::tests::test_codex_format_response_returns_null ... ok [INFO] [stdout] test cmd::hooks::codex::tests::test_codex_agent_kind ... ok [INFO] [stdout] test cmd::hooks::codex::tests::test_codex_generate_script_empty ... ok [INFO] [stdout] test cmd::hooks::codex::tests::test_codex_hook_support_is_awareness ... ok [INFO] [stdout] test cmd::hooks::codex::tests::test_codex_install_noop ... ok [INFO] [stdout] test cmd::hooks::codex::tests::test_codex_parse_input_returns_none ... ok [INFO] [stdout] test cmd::hooks::codex::tests::test_codex_uninstall_noop ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_agent_kind ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_format_response_includes_command_in_reason ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_format_response_is_deny ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_format_response_no_allow ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_format_response_no_hook_specific_output ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_generate_script ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_hook_is_real ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_install_default ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_parse_input ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_parse_input_missing_command ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_parse_input_missing_tool_input ... ok [INFO] [stdout] test cmd::hooks::copilot::tests::test_copilot_uninstall_default ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_agent_kind ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_format_response ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_format_response_has_required_permission_field ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_format_response_no_hook_specific_output ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_format_response_no_permission_decision ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_generate_script_absolute_path ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_generate_script_init_comment ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_generate_script_zero_stderr ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_install_default ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_parse_input_missing_command ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_parse_input ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_hook_is_real ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_parse_input_non_string_command ... ok [INFO] [stdout] test cmd::hooks::cursor::tests::test_cursor_uninstall_default ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_format_response ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_format_response_has_required_decision_field ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_format_response_no_permission_decision ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_generate_script_has_absolute_path ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_generate_script_has_agent_flag ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_generate_script_has_shebang ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_generate_script_has_version ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_hook_is_real ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_install_default ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_parse_input ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_parse_input_missing_command ... ok [INFO] [stdout] test cmd::hooks::opencode::tests::test_opencode_format_response_returns_null ... ok [INFO] [stdout] test cmd::hooks::opencode::tests::test_opencode_agent_kind ... ok [INFO] [stdout] test cmd::hooks::gemini::tests::test_gemini_uninstall_default ... ok [INFO] [stdout] test cmd::hooks::opencode::tests::test_opencode_generate_script_empty ... ok [INFO] [stdout] test cmd::hooks::opencode::tests::test_opencode_hook_support_is_awareness ... ok [INFO] [stdout] test cmd::hooks::opencode::tests::test_opencode_install_noop ... ok [INFO] [stdout] test cmd::hooks::opencode::tests::test_opencode_parse_input_returns_none ... ok [INFO] [stdout] test cmd::hooks::opencode::tests::test_opencode_uninstall_noop ... ok [INFO] [stdout] test cmd::hooks::tests::test_generate_hook_script_accepts_path_with_spaces ... ok [INFO] [stdout] test cmd::hooks::tests::test_generate_hook_script_structure ... ok [INFO] [stdout] test cmd::hooks::tests::test_hook_input_clone ... ok [INFO] [stdout] test cmd::hooks::tests::test_hook_support_equality ... ok [INFO] [stdout] test cmd::hooks::tests::test_parse_tool_input_command_missing_command ... ok [INFO] [stdout] test cmd::hooks::tests::test_parse_tool_input_command_missing_tool_input ... ok [INFO] [stdout] test cmd::hooks::tests::test_parse_tool_input_command_non_string ... ok [INFO] [stdout] test cmd::hooks::tests::test_parse_tool_input_command_valid ... ok [INFO] [stdout] test cmd::infra::aws::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::infra::aws::tests::test_parse_impl_produces_full ... ok [INFO] [stdout] test cache::tests::test_cache_invalidation_on_mtime_change ... ok [INFO] [stdout] test cmd::infra::aws::tests::test_tier1_aws_ec2_describe ... ok [INFO] [stdout] test cmd::infra::aws::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::infra::aws::tests::test_tier2_aws_regex ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_json_value_to_string ... ok [INFO] [stdout] test cmd::infra::aws::tests::test_tier1_aws_s3_ls ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_parse_impl_produces_full ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_summarize_json_array ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_summarize_json_object_shows_up_to_max_keys ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_summarize_json_object ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_summarize_json_object_truncation_notice ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_tier1_curl_json_response ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_tier1_curl_non_json_fails ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_tier1_max_items_cap ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_tier2_preserves_indented_body_content ... ok [INFO] [stdout] test cmd::infra::curl::tests::test_tier2_curl_regex ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_parse_impl_json_produces_full ... ok [INFO] [stdout] test cmd::hooks::tests::test_generate_hook_script_rejects_dollar_in_path - should panic ... ok [INFO] [stdout] test cmd::hooks::tests::test_generate_hook_script_rejects_backtick_in_path - should panic ... ok [INFO] [stdout] test cmd::hooks::tests::test_generate_hook_script_rejects_newline_in_path - should panic ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_tier1_comment_limit ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_tier1_body_truncation ... ok [INFO] [stdout] test cmd::hooks::tests::test_generate_hook_script_rejects_quote_in_path - should panic ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_tier1_json ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_tier1_minimal ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_tier1_user_json_fields_not_overridden ... ok [INFO] [stdout] test cmd::infra::gh::list::tests::test_parse_impl_produces_full ... ok [INFO] [stdout] test cmd::hooks::tests::test_generate_hook_script_rejects_unsafe_agent_name - should panic ... ok [INFO] [stdout] test cmd::hooks::tests::test_generate_hook_script_rejects_unsafe_version - should panic ... ok [INFO] [stdout] test cmd::infra::gh::list::tests::test_tier1_gh_pass ... ok [INFO] [stdout] test cmd::infra::gh::list::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::infra::gh::list::tests::test_tier1_gh_fail_non_json ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_other_states_appear_in_summary ... ok [INFO] [stdout] test cmd::infra::gh::list::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::infra::gh::list::tests::test_tier2_gh_regex ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_parse_impl_text_produces_full ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_failing_check_includes_url ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_summary_counts ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_tier1_json ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_tier1_json_object_wrapper_check_runs ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_tier1_tab_text ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_gh_pr_view_clean_still_renders_items ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_gh_pr_view_draft_conflict_renders_all_three ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_gh_pr_view_draft_summary_prefix ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_gh_pr_view_no_ci_renders_none ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_parse_impl_json_produces_full ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_tier1_json ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_tier1_user_json_fields_not_overridden ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_tier1_symbol_text ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_failed_job_includes_url ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_failing_check_symbol_includes_url ... ok [INFO] [stdout] test cmd::infra::gh::pr_checks::tests::test_passthrough_garbage ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_parse_impl_json_produces_full ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_tier1_empty_jobs_array ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_tier1_failed_steps ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_tier1_json ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_tier1_success ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_tier1_user_json_fields_not_overridden ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_404_error_passthrough ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_auth_error_passthrough ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_auto_detect_checks_text ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_auto_detect_gh_api_no_false_positive ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_auto_detect_issue_view ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_auto_detect_list_json ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_auto_detect_pr_view ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_auto_detect_run_view ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_auto_detect_unknown_json_object_passthrough ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_extract_comments_empty ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_extract_comments_limits_to_last_n ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_extract_comments_strips_quotes ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_freeform_release_text_passthrough ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_malformed_json_passthrough ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_truncate_body_fits ... ok [INFO] [stdout] test cmd::infra::gh::tests::test_truncate_body_truncates ... ok [INFO] [stdout] test cmd::infra::tests::test_sanitize_for_display_clean_input ... ok [INFO] [stdout] test cmd::infra::tests::test_sanitize_for_display_rejects_non_ascii ... ok [INFO] [stdout] test cmd::infra::tests::test_sanitize_for_display_truncates_at_64 ... ok [INFO] [stdout] test cmd::infra::wget::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_tier2_text ... ok [INFO] [stdout] test cmd::infra::wget::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_passthrough_garbage ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_tier2_text ... ok [INFO] [stdout] test cmd::infra::wget::tests::test_tier2_wget_no_false_positive ... ok [INFO] [stdout] test cmd::infra::gh::run_view::tests::test_passthrough_garbage ... ok [INFO] [stdout] test cmd::infra::wget::tests::test_tier2_wget_regex ... ok [INFO] [stdout] test cmd::init::flags::tests::test_parse_flags_agent_cursor ... ok [INFO] [stdout] test cmd::init::flags::tests::test_parse_flags_agent_gemini ... ok [INFO] [stdout] test cmd::init::flags::tests::test_parse_flags_agent_missing_value_errors ... ok [INFO] [stdout] test cmd::infra::gh::pr_view::tests::test_passthrough_garbage ... ok [INFO] [stdout] test cmd::init::flags::tests::test_parse_flags_backward_compat_no_agent ... ok [INFO] [stdout] test cmd::init::flags::tests::test_parse_flags_default_agent_is_claude_code ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_tier2_text ... ok [INFO] [stdout] test cmd::init::helpers::tests::test_guidance_content_has_version_markers ... ok [INFO] [stdout] test cmd::infra::wget::tests::test_tier1_wget_error ... ok [INFO] [stdout] test cmd::infra::wget::tests::test_parse_impl_produces_full ... ok [INFO] [stdout] test cmd::init::flags::tests::test_parse_flags_agent_unknown_errors ... ok [INFO] [stdout] test cmd::infra::wget::tests::test_tier1_wget_download ... ok [INFO] [stdout] test cmd::init::install::tests::test_find_skim_section_adjacent_markers ... ok [INFO] [stdout] test cmd::init::helpers::tests::test_guidance_content_mdc_has_frontmatter ... ok [INFO] [stdout] test cmd::init::helpers::tests::test_load_or_create_settings_empty_file ... ok [INFO] [stdout] test cmd::init::helpers::tests::test_load_or_create_settings_missing_file ... ok [INFO] [stdout] test cmd::init::install::tests::test_find_skim_section_normal_case ... ok [INFO] [stdout] test cmd::init::install::tests::test_find_skim_section_empty_input ... ok [INFO] [stdout] test cmd::init::install::tests::test_find_skim_section_markers_in_wrong_order ... ok [INFO] [stdout] test cmd::init::install::tests::test_find_skim_section_only_end_marker ... ok [INFO] [stdout] test cmd::init::install::tests::test_upsert_hook_entry_idempotent ... ok [INFO] [stdout] test cmd::init::install::tests::test_validate_shell_safe_path_normal_paths ... ok [INFO] [stdout] test cmd::init::install::tests::test_validate_shell_safe_path_rejects_backslash ... ok [INFO] [stdout] test cmd::init::install::tests::test_remove_guidance_deletes_empty_file ... ok [INFO] [stdout] test cmd::init::install::tests::test_validate_shell_safe_path_rejects_dollar ... ok [INFO] [stdout] test cmd::init::install::tests::test_validate_shell_safe_path_rejects_double_quote ... ok [INFO] [stdout] test cmd::init::install::tests::test_validate_shell_safe_path_rejects_newline ... ok [INFO] [stdout] test cmd::init::install::tests::test_inject_guidance_updates_stale_version ... ok [INFO] [stdout] test cmd::init::install::tests::test_remove_guidance_strips_section ... ok [INFO] [stdout] test cmd::init::install::tests::test_validate_shell_safe_path_rejects_backtick ... ok [INFO] [stdout] test cmd::init::state::tests::test_scan_existing_bash_hooks_detects_other_bash_hook ... ok [INFO] [stdout] test cmd::init::state::tests::test_scan_existing_bash_hooks_none_input ... ok [INFO] [stdout] test cmd::init::state::tests::test_scan_existing_bash_hooks_ignores_non_bash_matchers ... ok [INFO] [stdout] test cmd::integrity::tests::test_awareness_hash_missing_manifest ... ok [INFO] [stdout] test cmd::init::install::tests::test_find_skim_section_only_start_marker ... ok [INFO] [stdout] test cmd::integrity::tests::test_compute_file_hash_deterministic ... ok [INFO] [stdout] test cmd::integrity::tests::test_awareness_hash_round_trip ... ok [INFO] [stdout] test cmd::integrity::tests::test_manifest_path_per_agent ... ok [INFO] [stdout] test cmd::init::install::tests::test_validate_shell_safe_path_rejects_null_byte ... ok [INFO] [stdout] test cmd::integrity::tests::test_read_hash_manifest_missing ... ok [INFO] [stdout] test cmd::init::state::tests::test_scan_existing_bash_hooks_no_other_hooks ... ok [INFO] [stdout] test cmd::integrity::tests::test_remove_hash_manifest_nonexistent_is_noop ... ok [INFO] [stdout] test cmd::integrity::tests::test_compute_file_hash_different_content ... ok [INFO] [stdout] test cmd::integrity::tests::test_verify_script_integrity_missing_hash_backward_compat ... ok [INFO] [stdout] test cmd::integrity::tests::test_write_and_read_hash_manifest ... ok [INFO] [stdout] test cmd::integrity::tests::test_write_hash_manifest_creates_hooks_dir ... ok [INFO] [stdout] test cmd::integrity::tests::test_verify_script_integrity_tampered ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_completely_different ... ok [INFO] [stdout] test cmd::integrity::tests::test_remove_hash_manifest ... ok [INFO] [stdout] test cmd::init::install::tests::test_inject_guidance_appends_to_existing ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_edit_dist_more_failed_tokens ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_empty_commands ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_command_typo_edit_distance_2 ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_identical_commands ... ok [INFO] [stdout] test cmd::integrity::tests::test_verify_script_integrity_valid ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_missing_arg ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_same_length_single_non_flag_diff ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_shared_prefix_fewer_failed_tokens ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_shared_prefix_equal_tokens ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_single_token_no_match ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_missing_separator ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_same_length_multiple_diffs ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_shared_prefix_more_failed_tokens ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_typo_in_command_name ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_whitespace_only_diff ... ok [INFO] [stdout] test cmd::learn::tests::test_deduplicate_merges_same_pair ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_candidate_no_result_skipped ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_missing_separator ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_multiple_pairs ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_basic ... ok [INFO] [stdout] test cmd::integrity::tests::test_upgrade_recomputes_hash ... ok [INFO] [stdout] test cmd::learn::tests::test_classify_wrong_flag ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_skips_no_result ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_skips_permission_denial ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_respects_lookahead ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_no_fix ... ok [INFO] [stdout] test cmd::learn::tests::test_detect_corrections_tdd_cycle_excluded ... ok [INFO] [stdout] test cmd::learn::tests::test_filter_single_occurrence_non_typo ... ok [INFO] [stdout] test cmd::learn::tests::test_find_correction_allows_typo_base_command ... ok [INFO] [stdout] test cmd::learn::tests::test_find_correction_rejects_distant_base_command ... ok [INFO] [stdout] test cmd::learn::tests::test_filter_excludes_path_only ... ok [INFO] [stdout] test cmd::learn::tests::test_filter_rejects_single_occurrence_typo ... ok [INFO] [stdout] test cmd::learn::tests::test_generate_rules_content ... ok [INFO] [stdout] test cmd::learn::tests::test_generate_rules_content_copilot_frontmatter ... ok [INFO] [stdout] test cmd::learn::tests::test_generate_rules_content_codex_no_frontmatter ... ok [INFO] [stdout] test cmd::learn::tests::test_generate_rules_content_cursor_frontmatter ... ok [INFO] [stdout] test cmd::learn::tests::test_is_permission_denial_negative ... ok [INFO] [stdout] test cmd::learn::tests::test_is_permission_denial_positive ... ok [INFO] [stdout] test cmd::learn::tests::test_levenshtein_empty ... ok [INFO] [stdout] test cmd::learn::tests::test_levenshtein_completely_different ... ok [INFO] [stdout] test cmd::learn::tests::test_levenshtein_one_char ... ok [INFO] [stdout] test cmd::learn::tests::test_levenshtein_large_length_difference ... ok [INFO] [stdout] test cmd::learn::tests::test_levenshtein_two_chars ... ok [INFO] [stdout] test cmd::learn::tests::test_find_correction_requires_same_base_command ... ok [INFO] [stdout] test cmd::learn::tests::test_looks_like_error_benign_error_word ... ok [INFO] [stdout] test cmd::learn::tests::test_looks_like_error_negative ... ok [INFO] [stdout] test cmd::learn::tests::test_looks_like_error_real_error_patterns ... ok [INFO] [stdout] test cmd::learn::tests::test_looks_like_error_positive ... ok [INFO] [stdout] test cmd::learn::tests::test_looks_like_path_negative ... ok [INFO] [stdout] test cmd::learn::tests::test_levenshtein_identical ... ok [INFO] [stdout] test cmd::learn::tests::test_levenshtein_oversized_input ... ok [INFO] [stdout] test cmd::learn::tests::test_looks_like_path_positive ... ok [INFO] [stdout] test cmd::learn::tests::test_normalize_command_preserves_three ... ok [INFO] [stdout] test cmd::learn::tests::test_normalize_command_short ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_agent ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_agent_missing_value ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_generate ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_and_command_are_in_sync ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_defaults ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_dry_run ... ok [INFO] [stdout] test cmd::learn::tests::test_normalize_command_truncates ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_min_occurrences ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_min_occurrences_default ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_since ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_min_occurrences_zero_rejected ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_since_missing_value ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_json ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_unknown_flag ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_unknown_agent ... ok [INFO] [stdout] test cmd::learn::tests::test_parse_args_min_occurrences_non_integer_rejected ... ok [INFO] [stdout] test cmd::learn::tests::test_path_only_difference_true ... ok [INFO] [stdout] test cmd::learn::tests::test_sanitize_command_for_rules_basic ... ok [INFO] [stdout] test cmd::learn::tests::test_sanitize_command_for_rules_newlines ... ok [INFO] [stdout] test cmd::learn::tests::test_sanitize_command_for_rules_heading_injection ... ok [INFO] [stdout] test cmd::learn::tests::test_path_only_difference_different_length ... ok [INFO] [stdout] test cmd::learn::tests::test_sanitize_command_for_rules_truncation ... ok [INFO] [stdout] test cmd::learn::tests::test_path_only_difference_false_flag ... ok [INFO] [stdout] test cmd::learn::tests::test_path_only_difference_identical ... ok [INFO] [stdout] test cmd::learn::tests::test_sanitize_command_for_rules_backticks ... ok [INFO] [stdout] test cmd::learn::tests::test_truncate_utf8_ascii_over_limit ... ok [INFO] [stdout] test cmd::learn::tests::test_truncate_utf8_ascii_within_limit ... ok [INFO] [stdout] test cmd::learn::tests::test_truncate_utf8_empty_string ... ok [INFO] [stdout] test cmd::learn::tests::test_truncate_utf8_multibyte_exactly_fits ... ok [INFO] [stdout] test cmd::learn::tests::test_truncate_utf8_overflow_limit_larger_than_string ... ok [INFO] [stdout] test cmd::learn::tests::test_truncate_utf8_zero_limit ... ok [INFO] [stdout] test cmd::learn::tests::test_tdd_cycle_not_detected ... ok [INFO] [stdout] test cmd::learn::tests::test_tdd_cycle_detected ... ok [INFO] [stdout] test cmd::learn::tests::test_truncate_utf8_multibyte_boundary ... ok [INFO] [stdout] test cmd::learn::tests::test_truncate_utf8_ascii_at_boundary ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_is_format_mode_false_for_check ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_prepare_check_args_injects_check ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_parse_check_impl_json_produces_full ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_prepare_check_args_no_duplicate_check ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_prepare_format_args_no_duplicate_format ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_prepare_format_args_injects_format ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_prepare_format_args_with_file_arg ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_tier1_json_empty_diagnostics ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_tier1_json_fail ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_tier1_json_null_diagnostics ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_parse_check_impl_garbage_passthrough ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_tier1_format_success ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_tier2_text_regex ... ok [INFO] [stdout] test cmd::lint::black::tests::test_is_format_mode_no_check ... ok [INFO] [stdout] test cmd::lint::black::tests::test_is_format_mode_with_diff ... ok [INFO] [stdout] test cmd::lint::black::tests::test_is_format_mode_with_check ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_parse_check_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_parse_format_impl_empty_exit0 ... ok [INFO] [stdout] test cmd::lint::black::tests::test_parse_check_impl_full ... ok [INFO] [stdout] test cmd::lint::black::tests::test_parse_check_impl_degraded ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_is_format_mode ... ok [INFO] [stdout] test cmd::lint::biome::tests::test_tier1_format_file_list ... ok [INFO] [stdout] test cmd::lint::black::tests::test_parse_check_impl_passthrough_garbage ... ok [INFO] [stdout] test cmd::lint::black::tests::test_parse_check_impl_pass ... ok [INFO] [stdout] test cmd::lint::black::tests::test_tier1_check_pass ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_is_format_mode ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_is_format_mode_false_for_check ... ok [INFO] [stdout] test cmd::lint::black::tests::test_tier1_check_fail ... ok [INFO] [stdout] test cmd::lint::black::tests::test_path_with_spaces ... ok [INFO] [stdout] test cmd::lint::black::tests::test_tier2_check_regex ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_parse_check_impl_empty_pass ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_parse_check_impl_full ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_prepare_check_args_injects_check ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_prepare_check_args_no_duplicate_check ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_prepare_format_args_injects_fmt ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_prepare_format_args_no_duplicate_fmt ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_prepare_format_args_with_file_arg ... ok [INFO] [stdout] test cmd::lint::black::tests::test_parse_format_impl_full ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_tier1_list_fail ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_parse_check_impl_garbage_passthrough ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_diff_deduplication ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_parse_check_impl_diff_produces_degraded ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_tier1_fmt_output ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_parse_format_impl_full ... ok [INFO] [stdout] test cmd::lint::dprint::tests::test_tier2_diff_regex ... ok [INFO] [stdout] test cmd::lint::eslint::tests::test_tier1_eslint_pass ... ok [INFO] [stdout] test cmd::lint::eslint::tests::test_tier1_eslint_fail ... ok [INFO] [stdout] test cmd::lint::black::tests::test_tier1_format_output ... ok [INFO] [stdout] test cmd::lint::eslint::tests::test_tier2_eslint_regex ... ok [INFO] [stdout] test cmd::lint::eslint::tests::test_tier2_eslint_spaces_in_path ... ok [INFO] [stdout] test cmd::lint::eslint::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::lint::eslint::tests::test_parse_impl_json_produces_full ... ok [INFO] [stdout] test cmd::lint::eslint::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_tier1_empty_output_pass ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_path_with_spaces ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_parse_impl_list_produces_full ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_tier1_list_fail ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_parse_impl_json_produces_full ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_orig_suffix_stripped_from_diff ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_diff_deduplication ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_parse_impl_diff_produces_degraded ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_tier1_golangci_fail ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_parse_impl_garbage_passthrough ... ok [INFO] [stdout] test cmd::lint::gofmt::tests::test_tier2_diff_regex ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_tier1_golangci_null_issues ... ok [INFO] [stdout] test cmd::lint::mypy::tests::test_parse_impl_json_produces_full ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_tier2_golangci_regex ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_tier2_severity_error_keyword_in_message ... ok [INFO] [stdout] test cmd::lint::mypy::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::lint::mypy::tests::test_tier1_mypy_fail ... ok [INFO] [stdout] test cmd::lint::mypy::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_tier2_severity_normal_message_is_warning ... ok [INFO] [stdout] test cmd::lint::golangci::tests::test_tier2_severity_typecheck_is_error ... ok [INFO] [stdout] test cmd::lint::oxlint::tests::test_parse_impl_json_produces_full ... ok [INFO] [stdout] test cmd::lint::oxlint::tests::test_tier1_json_pass ... ok [INFO] [stdout] test cmd::lint::oxlint::tests::test_tier1_json_fail ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_is_format_mode_false_for_check ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_is_format_mode_w_short ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_is_format_mode_write ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_parse_format_impl_fixture_is_full ... ok [INFO] [stdout] test cmd::lint::oxlint::tests::test_tier2_fancy_regex ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::lint::oxlint::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::lint::oxlint::tests::test_parse_impl_garbage_passthrough ... ok [INFO] [stdout] test cmd::lint::mypy::tests::test_tier2_mypy_regex ... ok [INFO] [stdout] test cmd::lint::oxlint::tests::test_path_with_spaces ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_prettier_format_empty_is_pass ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_parse_impl_produces_full ... ok [INFO] [stdout] test cmd::lint::oxlint::tests::test_json_severity_mapping ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_tier1_prettier_fail ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_prettier_format_write_output_structured ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_tier1_prettier_pass ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_tier1_prettier_spaces_in_path ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_is_format_mode_false_for_empty ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_is_format_mode_false_for_check ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_tier2_prettier_spaces_in_path ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_is_format_mode_true ... ok [INFO] [stdout] test cmd::lint::prettier::tests::test_tier2_prettier_regex ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_parse_impl_json_produces_full ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_prepare_check_args_injects_check ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_prepare_check_args_no_duplicate_check ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_prepare_format_args_no_duplicate_format ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_prepare_format_args_with_file_arg ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_ruff_format_empty_output_is_pass ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_tier1_ruff_clean ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_tier1_ruff_fail ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_ruff_format_check_fail_structured ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_prepare_format_args_injects_format ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_tier2_ruff_regex ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_parse_format_impl_fail_fixture_is_full ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_is_format_mode_false_when_check_present ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_is_format_mode_true_with_format_flag ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_is_format_mode_bare_args_is_false ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_is_format_mode_true_with_short_flag ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_is_format_mode_with_files_only_is_false ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_rustfmt_format_error_is_passthrough ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_rustfmt_format_empty_output_is_pass ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_tier1_rustfmt_fail ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_parse_format_impl_pass_fixture_is_full ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_tier1_rustfmt_location_includes_file_and_line ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_tier1_rustfmt_pass ... ok [INFO] [stdout] test cmd::lint::ruff::tests::test_ruff_format_pass_structured ... ok [INFO] [stdout] test cmd::lint::tests::test_combine_stdout_stderr_empty_stderr ... ok [INFO] [stdout] test cmd::lint::tests::test_combine_stdout_stderr_both_empty ... ok [INFO] [stdout] test cmd::lint::tests::test_group_issues_empty ... ok [INFO] [stdout] test cmd::log::tests::test_compress_log_json_produces_full ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_parse_impl_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_parse_impl_text_produces_degraded ... ok [INFO] [stdout] test cmd::lint::tests::test_combine_stdout_stderr_with_stderr ... ok [INFO] [stdout] test cmd::lint::tests::test_group_issues_info_severity_not_counted ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_parse_impl_produces_full ... ok [INFO] [stdout] test cmd::lint::rustfmt::tests::test_tier2_rustfmt_regex ... ok [INFO] [stdout] test cmd::log::tests::test_extract_json_level_truncates_large_field ... ok [INFO] [stdout] test cmd::log::tests::test_extract_json_level_variants ... ok [INFO] [stdout] test cmd::log::tests::test_deduplicate_entries_counts_duplicates ... ok [INFO] [stdout] test cmd::log::tests::test_filter_debug_entries_debug_only ... ok [INFO] [stdout] test cmd::log::tests::test_filter_debug_entries_hidden_by_default ... ok [INFO] [stdout] test cmd::log::tests::test_extract_json_message_truncates_large_field ... ok [INFO] [stdout] test cmd::log::tests::test_keep_timestamps_passthrough_preserves_raw ... ok [INFO] [stdout] test cmd::log::tests::test_keep_timestamps_strips_by_default ... ok [INFO] [stdout] test cmd::log::tests::test_debug_hidden_by_default ... ok [INFO] [stdout] test cmd::log::tests::test_compress_log_plaintext_produces_degraded ... ok [INFO] [stdout] test cmd::log::tests::test_debug_only_flag ... ok [INFO] [stdout] test cmd::log::tests::test_log_dedup_preserves_level ... ok [INFO] [stdout] test cmd::log::tests::test_debug_kept_with_keep_debug ... ok [INFO] [stdout] test cmd::log::tests::test_log_python_traceback_recognised ... ok [INFO] [stdout] test cmd::log::tests::test_log_stack_elision_footer ... ok [INFO] [stdout] test cmd::log::tests::test_no_dedup_flag ... ok [INFO] [stdout] test cmd::log::tests::test_parse_flags_all_set ... ok [INFO] [stdout] test cmd::log::tests::test_parse_flags_defaults ... ok [INFO] [stdout] test cmd::log::tests::test_plain_text_without_levels_returns_passthrough ... ok [INFO] [stdout] test cmd::log::tests::test_stack_trace_lines_attached_to_entry ... ok [INFO] [stdout] test cmd::log::tests::test_pending_stack_cap_elides_excess_frames ... ok [INFO] [stdout] test cmd::log::tests::test_tier1_json_structured ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_audit_json_parse ... ok [INFO] [stdout] test cmd::log::tests::test_tier2_plaintext_mixed ... ok [INFO] [stdout] test cmd::log::tests::test_dedup_reduces_entries ... ok [INFO] [stdout] test cmd::log::tests::test_log_stack_elision_keeps_last_3 ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_audit_json_clean ... ok [INFO] [stdout] test cmd::log::tests::test_unknown_flag_warning_does_not_panic ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_audit_json_produces_full ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_audit_regex_missing_id_field ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_audit_regex_no_vulns ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_audit_regex_with_blocks ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::pkg::npm::audit::tests::test_audit_json_clean ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_audit_regex_reordered_fields ... ok [INFO] [stdout] test cmd::pkg::cargo::tests::test_audit_text_produces_degraded ... ok [INFO] [stdout] test cmd::pkg::npm::audit::tests::test_audit_regex_clean ... ok [INFO] [stdout] test cmd::pkg::npm::install::tests::test_install_json_produces_full ... ok [INFO] [stdout] test cmd::pkg::npm::install::tests::test_install_json_parse ... ok [INFO] [stdout] test cmd::pkg::npm::install::tests::test_install_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::pkg::npm::audit::tests::test_audit_regex_vulns ... ok [INFO] [stdout] test cmd::pkg::npm::install::tests::test_install_regex_parse ... ok [INFO] [stdout] test cmd::pkg::npm::ls::tests::test_ls_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::pkg::npm::ls::tests::test_ls_json_produces_full ... ok [INFO] [stdout] test cmd::pkg::npm::ls::tests::test_ls_json_parse ... ok [INFO] [stdout] test cmd::pkg::npm::outdated::tests::test_outdated_json_empty ... ok [INFO] [stdout] test cmd::pkg::npm::outdated::tests::test_outdated_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_check_clean ... ok [INFO] [stdout] test cmd::pkg::npm::outdated::tests::test_outdated_json_parse ... ok [INFO] [stdout] test cmd::pkg::npm::outdated::tests::test_outdated_json_produces_full ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_check_produces_full ... ok [INFO] [stdout] test cmd::pkg::npm::install::tests::test_install_text_produces_degraded ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_check_issues ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_list_json_empty ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_list_json_parse ... ok [INFO] [stdout] test cmd::pkg::pnpm::tests::test_audit_json_parse ... ok [INFO] [stdout] test cmd::pkg::pnpm::tests::test_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_install_already_satisfied ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_install_produces_full ... ok [INFO] [stdout] test cmd::pkg::pip::tests::test_install_regex_parse ... ok [INFO] [stdout] test cmd::pkg::pnpm::tests::test_install_produces_full ... ok [INFO] [stdout] test cmd::pkg::pnpm::tests::test_pnpm_audit_uses_key_as_id ... ok [INFO] [stdout] test cmd::pkg::tests::test_combine_output_empty_stderr ... ok [INFO] [stdout] test cmd::pkg::tests::test_combine_output_with_stderr ... ok [INFO] [stdout] test cmd::pkg::tests::test_sanitize_ascii_passthrough ... ok [INFO] [stdout] test cmd::pkg::tests::test_sanitize_replaces_control_chars ... ok [INFO] [stdout] test cmd::pkg::tests::test_sanitize_strips_escape_sequences ... ok [INFO] [stdout] test cmd::pkg::tests::test_sanitize_truncates_long_input ... ok [INFO] [stdout] test cmd::pkg::pnpm::tests::test_install_regex_parse ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_cargo_fmt_check ... ok [INFO] [stdout] test cmd::pkg::pnpm::tests::test_outdated_json_empty ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_cargo_fmt_check_with_trailing_args ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_cargo_fmt_without_check_not_matched ... ok [INFO] [stdout] test cmd::pkg::pnpm::tests::test_outdated_json_parse ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_empty_tokens ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_cargo_fmt_dashdash_check ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_npx_prettier_check ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_prettier_check ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_prettier_format_not_matched ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_rustfmt_check ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_rustfmt_check_with_file ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_rustfmt_without_check_not_matched ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_shorter_than_pattern ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_single_token ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_unrelated_command ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_worktree_add_not_matched ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_worktree_list ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_worktree_list_with_trailing_args ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_compound_both_rewritten ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_compound_empty_returns_none ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_compound_none_rewritten_returns_none ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_compound_one_rewritten ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_and_and ... ok [INFO] [stdout] test cmd::rewrite::acknowledge::tests::test_is_segment_ack_prettier_check_with_files ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_and_and_no_spaces ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_backtick_bails ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_double_quoted_operators_not_split ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_escaped_double_quotes_not_split ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_heredoc_bails ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_mixed_operators ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_or_or ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_pipe ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_redirect_2_ampersand_1_not_separator ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_semicolon ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_simple ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_single_quoted_operators_not_split ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_subshell_bails ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_unmatched_quote_bails ... ok [INFO] [stdout] test cmd::rewrite::compound::tests::test_split_compound_variable_expansion_bails ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_build_category_for_cargo_build ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cargo_build ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cargo_clippy ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cargo_nextest_run ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cargo_test ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cargo_test_with_trailing_args ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cargo_toolchain_nightly ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cargo_toolchain_with_env_var ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cat_code_file ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cat_no_args ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_cat_non_code_file ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_env_var_with_numbers ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_git_category_for_git_status ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_git_diff ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_git_status ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_git_status_with_porcelain_rewrites ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_lowercase_key_not_env_var ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_no_match_returns_none ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_split_at_separator_found ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_read_category_for_cat ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_split_at_separator_not_found ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_staged_not_eaten_by_stat_prefix ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_strict_match_glued_short_flag_rewrites ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_strict_skip_no_false_prefix_collisions ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_strip_cargo_toolchain_nightly ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_strip_cargo_toolchain_none ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_strip_env_vars_lowercase_not_stripped ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_strip_env_vars_none ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_strip_env_vars_one ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_strip_env_vars_two ... ok [INFO] [stdout] test cmd::rewrite::engine::tests::test_test_category_for_cargo_test ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_is_code_file_no_extension ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_is_code_file_rs ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_is_code_file_ts ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_is_code_file_txt ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_parse_line_count_bare_number ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_parse_line_count_dash_n_no_space ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_parse_line_count_dash_n_space ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_parse_line_count_empty ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_parse_line_count_no_count ... ok [INFO] [stdout] test cmd::rewrite::handlers::tests::test_parse_line_count_no_files ... ok [INFO] [stdout] test cmd::rewrite::hook::tests::test_hook_max_stdin_bytes_constant ... ok [INFO] [stdout] test cmd::rewrite::hook::tests::test_hook_timeout_constant ... ok [INFO] [stdout] test cmd::rewrite::hook::tests::test_parse_agent_flag_absent ... ok [INFO] [stdout] test cmd::rewrite::hook::tests::test_parse_agent_flag_codex ... ok [INFO] [stdout] test cmd::rewrite::hook::tests::test_parse_agent_flag_missing_value ... ok [INFO] [stdout] test cmd::rewrite::hook::tests::test_parse_agent_flag_present ... ok [INFO] [stdout] test cmd::rewrite::hook::tests::test_should_warn_today_no_stamp ... ok [INFO] [stdout] test cmd::rewrite::hook::tests::test_should_warn_today_same_day_stamp ... ok [INFO] [stdout] test cmd::rewrite::rules::tests::test_rule_count_matches_expected ... ok [INFO] [stdout] test cmd::rewrite::suggest::tests::command_has_agent_option ... ok [INFO] [stdout] test cmd::rewrite::suggest::tests::command_has_command_positional ... ok [INFO] [stdout] test cmd::rewrite::suggest::tests::command_has_hook_flag ... ok [INFO] [stdout] test cmd::rewrite::suggest::tests::command_has_suggest_flag ... ok [INFO] [stdout] test cmd::rewrite::suggest::tests::command_name_is_rewrite ... ok [INFO] [stdout] test cmd::rewrite::suggest::tests::suggest_output_serialization_compound ... ok [INFO] [stdout] test cmd::rewrite::suggest::tests::suggest_output_serialization_no_match ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_compound_all_ack ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_already_skim_returns_unhandled ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_compound_mixed_rewritten_ack ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_compound_all_rewritten ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_compound_any_nomatch ... ok [INFO] [stdout] test cmd::rewrite::suggest::tests::suggest_output_serialization_match ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_pipe_first_segment_ack ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_simple_rewritten ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_pipe_first_segment_rewritten ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_simple_already_compact ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_simple_unhandled ... ok [INFO] [stdout] test cmd::rewrite::tests::test_collect_input_tokens_all_whitespace_multi ... ok [INFO] [stdout] test cmd::rewrite::tests::test_collect_input_tokens_consecutive_spaces ... ok [INFO] [stdout] test cmd::rewrite::tests::test_collect_input_tokens_empty_slice_is_none ... ok [INFO] [stdout] test cmd::rewrite::tests::test_collect_input_tokens_empty_string_arg_ignored ... ok [INFO] [stdout] test cmd::rewrite::tests::test_collect_input_tokens_mixed_quoted_and_bare ... ok [INFO] [stdout] test cmd::rewrite::tests::test_collect_input_tokens_single_quoted_equals_multi_arg ... ok [INFO] [stdout] test cmd::rewrite::tests::test_collect_input_tokens_single_word ... ok [INFO] [stdout] test cmd::rewrite::tests::test_collect_input_tokens_tab_as_whitespace ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_double_ampersand ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_double_pipe ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_empty ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_lookahead_at_end ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_pipe ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_pipe_ampersand_combo ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_plain_command ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_semicolon ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_single_ampersand_is_not_compound ... ok [INFO] [stdout] test cmd::rewrite::tests::test_has_compound_operators_single_char_no_op ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_already_skim_returns_none ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_empty_returns_none ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_gh_pr_list_json_rewrites ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_git_diff_stat_rewrites ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_git_log_oneline ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_git_status_with_s ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_jest_rewrites ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_mixed_compound_returns_none ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_non_rewritable_returns_none ... ok [INFO] [stdout] test cmd::session::claude::tests::test_correlate_tool_result ... ok [INFO] [stdout] test cmd::session::claude::tests::test_empty_input ... ok [INFO] [stdout] test cmd::rewrite::tests::test_would_rewrite_npx_jest_rewrites ... ok [INFO] [stdout] test cmd::session::claude::tests::test_parse_tool_input_variants ... ok [INFO] [stdout] test cmd::session::claude::tests::test_multiple_tools_in_one_message ... ok [INFO] [stdout] test cmd::session::claude::tests::test_parse_tool_use_bash ... ok [INFO] [stdout] test cmd::session::claude::tests::test_parse_tool_use_read ... ok [INFO] [stdout] test cmd::session::claude::tests::test_skip_malformed_lines ... ok [INFO] [stdout] test cmd::session::claude::tests::test_tool_input_file_path ... ok [INFO] [stdout] test cmd::session::claude::tests::test_tool_result_is_error ... ok [INFO] [stdout] test cmd::session::claude::tests::test_tool_result_with_array_content ... ok [INFO] [stdout] test cmd::session::codex::tests::test_collect_codex_files_date_structure ... ok [INFO] [stdout] test cmd::session::codex::tests::test_decision_without_id_skips_correlation ... ok [INFO] [stdout] test cmd::session::codex::tests::test_correlate_tool_result ... ok [INFO] [stdout] test cmd::session::codex::tests::test_empty_input ... ok [INFO] [stdout] test cmd::session::codex::tests::test_parse_codex_tool_input_variants ... ok [INFO] [stdout] test cmd::session::codex::tests::test_collect_codex_files_ignores_wrong_depth ... ok [INFO] [stdout] test cmd::session::codex::tests::test_parse_tool_decision_bash ... ok [INFO] [stdout] test cmd::session::codex::tests::test_parse_tool_decision_read ... ok [INFO] [stdout] test cmd::session::codex::tests::test_skip_malformed_lines ... ok [INFO] [stdout] test cmd::session::codex::tests::test_uncorrelated_result_ignored ... ok [INFO] [stdout] test cmd::session::codex::tests::test_tool_result_with_error ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_agent_kind_is_copilot ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_empty_input ... ok [INFO] [stdout] test cmd::rewrite::tests::test_classify_empty_returns_unhandled ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_parse_jsonl_with_yaml_header ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_multiple_tools ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_parse_jsonl_without_yaml_header ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_result_type_error ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_session_id_propagation ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_correlate_tool_result ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_timestamp_propagation ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_tool_input_bash ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_tool_input_edit_file ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_tool_input_read_file ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_tool_input_unknown ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_tool_input_write_file ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_uncorrelated_result_ignored ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_yaml_header_no_closing_delimiter ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_correlate_tool_result ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_empty_conversations ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_env_override_path ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_malformed_arguments_graceful ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_malformed_json_graceful ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_map_edit_file_to_edit ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_map_read_file_to_read ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_map_run_terminal_command_to_bash ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_map_unknown_tool_to_other ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_map_write_file_to_write ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_message_without_tool_calls ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_missing_composer_data ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_multiple_conversations ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_multiple_tool_calls_in_message ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_non_function_tool_calls_skipped ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_parse_cursor_json_value ... ok [INFO] [stdout] test cmd::session::cursor::tests::test_platform_path_detection ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_agent_kind_is_gemini ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_correlate_tool_result ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_detect_format_by_first_char ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_empty_input ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_multiple_tools ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_parse_json_array_format ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_parse_jsonl_format ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_skip_malformed_lines ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_tool_name_mapping ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_skip_malformed_lines ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_uncorrelated_result_ignored ... ok [INFO] [stdout] test cmd::session::gemini::tests::test_tool_result_with_error ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_correlate_tool_results_by_id ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_empty_conversations ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_env_override_path ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_malformed_tool_calls_graceful ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_map_bash_tool ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_map_edit_file_tool ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_map_glob_and_grep_tools ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_map_read_file_tool ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_map_unknown_tool ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_map_write_file_tool ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_multiple_tool_calls_in_one_message ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_parse_iso_timestamp_invalid ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_parse_iso_timestamp_valid ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_parse_iso_timestamp_with_millis ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_parse_messages_with_tool_calls ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_parse_tool_calls_arguments_as_object ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_parse_tool_calls_json_empty_array ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_parse_tool_calls_json_multiple ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_session_id_propagated ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_tool_result_without_matching_call ... ok [INFO] [stdout] test cmd::session::copilot::tests::test_skip_yaml_header ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_user_messages_ignored ... ok [INFO] [stdout] test cmd::session::tests::test_dedup_different_commands_same_timestamp ... ok [INFO] [stdout] test cmd::session::tests::test_dedup_empty_list ... ok [INFO] [stdout] test cmd::session::tests::test_dedup_same_command_different_timestamp ... ok [INFO] [stdout] test cmd::session::tests::test_dedup_same_command_same_timestamp ... ok [INFO] [stdout] test cmd::session::tests::test_tool_input_key_variants ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_all_supported ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_cli_name ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_config_dir_simple_agents ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_detect_dir ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_display ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_display_name ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_dot_dir_name ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_from_str_claude_code ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_from_str_codex ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_from_str_copilot ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_from_str_cursor ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_from_str_gemini ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_from_str_opencode ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_from_str_unknown ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_parse_cli_arg_unknown ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_parse_cli_arg_valid ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_project_dir ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_config_dir_cursor_linux_fallback ... ok [INFO] [stdout] test cmd::session::opencode::tests::test_walk_up_from_cwd ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_roundtrip ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_rules_filename ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_claude_code_env_override ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_claude_code_global ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_claude_code_project ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_codex_env_override ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_codex_global ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_codex_project ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_copilot_global ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_copilot_project ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_cursor_global_unsupported ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_cursor_project ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_gemini_global ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_gemini_project ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_opencode_env_override ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_opencode_global ... ok [INFO] [stdout] test cmd::session::types::tests::test_instruction_file_opencode_project ... ok [INFO] [stdout] test cmd::stats::tests::test_color_pct_clamping ... ok [INFO] [stdout] test cmd::stats::tests::test_by_category_includes_duration ... ok [INFO] [stdout] test cmd::stats::tests::test_command_label ... ok [INFO] [stdout] test cmd::stats::tests::test_dashboard_column_headers ... ok [INFO] [stdout] test cmd::stats::tests::test_dashboard_multi_tier_cost ... ok [INFO] [stdout] test cmd::stats::tests::test_dashboard_shows_by_command_section ... ok [INFO] [stdout] test cmd::stats::tests::test_format_duration_ms_seconds ... ok [INFO] [stdout] test cmd::stats::tests::test_dashboard_shows_command_labels ... ok [INFO] [stdout] test cmd::stats::tests::test_format_tokens ... ok [INFO] [stdout] test cmd::stats::tests::test_non_verbose_hides_parse_quality ... ok [INFO] [stdout] test cmd::stats::tests::test_parse_value_flag_bare ... ok [INFO] [stdout] test cmd::stats::tests::test_parse_value_flag_equals ... ok [INFO] [stdout] test cmd::stats::tests::test_parse_value_flag_missing ... ok [INFO] [stdout] test cmd::stats::tests::test_render_bar_clamps_negative ... ok [INFO] [stdout] test cmd::stats::tests::test_render_bar_clamps_over_100 ... ok [INFO] [stdout] test cmd::stats::tests::test_render_bar_full_pct ... ok [INFO] [stdout] test cmd::stats::tests::test_render_bar_half_pct ... ok [INFO] [stdout] test cmd::stats::tests::test_format_duration_ms_sub_second ... ok [INFO] [stdout] test cmd::stats::tests::test_render_bar_zero_width ... ok [INFO] [stdout] test cmd::stats::tests::test_render_bar_zero_pct ... ok [INFO] [stdout] test cmd::session::codex::tests::test_multiple_tools_in_session ... ok [INFO] [stdout] test cmd::session::types::tests::test_agent_kind_rules_dir ... ok [INFO] [stdout] test cmd::stats::tests::test_render_by_original_cmd_empty ... ok [INFO] [stdout] test cmd::stats::tests::test_render_by_original_cmd_truncation ... ok [INFO] [stdout] test cmd::stats::tests::test_run_dashboard_empty_store ... ok [INFO] [stdout] test cmd::stats::tests::test_run_dashboard_with_data ... ok [INFO] [stdout] test cmd::stats::tests::test_run_dashboard_with_since_label ... ok [INFO] [stdout] test cmd::stats::tests::test_run_json_cost_tier_value ... ok [INFO] [stdout] test cmd::stats::tests::test_run_json_empty_store ... ok [INFO] [stdout] test cmd::stats::tests::test_run_json_tier_distribution_values ... ok [INFO] [stdout] test cmd::stats::tests::test_run_clear_mock ... ok [INFO] [stdout] test cmd::stats::tests::test_section_header_total_width ... ok [INFO] [stdout] test cmd::stats::tests::test_run_dashboard_always_shows_cost ... ok [INFO] [stdout] test cmd::stats::tests::test_run_json_with_cost ... ok [INFO] [stdout] test cmd::stats::tests::test_run_json_with_data ... ok [INFO] [stdout] test cmd::stats::tests::test_truncate_cmd_display_max_three ... ok [INFO] [stdout] test cmd::stats::tests::test_truncate_cmd_display_max_two ... ok [INFO] [stdout] test cmd::stats::tests::test_truncate_cmd_display_max_zero ... ok [INFO] [stdout] test cmd::stats::tests::test_truncate_cmd_display_multibyte ... ok [INFO] [stdout] test cmd::stats::tests::test_truncate_cmd_display_short ... ok [INFO] [stdout] test cmd::stats::tests::test_verbose_shows_parse_quality ... ok [INFO] [stdout] test cmd::stats::tests::test_weighted_savings_pct_zero_raw_tokens ... ok [INFO] [stdout] test cmd::stats::tests::test_weighted_savings_pct_calculation ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_flag_injection_not_triggered_for_different_flag ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_flag_injection_skipped ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_inject_flag_no_separator ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_parse_json_produces_full ... ok [INFO] [stdout] test cmd::stats::tests::test_truncate_cmd_display_exact_max ... ok [INFO] [stdout] test cmd::stats::tests::test_truncate_cmd_display_long ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_parse_garbage_produces_passthrough ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_separator_args_preserved ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_tier1_all_pass ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_tier1_with_failures ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_parse_plain_text_produces_degraded ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_tier2_regex_fallback ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_tier1_nextest_pass ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_tier1_nextest_dedup ... ok [INFO] [stdout] test cmd::test::go::tests::test_empty_input ... ok [INFO] [stdout] test cmd::test::go::tests::test_flag_injection_skipped_with_json ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_tier2_regression_tier1_json_still_populates_entries ... ok [INFO] [stdout] test cmd::test::go::tests::test_flag_injection_skipped_with_v ... ok [INFO] [stdout] test cmd::test::go::tests::test_ndjson_malformed_lines_skipped ... ok [INFO] [stdout] test cmd::test::go::tests::test_ndjson_with_only_package_events ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_tier2_regex_scrapes_failing_test_names ... ok [INFO] [stdout] test cmd::test::go::tests::test_separator_flag_injection ... ok [INFO] [stdout] test cmd::test::go::tests::test_tier1_all_pass ... ok [INFO] [stdout] test cmd::test::go::tests::test_tier1_multi_package ... ok [INFO] [stdout] test cmd::test::go::tests::test_ndjson_skip_action ... ok [INFO] [stdout] test cmd::test::go::tests::test_tier1_with_failures ... ok [INFO] [stdout] test cmd::test::cargo::tests::test_tier2_regex_with_failures ... ok [INFO] [stdout] test cmd::test::go::tests::test_regex_with_skip_outcome ... ok [INFO] [stdout] test cmd::test::go::tests::test_user_has_flag_no_match ... ok [INFO] [stdout] test cmd::test::go::tests::test_user_has_flag_with_equals ... ok [INFO] [stdout] test cmd::test::go::tests::test_v_equals_false_still_injects_json ... ok [INFO] [stdout] test cmd::test::go::tests::test_v_equals_true_skips_json_injection ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_flag_injection_default ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_flag_injection_skipped_with_quiet ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_flag_injection_skipped_with_tb ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_flag_injection_skipped_with_verbose ... ok [INFO] [stdout] test cmd::test::go::tests::test_tier2_regex_fallback ... ok [INFO] [stdout] test cmd::test::go::tests::test_tier3_passthrough ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_passthrough ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_summary_duration_extraction ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_summary_failed_and_error_no_passed ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_summary_no_match_on_garbage ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_summary_all_groups ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_summary_line_extracts_duration ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_summary_passed_only ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_summary_failed_only_no_passed ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_summary_quiet_mode_no_equals ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_tier1_extracts_duration ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_tier1_mixed ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_tier1_with_failures ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_user_has_flag_exact_match ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_user_has_flag_not_present ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_user_has_flag_with_equals ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_tier1_all_failures ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_tier1_all_pass ... ok [INFO] [stdout] test cmd::test::pytest::tests::test_tier1_deduplicates_entries ... ok [INFO] [stdout] test cmd::test::shared::tests::test_scrape_failures_cap_at_100 ... ok [INFO] [stdout] test cmd::test::shared::tests::test_scrape_failures_ansi_stripped ... ok [INFO] [stdout] test cmd::test::shared::tests::test_scrape_failures_cargo_basic ... ok [INFO] [stdout] test cmd::test::shared::tests::test_scrape_failures_go_basic ... ok [INFO] [stdout] test cmd::test::shared::tests::test_scrape_failures_no_matches_returns_empty ... ok [INFO] [stdout] test cmd::test::shared::tests::test_scrape_failures_vitest_basic ... ok [INFO] [stdout] test cmd::test::shared::tests::test_scrape_failures_vitest_indented_failure_line ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_brace_balance_nested_objects ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_brace_balance_deeply_nested ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_brace_balance_escaped_quotes_in_string ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_brace_balance_no_json ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_brace_balance_prefix_balanced_non_json ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_brace_balance_string_with_braces ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_brace_balance_prefix_noise_with_unbalanced_brace ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_brace_balance_unclosed_brace ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_flag_injection_needed_when_no_reporter ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_flag_injection_skipped_bare_flag ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier1_ansi_encoded_json ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier1_clean_json ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier1_pnpm_prefix_noise ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier1_with_failures ... ok [INFO] [stdout] test cmd::test::shared::tests::test_scrape_failures_pytest_basic ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier2_regex_fallback_pipe_format ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier2_regex_scrapes_failing_test_names_from_fixture ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier2_regex_within_larger_output ... ok [INFO] [stdout] test cmd::tests::test_extract_json_flag_absent ... ok [INFO] [stdout] test cmd::tests::test_extract_json_flag_present ... ok [INFO] [stdout] test cmd::tests::test_sanitize_for_display_clean_input ... ok [INFO] [stdout] test cmd::tests::test_sanitize_for_display_rejects_non_ascii ... ok [INFO] [stdout] test cmd::tests::test_sanitize_for_display_truncates_at_64 ... ok [INFO] [stdout] test debug::tests::test_force_enable_debug ... ok [INFO] [stdout] test debug::tests::test_reset_clears_flag ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_brace_expansion ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_bracket ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_doublestar_start ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_multi_segment_prefix ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_no_glob_chars_defensive ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_no_prefix ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_question_mark ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_single_dir_star ... ok [INFO] [stdout] test multi::tests::test_glob_walk_root_with_prefix ... ok [INFO] [stdout] test multi::tests::test_has_glob_pattern ... ok [INFO] [stdout] test multi::tests::test_validate_glob_pattern_accepts_tilde_prefix ... ok [INFO] [stdout] test multi::tests::test_validate_glob_pattern_accepts_valid_relative_patterns ... ok [INFO] [stdout] test multi::tests::test_validate_glob_pattern_rejects_absolute_path_with_glob ... ok [INFO] [stdout] test multi::tests::test_validate_glob_pattern_rejects_absolute_unix_paths ... ok [INFO] [stdout] test multi::tests::test_validate_glob_pattern_rejects_embedded_parent_traversal ... ok [INFO] [stdout] test multi::tests::test_validate_glob_pattern_rejects_parent_traversal ... ok [INFO] [stdout] test multi::tests::test_validate_glob_pattern_rejects_windows_drive_paths ... ok [INFO] [stdout] test multi::tests::test_validate_glob_pattern_rejects_windows_unc_paths ... ok [INFO] [stdout] test output::canonical::tests::test_build_result_display_failure ... ok [INFO] [stdout] test output::canonical::tests::test_build_result_display_success ... ok [INFO] [stdout] test output::canonical::tests::test_build_result_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_diff_result_ensure_rendered_produces_summary_fallback ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier3_passthrough ... ok [INFO] [stdout] test output::canonical::tests::test_ensure_rendered_recomputes_when_empty ... ok [INFO] [stdout] test output::canonical::tests::test_file_result_display_basic ... ok [INFO] [stdout] test output::canonical::tests::test_file_result_empty_entries ... ok [INFO] [stdout] test output::canonical::tests::test_file_result_display_with_footer ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_tier2_regex_fallback_comma_format ... ok [INFO] [stdout] test output::canonical::tests::test_file_result_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_file_result_ensure_rendered ... ok [INFO] [stdout] test output::canonical::tests::test_git_result_display ... ok [INFO] [stdout] test output::canonical::tests::test_git_result_parse_tier_defaults_to_none ... ok [INFO] [stdout] test cmd::test::vitest::tests::test_flag_injection_skipped_when_reporter_present ... ok [INFO] [stdout] test output::canonical::tests::test_git_result_with_tier_sets_tier ... ok [INFO] [stdout] test output::canonical::tests::test_infra_result_display ... ok [INFO] [stdout] test output::canonical::tests::test_format_with_commas ... ok [INFO] [stdout] test output::canonical::tests::test_git_result_parse_tier_skipped_in_json ... ok [INFO] [stdout] test output::canonical::tests::test_git_result_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_infra_result_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_lint_result_check_mode_unaffected ... ok [INFO] [stdout] test output::canonical::tests::test_lint_result_display_clean ... ok [INFO] [stdout] test output::canonical::tests::test_lint_result_display_with_issues ... ok [INFO] [stdout] test output::canonical::tests::test_lint_result_ensure_rendered_recomputes_when_empty ... ok [INFO] [stdout] test output::canonical::tests::test_lint_result_formatted_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_lint_result_formatted_zero_files ... ok [INFO] [stdout] test output::canonical::tests::test_infra_result_ensure_rendered_recomputes_when_empty ... ok [INFO] [stdout] test output::canonical::tests::test_log_result_display_debug_hidden ... ok [INFO] [stdout] test output::canonical::tests::test_lint_result_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_lint_severity_display ... ok [INFO] [stdout] test output::canonical::tests::test_lint_result_formatted_multiple_files ... ok [INFO] [stdout] test output::canonical::tests::test_log_result_display_debug_only ... ok [INFO] [stdout] test output::canonical::tests::test_log_result_display_default ... ok [INFO] [stdout] test output::canonical::tests::test_outcome_display ... ok [INFO] [stdout] test output::canonical::tests::test_log_result_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_pkg_audit_display ... ok [INFO] [stdout] test output::canonical::tests::test_pkg_check_display ... ok [INFO] [stdout] test output::canonical::tests::test_pkg_ensure_rendered_recomputes_when_empty ... ok [INFO] [stdout] test output::canonical::tests::test_pkg_install_display ... ok [INFO] [stdout] test output::canonical::tests::test_pkg_list_display ... ok [INFO] [stdout] test output::canonical::tests::test_pkg_outdated_display ... ok [INFO] [stdout] test output::canonical::tests::test_pkg_result_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_result_display_all_passing ... ok [INFO] [stdout] test output::canonical::tests::test_result_display_with_failures ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_body_in_render ... ok [INFO] [stdout] test output::canonical::tests::test_result_serde_roundtrip ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_date_is_json_only ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_display_basic ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_empty_body_no_trailing_newlines ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_ensure_rendered_empty_diff ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_ensure_rendered_recomputes_when_empty ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_files_changed_field ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_parents_before_summary ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_parents_in_render ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_serialize_deserialize ... ok [INFO] [stdout] test output::canonical::tests::test_show_commit_result_short_hash ... ok [INFO] [stdout] test output::canonical::tests::test_summary_display_with_duration ... ok [INFO] [stdout] test output::canonical::tests::test_summary_display_without_duration ... ok [INFO] [stdout] test output::guardrail::tests::test_empty_inputs ... ok [INFO] [stdout] test output::guardrail::tests::test_pass_when_compressed_equal_length ... ok [INFO] [stdout] test output::guardrail::tests::test_pass_when_compressed_shorter ... ok [INFO] [stdout] test output::guardrail::tests::test_skip_for_tiny_files ... ok [INFO] [stdout] test output::guardrail::tests::test_tiny_file_skips_guardrail_even_when_compressed_larger ... ok [INFO] [stdout] test output::canonical::tests::test_log_result_ensure_rendered ... ok [INFO] [stdout] test output::tee::tests::test_emit_tee_hint_format ... ok [INFO] [stdout] test output::tee::tests::test_rotate_tee_files_noop_when_under_limit ... ok [INFO] [stdout] test output::canonical::tests::test_log_result_no_level_entry ... ok [INFO] [stdout] test output::tee::tests::test_save_tee_below_min_length ... ok [INFO] [stdout] test output::tee::tests::test_rotate_tee_files_removes_oldest ... ok [INFO] [stdout] test output::tee::tests::test_save_tee_creates_file ... ok [INFO] [stdout] test output::tee::tests::test_save_tee_truncates_large_output ... ok [INFO] [stdout] test output::tee::tests::test_tee_on_failure_saves_on_nonzero ... ok [INFO] [stdout] test output::tee::tests::test_tee_on_failure_skips_none ... ok [INFO] [stdout] test output::tests::test_clean_8bit_color_codes ... ok [INFO] [stdout] test output::tee::tests::test_tee_on_failure_skips_success ... ok [INFO] [stdout] test output::tests::test_clean_empty_input ... ok [INFO] [stdout] test output::tests::test_clean_unicode_with_ansi ... ok [INFO] [stdout] test output::tests::test_clean_full_pipeline ... ok [INFO] [stdout] test output::tests::test_clean_with_mode_verbose ... ok [INFO] [stdout] test output::tests::test_collapse_handles_windows_line_endings ... ok [INFO] [stdout] test output::guardrail::tests::test_triggered_when_compressed_larger_bytes_and_tokens ... ok [INFO] [stdout] test output::tests::test_clean_with_mode_compact ... ok [INFO] [stdout] test output::tests::test_collapse_only_cr_no_newline ... ok [INFO] [stdout] test output::tests::test_collapse_progress_multiline_mixed ... ok [INFO] [stdout] test output::tests::test_collapse_reversed_line_ending ... ok [INFO] [stdout] test output::tests::test_collapse_mixed_cr_crlf ... ok [INFO] [stdout] test output::tests::test_collapse_progress_single_cr_line ... ok [INFO] [stdout] test output::tests::test_content_accessor ... ok [INFO] [stdout] test output::tests::test_deduplicate_preserves_blank_lines ... ok [INFO] [stdout] test output::tests::test_collapse_trailing_cr ... ok [INFO] [stdout] test output::tests::test_deduplicate_preserves_non_consecutive ... ok [INFO] [stdout] test output::tests::test_deduplicate_consecutive_identical ... ok [INFO] [stdout] test output::tests::test_deduplicate_trailing_whitespace_differs ... ok [INFO] [stdout] test output::tests::test_degraded_is_degraded ... ok [INFO] [stdout] test output::tests::test_emit_markers_degraded_writes_warnings ... ok [INFO] [stdout] test output::tests::test_emit_markers_passthrough_writes_notice ... ok [INFO] [stdout] test output::tests::test_emit_markers_passthrough_silent_without_debug ... ok [INFO] [stdout] test output::tests::test_from_exit_code_nonzero_is_verbose ... ok [INFO] [stdout] test output::tests::test_from_exit_code_zero_is_compact ... ok [INFO] [stdout] test output::tests::test_emit_markers_degraded_silent_without_debug ... ok [INFO] [stdout] test output::tests::test_from_optional_some_nonzero_is_verbose ... ok [INFO] [stdout] test output::tests::test_from_optional_some_zero_is_compact ... ok [INFO] [stdout] test output::tests::test_from_optional_none_is_verbose ... ok [INFO] [stdout] test output::tests::test_full_is_full ... ok [INFO] [stdout] test output::tests::test_header_format ... ok [INFO] [stdout] test output::tests::test_header_large_token_no_overflow ... ok [INFO] [stdout] test output::tests::test_header_output_exceeds_input_no_underflow ... ok [INFO] [stdout] test output::tests::test_emit_markers_full_is_noop ... ok [INFO] [stdout] test output::tests::test_from_exit_code_negative_is_verbose ... ok [INFO] [stdout] test output::tests::test_header_uses_format_number ... ok [INFO] [stdout] test output::tests::test_header_zero_input_tokens ... ok [INFO] [stdout] test output::tests::test_into_content ... ok [INFO] [stdout] test output::tests::test_strip_ansi_handles_only_escape_codes ... ok [INFO] [stdout] test output::tests::test_strip_ansi_preserves_plain_text ... ok [INFO] [stdout] test output::tests::test_strip_ansi_removes_color_codes ... ok [INFO] [stdout] test output::tests::test_tier_names ... ok [INFO] [stdout] test output::tests::test_to_json_envelope_degraded_has_envelope ... ok [INFO] [stdout] test output::tests::test_to_json_envelope_full_no_wrapper ... ok [INFO] [stdout] test output::tests::test_to_json_envelope_passthrough_has_envelope ... ok [INFO] [stdout] test output::tests::test_passthrough_is_passthrough ... ok [INFO] [stdout] test output::tests::test_truncate_budget_one_token ... ok [INFO] [stdout] test output::tests::test_truncate_content_exactly_at_budget ... ok [INFO] [stdout] test output::tests::test_truncate_empty_input ... ok [INFO] [stdout] test cmd::pkg::npm::audit::tests::test_audit_json_parse ... ok [INFO] [stdout] test output::tests::test_truncate_only_blank_lines ... ok [INFO] [stdout] test output::tests::test_truncate_mixed_newline_styles ... ok [INFO] [stdout] test output::tests::test_truncate_within_budget ... ok [INFO] [stdout] test output::tests::test_truncate_zero_budget_non_empty ... ok [INFO] [stdout] test process::tests::count_token_pair_original_equals_transformed_for_identical_input ... ok [INFO] [stdout] test process::tests::count_token_pair_returns_some_for_empty_strings ... ok [INFO] [stdout] test process::tests::count_token_pair_returns_some_for_valid_input ... ok [INFO] [stdout] test process::tests::read_and_validate_rejects_nonexistent_file ... ok [INFO] [stdout] test process::tests::report_token_stats_does_not_panic_with_none_values ... ok [INFO] [stdout] test output::tests::test_truncate_appends_marker ... ok [INFO] [stdout] test process::tests::test_parse_tier_degraded ... ok [INFO] [stdout] test process::tests::test_parse_tier_full ... ok [INFO] [stdout] test process::tests::test_parse_tier_passthrough ... ok [INFO] [stdout] test runner::tests::dispatch_overhead_under_15ms ... ok [INFO] [stdout] test runner::tests::read_pipe_accepts_output_under_limit ... ok [INFO] [stdout] test process::tests::report_token_stats_does_not_panic_with_valid_values ... ok [INFO] [stdout] test cmd::pkg::npm::audit::tests::test_npm_audit_fallback_to_source_number ... ok [INFO] [stdout] test cmd::pkg::npm::audit::tests::test_npm_audit_extracts_ghsa_from_url ... ok [INFO] [stdout] test output::tests::test_truncate_unicode_char_boundaries ... ok [INFO] [stdout] test output::tests::test_truncate_single_long_line ... ok [INFO] [stdout] test runner::tests::run_args_with_literal_backslash_n ... ok [INFO] [stdout] test runner::tests::run_binary_output_is_lossy ... ok [INFO] [stdout] test runner::tests::run_captures_stderr ... ok [INFO] [stdout] test runner::tests::run_completes_within_timeout ... ok [INFO] [stdout] test runner::tests::run_empty_program_name_errors ... ok [INFO] [stdout] test runner::tests::run_echo_captures_stdout ... ok [INFO] [stdout] test runner::tests::run_does_not_interpret_shell_metacharacters ... ok [INFO] [stdout] test output::tests::test_truncate_over_budget_reduces ... ok [INFO] [stdout] test runner::tests::run_handles_empty_output ... ok [INFO] [stdout] test runner::tests::run_handles_large_stdout_without_deadlock ... ok [INFO] [stdout] test runner::tests::run_preserves_nonzero_exit_code ... ok [INFO] [stdout] test runner::tests::run_returns_error_for_nonexistent_program ... ok [INFO] [stdout] test runner::tests::run_preserves_zero_exit_code ... ok [INFO] [stdout] test runner::tests::run_timeout_zero_kills_immediately ... ok [INFO] [stdout] test runner::tests::run_tracks_duration ... ok [INFO] [stdout] test tests::test_flag_value_matching_subcommand_is_consumed ... ok [INFO] [stdout] test tests::test_is_flag_with_value_covers_all_value_flags ... ok [INFO] [stdout] test tests::test_is_flag_with_value_rejects_boolean_flags ... ok [INFO] [stdout] test tests::test_validate_bounded_arg_at_max_passes ... ok [INFO] [stdout] test tests::test_validate_bounded_arg_none_passes ... ok [INFO] [stdout] test tests::test_validate_bounded_arg_over_max ... ok [INFO] [stdout] test tests::test_validate_bounded_arg_valid_value_passes ... ok [INFO] [stdout] test tests::test_validate_bounded_arg_zero_with_hint ... ok [INFO] [stdout] test tests::test_validate_bounded_arg_zero_without_hint ... ok [INFO] [stdout] test tokens::tests::test_count_tokens ... ok [INFO] [stdout] test tokens::tests::test_format_number ... ok [INFO] [stdout] test tokens::tests::test_stats_format ... ok [INFO] [stdout] test tokens::tests::test_token_stats ... ok [INFO] [stdout] test runner::tests::run_stderr_with_zero_exit ... ok [INFO] [stdout] test runner::tests::run_kills_on_timeout ... ok [INFO] [stdout] test runner::tests::run_handles_concurrent_stdout_stderr ... ok [INFO] [stdout] test cmd::infra::gh::issue_view::tests::test_oversized_json_does_not_parse_as_full ... ok [INFO] [stdout] test runner::tests::read_pipe_one_byte_over_limit_fails ... ok [INFO] [stdout] test runner::tests::read_pipe_enforces_max_output_limit ... ok [INFO] [stdout] test runner::tests::read_pipe_at_exact_limit_succeeds ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1463 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.93s [INFO] [stdout] [INFO] [stderr] Running tests/cli.rs (/opt/rustwide/target/debug/deps/cli-036452cc1a7bb7b8) [INFO] [stdout] [INFO] [stdout] running 45 tests [INFO] [stdout] test test_cli_filename_detects_go ... ok [INFO] [stdout] test test_cli_auto_detect_python ... ok [INFO] [stdout] test test_cli_explicit_language_override ... ok [INFO] [stdout] test test_cli_filename_detects_java ... ok [INFO] [stdout] test test_cli_auto_detect_rust ... ok [INFO] [stdout] test test_cli_filename_detects_python ... ok [INFO] [stdout] test test_cli_empty_file ... ok [INFO] [stdout] test test_cli_auto_detect_typescript ... ok [INFO] [stdout] test test_cli_filename_detects_typescript ... ok [INFO] [stdout] test test_cli_filename_detects_rust ... ok [INFO] [stdout] test test_cli_filename_not_stdin_fails ... ok [INFO] [stdout] test test_cli_filename_no_extension_fails ... ok [INFO] [stdout] test test_cli_filename_unknown_ext_fails ... ok [INFO] [stdout] test test_cli_filename_with_path_prefix ... ok [INFO] [stdout] test test_cli_filename_language_override ... ok [INFO] [stdout] test test_cli_filename_rust_signatures ... ok [INFO] [stdout] test test_cli_help ... ok [INFO] [stdout] test test_cli_full_mode ... ok [INFO] [stdout] test test_cli_filename_with_mode ... ok [INFO] [stdout] test test_cli_invalid_mode ... ok [INFO] [stdout] test test_cli_malformed_syntax ... ok [INFO] [stdout] test test_cli_minimal_mode_help_text ... ok [INFO] [stdout] test test_cli_lang_and_language_equivalent ... ok [INFO] [stdout] test test_cli_minimal_mode ... ok [INFO] [stdout] test test_cli_pseudo_mode ... ok [INFO] [stdout] test test_cli_minimal_mode_stdin ... ok [INFO] [stdout] test test_cli_pseudo_mode_python ... ok [INFO] [stdout] test test_cli_pseudo_mode_rust ... ok [INFO] [stdout] test test_cli_pseudo_mode_stdin ... ok [INFO] [stdout] test test_cli_filename_detects_json ... ok [INFO] [stdout] test test_cli_signatures_mode ... ok [INFO] [stdout] test test_cli_lang_alias_with_file ... ok [INFO] [stdout] test test_cli_stdin_with_language ... ok [INFO] [stdout] test test_cli_minimal_mode_python_shebang ... ok [INFO] [stdout] test test_cli_nonexistent_file ... ok [INFO] [stdout] test test_cli_stdin_without_language_fails ... ok [INFO] [stdout] test test_cli_all_languages_structure ... ok [INFO] [stdout] test test_cli_structure_mode ... ok [INFO] [stdout] test test_cli_unicode_content ... ok [INFO] [stdout] test test_cli_types_mode ... ok [INFO] [stdout] test test_cli_lang_alias_stdin ... ok [INFO] [stdout] test test_cli_unsupported_extension ... ok [INFO] [stdout] test test_cli_version ... ok [INFO] [stdout] test test_cli_stdin_large_input_completes_within_time_bound ... ok [INFO] [stderr] Running tests/cli_agents.rs (/opt/rustwide/target/debug/deps/cli_agents-c651e2e19d85b347) [INFO] [stdout] test test_cli_stdin_large_input_streaming ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 13 tests [INFO] [stdout] test test_agents_json_detects_claude_code_with_fixture ... ok [INFO] [stdout] test test_agents_opencode_shows_typescript_plugin_note ... ok [INFO] [stdout] test test_agents_claude_detected_with_session_count ... ok [INFO] [stdout] test test_agents_help ... ok [INFO] [stdout] test test_agents_lists_all_supported ... ok [INFO] [stdout] test test_agents_runs_without_crash ... ok [INFO] [stdout] test test_agents_json_has_expected_count ... ok [INFO] [stdout] test test_agents_no_agents_all_not_detected ... ok [INFO] [stdout] test test_agents_detects_claude_code_with_fixture ... ok [INFO] [stdout] test test_agents_text_output_shows_all_names ... ok [INFO] [stdout] test test_agents_json_output_valid_json ... ok [INFO] [stdout] test test_agents_text_not_detected_without_fixtures ... ok [INFO] [stdout] test test_agents_short_help ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [INFO] [stdout] [INFO] [stderr] Running tests/cli_build.rs (/opt/rustwide/target/debug/deps/cli_build-7a5a1cec9d2e4d2c) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test test_skim_build_unknown_tool_shows_error ... ok [INFO] [stdout] test test_skim_build_no_tool_shows_error ... ok [INFO] [stdout] test test_skim_build_short_help ... ok [INFO] [stdout] test test_skim_build_help ... ok [INFO] [stdout] test test_skim_build_cargo_in_repo ... ok [INFO] [stdout] test test_skim_build_cargo_stub_dispatches ... ok [INFO] [stderr] Running tests/cli_cache.rs (/opt/rustwide/target/debug/deps/cli_cache-772c0d092b4ac055) [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.98s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test test_cache_with_explicit_language ... ok [INFO] [stdout] test test_cache_different_modes ... ok [INFO] [stdout] test test_no_cache_flag ... ok [INFO] [stdout] test test_clear_cache_command ... ok [INFO] [stdout] test test_cache_basic_reuse ... ok [INFO] [stdout] test test_cache_with_glob_patterns ... ok [INFO] [stdout] test test_cache_invalidation_on_file_modification ... ok [INFO] [stdout] test test_cache_stats_computed_on_hit_when_missing ... ok [INFO] [stdout] test test_cache_stores_token_counts ... ok [INFO] [stdout] test test_no_cache_with_show_stats ... ok [INFO] [stderr] Running tests/cli_completions.rs (/opt/rustwide/target/debug/deps/cli_completions-f6adedd3bb4eea3f) [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.61s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 18 tests [INFO] [stdout] test test_completions_include_file_subcommands ... ok [INFO] [stdout] test test_completions_fish_outputs_valid_script ... ok [INFO] [stdout] test test_completions_include_infra_subcommands ... ok [INFO] [stdout] test test_completions_include_language_values ... ok [INFO] [stdout] test test_completions_bash_syntax_valid ... ok [INFO] [stdout] test test_completions_include_subcommand_names ... ok [INFO] [stdout] test test_completions_invalid_shell_errors ... ok [INFO] [stdout] test test_completions_missing_shell_errors ... ok [INFO] [stdout] test test_completions_include_log_flags ... ok [INFO] [stdout] test test_completions_include_mode_values ... ok [INFO] [stdout] test test_completions_subcommand_always_routes_to_subcommand ... ok [INFO] [stdout] test test_completions_zsh_outputs_valid_script ... ok [INFO] [stdout] test test_completions_elvish_outputs_valid_script ... ok [INFO] [stdout] test test_completions_case_sensitive_rejects_uppercase ... ok [INFO] [stdout] test test_completions_help ... ok [INFO] [stdout] test test_completions_bash_outputs_valid_script ... ok [INFO] [stdout] test test_completions_extra_args_ignored ... ok [INFO] [stdout] test test_completions_powershell_outputs_valid_script ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s [INFO] [stdout] [INFO] [stderr] Running tests/cli_diff.rs (/opt/rustwide/target/debug/deps/cli_diff-8294d4faf8a19eed) [INFO] [stdout] [INFO] [stdout] running 15 tests [INFO] [stdout] test test_diff_multiple_files ... ok [INFO] [stdout] test test_diff_check_passthrough ... ok [INFO] [stdout] test test_diff_new_file_unstaged ... ok [INFO] [stdout] test test_diff_name_only_passthrough ... ok [INFO] [stdout] test test_diff_name_status_passthrough ... ok [INFO] [stdout] test test_diff_json_output ... ok [INFO] [stdout] test test_diff_mode_structure ... ok [INFO] [stdout] test test_diff_mode_full ... ok [INFO] [stdout] test test_diff_rust_file ... ok [INFO] [stdout] test test_diff_no_changes ... ok [INFO] [stdout] test test_diff_show_stats ... ok [INFO] [stdout] test test_diff_staged ... ok [INFO] [stdout] test test_diff_stat_passthrough ... ok [INFO] [stdout] test test_diff_unsupported_language_falls_back_to_raw ... ok [INFO] [stdout] test test_diff_working_tree_typescript ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.73s [INFO] [stdout] [INFO] [stderr] Running tests/cli_directory.rs (/opt/rustwide/target/debug/deps/cli_directory-f92c7e9c4e73c9c9) [INFO] [stdout] [INFO] [stdout] running 21 tests [INFO] [stdout] test test_directory_no_ignore_hint_in_error ... ok [INFO] [stdout] test test_directory_language_override_ignored ... ok [INFO] [stdout] test test_directory_nested_gitignore ... ok [INFO] [stdout] test test_directory_no_ignore_shows_hidden_files ... ok [INFO] [stdout] test test_directory_only_unsupported_files ... ok [INFO] [stdout] test test_directory_no_header_flag ... ok [INFO] [stdout] test test_directory_mixed_languages ... ok [INFO] [stdout] test test_directory_recursive ... ok [INFO] [stdout] test test_directory_gitignore_without_git_repo ... ok [INFO] [stdout] test test_directory_current_directory ... ok [INFO] [stdout] test test_directory_empty ... ok [INFO] [stdout] test test_directory_skips_hidden_directories ... ok [INFO] [stdout] test test_directory_no_ignore_includes_gitignored ... ok [INFO] [stdout] test test_directory_with_headers ... ok [INFO] [stdout] test test_directory_single_language ... ok [INFO] [stdout] test test_directory_skips_hidden_files_by_default ... ok [INFO] [stdout] test test_directory_skips_symlinks ... ok [INFO] [stdout] test test_directory_with_subdirectory ... ok [INFO] [stdout] test test_directory_with_modes ... ok [INFO] [stdout] test test_directory_with_jobs_flag ... ok [INFO] [stdout] test test_directory_respects_gitignore ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s [INFO] [stdout] [INFO] [stderr] Running tests/cli_discover.rs (/opt/rustwide/target/debug/deps/cli_discover-e0b0d87397d6e5b9) [INFO] [stdout] [INFO] [stdout] running 22 tests [INFO] [stdout] test test_discover_bash_commands ... ok [INFO] [stdout] test test_discover_debug_json_includes_non_rewritable ... ok [INFO] [stdout] test test_discover_debug_shows_non_rewritable_commands ... ok [INFO] [stdout] test test_discover_debug_flag_accepted ... ok [INFO] [stdout] test test_discover_agent_missing_value ... ok [INFO] [stdout] test test_discover_json_has_structure ... ok [INFO] [stdout] test test_discover_invalid_since ... ok [INFO] [stdout] test test_discover_help ... ok [INFO] [stdout] test test_discover_no_agent_dir ... ok [INFO] [stdout] test test_discover_empty_dir ... ok [INFO] [stdout] test test_discover_only_skim_commands_shows_zero ... ok [INFO] [stdout] test test_discover_skim_commands_excluded_from_analysis ... ok [INFO] [stdout] test test_discover_unknown_agent_error ... ok [INFO] [stdout] test test_discover_unknown_flag_error ... ok [INFO] [stdout] test test_discover_since_missing_value ... ok [INFO] [stdout] test test_discover_session_latest ... ok [INFO] [stdout] test test_discover_agent_filter ... ok [INFO] [stdout] test test_discover_cross_agent_claude_and_codex ... ok [INFO] [stdout] test test_discover_agent_filter_excludes_other_agents ... ok [INFO] [stdout] test test_discover_json_output ... ok [INFO] [stdout] test test_discover_agent_filter_codex_only ... ok [INFO] [stdout] test test_discover_with_synthetic_session ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.54s [INFO] [stderr] Running tests/cli_e2e_build_parsers.rs (/opt/rustwide/target/debug/deps/cli_e2e_build_parsers-eba68a4ccddf11eb) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test test_build_missing_tool_exit_code ... ok [INFO] [stdout] test test_build_unknown_tool_exit_code ... ok [INFO] [stdout] test test_build_clippy_success_exit_code ... FAILED [INFO] [stdout] test test_build_cargo_success_exit_code ... ok [INFO] [stdout] test test_build_cargo_structured_output ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- test_build_clippy_success_exit_code stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'test_build_clippy_success_exit_code' (2568) panicked at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/ops/function.rs:250:5: [INFO] [stdout] Unexpected failure. [INFO] [stdout] code=1 [INFO] [stdout] stderr=```""``` [INFO] [stdout] command=`"/opt/rustwide/target/debug/skim" "build" "clippy"` [INFO] [stdout] code=1 [INFO] [stdout] stdout=``` [INFO] [stdout] error: \'cargo-clippy\' is not installed for the custom toolchain \'dec9417b8611e34e787a3e4c37686b5131f9e5c5\'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] ``` [INFO] [stdout] [INFO] [stdout] stderr="" [INFO] [stdout] [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x55c851fd8ffa - std[e72de78501789eb0]::backtrace_rs::backtrace::libunwind::trace [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x55c851fd8ffa - std[e72de78501789eb0]::backtrace_rs::backtrace::trace_unsynchronized:: [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x55c851fd8ffa - std[e72de78501789eb0]::sys::backtrace::_print_fmt [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/sys/backtrace.rs:74:9 [INFO] [stdout] 3: 0x55c851fd8ffa - <::print::DisplayBacktrace as core[6aaeda2c7ad07a48]::fmt::Display>::fmt [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/sys/backtrace.rs:44:26 [INFO] [stdout] 4: 0x55c851fef4ba - ::fmt [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/fmt/rt.rs:152:76 [INFO] [stdout] 5: 0x55c851fef4ba - core[6aaeda2c7ad07a48]::fmt::write [INFO] [stdout] 6: 0x55c851fdec82 - std[e72de78501789eb0]::io::default_write_fmt::> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x55c851fdec82 - as std[e72de78501789eb0]::io::Write>::write_fmt [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/io/mod.rs:1994:13 [INFO] [stdout] 8: 0x55c851fb797f - ::print [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/sys/backtrace.rs:47:9 [INFO] [stdout] 9: 0x55c851fb797f - std[e72de78501789eb0]::panicking::default_hook::{closure#0} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:292:27 [INFO] [stdout] 10: 0x55c851fd1539 - std[e72de78501789eb0]::panicking::default_hook [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:316:9 [INFO] [stdout] 11: 0x55c851f2b70c - core[6aaeda2c7ad07a48]::ops::function::Fn<(&'a std[e72de78501789eb0]::panic::PanicHookInfo<'b>,), Output = ()> + core[6aaeda2c7ad07a48]::marker::Sync + core[6aaeda2c7ad07a48]::marker::Send> as core[6aaeda2c7ad07a48]::ops::function::Fn<(&std[e72de78501789eb0]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 12: 0x55c851f2b70c - test[4f12b380f1fb68c5]::test_main_with_exit_callback::::{closure#0} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x55c851fd16f2 - core[6aaeda2c7ad07a48]::ops::function::Fn<(&'a std[e72de78501789eb0]::panic::PanicHookInfo<'b>,), Output = ()> + core[6aaeda2c7ad07a48]::marker::Sync + core[6aaeda2c7ad07a48]::marker::Send> as core[6aaeda2c7ad07a48]::ops::function::Fn<(&std[e72de78501789eb0]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 14: 0x55c851fd16f2 - std[e72de78501789eb0]::panicking::panic_with_hook [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:833:13 [INFO] [stdout] 15: 0x55c851fb7a38 - std[e72de78501789eb0]::panicking::panic_handler::{closure#0} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:698:13 [INFO] [stdout] 16: 0x55c851faf3d9 - std[e72de78501789eb0]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/sys/backtrace.rs:182:18 [INFO] [stdout] 17: 0x55c851fb874d - __rustc[78a4cf188af856fc]::rust_begin_unwind [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:689:5 [INFO] [stdout] 18: 0x55c851fefccc - core[6aaeda2c7ad07a48]::panicking::panic_fmt [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/panicking.rs:80:14 [INFO] [stdout] 19: 0x55c851f60368 - core[6aaeda2c7ad07a48]::panicking::panic_display:: [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/panicking.rs:259:5 [INFO] [stdout] 20: 0x55c851f63e67 - ::panic:: [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/assert_cmd-2.0.17/src/assert.rs:1033:9 [INFO] [stdout] 21: 0x55c851f62ff7 - <::panic as core[6aaeda2c7ad07a48]::ops::function::FnOnce<(assert_cmd[a405c599a7c82ff7]::assert::AssertError,)>>::call_once [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 22: 0x55c851f5dd53 - >::unwrap_or_else::<::panic> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/result.rs:1622:23 [INFO] [stdout] 23: 0x55c851f65250 - ::success [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/assert_cmd-2.0.17/src/assert.rs:158:28 [INFO] [stdout] 24: 0x55c851f1e0c0 - cli_e2e_build_parsers[b248e2df5b05cbc9]::test_build_clippy_success_exit_code [INFO] [stdout] at /opt/rustwide/workdir/tests/cli_e2e_build_parsers.rs:56:10 [INFO] [stdout] 25: 0x55c851f1d6b7 - cli_e2e_build_parsers[b248e2df5b05cbc9]::test_build_clippy_success_exit_code::{closure#0} [INFO] [stdout] at /opt/rustwide/workdir/tests/cli_e2e_build_parsers.rs:49:41 [INFO] [stdout] 26: 0x55c851f1f6a6 - >::call_once [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 27: 0x55c851f1f7eb - core[6aaeda2c7ad07a48]::result::Result<(), alloc[28d2dab30c1dc666]::string::String> as core[6aaeda2c7ad07a48]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 28: 0x55c851f1f7eb - test[4f12b380f1fb68c5]::__rust_begin_short_backtrace::, fn() -> core[6aaeda2c7ad07a48]::result::Result<(), alloc[28d2dab30c1dc666]::string::String>> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/test/src/lib.rs:663:18 [INFO] [stdout] 29: 0x55c851f2c1db - test[4f12b380f1fb68c5]::run_test_in_process::{closure#0} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/test/src/lib.rs:686:74 [INFO] [stdout] 30: 0x55c851f2c1db - as core[6aaeda2c7ad07a48]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/panic/unwind_safe.rs:275:9 [INFO] [stdout] 31: 0x55c851f2c1db - std[e72de78501789eb0]::panicking::catch_unwind::do_call::, core[6aaeda2c7ad07a48]::result::Result<(), alloc[28d2dab30c1dc666]::string::String>> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:581:40 [INFO] [stdout] 32: 0x55c851f2c1db - std[e72de78501789eb0]::panicking::catch_unwind::, core[6aaeda2c7ad07a48]::panic::unwind_safe::AssertUnwindSafe> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:544:19 [INFO] [stdout] 33: 0x55c851f2c1db - std[e72de78501789eb0]::panic::catch_unwind::, core[6aaeda2c7ad07a48]::result::Result<(), alloc[28d2dab30c1dc666]::string::String>> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panic.rs:359:14 [INFO] [stdout] 34: 0x55c851f2c1db - test[4f12b380f1fb68c5]::run_test_in_process [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/test/src/lib.rs:686:27 [INFO] [stdout] 35: 0x55c851f2c1db - test[4f12b380f1fb68c5]::run_test::{closure#0} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/test/src/lib.rs:607:43 [INFO] [stdout] 36: 0x55c851f278f4 - test[4f12b380f1fb68c5]::run_test::{closure#1} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/test/src/lib.rs:637:41 [INFO] [stdout] 37: 0x55c851f278f4 - std[e72de78501789eb0]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/sys/backtrace.rs:166:18 [INFO] [stdout] 38: 0x55c851f2ede2 - std[e72de78501789eb0]::thread::lifecycle::spawn_unchecked::::{closure#1}::{closure#0} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/thread/lifecycle.rs:91:13 [INFO] [stdout] 39: 0x55c851f2ede2 - ::{closure#1}::{closure#0}> as core[6aaeda2c7ad07a48]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/panic/unwind_safe.rs:275:9 [INFO] [stdout] 40: 0x55c851f2ede2 - std[e72de78501789eb0]::panicking::catch_unwind::do_call::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:581:40 [INFO] [stdout] 41: 0x55c851f2ede2 - std[e72de78501789eb0]::panicking::catch_unwind::<(), core[6aaeda2c7ad07a48]::panic::unwind_safe::AssertUnwindSafe::{closure#1}::{closure#0}>> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panicking.rs:544:19 [INFO] [stdout] 42: 0x55c851f2ede2 - std[e72de78501789eb0]::panic::catch_unwind::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/panic.rs:359:14 [INFO] [stdout] 43: 0x55c851f2ede2 - std[e72de78501789eb0]::thread::lifecycle::spawn_unchecked::::{closure#1} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/thread/lifecycle.rs:89:26 [INFO] [stdout] 44: 0x55c851f2ede2 - ::{closure#1} as core[6aaeda2c7ad07a48]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 45: 0x55c851fd888f - + core[6aaeda2c7ad07a48]::marker::Send> as core[6aaeda2c7ad07a48]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/alloc/src/boxed.rs:2240:9 [INFO] [stdout] 46: 0x55c851fd888f - ::new::thread_start [INFO] [stdout] at /rustc/dec9417b8611e34e787a3e4c37686b5131f9e5c5/library/std/src/sys/thread/unix.rs:118:17 [INFO] [stdout] 47: 0x7b4522b32aa4 - [INFO] [stdout] 48: 0x7b4522bbfa64 - clone [INFO] [stdout] 49: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] test_build_clippy_success_exit_code [INFO] [stdout] [INFO] [stdout] test result: FAILED. 4 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.69s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--test cli_e2e_build_parsers` [INFO] running `Command { std: "docker" "inspect" "319cd440ab4fa495ebbaca6536cd0ea4b24cc7b4a309d9eca7f2a659a132abb1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "319cd440ab4fa495ebbaca6536cd0ea4b24cc7b4a309d9eca7f2a659a132abb1", kill_on_drop: false }` [INFO] [stdout] 319cd440ab4fa495ebbaca6536cd0ea4b24cc7b4a309d9eca7f2a659a132abb1