[INFO] cloning repository https://github.com/pleme-io/guardrail
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/pleme-io/guardrail" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpleme-io%2Fguardrail", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpleme-io%2Fguardrail'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4db3ca6e24de7d6ba2c8f372d4d61ebd39859502
[INFO] testing pleme-io/guardrail against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpleme-io%2Fguardrail" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/pleme-io/guardrail
[INFO] finished tweaking git repo https://github.com/pleme-io/guardrail
[INFO] tweaked toml for git repo https://github.com/pleme-io/guardrail written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/pleme-io/guardrail on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/pleme-io/guardrail 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.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e
[INFO] running `Command { std: "docker" "start" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e", 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" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e", 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" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling hayai v0.1.1
[INFO] [stderr]    Compiling guardrail v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/model.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 |             _ => Self::Allow,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/model.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |             Severity::Block => Self::Block {
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 207 |             Severity::Warn => Self::Warn {
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 211 |             _ => Self::Allow,
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.73s
[INFO] running `Command { std: "docker" "inspect" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e", 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" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling assert_cmd v2.2.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling hayai v0.1.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling guardrail v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/model.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 |             _ => Self::Allow,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/model.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |             Severity::Block => Self::Block {
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 207 |             Severity::Warn => Self::Warn {
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 211 |             _ => Self::Allow,
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/model.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 |             _ => Self::Allow,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/model.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |             Severity::Block => Self::Block {
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 207 |             Severity::Warn => Self::Warn {
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 211 |             _ => Self::Allow,
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 11.88s
[INFO] running `Command { std: "docker" "inspect" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e", 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" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/model.rs:211:13
[INFO] [stderr]     |
[INFO] [stderr] 211 |             _ => Self::Allow,
[INFO] [stderr]     |             ^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr] note: multiple earlier patterns match some of the same values
[INFO] [stderr]    --> src/model.rs:211:13
[INFO] [stderr]     |
[INFO] [stderr] 203 |             Severity::Block => Self::Block {
[INFO] [stderr]     |             --------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 207 |             Severity::Warn => Self::Warn {
[INFO] [stderr]     |             -------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 211 |             _ => Self::Allow,
[INFO] [stderr]     |             ^ collectively making this unreachable
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `guardrail` (lib) generated 1 warning
[INFO] [stderr] warning: `guardrail` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/guardrail-d648acc2bd2010fa)
[INFO] [stdout] 
[INFO] [stdout] running 407 tests
[INFO] [stdout] test cache::tests::cache_hit_skips_resolution ... ok
[INFO] [stdout] test biometric::tests::non_interactive_always_denies ... ok
[INFO] [stdout] test cache::tests::fs_cache_default_path_contains_guardrail ... ok
[INFO] [stdout] test cache::tests::cache_miss_resolves_and_saves ... ok
[INFO] [stdout] test cache::tests::fixed_fingerprinter ... ok
[INFO] [stdout] test biometric::tests::authenticate_returns_bool ... ok
[INFO] [stdout] test cache::tests::fs_cache_default_path_ends_with_compiled_json ... ok
[INFO] [stdout] test cache::tests::fs_cache_load_missing_file ... ok
[INFO] [stdout] test cache::tests::fs_cache_empty_rules ... ok
[INFO] [stdout] test cache::tests::fs_cache_load_corrupt_file ... ok
[INFO] [stdout] test cache::tests::fs_cache_preserves_test_block_allow ... ok
[INFO] [stdout] test cache::tests::fs_fingerprinter_deterministic ... ok
[INFO] [stdout] test cache::tests::fs_fingerprinter_missing_paths ... ok
[INFO] [stdout] test cache::tests::mem_cache_empty_returns_none ... ok
[INFO] [stdout] test cache::tests::resolve_cached_propagates_resolver_error ... ok
[INFO] [stdout] test cache::tests::stale_cache_resolves_fresh ... ok
[INFO] [stdout] test cache::tests::resolve_cached_resolver_error_does_not_populate_cache ... ok
[INFO] [stdout] test cache::tests::fs_cache_save_and_load ... ok
[INFO] [stdout] test cache::tests::resolve_cached_with_fs_cache ... ok
[INFO] [stdout] test cache::tests::fs_cache_overwrite_updates_fingerprint ... ok
[INFO] [stdout] test config::tests::config_path_ends_with_yaml ... ok
[INFO] [stdout] test config::tests::akeyless_suite_parses ... ok
[INFO] [stdout] test config::tests::config_dir_respects_xdg ... ok
[INFO] [stdout] test config::tests::directory_provider_empty_dir ... ok
[INFO] [stdout] test config::tests::aws_suite_parses ... ok
[INFO] [stdout] test config::tests::azure_suite_parses ... ok
[INFO] [stdout] test config::tests::directory_provider_loads_yaml ... ok
[INFO] [stdout] test config::tests::directory_provider_ignores_non_yaml_files ... ok
[INFO] [stdout] test config::tests::directory_provider_missing_dir ... ok
[INFO] [stdout] test config::tests::directory_provider_invalid_yaml_returns_error ... ok
[INFO] [stdout] test config::tests::mock_provider ... ok
[INFO] [stdout] test config::tests::load_user_config_missing_file_returns_default ... ok
[INFO] [stdout] test config::tests::directory_provider_deterministic_order ... ok
[INFO] [stdout] test config::tests::directory_provider_loads_multiple_files ... ok
[INFO] [stdout] test config::tests::directory_provider_loads_yml_extension ... ok
[INFO] [stdout] test config::tests::load_user_config_empty_object ... ok
[INFO] [stdout] test config::tests::resolve_appends_extra_rules ... ok
[INFO] [stdout] test config::tests::load_user_config_invalid_yaml_returns_error ... ok
[INFO] [stdout] test cache::tests::fs_fingerprinter_changes_with_file_modification ... ok
[INFO] [stdout] test config::tests::load_user_config_valid_yaml ... ok
[INFO] [stdout] test config::tests::nosql_suite_parses ... ok
[INFO] [stdout] test cache::tests::fs_cache_creates_parent_dirs ... ok
[INFO] [stdout] test config::tests::gcp_suite_parses ... ok
[INFO] [stdout] test config::tests::network_suite_parses ... ok
[INFO] [stdout] test config::tests::load_user_config_empty_file ... ok
[INFO] [stdout] test config::tests::resolve_applies_category_toggle ... ok
[INFO] [stdout] test config::tests::resolve_disabled_extra_rules ... ok
[INFO] [stdout] test config::tests::resolve_extra_rules_respect_category_toggle ... ok
[INFO] [stdout] test config::tests::resolve_merges_multiple_providers ... ok
[INFO] [stdout] test config::tests::resolve_multiple_category_toggles ... ok
[INFO] [stdout] test config::tests::resolve_propagates_provider_error ... ok
[INFO] [stdout] test config::tests::rules_dir_is_child_of_config_dir ... ok
[INFO] [stdout] test config::tests::resolve_fails_on_first_bad_provider ... ok
[INFO] [stdout] test config::tests::rules_dir_ends_with_rules_d ... ok
[INFO] [stdout] test config::tests::xdg_dir_fallback_includes_suffix ... ok
[INFO] [stdout] test config::tests::defaults_parse ... ok
[INFO] [stdout] test config::tests::resolve_with_no_providers ... ok
[INFO] [stdout] test config::tests::xdg_dir_uses_env_var_when_set ... ok
[INFO] [stdout] test config::tests::resolve_applies_disabled_rules ... ok
[INFO] [stdout] test config::tests::resolve_rules_legacy ... ok
[INFO] [stdout] test engine::tests::block_before_warn_in_rule_order ... ok
[INFO] [stdout] test config::tests::process_suite_parses ... ok
[INFO] [stdout] test config::tests::defaults_have_all_categories ... ok
[INFO] [stdout] test engine::tests::category_display ... ok
[INFO] [stdout] test engine::tests::chained_normalizer_identity_is_noop ... ok
[INFO] [stdout] test config::tests::empty_config_returns_all_defaults ... ok
[INFO] [stdout] test config::tests::sql_suite_parses ... ok
[INFO] [stdout] test engine::tests::chained_normalizer_only_second_transforms ... ok
[INFO] [stdout] test engine::tests::chained_normalizer_chains_path_and_sql ... ok
[INFO] [stdout] test engine::tests::chained_normalizer_borrows_when_clean ... ok
[INFO] [stdout] test engine::tests::chained_normalizer_only_first_transforms ... ok
[INFO] [stdout] test engine::tests::block_takes_priority_over_warn ... ok
[INFO] [stdout] test engine::tests::contains_ascii_ci_empty ... ok
[INFO] [stdout] test engine::tests::contains_ascii_ci_matches ... ok
[INFO] [stdout] test engine::tests::decision_display_allow ... ok
[INFO] [stdout] test engine::tests::contains_ascii_ci_no_match ... ok
[INFO] [stdout] test engine::tests::decision_display_block ... ok
[INFO] [stdout] test engine::tests::decision_display_warn ... ok
[INFO] [stdout] test config::tests::all_suites_have_unique_rule_names ... ok
[INFO] [stdout] test engine::tests::branch_force_delete_warned ... ok
[INFO] [stdout] test engine::tests::alter_add_col_allowed ... ok
[INFO] [stdout] test engine::tests::bin_rm_blocked ... ok
[INFO] [stdout] test engine::tests::dd_disk_blocked ... ok
[INFO] [stdout] test engine::tests::backtick_date_allowed ... ok
[INFO] [stdout] test engine::tests::branch_delete_allowed ... ok
[INFO] [stdout] test engine::tests::delete_no_where_blocked ... ok
[INFO] [stdout] test engine::tests::bash_c_var_warned ... ok
[INFO] [stdout] test engine::tests::delete_with_where_allowed ... ok
[INFO] [stdout] test engine::tests::create_not_blocked ... ok
[INFO] [stdout] test engine::tests::clean_force_warned ... ok
[INFO] [stdout] test engine::tests::docker_build_allowed ... ok
[INFO] [stdout] test engine::tests::docker_system_prune_warned ... ok
[INFO] [stdout] test engine::tests::dd_file_allowed ... ok
[INFO] [stdout] test engine::tests::docker_volume_prune_warned ... ok
[INFO] [stdout] test engine::tests::backtick_rm_warned ... ok
[INFO] [stdout] test engine::tests::delete_block_comment ... ok
[INFO] [stdout] test engine::tests::drop_database_blocked ... ok
[INFO] [stdout] test engine::tests::actual_mkfs_still_blocked ... ok
[INFO] [stdout] test engine::tests::delete_from_semicolon ... ok
[INFO] [stdout] test engine::tests::create_table_allowed ... ok
[INFO] [stdout] test engine::tests::empty_rules_engine ... ok
[INFO] [stdout] test engine::tests::drop_schema_blocked ... ok
[INFO] [stdout] test engine::tests::drop_table_multiline ... ok
[INFO] [stdout] test engine::tests::drop_table_single_quotes ... ok
[INFO] [stdout] test engine::tests::drop_table_lower_blocked ... ok
[INFO] [stdout] test engine::tests::echo_dollar_home_allowed ... ok
[INFO] [stdout] test engine::tests::engine_debug_impl ... ok
[INFO] [stdout] test engine::tests::echo_normal_allowed ... ok
[INFO] [stdout] test engine::tests::echo_token_warned ... ok
[INFO] [stdout] test engine::tests::empty_command_allowed ... ok
[INFO] [stdout] test engine::tests::drop_table_pipe ... ok
[INFO] [stdout] test engine::tests::engine_with_null_prefilter_checks_everything ... ok
[INFO] [stdout] test engine::tests::engine_with_identity_normalizer_no_nix_strip ... ok
[INFO] [stdout] test engine::tests::drop_sneaky_comment ... ok
[INFO] [stdout] test engine::tests::flux_reconcile_allowed ... ok
[INFO] [stdout] test engine::tests::flux_get_allowed ... ok
[INFO] [stdout] test engine::tests::identity_normalizer_is_noop ... ok
[INFO] [stdout] test engine::tests::force_push_bare_blocked ... ok
[INFO] [stdout] test engine::tests::engine_compiles_all_defaults ... ok
[INFO] [stdout] test engine::tests::invalid_regex_rejected ... ok
[INFO] [stdout] test engine::tests::drop_table_heredoc ... ok
[INFO] [stdout] test engine::tests::drop_table_blocked ... ok
[INFO] [stdout] test engine::tests::force_push_main_blocked ... ok
[INFO] [stdout] test engine::tests::force_push_feature_allowed ... ok
[INFO] [stdout] test engine::tests::drop_table_block_comment ... ok
[INFO] [stdout] test engine::tests::force_push_master_blocked ... ok
[INFO] [stdout] test engine::tests::multiple_warn_returns_first ... ok
[INFO] [stdout] test engine::tests::flux_uninstall_blocked ... ok
[INFO] [stdout] test engine::tests::helm_uninstall_staging_allowed ... ok
[INFO] [stdout] test engine::tests::drop_table_double_quotes ... ok
[INFO] [stdout] test engine::tests::indirect_eval_var_warned ... ok
[INFO] [stdout] test engine::tests::drop_table_e_flag ... ok
[INFO] [stdout] test engine::tests::kubectl_delete_ns_blocked ... ok
[INFO] [stdout] test engine::tests::no_match_returns_allow ... ok
[INFO] [stdout] test engine::tests::null_prefilter_never_safe ... ok
[INFO] [stdout] test engine::tests::helm_uninstall_prod_blocked ... ok
[INFO] [stdout] test engine::tests::path_normalizer_borrows_when_no_path ... ok
[INFO] [stdout] test engine::tests::path_normalizer_empty_input ... ok
[INFO] [stdout] test engine::tests::path_normalizer_strips_bin ... ok
[INFO] [stdout] test engine::tests::path_normalizer_multiple_standard_paths ... ok
[INFO] [stdout] test engine::tests::path_normalizer_strips_multiple_nix_paths ... ok
[INFO] [stdout] test engine::tests::path_normalizer_strips_sbin ... ok
[INFO] [stdout] test engine::tests::path_normalizer_strips_nix_store_path ... ok
[INFO] [stdout] test engine::tests::path_normalizer_strips_usr_bin ... ok
[INFO] [stdout] test engine::tests::prefilter_backtick_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_base64_not_safe ... ok
[INFO] [stdout] test engine::tests::path_normalizer_strips_usr_local_bin ... ok
[INFO] [stdout] test engine::tests::nix_build_allowed ... ok
[INFO] [stdout] test engine::tests::prefilter_dollar_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_cli_double_dash_is_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_flushall_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_empty_command_is_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_flushdb_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_fourth_word_not_checked ... ok
[INFO] [stdout] test engine::tests::prefilter_pipe_to_bash_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_revoke_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_second_word_dangerous ... ok
[INFO] [stdout] test engine::tests::prefilter_shell_wrapper_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_leading_whitespace_dollar ... ok
[INFO] [stdout] test engine::tests::prefilter_sql_block_comment_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_sql_line_comment_not_safe ... ok
[INFO] [stdout] test engine::tests::kubectl_delete_ns_short ... ok
[INFO] [stdout] test engine::tests::prefilter_sql_line_comment_tab_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_third_word_dangerous ... ok
[INFO] [stdout] test engine::tests::prefilter_vacuum_full_not_safe ... ok
[INFO] [stdout] test engine::tests::prefilter_whitespace_only_is_safe ... ok
[INFO] [stdout] test engine::tests::prefix_prefilter_dangerous_commands ... ok
[INFO] [stdout] test engine::tests::prefix_prefilter_sql_keywords ... ok
[INFO] [stdout] test engine::tests::prefix_set_contains_known_prefixes ... ok
[INFO] [stdout] test engine::tests::prefix_prefilter_safe_commands ... ok
[INFO] [stdout] test engine::tests::prefix_set_does_not_contain_safe_commands ... ok
[INFO] [stdout] test engine::tests::prefix_set_is_non_empty ... ok
[INFO] [stdout] test engine::tests::nix_gc_delete_warned ... ok
[INFO] [stdout] test engine::tests::kubectl_get_allowed ... ok
[INFO] [stdout] test engine::tests::nix_store_path_with_real_danger ... ok
[INFO] [stdout] test engine::tests::flux_delete_ks_warned ... ok
[INFO] [stdout] test engine::tests::insert_allowed ... ok
[INFO] [stdout] test engine::tests::nix_shell_wrapped_mkfs_not_blocked ... ok
[INFO] [stdout] test engine::tests::kubectl_delete_pod_allowed ... ok
[INFO] [stdout] test engine::tests::nix_store_gc_warned ... ok
[INFO] [stdout] test engine::tests::flux_delete_source_warned ... ok
[INFO] [stdout] test engine::tests::rule_count_default_impl_equals_rules_len ... ok
[INFO] [stdout] test engine::tests::rule_count_matches_rules_len ... ok
[INFO] [stdout] test engine::tests::mkfs_blocked ... ok
[INFO] [stdout] test engine::tests::normal_push_allowed ... ok
[INFO] [stdout] test engine::tests::rm_rf_home_var_blocked ... ok
[INFO] [stdout] test engine::tests::rm_rf_root_var_blocked ... ok
[INFO] [stdout] test engine::tests::pulumi_up_allowed ... ok
[INFO] [stdout] test engine::tests::severity_display ... ok
[INFO] [stdout] test engine::tests::reset_hard_warned ... ok
[INFO] [stdout] test engine::tests::pulumi_destroy_blocked ... ok
[INFO] [stdout] test engine::tests::sql_comment_stripper_block_comment ... ok
[INFO] [stdout] test engine::tests::sql_comment_stripper_empty_input ... ok
[INFO] [stdout] test engine::tests::sql_comment_stripper_line_comment ... ok
[INFO] [stdout] test engine::tests::rm_rf_home_blocked ... ok
[INFO] [stdout] test engine::tests::sql_comment_stripper_no_comments ... ok
[INFO] [stdout] test engine::tests::sql_comment_stripper_multiple_block_comments ... ok
[INFO] [stdout] test engine::tests::sql_comment_stripper_only_block_comment ... ok
[INFO] [stdout] test engine::tests::sql_comment_stripper_sneaky_block_comment ... ok
[INFO] [stdout] test engine::tests::sql_comment_stripper_preserves_cli_flags ... ok
[INFO] [stdout] test engine::tests::rm_single_file_allowed ... ok
[INFO] [stdout] test engine::tests::sbin_mkfs_blocked ... ok
[INFO] [stdout] test engine::tests::reset_soft_allowed ... ok
[INFO] [stdout] test engine::tests::select_allowed ... ok
[INFO] [stdout] test engine::tests::rules_returns_slice ... ok
[INFO] [stdout] test engine::tests::select_star_not_blocked ... ok
[INFO] [stdout] test engine::tests::sops_decrypt_file_allowed ... ok
[INFO] [stdout] test engine::tests::rm_rf_target_allowed ... ok
[INFO] [stdout] test engine::tests::sops_decrypt_pipe_warned ... ok
[INFO] [stdout] test engine::tests::rm_rf_root_blocked ... ok
[INFO] [stdout] test engine::tests::terraform_apply_auto_warned ... ok
[INFO] [stdout] test engine::tests::terraform_apply_allowed ... ok
[INFO] [stdout] test engine::tests::terraform_force_unlock_blocked ... ok
[INFO] [stdout] test engine::tests::terraform_plan_allowed ... ok
[INFO] [stdout] test hook::tests::bash_context_does_not_downgrade ... ok
[INFO] [stdout] test hook::tests::edit_context_downgrades ... ok
[INFO] [stdout] test hook::tests::extract_bash_no_command ... ok
[INFO] [stdout] test hook::tests::extract_bash_scannable ... ok
[INFO] [stdout] test hook::tests::extract_command_from_write_tool ... ok
[INFO] [stdout] test hook::tests::extract_command_when_no_tool_input ... ok
[INFO] [stdout] test hook::tests::extract_edit_no_new_string ... ok
[INFO] [stdout] test hook::tests::extract_edit_scannable ... ok
[INFO] [stdout] test hook::tests::extract_mcp_bare_prefix ... ok
[INFO] [stdout] test hook::tests::extract_mcp_scannable ... ok
[INFO] [stdout] test engine::tests::warn_only_engine ... ok
[INFO] [stdout] test hook::tests::extract_mcp_triple_underscore ... ok
[INFO] [stdout] test engine::tests::rm_rf_subdir_allowed ... ok
[INFO] [stdout] test engine::tests::terraform_state_rm_blocked ... ok
[INFO] [stdout] test engine::tests::unicode_safe_command_allowed ... ok
[INFO] [stdout] test hook::tests::extract_no_tool_input ... ok
[INFO] [stdout] test hook::tests::extract_no_tool_name ... ok
[INFO] [stdout] test hook::tests::extract_notebook_no_new_source ... ok
[INFO] [stdout] test hook::tests::extract_notebook_scannable ... ok
[INFO] [stdout] test hook::tests::extract_read_tool_empty ... ok
[INFO] [stdout] test engine::tests::truncate_semicolon ... ok
[INFO] [stdout] test hook::tests::extract_write_scannable ... ok
[INFO] [stdout] test hook::tests::extract_unknown_tool_empty ... ok
[INFO] [stdout] test hook::tests::grep_glob_not_scannable ... ok
[INFO] [stdout] test hook::tests::hook_input_debug ... ok
[INFO] [stdout] test hook::tests::hook_input_is_clone ... ok
[INFO] [stdout] test hook::tests::mcp_empty_string_skipped ... ok
[INFO] [stdout] test hook::tests::extract_write_no_content ... ok
[INFO] [stdout] test hook::tests::mcp_context_does_not_downgrade ... ok
[INFO] [stdout] test hook::tests::mcp_max_depth_enforced ... ok
[INFO] [stdout] test hook::tests::mcp_non_string_values_skipped ... ok
[INFO] [stdout] test hook::tests::notebook_context_downgrades ... ok
[INFO] [stdout] test hook::tests::mcp_nested_object_strings ... ok
[INFO] [stdout] test hook::tests::parse_bash_hook ... ok
[INFO] [stdout] test hook::tests::parse_empty_input ... ok
[INFO] [stdout] test hook::tests::parse_grep_glob_fields ... ok
[INFO] [stdout] test hook::tests::mcp_with_command_field ... ok
[INFO] [stdout] test hook::tests::parse_missing_command ... ok
[INFO] [stdout] test hook::tests::parse_reader_null_fields ... ok
[INFO] [stdout] test hook::tests::parse_reader_with_extra_fields ... ok
[INFO] [stdout] test hook::tests::mcp_max_strings_enforced ... ok
[INFO] [stdout] test hook::tests::parse_invalid_json_returns_error ... ok
[INFO] [stdout] test engine::tests::usr_bin_rm_blocked ... ok
[INFO] [stdout] test hook::tests::scan_content_lines_indented_dangerous ... ok
[INFO] [stdout] test hook::tests::mcp_nested_array_strings ... ok
[INFO] [stdout] test hook::tests::parse_reader_empty_string_is_error ... ok
[INFO] [stdout] test hook::tests::scan_content_lines_empty ... ok
[INFO] [stdout] test hook::tests::scan_content_lines_filters_blanks_and_comments ... ok
[INFO] [stdout] test hook::tests::scan_content_lines_only_comments ... ok
[INFO] [stdout] test hook::tests::scan_content_lines_prefilter_optimization ... ok
[INFO] [stdout] test hook::tests::scan_context_debug_all_variants ... ok
[INFO] [stdout] test hook::tests::scan_context_is_command ... ok
[INFO] [stdout] test hook::tests::scannable_content_clone ... ok
[INFO] [stdout] test hook::tests::scan_context_is_content ... ok
[INFO] [stdout] test hook::tests::write_context_downgrades ... ok
[INFO] [stdout] test journal::tests::default_journal_path_is_absolute ... ok
[INFO] [stdout] test journal::tests::extract_paths_bare_word_not_path ... ok
[INFO] [stdout] test journal::tests::extract_paths_direct_script ... ok
[INFO] [stdout] test journal::tests::extract_paths_empty_command ... ok
[INFO] [stdout] test journal::tests::extract_paths_full_path_interpreter ... ok
[INFO] [stdout] test journal::tests::extract_paths_interpreter_at_end_no_script ... ok
[INFO] [stdout] test journal::tests::extract_paths_multiple_direct_scripts ... ok
[INFO] [stdout] test journal::tests::extract_paths_multiple_interpreters ... ok
[INFO] [stdout] test hook::tests::scan_content_lines_shebang_filtered ... ok
[INFO] [stdout] test journal::tests::extract_paths_deduplicates ... ok
[INFO] [stdout] test engine::tests::truncate_blocked ... ok
[INFO] [stdout] test hook::tests::scannable_content_debug ... ok
[INFO] [stdout] test journal::tests::extract_paths_bash_script ... ok
[INFO] [stdout] test journal::tests::extract_paths_direct_bash_extension ... ok
[INFO] [stdout] test journal::tests::default_journal_path_contains_guardrail ... ok
[INFO] [stdout] test engine::tests::kubectl_delete_all_blocked ... ok
[INFO] [stdout] test journal::tests::extract_paths_no_extension ... ok
[INFO] [stdout] test engine::tests::terraform_destroy_blocked ... ok
[INFO] [stdout] test engine::tests::usr_local_bin_terraform_blocked ... ok
[INFO] [stdout] test journal::tests::extract_paths_no_flag_args ... ok
[INFO] [stdout] test journal::tests::extract_paths_no_scripts ... ok
[INFO] [stdout] test journal::tests::extract_paths_ruby_interpreter ... ok
[INFO] [stdout] test journal::tests::extract_paths_python ... ok
[INFO] [stdout] test journal::tests::extract_paths_python3_full_path ... ok
[INFO] [stdout] test journal::tests::extract_paths_sh_interpreter ... ok
[INFO] [stdout] test journal::tests::extract_paths_shell_with_flags ... ok
[INFO] [stdout] test journal::tests::extract_paths_tilde ... ok
[INFO] [stdout] test journal::tests::has_script_extension_false_positives ... ok
[INFO] [stdout] test journal::tests::extract_paths_relative ... ok
[INFO] [stdout] test engine::tests::rm_rf_cwd_blocked ... ok
[INFO] [stdout] test journal::tests::extract_paths_perl_interpreter ... ok
[INFO] [stdout] test journal::tests::extract_paths_zsh_interpreter ... ok
[INFO] [stdout] test journal::tests::has_script_extension_all_types ... ok
[INFO] [stdout] test journal::tests::extract_paths_whitespace_only ... ok
[INFO] [stdout] test journal::tests::is_path_like_checks ... ok
[INFO] [stdout] test journal::tests::is_path_like_edge_cases ... ok
[INFO] [stdout] test journal::tests::journal_empty_not_dangerous ... ok
[INFO] [stdout] test journal::tests::has_script_extension_checks ... ok
[INFO] [stdout] test journal::tests::journal_expired_entry_not_dangerous ... ok
[INFO] [stdout] test journal::tests::journal_entry_serde ... ok
[INFO] [stdout] test journal::tests::journal_disk_round_trip ... ok
[INFO] [stdout] test engine::tests::whitespace_only_command_allowed ... ok
[INFO] [stdout] test journal::tests::journal_load_corrupt_file_returns_empty ... ok
[INFO] [stdout] test journal::tests::journal_prune_removes_expired ... ok
[INFO] [stdout] test engine::tests::var_as_command_warned ... ok
[INFO] [stdout] test journal::tests::journal_record_and_check ... ok
[INFO] [stdout] test journal::tests::journal_overwrite_replaces_entry ... ok
[INFO] [stdout] test journal::tests::journal_safe_write_not_dangerous ... ok
[INFO] [stdout] test journal::tests::journal_serde_round_trip ... ok
[INFO] [stdout] test journal::tests::now_secs_returns_reasonable_value ... ok
[INFO] [stdout] test journal::tests::journal_round_trip_preserves_timestamps ... ok
[INFO] [stdout] test journal::tests::journal_load_missing_file_returns_empty ... ok
[INFO] [stdout] test journal::tests::prune_all_expired ... ok
[INFO] [stdout] test journal::tests::journal_save_creates_parent_dirs ... ok
[INFO] [stdout] test journal::tests::prune_keeps_fresh ... ok
[INFO] [stdout] test journal::tests::record_auto_prunes ... ok
[INFO] [stdout] test journal::tests::record_multiple_files ... ok
[INFO] [stdout] test model::tests::builder_accepts_string_types ... ok
[INFO] [stdout] test model::tests::builder_all_setters ... ok
[INFO] [stdout] test model::tests::builder_defaults ... ok
[INFO] [stdout] test model::tests::category_all_returns_14_variants ... ok
[INFO] [stdout] test model::tests::category_display_all_variants ... ok
[INFO] [stdout] test model::tests::category_fromstr_invalid ... ok
[INFO] [stdout] test model::tests::category_fromstr_round_trip ... ok
[INFO] [stdout] test model::tests::category_invalid_deserialize ... ok
[INFO] [stdout] test model::tests::category_ordering ... ok
[INFO] [stdout] test model::tests::category_serde_round_trip_all_variants ... ok
[INFO] [stdout] test model::tests::config_default_is_empty ... ok
[INFO] [stdout] test model::tests::config_camel_case_field_names ... ok
[INFO] [stdout] test model::tests::config_deserialize_empty_yaml ... ok
[INFO] [stdout] test model::tests::config_invalid_category_key_yaml ... ok
[INFO] [stdout] test model::tests::config_is_category_enabled_default_true ... ok
[INFO] [stdout] test model::tests::config_is_category_enabled_explicit_false ... ok
[INFO] [stdout] test model::tests::config_is_rule_disabled ... ok
[INFO] [stdout] test model::tests::config_nested_invalid_extra_rule ... ok
[INFO] [stdout] test model::tests::decision_clone ... ok
[INFO] [stdout] test model::tests::config_serde_round_trip ... ok
[INFO] [stdout] test model::tests::decision_debug ... ok
[INFO] [stdout] test model::tests::decision_display_all_variants ... ok
[INFO] [stdout] test model::tests::decision_is_blocked ... ok
[INFO] [stdout] test model::tests::decision_equality ... ok
[INFO] [stdout] test model::tests::decision_from_rule_block ... ok
[INFO] [stdout] test model::tests::decision_from_rule_warn ... ok
[INFO] [stdout] test model::tests::rule_deserialize_missing_optional_fields ... ok
[INFO] [stdout] test model::tests::decision_is_allowed ... ok
[INFO] [stdout] test model::tests::rule_display ... ok
[INFO] [stdout] test model::tests::rule_equality ... ok
[INFO] [stdout] test model::tests::rule_invalid_category_yaml ... ok
[INFO] [stdout] test model::tests::rule_invalid_severity_yaml ... ok
[INFO] [stdout] test model::tests::rule_missing_required_field_yaml ... ok
[INFO] [stdout] test model::tests::rule_optional_test_fields_skip_serializing ... ok
[INFO] [stdout] test model::tests::rule_serde_json_round_trip ... ok
[INFO] [stdout] test model::tests::rule_serde_yaml_round_trip ... ok
[INFO] [stdout] test model::tests::severity_display_all_variants ... ok
[INFO] [stdout] test model::tests::rule_vec_serde_yaml ... ok
[INFO] [stdout] test model::tests::severity_fromstr_invalid ... ok
[INFO] [stdout] test model::tests::severity_fromstr_round_trip ... ok
[INFO] [stdout] test model::tests::severity_invalid_deserialize ... ok
[INFO] [stdout] test model::tests::severity_is_blocking ... ok
[INFO] [stdout] test model::tests::severity_ordering ... ok
[INFO] [stdout] test model::tests::severity_serde_round_trip ... ok
[INFO] [stdout] test model::tests::severity_yaml_round_trip ... ok
[INFO] [stdout] test testing::tests::derive_test_allow_returns_default_when_absent ... ok
[INFO] [stdout] test testing::tests::derive_test_allow_uses_explicit_when_present ... ok
[INFO] [stdout] test testing::tests::derive_test_block_uses_explicit_when_present ... ok
[INFO] [stdout] test testing::tests::engine_passthrough_preserves_dangerous ... ok
[INFO] [stdout] test testing::tests::benchmark_single_rule ... ok
[INFO] [stdout] test testing::tests::engine_passthrough_wraps_safe_commands ... ok
[INFO] [stdout] test testing::tests::prefilter_trait_used_correctly ... ok
[INFO] [stdout] test testing::tests::engine_passthrough_preserves_sql_keywords ... ok
[INFO] [stdout] test testing::tests::synthesize_aws_pattern ... ok
[INFO] [stdout] test testing::tests::synthesize_from_name_basic ... ok
[INFO] [stdout] test testing::tests::synthesize_from_name_single_word ... ok
[INFO] [stdout] test testing::tests::derive_test_block_synthesizes_when_absent ... ok
[INFO] [stdout] test testing::tests::synthesize_simple_prefix_pattern ... ok
[INFO] [stdout] test testing::tests::synthesize_rm_rf_root ... ok
[INFO] [stdout] test testing::tests::synthesize_git_force_push_main ... ok
[INFO] [stdout] test testing::tests::validate_engine_empty_rules_no_failures ... ok
[INFO] [stdout] test testing::tests::synthesize_sql_drop_table ... ok
[INFO] [stdout] test testing::tests::validate_regex_empty_rules_no_failures ... ok
[INFO] [stdout] test testing::tests::validate_engine_reports_compilation_failure ... ok
[INFO] [stdout] test testing::tests::synthesize_mongo_drop_database ... ok
[INFO] [stdout] test testing::tests::synthesize_sops_decrypt_pipe ... ok
[INFO] [stdout] test testing::tests::validate_regex_reports_invalid_pattern ... ok
[INFO] [stdout] test testing::tests::validate_regex_reports_matching_test_allow ... ok
[INFO] [stdout] test engine::tests::very_long_safe_command_allowed ... ok
[INFO] [stdout] test testing::tests::validate_regex_reports_non_matching_test_block ... ok
[INFO] [stdout] test engine::tests::terraform_state_list_allowed ... ok
[INFO] [stdout] test testing::tests::test_allow_never_matches_safe ... ok
[INFO] [stdout] test testing::tests::content_scan_performance ... ok
[INFO] [stdout] test testing::tests::all_default_rules_engine_valid ... ok
[INFO] [stdout] test testing::tests::performance_default_rules ... ok
[INFO] [stdout] test testing::tests::benchmark_result_fields_consistent ... ok
[INFO] [stdout] test testing::tests::all_default_rules_regex_valid ... ok
[INFO] [stdout] test testing::tests::all_suite_rules_compile_into_regexset ... ok
[INFO] [stdout] test testing::tests::all_suite_rules_regex_valid ... ok
[INFO] [stdout] test testing::tests::all_suite_rules_engine_valid has been running for over 60 seconds
[INFO] [stdout] test testing::tests::performance_all_rules has been running for over 60 seconds
[INFO] [stdout] test testing::tests::performance_all_rules ... ok
[INFO] [stdout] test testing::tests::all_suite_rules_engine_valid ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 407 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 127.28s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/guardrail-ced21ff9f77dbbc1)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli.rs (/opt/rustwide/target/debug/deps/cli-acd5112206886e57)
[INFO] [stdout] 
[INFO] [stdout] running 46 tests
[INFO] [stdout] test check_allows_non_bash_tool ... ok
[INFO] [stdout] test check_allows_empty_input ... ok
[INFO] [stdout] test check_null_tool_name_allows ... ok
[INFO] [stdout] test check_allows_terraform_plan ... ok
[INFO] [stdout] test check_blocks_force_push_main ... ok
[INFO] [stdout] test check_allows_nix_safe_command ... ok
[INFO] [stdout] test compile_succeeds ... ok
[INFO] [stdout] test list_shows_block_and_warn_rules ... ok
[INFO] [stdout] test check_invalid_json_fails ... ok
[INFO] [stdout] test check_blocks_sql_comment_bypass ... ok
[INFO] [stdout] test check_allows_select ... ok
[INFO] [stdout] test disabled_rule_allows_previously_blocked ... ok
[INFO] [stdout] test check_allows_ls ... ok
[INFO] [stdout] test check_blocks_terraform_destroy ... ok
[INFO] [stdout] test check_blocks_drop_table ... ok
[INFO] [stdout] test list_shows_rules ... ok
[INFO] [stdout] test check_blocks_rm_rf_root ... ok
[INFO] [stdout] test compile_creates_cache_file ... ok
[INFO] [stdout] test read_tool_passes_through ... ok
[INFO] [stdout] test search_advise_bad_json_exits_zero_silent ... ok
[INFO] [stdout] test search_advise_emits_context_for_grep ... ok
[INFO] [stdout] test search_advise_emits_context_for_glob ... ok
[INFO] [stdout] test search_nudge_never_denies ... ok
[INFO] [stdout] test search_nudge_non_search_tool_is_silent ... ok
[INFO] [stdout] test list_shows_rule_count ... ok
[INFO] [stdout] test search_nudge_bad_json_exits_zero_silent ... ok
[INFO] [stdout] test check_blocks_nix_wrapped_rm ... ok
[INFO] [stdout] test search_advise_non_search_tool_is_silent ... ok
[INFO] [stdout] test edit_with_drop_table_warns_not_blocks ... ok
[INFO] [stdout] test check_allows_force_push_feature ... ok
[INFO] [stdout] test disabled_category_allows_all_rules_in_category ... ok
[INFO] [stdout] test mcp_tool_with_dangerous_command_blocks ... ok
[INFO] [stdout] test validate_succeeds_without_config ... ok
[INFO] [stdout] test mcp_safe_tool_allows ... ok
[INFO] [stdout] test notebook_with_os_system_warns ... ok
[INFO] [stdout] test write_safe_content_allows ... ok
[INFO] [stdout] test validate_with_valid_config ... ok
[INFO] [stdout] test mcp_tool_nested_dangerous_string_blocks ... ok
[INFO] [stdout] test aws_suite_blocks_terminate ... ok
[INFO] [stdout] test suites_load_via_env ... ok
[INFO] [stdout] test write_with_dangerous_content_warns_not_blocks ... ok
[INFO] [stdout] test write_then_bash_chain_blocked ... ok
[INFO] [stdout] test nosql_suite_blocks_flushall ... ok
[INFO] [stdout] test network_suite_blocks_iptables_flush ... ok
[INFO] [stdout] test process_suite_blocks_shutdown ... ok
[INFO] [stdout] test write_safe_then_bash_allowed ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 46 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.29s
[INFO] [stderr]    Doc-tests guardrail
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/engine/mod.rs - engine::RegexEngine (line 51) - compile ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.68s; merged doctests compilation took 0.67s
[INFO] running `Command { std: "docker" "inspect" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e", kill_on_drop: false }`
[INFO] [stdout] ab080b73aa6ed20fe70e9badea2809bdfc9aabde608077ee6eb10583a554807e
