[INFO] fetching crate vallum 0.8.16...
[INFO] testing vallum-0.8.16 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate vallum 0.8.16 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate vallum 0.8.16
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate vallum 0.8.16
[INFO] tweaked toml for crates.io crate vallum 0.8.16 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate vallum 0.8.16 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate vallum 0.8.16 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | homepage = "https://github.com/kahramanemir/Vallum"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 | repository = "https://github.com/kahramanemir/Vallum"
[INFO] [stderr]    |              ----------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `vallum` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b
[INFO] running `Command { std: "docker" "start" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | homepage = "https://github.com/kahramanemir/Vallum"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 | repository = "https://github.com/kahramanemir/Vallum"
[INFO] [stderr]    |              ----------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `vallum` (manifest) generated 1 warning
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling tinyvec v1.11.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling unicode-normalization v0.1.25
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling clap_complete v4.6.5
[INFO] [stderr]    Compiling vallum v0.8.16 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.61s
[INFO] running `Command { std: "docker" "inspect" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | homepage = "https://github.com/kahramanemir/Vallum"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 | repository = "https://github.com/kahramanemir/Vallum"
[INFO] [stderr]    |              ----------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `vallum` (manifest) generated 1 warning
[INFO] [stderr]    Compiling zerocopy v0.8.49
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zerocopy-derive v0.8.49
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling vallum v0.8.16 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 22.10s
[INFO] running `Command { std: "docker" "inspect" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | homepage = "https://github.com/kahramanemir/Vallum"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 | repository = "https://github.com/kahramanemir/Vallum"
[INFO] [stderr]    |              ----------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `vallum` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.18s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/vallum/3f660e3e3765f6fd/out/vallum-3f660e3e3765f6fd)
[INFO] [stdout] 
[INFO] [stdout] running 782 tests
[INFO] [stdout] test approval::tests::load_secret_absent_is_none ... ok
[INFO] [stdout] test approval::tests::token_matches_known_vector ... ok
[INFO] [stdout] test approvals::tests::disabled_cache_noops ... ok
[INFO] [stdout] test approvals::tests::canonical_cwd_resolves_symlinks_and_falls_back ... ok
[INFO] [stdout] test approvals::tests::ineligible_rule_is_never_recorded_or_found ... ok
[INFO] [stdout] test approval::tests::verify_accepts_valid_rejects_tampered ... ok
[INFO] [stdout] test approvals::tests::lookup_without_secret_is_false_and_creates_nothing ... ok
[INFO] [stdout] test audit::tests::command_field_stays_one_line ... ok
[INFO] [stdout] test ansi::tests::preserve_plain_text ... ok
[INFO] [stdout] test ansi::tests::strip_cursor_move ... ok
[INFO] [stdout] test ansi::tests::strip_basic_color ... ok
[INFO] [stdout] test audit::tests::resolve_log_path_uses_custom_directory_when_provided ... ok
[INFO] [stdout] test audit::tests::default_log_path_uses_vallum_logs_directory ... ok
[INFO] [stdout] test audit::tests::output_cannot_forge_entry_boundary ... ok
[INFO] [stdout] test audit::tests::write_log_without_home_or_log_dir_errors_instead_of_cwd ... ok
[INFO] [stdout] test audit::tests::test_log_writing ... ok
[INFO] [stdout] test breaker::tests::expired_lock_clears_itself ... ok
[INFO] [stdout] test approval::tests::create_then_read_is_stable_and_0600 ... ok
[INFO] [stdout] test breaker::tests::unlock_removes_lock_and_reports ... ok
[INFO] [stdout] test approval::tests::short_corrupt_file_is_replaced_by_exact_fresh_secret ... ok
[INFO] [stdout] test config::tests::approval_cache_defaults_on_14_days ... ok
[INFO] [stdout] test config::tests::approval_cache_ttl_bounds_are_config_errors ... ok
[INFO] [stdout] test config::tests::bare_string_secret_pattern_error_shows_expected_form ... ok
[INFO] [stdout] test config::tests::breaker_defaults_on_with_conservative_thresholds ... ok
[INFO] [stdout] test config::tests::breaker_zero_threshold_is_config_error ... ok
[INFO] [stdout] test config::tests::guardrail_defaults_on_assume_yes_off ... ok
[INFO] [stdout] test config::tests::missing_config_uses_defaults ... ok
[INFO] [stdout] test config::tests::optimizer_disabled_defaults_empty_and_parses ... ok
[INFO] [stdout] test config::tests::overlay_loaded_appends_project_rules_and_provenance ... ok
[INFO] [stdout] test config::tests::overlay_rejected_records_reason_and_adds_no_rules ... ok
[INFO] [stdout] test config::tests::parses_config_file_and_validates_regex ... ok
[INFO] [stdout] test config::tests::policy_allow_bad_regex_and_empty_reason_are_errors ... ok
[INFO] [stdout] test approvals::tests::clear_removes_all_and_reports_count ... ok
[INFO] [stdout] test config::tests::policy_allow_parses_and_validates ... ok
[INFO] [stdout] test config::tests::policy_allow_unknown_suppresses_is_error ... ok
[INFO] [stdout] test approvals::tests::expired_entry_is_a_miss_and_pruned ... ok
[INFO] [stdout] test config::tests::policy_rule_allow_action_is_error ... ok
[INFO] [stdout] test config::tests::policy_rule_bad_regex_is_error ... ok
[INFO] [stdout] test config::tests::policy_allow_empty_matching_pattern_is_error ... ok
[INFO] [stdout] test config::tests::policy_rule_unknown_action_is_error ... ok
[INFO] [stdout] test config::tests::privacy_defaults_to_off_with_all_categories ... ok
[INFO] [stdout] test config::tests::policy_rules_allow_action_hint_mentions_policy_allow ... ok
[INFO] [stdout] test config::tests::privacy_parses_and_narrows_categories ... ok
[INFO] [stdout] test config::tests::policy_rule_parses_and_validates ... ok
[INFO] [stdout] test config::tests::project_fields_do_not_serialize_into_config_show ... ok
[INFO] [stdout] test config::tests::scrubber_entropy_defaults_true_and_parses_false ... ok
[INFO] [stdout] test config::tests::rejects_invalid_regex_in_config ... ok
[INFO] [stdout] test config::tests::scrubber_normalize_defaults_true_and_parses_false ... ok
[INFO] [stdout] test config::tests::unknown_privacy_category_is_rejected_by_name ... ok
[INFO] [stdout] test config::tests::security_strict_defaults_false_and_parses ... ok
[INFO] [stdout] test config::tests::table_secret_pattern_missing_field_still_clear ... ok
[INFO] [stdout] test doctor::tests::agent_hook_absent_agent_dir_is_ok_skip ... ok
[INFO] [stdout] test doctor::tests::approval_cache_check_reports_state ... ok
[INFO] [stdout] test doctor::tests::agent_hook_installed_note_is_appended_only_when_installed ... ok
[INFO] [stdout] test approval::tests::concurrent_creation_agrees_on_one_secret ... ok
[INFO] [stdout] test doctor::tests::base_url_anthropic_host_is_ok ... ok
[INFO] [stdout] test approvals::tests::record_and_lookup_agree_across_symlinked_cwd ... ok
[INFO] [stdout] test approvals::tests::record_is_idempotent_while_a_valid_entry_exists ... ok
[INFO] [stdout] test approvals::tests::record_then_lookup_roundtrip ... ok
[INFO] [stdout] test doctor::tests::base_url_subdomain_of_anthropic_is_ok ... ok
[INFO] [stdout] test doctor::tests::base_url_unset_is_ok ... ok
[INFO] [stdout] test breaker::tests::malformed_lines_are_dropped_not_fatal ... ok
[INFO] [stdout] test breaker::tests::no_double_trip_while_locked ... ok
[INFO] [stdout] test doctor::tests::base_url_whitespace_padded_anthropic_is_ok ... ok
[INFO] [stdout] test doctor::tests::binary_on_path_found_and_missing ... ok
[INFO] [stdout] test doctor::tests::breaker_check_states ... ok
[INFO] [stdout] test breaker::tests::window_prunes_old_events ... ok
[INFO] [stdout] test doctor::tests::config_broken_is_fail ... ok
[INFO] [stdout] test doctor::tests::config_missing_is_ok ... ok
[INFO] [stdout] test doctor::tests::guardrail_check_reports_allow_exception_count ... ok
[INFO] [stdout] test doctor::tests::guardrail_check_reports_project_rule_count ... ok
[INFO] [stdout] test doctor::tests::guardrail_off_warns ... ok
[INFO] [stdout] test doctor::tests::guardrail_on_reports_ok ... ok
[INFO] [stdout] test approvals::tests::tampered_entry_is_a_miss ... ok
[INFO] [stdout] test doctor::tests::hook_with_old_matcher_warns ... ok
[INFO] [stdout] test doctor::tests::log_chain_absent_is_ok ... ok
[INFO] [stdout] test doctor::tests::agent_hook_states ... ok
[INFO] [stdout] test doctor::tests::log_dir_writable_is_ok ... ok
[INFO] [stdout] test doctor::tests::optimizer_names_ok_and_warn ... ok
[INFO] [stdout] test doctor::tests::project_config_check_states ... ok
[INFO] [stdout] test doctor::tests::render_flags_failure_and_lists_all ... ok
[INFO] [stdout] test doctor::tests::render_no_failure_when_all_ok_or_warn ... ok
[INFO] [stdout] test approvals::tests::corrupt_lines_are_skipped_valid_ones_survive ... ok
[INFO] [stdout] test doctor::tests::hook_states ... ok
[INFO] [stdout] test doctor::tests::unknown_disabled_name_warns ... ok
[INFO] [stdout] test eval::tests::injection_metrics_empty_is_zero_not_nan ... ok
[INFO] [stdout] test doctor::tests::base_url_lookalike_host_warns ... ok
[INFO] [stdout] test doctor::tests::base_url_userinfo_password_trick_still_warns ... ok
[INFO] [stdout] test doctor::tests::base_url_foreign_host_warns_and_cites_source ... ok
[INFO] [stdout] test doctor::tests::log_chain_intact_is_ok_and_broken_is_fail ... ok
[INFO] [stdout] test doctor::tests::base_url_fragment_and_query_tricks_still_warn ... ok
[INFO] [stdout] test doctor::tests::base_url_warning_escapes_control_chars_in_host ... ok
[INFO] [stdout] test eval::tests::misses_block_escapes_backticks_and_newlines ... ok
[INFO] [stdout] test eval::tests::loads_injection_corpus ... ok
[INFO] [stdout] test eval::tests::secret_metrics_detects_and_misses ... ok
[INFO] [stdout] test doctor::tests::settings_env_value_skips_empty_and_whitespace ... ok
[INFO] [stdout] test breaker::tests::records_accumulate_and_trip_at_threshold ... ok
[INFO] [stdout] test executor::tests::signal_death_maps_to_128_plus_signal ... ok
[INFO] [stdout] test executor::tests::tee_open_failure_falls_back_to_capture ... ok
[INFO] [stdout] test executor::tests::tee_writes_each_line_to_file_and_returns_normal_output ... ok
[INFO] [stdout] test fsutil::tests::creates_file_with_0600 ... ok
[INFO] [stdout] test fsutil::tests::rw_private_creates_file_with_0600 ... ok
[INFO] [stdout] test executor::tests::test_execute_echo ... ok
[INFO] [stdout] test executor::tests::test_exit_code_propagates ... ok
[INFO] [stdout] test executor::tests::test_output_cap_marks_truncation ... ok
[INFO] [stdout] test doctor::tests::audit_empty_when_only_vallum ... ok
[INFO] [stdout] test hook::claude::tests::allow_rewrites_plain_command ... ok
[INFO] [stdout] test hook::claude::tests::dangerous_command_asks_with_reason ... ok
[INFO] [stdout] test doctor::tests::session_start_dangerous_hook_is_flagged_with_event_label ... ok
[INFO] [stdout] test doctor::tests::hook_audit_escapes_control_chars_in_event_and_command ... ok
[INFO] [stdout] test hook::claude::tests::file_tools_bash_untouched ... ok
[INFO] [stdout] test hook::claude::tests::cached_approval_downgrades_ask_to_allow_with_wrap ... ok
[INFO] [stdout] test hook::claude::tests::guardrail_off_always_allows ... ok
[INFO] [stdout] test hook::claude::tests::guardrail_off_emits_nothing_for_file_tools ... ok
[INFO] [stdout] test doctor::tests::audit_skips_vallum_and_flags_foreign ... ok
[INFO] [stdout] test hook::claude::tests::non_bash_and_tui_pass_through ... ok
[INFO] [stdout] test hook::claude::tests::no_secret_falls_back_to_tokenless_wrap ... ok
[INFO] [stdout] test hook::claude::tests::cache_miss_wrong_cwd_still_asks ... ok
[INFO] [stdout] test hook::claude::tests::tripped_breaker_denies_benign_command ... ok
[INFO] [stdout] test hook::claude::tests::file_tool_denied_while_breaker_tripped ... ok
[INFO] [stdout] test hook::claude::tests::unknown_tools_and_empty_paths_pass_through ... ok
[INFO] [stdout] test hook::claude::tests::vallum_self_disable_ask_has_no_rewrite ... ok
[INFO] [stdout] test hook::claude::tests::denied_command_returns_deny_no_rewrite ... ok
[INFO] [stdout] test hook::claude::tests::cache_disabled_still_asks ... ok
[INFO] [stdout] test hook::claude::tests::read_tool_gates_sensitive_but_not_normal_files ... ok
[INFO] [stdout] test hook::codex::tests::allow_and_non_shell_emit_nothing ... ok
[INFO] [stdout] test hook::codex::tests::guardrail_off_emits_no_decision ... ok
[INFO] [stdout] test hook::codex::tests::malformed_and_tui_emit_nothing ... ok
[INFO] [stdout] test hook::claude::tests::tripped_breaker_denies_before_cache ... ok
[INFO] [stdout] test hook::cursor::tests::allow_emits_nothing ... ok
[INFO] [stdout] test hook::claude::tests::tool_name_match_is_case_insensitive ... ok
[INFO] [stdout] test hook::claude::tests::write_tool_on_shell_profile_asks_without_rewrite ... ok
[INFO] [stdout] test hook::cursor::tests::guardrail_off_emits_nothing ... ok
[INFO] [stdout] test hook::codex::tests::ask_fails_closed_with_actionable_deny ... ok
[INFO] [stdout] test hook::claude::tests::tui_ask_has_no_rewrite ... ok
[INFO] [stdout] test hook::cursor::tests::malformed_missing_and_tui_emit_nothing ... ok
[INFO] [stdout] test hook::gemini::tests::allow_emits_nothing ... ok
[INFO] [stdout] test hook::gemini::tests::guardrail_off_emits_no_decision ... ok
[INFO] [stdout] test hook::gemini::tests::malformed_and_tui_emit_nothing ... ok
[INFO] [stdout] test hook::gemini::tests::non_shell_tool_emits_nothing ... ok
[INFO] [stdout] test hook::codex::tests::tui_ask_fails_closed_too ... ok
[INFO] [stdout] test hook::tests::ask_message_names_rule_command_and_escape_hatch ... ok
[INFO] [stdout] test hook::tests::ask_message_user_rule_advises_config_edit ... ok
[INFO] [stdout] test ansi::tests::prop_strip_never_grows ... ok
[INFO] [stdout] test hook::codex::tests::deny_maps_to_deny ... ok
[INFO] [stdout] test hook::tests::decide_gates_empty_tui_and_vallum_head ... ok
[INFO] [stdout] test hook::tests::decide_maps_policy_verdicts ... ok
[INFO] [stdout] test hook::tests::decide_maps_suppressed_verdict_to_allow_downgraded ... ok
[INFO] [stdout] test hook::cursor::tests::ask_maps_to_native_ask ... ok
[INFO] [stdout] test hook::tests::decide_without_policy_allows ... ok
[INFO] [stdout] test hook::tests::decide_tui_matching_a_deny_rule_denies ... ok
[INFO] [stdout] test hook::tests::decide_tui_matching_a_rule_now_asks ... ok
[INFO] [stdout] test hook::tests::decide_tui_with_no_objection_still_passes_through ... ok
[INFO] [stdout] test hook::cursor::tests::deny_maps_to_deny ... ok
[INFO] [stdout] test hook::tests::gate_denies_everything_while_tripped ... ok
[INFO] [stdout] test hook::tests::decide_wrapped_non_tui_stays_wrapped ... ok
[INFO] [stdout] test hook::tests::gate_passes_vallum_and_empty_through_while_tripped ... ok
[INFO] [stdout] test hook::gemini::tests::ask_fails_closed_with_actionable_deny ... ok
[INFO] [stdout] test hook::gemini::tests::deny_maps_to_deny ... ok
[INFO] [stdout] test hook::tests::gate_disabled_breaker_is_inert ... ok
[INFO] [stdout] test hook::tests::decide_wrapped_tui_still_policy_gated ... ok
[INFO] [stdout] test hook::tests::project_rule_attribution_in_report_and_fail_closed_hint ... ok
[INFO] [stdout] test hook::tests::path_qualified_real_vallum_passes_through_even_while_tripped ... ok
[INFO] [stdout] test hook::gemini::tests::tui_ask_fails_closed_too ... ok
[INFO] [stdout] test hook::tests::tui_head_resolves_through_wrappers ... ok
[INFO] [stdout] test hook::tests::vallum_head_self_disable_asks_other_subcommands_pass ... ok
[INFO] [stdout] test install_hook::claude::tests::add_vallum_errors_on_malformed_hooks_key ... ok
[INFO] [stdout] test install_hook::claude::tests::current_entry_is_idempotent_without_force ... ok
[INFO] [stdout] test ansi::tests::prop_strip_does_not_panic ... ok
[INFO] [stdout] test install_hook::claude::tests::entry_uses_file_tool_matcher ... ok
[INFO] [stdout] test install_hook::claude::tests::install_force_replaces_existing ... ok
[INFO] [stdout] test hook::tests::nonexistent_vallum_path_is_still_gated ... ok
[INFO] [stdout] test install_hook::claude::tests::install_is_idempotent_without_force ... ok
[INFO] [stdout] test install_hook::claude::tests::old_bash_only_entry_is_migrated_without_force ... ok
[INFO] [stdout] test install_hook::claude::tests::install_into_missing_file_creates_it ... ok
[INFO] [stdout] test install_hook::claude::tests::session_scan_add_remove_roundtrip ... ok
[INFO] [stdout] test install_hook::claude::tests::uninstall_removes_both_entry_kinds ... ok
[INFO] [stdout] test install_hook::claude::tests::install_preserves_other_hooks_and_top_level_fields ... ok
[INFO] [stdout] test install_hook::claude::tests::uninstall_removes_only_vallum_entry ... ok
[INFO] [stdout] test install_hook::codex::tests::add_errors_on_malformed_hooks_key ... ok
[INFO] [stdout] test install_hook::codex::tests::add_into_empty_sets_version_and_entry ... ok
[INFO] [stdout] test install_hook::codex::tests::add_is_idempotent_and_force_replaces ... ok
[INFO] [stdout] test install_hook::codex::tests::remove_deletes_only_vallum_entry ... ok
[INFO] [stdout] test install_hook::codex::tests::add_preserves_unrelated_hooks_and_keys ... ok
[INFO] [stdout] test install_hook::cursor::tests::add_errors_on_malformed_hooks_key ... ok
[INFO] [stdout] test install_hook::cursor::tests::add_into_empty_sets_version_and_entry ... ok
[INFO] [stdout] test install_hook::cursor::tests::add_is_idempotent_and_force_replaces ... ok
[INFO] [stdout] test install_hook::cursor::tests::add_preserves_unrelated_hooks_and_keys ... ok
[INFO] [stdout] test hook::claude::tests::edit_and_multiedit_and_notebook_are_write_gated ... ok
[INFO] [stdout] test install_hook::cursor::tests::remove_deletes_only_vallum_entry ... ok
[INFO] [stdout] test install_hook::gemini::tests::add_errors_on_malformed_hooks_key ... ok
[INFO] [stdout] test install_hook::gemini::tests::add_into_empty_sets_version_and_entry ... ok
[INFO] [stdout] test install_hook::gemini::tests::add_is_idempotent_and_force_replaces ... ok
[INFO] [stdout] test install_hook::gemini::tests::add_preserves_unrelated_hooks_and_keys ... ok
[INFO] [stdout] test install_hook::gemini::tests::remove_deletes_only_vallum_entry ... ok
[INFO] [stdout] test install_hook::select::tests::bare_esc_cancels_and_esc_junk_is_ignored ... ok
[INFO] [stdout] test install_hook::select::tests::confirm_cancel_and_other ... ok
[INFO] [stdout] test install_hook::select::tests::color_render_highlights_cursor_row_only ... ok
[INFO] [stdout] test install_hook::select::tests::cursor_wraps_both_directions ... ok
[INFO] [stdout] test install_hook::select::tests::decodes_arrow_sequences ... ok
[INFO] [stdout] test install_hook::select::tests::decodes_plain_keys ... ok
[INFO] [stdout] test install_hook::select::tests::install_rows_preselect_detected_unhooked ... ok
[INFO] [stdout] test install_hook::select::tests::plain_render_matches_layout_exactly ... ok
[INFO] [stdout] test hook::tests::path_named_vallum_but_different_file_is_still_gated ... ok
[INFO] [stdout] test install_hook::select::tests::selected_preserves_row_order ... ok
[INFO] [stdout] test install_hook::select::tests::plain_render_has_no_escape_codes ... ok
[INFO] [stdout] test install_hook::select::tests::render_pads_labels_so_hook_markers_align ... ok
[INFO] [stdout] test install_hook::select::tests::space_toggles_cursor_row ... ok
[INFO] [stdout] test install_hook::select::tests::toggle_all_checks_then_unchecks ... ok
[INFO] [stdout] test install_hook::select::tests::toggle_all_from_partial_checks_all ... ok
[INFO] [stdout] test install_hook::select::tests::uninstall_rows_list_only_hooked_none_checked ... ok
[INFO] [stdout] test install_hook::select::tests::zero_byte_read_is_none ... ok
[INFO] [stdout] test install_hook::tests::extract_codex_nested_entry ... ok
[INFO] [stdout] test install_hook::tests::extract_claude_nested_all_commands ... ok
[INFO] [stdout] test install_hook::tests::extract_cursor_flat_entries ... ok
[INFO] [stdout] test install_hook::tests::extract_empty_when_no_hooks ... ok
[INFO] [stdout] test install_hook::tests::extract_gemini_nested_entry ... ok
[INFO] [stdout] test install_hook::tests::extract_reads_all_event_keys_nested_shape ... ok
[INFO] [stdout] test install_hook::tests::extract_reads_flat_cursor_shape ... ok
[INFO] [stdout] test install_hook::tests::read_settings_refuses_malformed_json ... ok
[INFO] [stdout] test install_hook::tests::status_at_err_path_is_undetected ... ok
[INFO] [stdout] test install_hook::tests::status_at_detects_dir_and_hook ... ok
[INFO] [stdout] test install_hook::tests::status_at_missing_dir_is_undetected ... ok
[INFO] [stdout] test install_hook::tests::status_at_malformed_config_counts_as_not_hooked ... ok
[INFO] [stdout] test hook::tests::test_report_shows_suppression ... ok
[INFO] [stdout] test logchain::tests::append_writes_chained_blocks ... ok
[INFO] [stdout] test logchain::tests::delim_matches_audit_writer ... ok
[INFO] [stdout] test hook::tests::gate_allow_verdicts_never_count ... ok
[INFO] [stdout] test logchain::tests::payload_newlines_are_escaped_to_one_line ... ok
[INFO] [stdout] test logchain::tests::payload_starting_with_chain_prefix_still_verifies ... ok
[INFO] [stdout] test logchain::tests::sha256_hex_known_vector ... ok
[INFO] [stdout] test logchain::tests::render_report_codes ... ok
[INFO] [stdout] test logchain::tests::run_verify_paths_and_codes ... ok
[INFO] [stdout] test logchain::tests::tail_truncation_is_invisible_without_anchor ... ok
[INFO] [stdout] test logchain::tests::verify_detects_corrupt_chain_line ... ok
[INFO] [stdout] test logchain::tests::verify_detects_deleted_middle_block ... ok
[INFO] [stdout] test logchain::tests::verify_file_absent_is_none ... ok
[INFO] [stdout] test logchain::tests::verify_detects_edited_payload ... ok
[INFO] [stdout] test logchain::tests::verify_incomplete_tail_after_chain_breaks ... ok
[INFO] [stdout] test logchain::tests::verify_legacy_prefix_then_chain_is_intact ... ok
[INFO] [stdout] test logchain::tests::verify_intact_chain ... ok
[INFO] [stdout] test mcp::discover::tests::existing_from_keeps_only_files_that_exist ... ok
[INFO] [stdout] test mcp::discover::tests::known_paths_are_nonempty_and_include_cursor ... ok
[INFO] [stdout] test logchain::tests::verify_unchained_block_after_chain_breaks ... ok
[INFO] [stdout] test hook::tests::decide_wrapped_tui_passes_through ... ok
[INFO] [stdout] test mcp::model::tests::json_mcpservers_key_parses_all_fields ... ok
[INFO] [stdout] test mcp::model::tests::json_without_server_map_is_zero_servers_not_error ... ok
[INFO] [stdout] test mcp::model::tests::malformed_json_is_error_not_panic ... ok
[INFO] [stdout] test mcp::model::tests::json_servers_key_is_accepted ... ok
[INFO] [stdout] test mcp::model::tests::parse_file_dispatches_by_extension ... ok
[INFO] [stdout] test hook::tests::test_report_covers_all_verdicts ... ok
[INFO] [stdout] test mcp::model::tests::toml_mcp_servers_table_parses ... ok
[INFO] [stdout] test mcp::scan::tests::clean_env_value_is_not_flagged ... ok
[INFO] [stdout] test mcp::scan::tests::env_openai_key_is_flagged_and_masked ... ok
[INFO] [stdout] test logchain::tests::concurrent_appends_do_not_fork_the_chain ... ok
[INFO] [stdout] test mcp::tests::clean_report_exits_zero ... ok
[INFO] [stdout] test mcp::tests::collect_returns_report_and_usage_flag ... ok
[INFO] [stdout] test mcp::tests::high_finding_exits_twenty ... ok
[INFO] [stdout] test mcp::tests::usage_error_forces_125_over_findings ... ok
[INFO] [stdout] test mcp::tests::warning_finding_exits_ten ... ok
[INFO] [stdout] test install_hook::tests::atomic_write_preserves_0600_permissions ... ok
[INFO] [stdout] test metrics::tests::append_stat_creates_file_and_dir ... ok
[INFO] [stdout] test mcp::scan::tests::risky_launch_command_is_flagged ... ok
[INFO] [stdout] test install_hook::tests::atomic_write_creates_backup ... ok
[INFO] [stdout] test install_hook::tests::atomic_write_follows_symlink_instead_of_replacing_it ... ok
[INFO] [stdout] test optimizer::apt::tests::collapses_progress_keeps_plan_and_summary ... ok
[INFO] [stdout] test optimizer::apt::tests::does_not_match_non_install_or_other_commands ... ok
[INFO] [stdout] test optimizer::apt::tests::matches_apt_install_with_and_without_sudo ... ok
[INFO] [stdout] test optimizer::apt::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::brew::tests::collapses_downloads_keeps_pour_and_caveats ... ok
[INFO] [stdout] test optimizer::brew::tests::matches_brew_only ... ok
[INFO] [stdout] test optimizer::brew::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::cargo::tests::does_not_match_cargo_metadata ... ok
[INFO] [stdout] test optimizer::cargo::tests::does_not_match_json_message_format ... ok
[INFO] [stdout] test optimizer::cargo::tests::matches_cargo_test ... ok
[INFO] [stdout] test optimizer::cargo::tests::summarizes_long_cargo_output ... ok
[INFO] [stdout] test optimizer::cmake::tests::collapses_probes_keeps_result_and_errors ... ok
[INFO] [stdout] test mcp::scan::tests::ordinary_launch_command_is_not_flagged ... ok
[INFO] [stdout] test optimizer::cmake::tests::matches_cmake_only ... ok
[INFO] [stdout] test optimizer::docker::tests::collapses_progress_keeps_result ... ok
[INFO] [stdout] test optimizer::cmake::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::docker::tests::passthrough_small ... ok
[INFO] [stdout] test optimizer::docker::tests::matches_docker_build_and_compose ... ok
[INFO] [stdout] test optimizer::dotnet::tests::collapses_restore_keeps_build_result ... ok
[INFO] [stdout] test optimizer::dotnet::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::file_list::tests::ls_long_mode_keeps_head_and_total ... ok
[INFO] [stdout] test optimizer::file_list::tests::matches_file_list_commands ... ok
[INFO] [stdout] test optimizer::file_list::tests::passthrough_small_input ... ok
[INFO] [stdout] test optimizer::file_list::tests::path_mode_absolute_paths_get_real_top_dirs ... ok
[INFO] [stdout] test optimizer::dotnet::tests::matches_dotnet_build_family ... ok
[INFO] [stdout] test optimizer::file_list::tests::path_mode_keeps_head_and_summarizes_dirs ... ok
[INFO] [stdout] test optimizer::file_list::tests::path_mode_never_hides_error_lines ... ok
[INFO] [stdout] test optimizer::file_list::tests::path_mode_passthrough_when_only_errors_beyond_head ... ok
[INFO] [stdout] test optimizer::file_list::tests::tree_mode_keeps_head_and_report_line ... ok
[INFO] [stdout] test optimizer::file_list::tests::tree_mode_keeps_singular_report_line ... ok
[INFO] [stdout] test optimizer::git_diff::tests::collapses_context_keeps_changes ... ok
[INFO] [stdout] test optimizer::git_diff::tests::matches_git_diff ... ok
[INFO] [stdout] test metrics::tests::estimate_empty ... ok
[INFO] [stdout] test optimizer::git_diff::tests::passthrough_small_diff ... ok
[INFO] [stdout] test metrics::tests::estimate_ascii ... ok
[INFO] [stdout] test metrics::tests::estimate_unicode ... ok
[INFO] [stdout] test hook::tests::gate_records_ask_verdicts_and_trips_at_threshold ... ok
[INFO] [stdout] test optimizer::git_log::tests::matches_git_log ... ok
[INFO] [stdout] test optimizer::git_log::tests::keeps_headers_and_subject_collapses_body ... ok
[INFO] [stdout] test optimizer::git_log::tests::passthrough_short_log ... ok
[INFO] [stdout] test optimizer::git_status::tests::compress_long_status ... ok
[INFO] [stdout] test optimizer::git_status::tests::matches_git_status ... ok
[INFO] [stdout] test optimizer::git_status::tests::not_match_git_log ... ok
[INFO] [stdout] test optimizer::git_status::tests::not_match_porcelain ... ok
[INFO] [stdout] test optimizer::go_build::tests::collapses_module_downloads ... ok
[INFO] [stdout] test optimizer::git_status::tests::passthrough_short_status ... ok
[INFO] [stdout] test optimizer::go_build::tests::matches_go_build_family_not_test ... ok
[INFO] [stdout] test optimizer::go_build::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::go_test::tests::matches_go_test ... ok
[INFO] [stdout] test optimizer::go_test::tests::collapses_pass_keeps_fail_and_summary ... ok
[INFO] [stdout] test optimizer::go_test::tests::passthrough_small ... ok
[INFO] [stdout] test optimizer::gradle::tests::collapses_downloads_keeps_result ... ok
[INFO] [stdout] test optimizer::gradle::tests::matches_gradle_and_wrapper ... ok
[INFO] [stdout] test optimizer::gradle::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::grep::tests::caps_number_of_detailed_files ... ok
[INFO] [stdout] test optimizer::grep::tests::groups_by_file_and_caps_matches_per_file ... ok
[INFO] [stdout] test optimizer::grep::tests::keeps_colon_diagnostics_verbatim ... ok
[INFO] [stdout] test optimizer::grep::tests::keeps_non_match_lines_verbatim ... ok
[INFO] [stdout] test optimizer::grep::tests::matches_grep_family_without_shape_changing_flags ... ok
[INFO] [stdout] test optimizer::grep::tests::passthrough_single_file_content_with_colons ... ok
[INFO] [stdout] test optimizer::grep::tests::passthrough_small_input ... ok
[INFO] [stdout] test optimizer::grep::tests::passthrough_when_nothing_hidden ... ok
[INFO] [stdout] test breaker::tests::concurrent_records_trip_exactly_once ... ok
[INFO] [stdout] test logchain::tests::verify_file_unreadable_dir_is_error_not_absent ... FAILED
[INFO] [stdout] test optimizer::grep::tests::windows_drive_prefixes_are_not_grouped ... ok
[INFO] [stdout] test optimizer::kubectl::tests::collapses_healthy_keeps_header_and_problems ... ok
[INFO] [stdout] test optimizer::kubectl::tests::matches_kubectl_get ... ok
[INFO] [stdout] test optimizer::kubectl::tests::passthrough_small ... ok
[INFO] [stdout] test optimizer::docker::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test optimizer::git_diff::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test optimizer::make::tests::matches_make ... ok
[INFO] [stdout] test optimizer::make::tests::passthrough_small ... ok
[INFO] [stdout] test optimizer::make::tests::surfaces_diagnostics_collapses_noise ... ok
[INFO] [stdout] test optimizer::maven::tests::collapses_downloads_keeps_phases_and_summary ... ok
[INFO] [stdout] test optimizer::maven::tests::matches_mvn_and_wrapper ... ok
[INFO] [stdout] test optimizer::maven::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::ninja::tests::collapses_progress_keeps_warnings ... ok
[INFO] [stdout] test optimizer::ninja::tests::matches_ninja_only ... ok
[INFO] [stdout] test optimizer::ninja::tests::non_progress_bracket_line_is_not_noise ... ok
[INFO] [stdout] test optimizer::ninja::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::npm::tests::does_not_match_npm_json_mode ... ok
[INFO] [stdout] test optimizer::npm::tests::matches_npm_test ... ok
[INFO] [stdout] test optimizer::npm::tests::summarizes_pass_lines ... ok
[INFO] [stdout] test optimizer::pip::tests::collapses_dependency_chatter_keeps_outcome ... ok
[INFO] [stdout] test optimizer::pip::tests::does_not_match_non_install_or_other_commands ... ok
[INFO] [stdout] test optimizer::pip::tests::matches_pip_install ... ok
[INFO] [stdout] test optimizer::pip::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::poetry::tests::collapses_operations_keeps_summary ... ok
[INFO] [stdout] test optimizer::poetry::tests::matches_poetry_only ... ok
[INFO] [stdout] test optimizer::poetry::tests::passes_through_short_output ... ok
[INFO] [stdout] test optimizer::git_log::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test optimizer::pytest::tests::matches_pytest_binary ... ok
[INFO] [stdout] test optimizer::pytest::tests::matches_python_module_pytest ... ok
[INFO] [stdout] test optimizer::pytest::tests::summarizes_progress_lines ... ok
[INFO] [stdout] test optimizer::terraform::tests::keeps_headers_summary_and_collapses_refresh_and_diff ... ok
[INFO] [stdout] test optimizer::terraform::tests::matches_terraform_plan_and_apply ... ok
[INFO] [stdout] test optimizer::terraform::tests::passthrough_small ... ok
[INFO] [stdout] test optimizer::tests::collapse_noise_runs_collapses_and_keeps_signal ... ok
[INFO] [stdout] test optimizer::tests::collapse_noise_runs_passthrough_when_nothing_collapsed ... ok
[INFO] [stdout] test optimizer::tests::collapse_noise_runs_passthrough_when_too_small ... ok
[INFO] [stdout] test optimizer::tests::dispatch_does_not_unwrap_metacharacter_scripts ... ok
[INFO] [stdout] test optimizer::tests::dispatch_matches_cargo_test_when_output_is_long ... ok
[INFO] [stdout] test optimizer::tests::dispatch_matches_git_status_when_input_is_long ... ok
[INFO] [stdout] test optimizer::tests::dispatch_matches_npm_test_when_output_is_long ... ok
[INFO] [stdout] test optimizer::tests::dispatch_matches_pytest_when_output_is_long ... ok
[INFO] [stdout] test optimizer::tests::dispatch_matches_rg_output ... ok
[INFO] [stdout] test optimizer::tests::dispatch_returns_none_for_unknown_command ... ok
[INFO] [stdout] test optimizer::tests::dispatch_skips_disabled_optimizer ... ok
[INFO] [stdout] test optimizer::tests::dispatch_unwraps_bash_c_find_to_file_list ... ok
[INFO] [stdout] test optimizer::tests::dispatch_unwraps_bash_c_simple_command ... ok
[INFO] [stdout] test optimizer::git_status::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test optimizer::go_test::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test optimizer::tests::trait_dispatch_returns_name_and_output ... ok
[INFO] [stdout] test optimizer::tests::unwrap_shell_invocation_shapes ... ok
[INFO] [stdout] test policy::audit::tests::allow_verdict_writes_nothing ... ok
[INFO] [stdout] test policy::audit::tests::deny_line_records_agent ... ok
[INFO] [stdout] test policy::audit::tests::disabled_logging_writes_nothing ... ok
[INFO] [stdout] test policy::audit::tests::verdict_blocks_are_hash_chained ... ok
[INFO] [stdout] test policy::creds::tests::a_credential_path_inside_a_url_is_not_a_local_path ... ok
[INFO] [stdout] test policy::creds::tests::a_later_segment_is_judged_on_its_own_head ... ok
[INFO] [stdout] test optimizer::grep::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test policy::creds::tests::dumping_tools_are_not_exempt ... ok
[INFO] [stdout] test policy::creds::tests::metadata_only_tools_are_exempt ... ok
[INFO] [stdout] test policy::creds::tests::quoted_prose_mentions_do_not_count ... ok
[INFO] [stdout] test policy::creds::tests::wrappers_and_env_assignments_do_not_hide_the_head ... ok
[INFO] [stdout] test policy::creds::tests::non_hard_paths_never_fire ... ok
[INFO] [stdout] test policy::file_rules::tests::agent_configs ... ok
[INFO] [stdout] test policy::file_rules::tests::benign_everyday_paths_pass ... ok
[INFO] [stdout] test policy::file_rules::tests::disabled_list_suppresses_a_rule ... ok
[INFO] [stdout] test policy::file_rules::tests::cron_paths ... ok
[INFO] [stdout] test policy::file_rules::tests::dotdot_traversal_is_resolved ... ok
[INFO] [stdout] test policy::file_rules::tests::egress_only_files_are_free_to_read_via_file_tool ... ok
[INFO] [stdout] test policy::file_rules::tests::git_hooks_anywhere ... ok
[INFO] [stdout] test policy::file_rules::tests::launch_agents_and_daemons ... ok
[INFO] [stdout] test policy::file_rules::tests::matching_is_ascii_case_insensitive ... ok
[INFO] [stdout] test policy::file_rules::tests::profile_names_are_home_anchored ... ok
[INFO] [stdout] test policy::file_rules::tests::rule_names_lists_all_nine ... ok
[INFO] [stdout] test policy::file_rules::tests::sensitive_reads ... ok
[INFO] [stdout] test policy::file_rules::tests::ssh_dir_writes_ask ... ok
[INFO] [stdout] test policy::file_rules::tests::systemd_user_units ... ok
[INFO] [stdout] test policy::file_rules::tests::tilde_and_home_var_expand ... ok
[INFO] [stdout] test policy::file_rules::tests::vallum_dir_is_self_protected ... ok
[INFO] [stdout] test policy::file_rules::tests::widened_file_reads_ask ... ok
[INFO] [stdout] test policy::normalize::tests::brace_expand_expands_a_single_group_in_place ... ok
[INFO] [stdout] test policy::normalize::tests::brace_expand_leaves_non_lists_untouched ... ok
[INFO] [stdout] test policy::normalize::tests::dequote_keeps_spans_containing_whitespace ... ok
[INFO] [stdout] test optimizer::file_list::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test policy::normalize::tests::dequote_strips_whitespace_free_quoted_spans ... ok
[INFO] [stdout] test policy::normalize::tests::path_normalize_collapses_trailing_dot ... ok
[INFO] [stdout] test policy::normalize::tests::shell_normalize_strips_ansi_c_dollar_quote ... ok
[INFO] [stdout] test policy::normalize::tests::unescape_drops_backslash_before_punctuation ... ok
[INFO] [stdout] test policy::normalize::tests::shell_normalize_composes_all_transforms ... ok
[INFO] [stdout] test policy::sensitive::tests::env_templates_are_not_egress_sources ... ok
[INFO] [stdout] test policy::sensitive::tests::anchored_groups_a_multi_fragment_alternation ... ok
[INFO] [stdout] test optimizer::kubectl::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test policy::sensitive::tests::hard_paths_agree_across_representations ... ok
[INFO] [stdout] test policy::sensitive::tests::sensitive_dirs_match_dir_and_children_only ... ok
[INFO] [stdout] test policy::tests::a_guard_that_declines_suppresses_its_rule ... ok
[INFO] [stdout] test policy::tests::action_serializes_lowercase ... ok
[INFO] [stdout] test policy::tests::allow_exception_cannot_target_project_rules ... ok
[INFO] [stdout] test policy::sensitive::tests::known_representation_divergences_are_pinned ... ok
[INFO] [stdout] test policy::tests::allow_exception_ignores_obfuscated_forms ... ok
[INFO] [stdout] test policy::tests::allow_exception_leaves_other_rules_alive ... ok
[INFO] [stdout] test policy::tests::allow_exception_never_touches_deny ... ok
[INFO] [stdout] test policy::tests::allow_exception_suppresses_named_rule_with_marker ... ok
[INFO] [stdout] test policy::tests::a_credential_path_inside_a_url_is_not_a_source ... ok
[INFO] [stdout] test policy::tests::base64_encoded_commands_still_fire ... ok
[INFO] [stdout] test policy::tests::approval_secret_read_asks ... ok
[INFO] [stdout] test policy::tests::builtin_names_has_28_rules ... ok
[INFO] [stdout] test policy::tests::builtins_all_ask_and_named ... ok
[INFO] [stdout] test policy::tests::compile_bad_regex_errors ... ok
[INFO] [stdout] test policy::tests::compile_rejects_bad_allow_entries ... ok
[INFO] [stdout] test policy::tests::any_tool_that_dumps_a_credential_asks ... ok
[INFO] [stdout] test policy::tests::compound_env_suffixes_are_egress_sources ... ok
[INFO] [stdout] test policy::tests::egress_only_paths_are_free_to_read ... ok
[INFO] [stdout] test policy::tests::egress_rules_are_not_approval_cache_eligible ... ok
[INFO] [stdout] test policy::tests::crontab_mentions_in_non_command_position_do_not_fire ... ok
[INFO] [stdout] test policy::tests::builtin_benign_twins_do_not_fire ... ok
[INFO] [stdout] test policy::tests::builtin_positives_fire ... ok
[INFO] [stdout] test policy::tests::empty_quotes_in_benign_commands_do_not_fire ... ok
[INFO] [stdout] test policy::tests::egress_rules_are_targetable_by_allow_exceptions ... ok
[INFO] [stdout] test policy::tests::env_inspection_stays_allowed ... ok
[INFO] [stdout] test policy::tests::env_dump_to_network_asks ... ok
[INFO] [stdout] test policy::tests::metadata_only_credential_commands_stay_allowed ... ok
[INFO] [stdout] test policy::tests::legitimate_network_commands_stay_allowed ... ok
[INFO] [stdout] test policy::tests::no_match_is_allow ... ok
[INFO] [stdout] test policy::tests::exfil_to_network_asks ... ok
[INFO] [stdout] test policy::tests::most_severe_wins_deny_over_ask ... ok
[INFO] [stdout] test optimizer::make::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test policy::tests::ordinary_recursive_deletes_stay_allowed ... ok
[INFO] [stdout] test policy::tests::obfuscated_commands_still_fire ... ok
[INFO] [stdout] test optimizer::tests::prop_collapse_noise_runs_does_not_panic ... ok
[INFO] [stdout] test policy::tests::resolve_ask_truth_table ... ok
[INFO] [stdout] test policy::tests::planting_a_credential_file_asks ... ok
[INFO] [stdout] test policy::tests::project_rules_compile_with_project_prefix ... ok
[INFO] [stdout] test policy::tests::quoted_argument_mentions_do_not_fire ... ok
[INFO] [stdout] test policy::tests::shred_covers_widened_credentials ... ok
[INFO] [stdout] test optimizer::terraform::tests::prop_optimize_does_not_panic ... ok
[INFO] [stdout] test policy::tests::relative_traversal_deletes_ask ... ok
[INFO] [stdout] test policy::tests::split_obfuscation_still_fires ... ok
[INFO] [stdout] test policy::tests::user_deny_rule_fires_with_reason ... ok
[INFO] [stdout] test policy::tests::vallum_self_disable_ignores_other_subcommands_and_quoted_mentions ... ok
[INFO] [stdout] test optimizer::tests::prop_collapse_noise_runs_line_count_bounded ... ok
[INFO] [stdout] test policy::tests::vallum_self_disable_rule_fires_on_nested_and_direct_forms ... ok
[INFO] [stdout] test policy::tests::wrapped_commands_still_fire ... ok
[INFO] [stdout] test policy::tests::wrapped_exfil_still_fires ... ok
[INFO] [stdout] test policy::tests::widened_credential_reads_ask ... ok
[INFO] [stdout] test policy::tests::wrappers_never_downgrade_a_firing_command_to_allow ... ok
[INFO] [stdout] test policy::tests::write_agent_config_allows_reads_and_source_copies ... ok
[INFO] [stdout] test policy::tests::write_launch_agents_asks_on_writes_and_load ... ok
[INFO] [stdout] test policy::tests::write_shell_profile_allows_reads_and_lookalikes ... ok
[INFO] [stdout] test policy::tests::write_crontab_asks_on_installs_allows_list ... ok
[INFO] [stdout] test policy::tests::write_agent_config_asks_on_writes ... ok
[INFO] [stdout] test policy::unwrap::tests::bundled_dash_c_flags_are_extracted ... ok
[INFO] [stdout] test policy::unwrap::tests::base64_only_decoded_when_decode_flag_present ... ok
[INFO] [stdout] test policy::unwrap::tests::dash_c_scan_does_not_cross_a_newline ... ok
[INFO] [stdout] test policy::tests::write_git_hooks_asks_on_writes_and_hookspath ... ok
[INFO] [stdout] test policy::unwrap::tests::decodes_standard_base64 ... ok
[INFO] [stdout] test policy::unwrap::tests::deduplicates_identical_views ... ok
[INFO] [stdout] test policy::unwrap::tests::echo_is_not_an_interpreter ... ok
[INFO] [stdout] test policy::unwrap::tests::encoded_payload_becomes_a_view ... ok
[INFO] [stdout] test policy::unwrap::tests::extracts_eval_payload ... ok
[INFO] [stdout] test policy::unwrap::tests::extracts_shell_dash_c_payload ... ok
[INFO] [stdout] test policy::tests::write_shell_profile_asks_on_writes ... ok
[INFO] [stdout] test policy::unwrap::tests::interpreter_after_a_pipe_is_extracted ... ok
[INFO] [stdout] test policy::unwrap::tests::interpreter_on_a_later_line_is_extracted ... ok
[INFO] [stdout] test policy::unwrap::tests::is_dash_c_flag_recognizes_bundles_only ... ok
[INFO] [stdout] test policy::unwrap::tests::obfuscated_interpreter_verb_is_unwrapped ... ok
[INFO] [stdout] test policy::unwrap::tests::path_qualified_interpreter_is_unwrapped ... ok
[INFO] [stdout] test policy::unwrap::tests::print_led_interpreter_mention_is_not_extracted ... ok
[INFO] [stdout] test policy::tests::write_vallum_config_asks_on_writes_not_reads ... ok
[INFO] [stdout] test policy::unwrap::tests::raw_line_is_always_view_zero ... ok
[INFO] [stdout] test policy::unwrap::tests::reads_bare_word ... ok
[INFO] [stdout] test policy::unwrap::tests::reads_single_quoted_word ... ok
[INFO] [stdout] test policy::tests::write_ssh_config_asks_on_writes_allows_reads ... ok
[INFO] [stdout] test policy::unwrap::tests::unwrapped_payload_becomes_a_view ... ok
[INFO] [stdout] test policy::unwrap::tests::wrapper_prefixed_interpreter_is_extracted ... ok
[INFO] [stdout] test mcp::scan::tests::injection_in_description_is_flagged ... ok
[INFO] [stdout] test policy::unwrap::tests::shell_normalized_form_becomes_a_view ... ok
[INFO] [stdout] test policy::tests::write_systemd_user_asks_on_writes_and_enable ... ok
[INFO] [stdout] test project_config::tests::symlinked_project_file_is_refused_without_reading_the_target ... ok
[INFO] [stdout] test project_config::tests::git_root_walk_finds_dotgit_dir_and_file ... ok
[INFO] [stdout] test project_config::tests::valid_file_parses_rules ... ok
[INFO] [stdout] test scan::tests::config_findings_flag_unknown_disabled_names ... ok
[INFO] [stdout] test scan::sarif::tests::sarif_shape_and_severity_mapping ... ok
[INFO] [stdout] test scan::tests::chain_finding_absent_log_is_none ... ok
[INFO] [stdout] test scan::tests::config_findings_include_rejected_project_file ... ok
[INFO] [stdout] test scan::tests::exit_code_matrix ... ok
[INFO] [stdout] test scrubber::entropy::tests::leaves_bare_commit_sha_alone ... ok
[INFO] [stdout] test scan::tests::split_paths_routes_known_mcp_names ... ok
[INFO] [stdout] test scrubber::entropy::tests::leaves_bare_uuid_alone ... ok
[INFO] [stdout] test scrubber::entropy::tests::leaves_git_log_block_alone ... ok
[INFO] [stdout] test scrubber::entropy::tests::leaves_low_entropy_values_alone ... ok
[INFO] [stdout] test scrubber::entropy::tests::leaves_pure_decimal_ids_alone ... ok
[INFO] [stdout] test scrubber::entropy::tests::leaves_rust_paths_alone ... ok
[INFO] [stdout] test scrubber::entropy::tests::leaves_value_just_under_min_length ... ok
[INFO] [stdout] test scrubber::entropy::tests::redaction_is_idempotent_on_its_own_output ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_dangling_separator_before_quoted_value ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_dashed_api_key ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_despite_double_separator ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_despite_trailing_separator ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_json_auth_token ... ok
[INFO] [stdout] test project_config::tests::rejection_reason_carries_no_file_content_and_no_control_chars ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_lowercase_password_assignment ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_pwd_and_session_keys ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_padded_quoted_value ... ok
[INFO] [stdout] test scrubber::entropy::tests::redacts_quoted_hex_secret_with_colon_separator ... ok
[INFO] [stdout] test scrubber::entropy::tests::url_and_path_guards ... ok
[INFO] [stdout] test project_config::tests::allow_action_and_bad_action_and_bad_regex_are_rejected ... ok
[INFO] [stdout] test project_config::tests::caps_are_enforced ... ok
[INFO] [stdout] test mcp::scan::tests::benign_description_is_not_flagged ... ok
[INFO] [stdout] test eval::tests::injection_metrics_math ... ok
[INFO] [stdout] test project_config::tests::every_forbidden_table_is_rejected_by_name ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_no_space_reveal_family ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_precomposed_accent_evasion ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_dan_persona ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_tr_prompt_loanword_reveal ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_no_space_ignore_family ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_fr_es_adjective_free_ignore ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_disregard_everything_above ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_zh_line_split_injection ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_unicode_evasions ... ok
[INFO] [stdout] test scrubber::injection::tests::en_persona_benign_not_flagged ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_pt_it_nl_hi_injection_families ... ok
[INFO] [stdout] test scrubber::injection::tests::fr_tr_benign_not_flagged ... ok
[INFO] [stdout] test scrubber::injection::tests::no_space_benign_passes ... ok
[INFO] [stdout] test scrubber::injection::tests::no_space_normalize_off_passes ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_zh_injection_families ... ok
[INFO] [stdout] test scrubber::injection::tests::no_space_reveal_normalize_off_passes ... ok
[INFO] [stdout] test scrubber::injection::tests::normalize_off_misses_homoglyph ... ok
[INFO] [stdout] test scrubber::injection::tests::no_space_reveal_benign_passes ... ok
[INFO] [stdout] test scrubber::injection::tests::normalize_off_preserves_accented_multilingual_detection ... ok
[INFO] [stdout] test scrubber::injection::tests::en_persona_broad_benign_not_flagged ... ok
[INFO] [stdout] test scrubber::injection::tests::normalize_on_detects_multilingual_shadow_variants ... ok
[INFO] [stdout] test scrubber::injection::tests::pt_it_nl_hi_benign_not_flagged ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_scaffold_and_hidden_markup_families ... ok
[INFO] [stdout] test scrubber::injection::tests::exfil_escalation_benign_not_flagged ... ok
[INFO] [stdout] test scrubber::injection::tests::detects_exfil_escalation_covert_families ... ok
[INFO] [stdout] test scrubber::injection::tests::test_benign_text_not_over_neutralized ... ok
[INFO] [stdout] test scrubber::injection::tests::test_looks_like_log_line ... ok
[INFO] [stdout] test scrubber::injection::tests::test_injection_consumes_trailing_payload ... ok
[INFO] [stdout] test scrubber::injection::tests::test_line_split_injection_detected ... ok
[INFO] [stdout] test scrubber::entropy::tests::prop_idempotent ... ok
[INFO] [stdout] test scrubber::injection::tests::scaffold_and_hidden_benign_not_flagged ... ok
[INFO] [stdout] test scrubber::injection::tests::test_scrub_injections_variants ... ok
[INFO] [stdout] test scrubber::injection::tests::test_turn_lines_value_like_pass_through ... ok
[INFO] [stdout] test scrubber::injection::tests::test_turn_lines_natural_language_neutralized ... ok
[INFO] [stdout] test scrubber::injection::tests::zh_benign_not_flagged ... ok
[INFO] [stdout] test scrubber::injection::tests::test_reveal_family_en_requires_directed_object ... ok
[INFO] [stdout] test scrubber::injection::tests::test_multilingual_injection_detected ... ok
[INFO] [stdout] test scrubber::normalize::tests::leaves_ordinary_text_and_whitespace_untouched ... ok
[INFO] [stdout] test policy::unwrap::tests::command_views_never_panics ... ok
[INFO] [stdout] test scrubber::markers::tests::defangs_whitespace_and_case_variants ... ok
[INFO] [stdout] test scrubber::markers::tests::defangs_exact_markers ... ok
[INFO] [stdout] test scrubber::injection::tests::test_reveal_family_multilingual_precision ... ok
[INFO] [stdout] test scrubber::normalize::tests::prop_detection_shadow_ascii_is_ascii_lowercase ... ok
[INFO] [stdout] test scrubber::normalize::tests::shadow_ascii_fast_path_equals_ascii_lowercase ... ok
[INFO] [stdout] test scrubber::normalize::tests::shadow_folds_cyrillic_confusables ... ok
[INFO] [stdout] test scrubber::normalize::tests::shadow_folds_fullwidth_and_math_to_ascii ... ok
[INFO] [stdout] test scrubber::normalize::tests::shadow_lowercases ... ok
[INFO] [stdout] test scrubber::normalize::tests::shadow_strips_combining_marks ... ok
[INFO] [stdout] test scrubber::normalize::tests::shadow_strips_marks_exposed_by_case_and_decomposition ... ok
[INFO] [stdout] test scrubber::normalize::tests::strip_invisible_is_idempotent ... ok
[INFO] [stdout] test scrubber::normalize::tests::strips_zero_width_and_bidi ... ok
[INFO] [stdout] test scrubber::pii::alias::tests::alias_shape_is_bracketed_tag_and_8_hex ... ok
[INFO] [stdout] test scrubber::pii::alias::tests::category_is_a_domain_separator ... ok
[INFO] [stdout] test scrubber::entropy::tests::prop_does_not_panic ... ok
[INFO] [stdout] test scrubber::pii::alias::tests::category_tag_roundtrips ... ok
[INFO] [stdout] test scrubber::pii::alias::tests::different_keys_produce_different_aliases ... ok
[INFO] [stdout] test scrubber::pii::alias::tests::different_values_differ ... ok
[INFO] [stdout] test scrubber::pii::alias::tests::email_case_is_normalized ... ok
[INFO] [stdout] test scrubber::pii::alias::tests::same_value_same_alias ... ok
[INFO] [stdout] test scrubber::pii::alias::tests::separators_are_normalized_away ... ok
[INFO] [stdout] test scrubber::normalize::tests::prop_detection_shadow_is_idempotent ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::bare_card_without_a_key_name_is_not_redacted ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::finds_emails ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::compact_iban_span_excludes_the_following_word ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::finds_tr_mobile_in_several_formats ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::finds_valid_card_with_and_without_spaces ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::finds_grouped_iban_and_stops_at_its_true_end ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::finds_valid_iban ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::finds_valid_tckn ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::ignores_invalid_tckn_checkdigits ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::ignores_bare_digit_runs_without_a_phone_anchor ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::ignores_luhn_valid_run_without_a_known_iin ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::ignores_non_email_at_signs ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::ignores_tampered_iban ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::respects_the_active_category_list ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::phone_never_wins_over_a_valid_tckn ... ok
[INFO] [stdout] test scrubber::pii::detect::tests::spans_are_byte_accurate_for_multibyte_input ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::a_prose_line_with_a_comma_is_not_treated_as_a_header ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::context_free_categories_need_no_key_name ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::csv_header_gives_context_to_every_row_not_just_the_first ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::csv_context_is_scoped_to_the_named_column ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::keeps_a_tckn_in_ordinary_prose ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::positive_context_is_detected_from_key_names ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::suppresses_digits_inside_a_git_sha ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::neutral_text_yields_no_candidate_for_context_gated_categories ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::suppresses_digits_inside_a_uuid ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::suppresses_semver_like_runs ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::suppresses_file_line_column_positions ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::suppresses_hex_prefixed_values ... ok
[INFO] [stdout] test scrubber::pii::span::tests::apply_replaces_in_order_and_preserves_surroundings ... ok
[INFO] [stdout] test scrubber::pii::span::tests::apply_handles_multiple_spans ... ok
[INFO] [stdout] test scrubber::pii::span::tests::apply_with_no_spans_is_identity ... ok
[INFO] [stdout] test scrubber::pii::span::tests::non_overlapping_spans_all_survive ... ok
[INFO] [stdout] test scrubber::pii::gate::tests::technical_key_names_do_not_count_as_positive_context ... ok
[INFO] [stdout] test scrubber::pii::span::tests::longer_beats_shorter_when_both_validated ... ok
[INFO] [stdout] test scrubber::pii::span::tests::partial_overlap_drops_the_loser_entirely ... ok
[INFO] [stdout] test scrubber::pii::span::tests::validated_beats_unvalidated_on_overlap ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::iban_length_table_is_enforced_for_known_countries ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::iban_mod97_rejects_malformed ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::iban_mod97_accepts_published_example ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::tckn_accepts_derived_vector ... ok
[INFO] [stdout] test scrubber::pii::span::tests::priority_breaks_remaining_ties ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::tckn_accepts_independent_published_vector ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::tckn_rejects_bad_checkdigits_leading_zero_and_wrong_length ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::luhn_accepts_valid_and_rejects_tampered ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::vkn_roundtrips_its_own_checkdigit ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::tckn_rejects_all_same_digit ... ok
[INFO] [stdout] test scrubber::pii::validate::tests::vkn_rejects_wrong_length ... ok
[INFO] [stdout] test scrubber::secrets::tests::over_length_fixed_count_keys_do_not_leak_a_suffix ... ok
[INFO] [stdout] test scrubber::secrets::tests::batch_3_prefixes_do_not_eat_prose ... ok
[INFO] [stdout] test scrubber::secrets::tests::entropy_stage_can_be_disabled ... ok
[INFO] [stdout] test scrubber::secrets::tests::scrubs_more_provider_formats ... ok
[INFO] [stdout] test scrubber::markers::tests::prop_defang_strips_exact_markers ... ok
[INFO] [stdout] test scrubber::secrets::tests::scrubs_provider_formats_batch_2 ... ok
[INFO] [stdout] test scrubber::secrets::tests::sk_ant_key_is_not_double_masked ... ok
[INFO] [stdout] test scrubber::secrets::tests::scrubs_provider_formats_batch_3 ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_env_assignment_ignores_short_prose ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_scrub_bare_jwt ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_scrub_connection_string_password ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_scrub_custom_secret_pattern ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_scrub_env_assignment ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_scrub_additional_provider_formats ... ok
[INFO] [stdout] test scrubber::normalize::tests::prop_strip_invisible_does_not_panic ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_scrub_extended_secret_formats ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_scrub_new_secret_formats ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_twilio_sid_does_not_eat_prose ... ok
[INFO] [stdout] test scrubber::tests::defaults_enables_entropy_and_normalize ... ok
[INFO] [stdout] test scrubber::secrets::tests::test_scrub_secrets ... ok
[INFO] [stdout] test scrubber::tests::injection_hidden_behind_secret_mask_is_neutralized ... ok
[INFO] [stdout] test executor::tests::test_timeout_kills_child ... ok
[INFO] [stdout] test scrubber::tests::redact_masks_secrets_without_wrapper ... ok
[INFO] [stdout] test scrubber::tests::sanitize_keeps_invisible_when_normalize_off ... ok
[INFO] [stdout] test scrubber::tests::sanitize_strips_zero_width_when_normalize_on ... ok
[INFO] [stdout] test scrubber::tests::scrub_options_from_config_reads_named_fields ... ok
[INFO] [stdout] test scrubber::normalize::tests::prop_strip_invisible_only_removes_target_set ... ok
[INFO] [stdout] test scrubber::tests::strict_blocks_output_on_injection ... ok
[INFO] [stdout] test scrubber::tests::strict_passes_clean_output_through ... ok
[INFO] [stdout] test scrubber::tests::secret_and_injection_on_separate_lines_both_handled ... ok
[INFO] [stdout] test scrubber::tests::with_strict_only_escalates ... ok
[INFO] [stdout] test skills::discover::tests::aux_targets_collected_under_skill_root ... ok
[INFO] [stdout] test skills::discover::tests::aux_walk_skips_symlinked_files ... ok
[INFO] [stdout] test skills::discover::tests::classify_recognizes_names ... ok
[INFO] [stdout] test scrubber::tests::test_marker_spoofing_is_defanged ... ok
[INFO] [stdout] test skills::discover::tests::explicit_skill_md_file_does_not_pull_aux_siblings ... ok
[INFO] [stdout] test skills::discover::tests::known_targets_nonempty ... ok
[INFO] [stdout] test skills::discover::tests::context_file_inside_skill_package_gets_skill_root ... ok
[INFO] [stdout] test skills::discover::tests::nested_skill_root_files_belong_to_nearest_root_only ... ok
[INFO] [stdout] test skills::discover::tests::no_aux_collection_without_skill_md ... ok
[INFO] [stdout] test skills::discover::tests::resolve_explicit_absent_path_is_reported_missing ... ok
[INFO] [stdout] test skills::discover::tests::resolve_explicit_empty_dir_is_reported_missing ... ok
[INFO] [stdout] test skills::discover::tests::resolve_explicit_dir_walks_recognized_files ... ok
[INFO] [stdout] test skills::discover::tests::resolve_explicit_file_is_classified ... ok
[INFO] [stdout] test skills::discover::tests::symlinked_skill_md_does_not_hide_a_subdir_from_aux_scan ... ok
[INFO] [stdout] test skills::discover::tests::symlinked_walk_root_is_not_followed ... ok
[INFO] [stdout] test skills::model::tests::aux_doc_display_is_skillname_slash_relpath ... ok
[INFO] [stdout] test skills::model::tests::aux_doc_wraps_whole_file_in_one_shell_fence ... ok
[INFO] [stdout] test skills::model::tests::aux_doc_markdown_file_is_fence_parsed_not_synthetic ... ok
[INFO] [stdout] test skills::model::tests::display_name_is_file_name_for_context ... ok
[INFO] [stdout] test skills::model::tests::display_name_is_parent_dir_for_skill_md ... ok
[INFO] [stdout] test skills::model::tests::extracts_fenced_block_with_lang ... ok
[INFO] [stdout] test scrubber::normalize::tests::prop_detection_shadow_does_not_panic ... ok
[INFO] [stdout] test skills::model::tests::start_line_points_at_first_content_line ... ok
[INFO] [stdout] test skills::model::tests::parse_doc_skill_root_defaults_none ... ok
[INFO] [stdout] test skills::model::tests::raw_is_preserved_verbatim ... ok
[INFO] [stdout] test skills::report::tests::clean_scan_with_binary_skips_prints_count ... ok
[INFO] [stdout] test skills::model::tests::tilde_fence_and_empty_info_string ... ok
[INFO] [stdout] test skills::report::tests::control_chars_are_escaped ... ok
[INFO] [stdout] test skills::report::tests::usage_error_suppresses_clean_line_but_not_skip_count ... ok
[INFO] [stdout] test skills::model::tests::unclosed_fence_runs_to_eof ... ok
[INFO] [stdout] test skills::report::tests::clean_scan_without_binary_skips_has_no_count_line ... ok
[INFO] [stdout] test optimizer::grep::tests::prop_output_never_longer_in_lines ... ok
[INFO] [stdout] test skills::scan::tests::benign_fence_is_not_flagged ... ok
[INFO] [stdout] test skills::scan::tests::comment_lines_in_bash_fence_are_skipped ... ok
[INFO] [stdout] test skills::scan::tests::combined_injection_and_command_yields_high ... ok
[INFO] [stdout] test skills::scan::tests::console_prompt_lines_are_evaluated_output_is_not ... ok
[INFO] [stdout] test skills::scan::tests::curl_pipe_sh_in_bash_fence_is_flagged ... ok
[INFO] [stdout] test skills::scan::tests::cross_file_injection_plus_command_yields_one_skill_level_high ... ok
[INFO] [stdout] test skills::scan::tests::injection_alone_yields_no_combined ... ok
[INFO] [stdout] test skills::scan::tests::fence_command_skipped_when_policy_none ... ok
[INFO] [stdout] test skills::scan::tests::docs_without_skill_root_get_no_skill_level_composite ... ok
[INFO] [stdout] test skills::scan::tests::invisible_unicode_is_flagged ... ok
[INFO] [stdout] test skills::scan::tests::leading_bom_is_not_flagged ... ok
[INFO] [stdout] test skills::scan::tests::non_shell_fence_is_ignored ... ok
[INFO] [stdout] test skills::scan::tests::inline_backtick_command_is_flagged ... ok
[INFO] [stdout] test skills::scan::tests::injection_prose_is_flagged ... ok
[INFO] [stdout] test skills::scan::tests::secret_in_prose_is_flagged_and_masked ... ok
[INFO] [stdout] test skills::tests::aux_non_utf8_nonbinary_ext_yields_warning_finding_not_125 ... ok
[INFO] [stdout] test skills::tests::clean_exits_zero ... ok
[INFO] [stdout] test skills::tests::aux_binary_extension_is_skipped_and_counted ... ok
[INFO] [stdout] test skills::scan::tests::duplicate_target_yields_exactly_one_combined ... ok
[INFO] [stdout] test skills::tests::high_exits_twenty ... ok
[INFO] [stdout] test skills::tests::collect_returns_report_and_usage_flag ... ok
[INFO] [stdout] test skills::tests::run_scan_on_missing_explicit_path_is_125 ... ok
[INFO] [stdout] test skills::tests::usage_error_forces_125 ... ok
[INFO] [stdout] test skills::scan::tests::same_file_composite_does_not_double_with_skill_level ... ok
[INFO] [stdout] test skills::tests::warning_exits_ten ... ok
[INFO] [stdout] test stats::tests::tolerant_parse_skips_corrupt_lines ... ok
[INFO] [stdout] test tokenizer::tests::symbols_counted_separately ... ok
[INFO] [stdout] test tokenizer::tests::unicode_word_is_one_token ... ok
[INFO] [stdout] test stats::tests::top_n_sorted_by_absolute_savings ... ok
[INFO] [stdout] test tokenizer::tests::words_counted ... ok
[INFO] [stdout] test stats::tests::aggregate_savings_total ... ok
[INFO] [stdout] test truncator::tests::cap_is_utf8_safe ... ok
[INFO] [stdout] test truncator::tests::caps_overlong_line_on_char_boundary ... ok
[INFO] [stdout] test tokenizer::tests::empty_is_zero ... ok
[INFO] [stdout] test eval::tests::render_has_secrets_missed_section ... ok
[INFO] [stdout] test truncator::tests::short_line_untouched_and_zero_disables ... ok
[INFO] [stdout] test truncator::tests::smart_truncate_applies_line_cap ... ok
[INFO] [stdout] test truncator::tests::test_error_kept_in_place_with_context ... ok
[INFO] [stdout] test truncator::tests::test_no_false_positive_on_no_errors_phrase ... ok
[INFO] [stdout] test truncator::tests::test_truncate_short_output ... ok
[INFO] [stdout] test update::tests::detects_install_method_from_path ... ok
[INFO] [stdout] test update::tests::parses_latest_from_sparse_index ... ok
[INFO] [stdout] test update::tests::upgrade_command_per_method ... ok
[INFO] [stdout] test update::tests::version_comparison ... ok
[INFO] [stdout] test welcome::tests::color_render_paints_title_and_markers ... ok
[INFO] [stdout] test welcome::tests::guardrail_off_and_unknown_variants ... ok
[INFO] [stdout] test welcome::tests::guardrail_one_rule_is_singular ... ok
[INFO] [stdout] test welcome::tests::guardrail_state_from_config_result ... ok
[INFO] [stdout] test welcome::tests::hook_state_classifies_all_four_cases ... ok
[INFO] [stdout] test welcome::tests::plain_render_contains_no_escape_codes ... ok
[INFO] [stdout] test welcome::tests::plain_render_matches_spec_layout_exactly ... ok
[INFO] [stdout] test welcome::tests::unknown_hook_state_renders_question_mark ... ok
[INFO] [stdout] test whitespace::tests::collapse_triple_blank_to_single ... ok
[INFO] [stdout] test whitespace::tests::preserve_double_blank ... ok
[INFO] [stdout] test whitespace::tests::preserve_meaningful_indent ... ok
[INFO] [stdout] test scrubber::secrets::tests::prop_scrub_secrets_does_not_panic ... ok
[INFO] [stdout] test eval::tests::render_is_deterministic_and_labeled ... ok
[INFO] [stdout] test whitespace::tests::strip_trailing_spaces ... ok
[INFO] [stdout] test scrubber::secrets::tests::prop_scrub_secrets_idempotent ... ok
[INFO] [stdout] test eval::tests::report_has_category_breakdown ... ok
[INFO] [stdout] test whitespace::tests::prop_collapse_no_quad_newline ... ok
[INFO] [stdout] test whitespace::tests::prop_collapse_does_not_panic ... ok
[INFO] [stdout] test truncator::tests::prop_cap_line_length_bounded ... ok
[INFO] [stdout] test truncator::tests::prop_cap_line_length_zero_is_identity ... ok
[INFO] [stdout] test truncator::tests::prop_cap_line_length_does_not_panic ... ok
[INFO] [stdout] test truncator::tests::prop_smart_truncate_does_not_panic ... ok
[INFO] [stdout] test scrubber::injection::tests::prop_scrub_injections_does_not_panic ... ok
[INFO] [stdout] test scrubber::injection::tests::prop_scrub_injections_no_alpha_means_no_detection ... ok
[INFO] [stdout] test scrubber::injection::tests::prop_no_detection_means_output_unchanged ... ok
[INFO] [stdout] test scrubber::tests::prop_sanitize_has_exactly_one_end_marker ... ok
[INFO] [stdout] test scrubber::tests::prop_sanitize_does_not_panic ... ok
[INFO] [stdout] test scrubber::tests::prop_sanitize_output_is_wrapped ... ok
[INFO] [stdout] test policy::tests::evaluate_never_panics ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- logchain::tests::verify_file_unreadable_dir_is_error_not_absent stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'logchain::tests::verify_file_unreadable_dir_is_error_not_absent' (1644) panicked at src/logchain.rs:502:9:
[INFO] [stdout] dir-level EACCES must be an error, not absence
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5baf81ea7521 - std[617be2ca0a6fd877]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5baf81ea7521 - std[617be2ca0a6fd877]::backtrace_rs::backtrace::trace_unsynchronized::<std[617be2ca0a6fd877]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5baf81ea7521 - std[617be2ca0a6fd877]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5baf81ea7521 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5baf81ebfb5a - <core[a373ad73a504971]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5baf81ebfb5a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    6:     0x5baf81eac0bc - core[a373ad73a504971]::io::write::default_write_fmt::<alloc[2e1b2a31b91974c5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x5baf81eac0bc - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x5baf81e7ef46 - <std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5baf81e7ef46 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:289:27
[INFO] [stdout]   10:     0x5baf81e9d479 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:313:9
[INFO] [stdout]   11:     0x5baf81af8010 - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn for<'a, 'b> core[a373ad73a504971]::ops::function::Fn<(&'a std[617be2ca0a6fd877]::panic::PanicHookInfo<'b>,), Output = ()> + core[a373ad73a504971]::marker::Sync + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::Fn<(&std[617be2ca0a6fd877]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2328:9
[INFO] [stdout]   12:     0x5baf81af8010 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:137:21
[INFO] [stdout]   13:     0x5baf81e9d632 - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn for<'a, 'b> core[a373ad73a504971]::ops::function::Fn<(&'a std[617be2ca0a6fd877]::panic::PanicHookInfo<'b>,), Output = ()> + core[a373ad73a504971]::marker::Sync + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::Fn<(&std[617be2ca0a6fd877]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2328:9
[INFO] [stdout]   14:     0x5baf81e9d632 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:819:13
[INFO] [stdout]   15:     0x5baf81e7f024 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:678:13
[INFO] [stdout]   16:     0x5baf81e778c9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5baf81e7fe9d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:676:5
[INFO] [stdout]   18:     0x5baf81ec03fc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5baf818bc704 - vallum[9690fd04773723c0]::logchain::tests::verify_file_unreadable_dir_is_error_not_absent
[INFO] [stdout]                                at /opt/rustwide/workdir/src/logchain.rs:502:9
[INFO] [stdout]   20:     0x5baf818a6337 - vallum[9690fd04773723c0]::logchain::tests::verify_file_unreadable_dir_is_error_not_absent::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/logchain.rs:492:56
[INFO] [stdout]   21:     0x5baf817956e6 - <vallum[9690fd04773723c0]::logchain::tests::verify_file_unreadable_dir_is_error_not_absent::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x5baf81aeb45b - <fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5baf81aeb45b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:701:18
[INFO] [stdout]   24:     0x5baf81af8635 - test[aada8e7e76ba119b]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:724:74
[INFO] [stdout]   25:     0x5baf81af8635 - <core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x5baf81af8635 - std[617be2ca0a6fd877]::panicking::catch_unwind::do_call::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>, core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
[INFO] [stdout]   27:     0x5baf81af8635 - std[617be2ca0a6fd877]::panicking::catch_unwind::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
[INFO] [stdout]   28:     0x5baf81af8635 - std[617be2ca0a6fd877]::panic::catch_unwind::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>, core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x5baf81af8635 - test[aada8e7e76ba119b]::run_test_in_process
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:724:27
[INFO] [stdout]   30:     0x5baf81af8635 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:645:43
[INFO] [stdout]   31:     0x5baf81af1f24 - test[aada8e7e76ba119b]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:675:41
[INFO] [stdout]   32:     0x5baf81af1f24 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x5baf81afb6c2 - std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x5baf81afb6c2 - <core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x5baf81afb6c2 - std[617be2ca0a6fd877]::panicking::catch_unwind::do_call::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
[INFO] [stdout]   36:     0x5baf81afb6c2 - std[617be2ca0a6fd877]::panicking::catch_unwind::<(), core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
[INFO] [stdout]   37:     0x5baf81afb6c2 - std[617be2ca0a6fd877]::panic::catch_unwind::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x5baf81afb6c2 - std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x5baf81afb6c2 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x5baf81ea646f - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn core[a373ad73a504971]::ops::function::FnOnce<(), Output = ()> + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2314:9
[INFO] [stdout]   41:     0x5baf81ea646f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   42:     0x7c48d9414dfa - <unknown>
[INFO] [stdout]   43:     0x7c48d94a83d4 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     logchain::tests::verify_file_unreadable_dir_is_error_not_absent
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 781 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.18s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b", kill_on_drop: false }`
[INFO] [stdout] 225cfcf681477d27e49c53e1f74f8443ef182a2ef0c16f42d9aaaf3a82cce30b
