[INFO] fetching crate shellfirm 0.3.9...
[INFO] testing shellfirm-0.3.9 against 1.95.0 for beta-1.96-2
[INFO] extracting crate shellfirm 0.3.9 into /workspace/builds/worker-1-tc1/source
[INFO] started tweaking crates.io crate shellfirm 0.3.9
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate shellfirm 0.3.9
[INFO] tweaked toml for crates.io crate shellfirm 0.3.9 written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate shellfirm 0.3.9 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate shellfirm 0.3.9 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_regex v1.1.0
[INFO] [stderr]   Downloaded exitcode v1.1.2
[INFO] [stderr]   Downloaded tree-fs v0.2.1
[INFO] [stderr]   Downloaded winsplit v0.1.0
[INFO] [stderr]   Downloaded requestty v0.6.3
[INFO] [stderr]   Downloaded clap_complete_nushell v4.5.10
[INFO] [stderr]   Downloaded security-framework v3.6.0
[INFO] [stderr]   Downloaded serial2 v0.2.34
[INFO] [stderr]   Downloaded requestty-ui v0.6.3
[INFO] [stderr]   Downloaded native-tls v0.2.16
[INFO] [stderr]   Downloaded clap_complete v4.5.66
[INFO] [stderr]   Downloaded textwrap v0.15.2
[INFO] [stderr]   Downloaded security-framework-sys v2.16.0
[INFO] [stderr]   Downloaded nix v0.31.1
[INFO] [stderr]   Downloaded portable-pty v0.9.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 767f6ceaa122b9a3048b97745e3298ec54f8ef24e9135b577e5f2b15c3a3bf65
[INFO] running `Command { std: "docker" "start" "-a" "767f6ceaa122b9a3048b97745e3298ec54f8ef24e9135b577e5f2b15c3a3bf65", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "767f6ceaa122b9a3048b97745e3298ec54f8ef24e9135b577e5f2b15c3a3bf65", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "767f6ceaa122b9a3048b97745e3298ec54f8ef24e9135b577e5f2b15c3a3bf65", kill_on_drop: false }`
[INFO] [stdout] 767f6ceaa122b9a3048b97745e3298ec54f8ef24e9135b577e5f2b15c3a3bf65
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4b48ffa03d829f08954d6535e7937e2b3fa65b6d244b6157f5999a594c5a5a64
[INFO] running `Command { std: "docker" "start" "-a" "4b48ffa03d829f08954d6535e7937e2b3fa65b6d244b6157f5999a594c5a5a64", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling native-tls v0.2.16
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling clap_builder v4.5.58
[INFO] [stderr]    Compiling unicode-linebreak v0.1.5
[INFO] [stderr]    Compiling smawk v0.3.2
[INFO] [stderr]    Compiling nix v0.31.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling shellfirm v0.3.9 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling exitcode v1.1.2
[INFO] [stderr]    Compiling textwrap v0.15.2
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling rand v0.10.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling console v0.16.2
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling clap v4.5.58
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling clap_complete v4.5.66
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling clap_complete_nushell v4.5.10
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling serde_regex v1.1.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling requestty-ui v0.6.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling requestty v0.6.3
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 30s
[INFO] running `Command { std: "docker" "inspect" "4b48ffa03d829f08954d6535e7937e2b3fa65b6d244b6157f5999a594c5a5a64", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4b48ffa03d829f08954d6535e7937e2b3fa65b6d244b6157f5999a594c5a5a64", kill_on_drop: false }`
[INFO] [stdout] 4b48ffa03d829f08954d6535e7937e2b3fa65b6d244b6157f5999a594c5a5a64
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 490014949e4914a7dcdef5acb6282c82b64daf1df932f50dbec2503fe79c34bd
[INFO] running `Command { std: "docker" "start" "-a" "490014949e4914a7dcdef5acb6282c82b64daf1df932f50dbec2503fe79c34bd", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling insta v1.46.3
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling serde_regex v1.1.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling tree-fs v0.2.1
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling shellfirm v0.3.9 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `checks` is never read
[INFO] [stdout]   --> tests/decision_matrix.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | struct ScenarioPolicy {
[INFO] [stdout]    |        -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     checks: Vec<serde_yaml::Value>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScenarioPolicy` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 54.20s
[INFO] running `Command { std: "docker" "inspect" "490014949e4914a7dcdef5acb6282c82b64daf1df932f50dbec2503fe79c34bd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "490014949e4914a7dcdef5acb6282c82b64daf1df932f50dbec2503fe79c34bd", kill_on_drop: false }`
[INFO] [stdout] 490014949e4914a7dcdef5acb6282c82b64daf1df932f50dbec2503fe79c34bd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] cd656bddbb29a0c0a835f94755c2fee57d584dc09d7c56ec6cf52578224f54c1
[INFO] running `Command { std: "docker" "start" "-a" "cd656bddbb29a0c0a835f94755c2fee57d584dc09d7c56ec6cf52578224f54c1", kill_on_drop: false }`
[INFO] [stderr] warning: field `checks` is never read
[INFO] [stderr]   --> tests/decision_matrix.rs:55:5
[INFO] [stderr]    |
[INFO] [stderr] 49 | struct ScenarioPolicy {
[INFO] [stderr]    |        -------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 55 |     checks: Vec<serde_yaml::Value>,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ScenarioPolicy` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `shellfirm` (test "decision_matrix") generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.60s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/shellfirm-e0f8421a926451a7)
[INFO] [stdout] 
[INFO] [stdout] running 144 tests
[INFO] [stdout] test audit::tests::test_now_timestamp_format ... ok
[INFO] [stdout] test agent::tests::test_agent_prompter_denies_when_denied ... ok
[INFO] [stdout] test blast_radius::tests::test_compute_for_matches_empty ... ok
[INFO] [stdout] test agent::tests::test_agent_prompter_passes_non_denied ... ok
[INFO] [stdout] test agent::tests::test_risk_assessment_serializes_to_json ... ok
[INFO] [stdout] test blast_radius::tests::test_docker_stop_all ... ok
[INFO] [stdout] test blast_radius::tests::test_docker_system_prune ... ok
[INFO] [stdout] test blast_radius::tests::test_extract_git_push_branch ... ok
[INFO] [stdout] test blast_radius::tests::test_format_number ... ok
[INFO] [stdout] test blast_radius::tests::test_format_count ... ok
[INFO] [stdout] test audit::tests::test_log_and_read ... ok
[INFO] [stdout] test audit::tests::test_log_command_with_pipe_characters ... ok
[INFO] [stdout] test audit::tests::test_read_nonexistent_log ... ok
[INFO] [stdout] test blast_radius::tests::test_count_lines ... ok
[INFO] [stdout] test audit::tests::test_cancelled_outcome_serialization ... ok
[INFO] [stdout] test audit::tests::test_clear_log ... ok
[INFO] [stdout] test blast_radius::tests::test_git_clean_force ... ok
[INFO] [stdout] test blast_radius::tests::test_git_delete_all ... ok
[INFO] [stdout] test blast_radius::tests::test_blast_scope_ordering ... ok
[INFO] [stdout] test blast_radius::tests::test_git_force_checkout ... ok
[INFO] [stdout] test blast_radius::tests::test_git_force_delete_branch ... ok
[INFO] [stdout] test blast_radius::tests::test_git_force_push ... ok
[INFO] [stdout] test blast_radius::tests::test_git_reset_no_changes ... ok
[INFO] [stdout] test blast_radius::tests::test_fs_recursive_delete ... ok
[INFO] [stdout] test blast_radius::tests::test_git_force_push_with_branch ... ok
[INFO] [stdout] test blast_radius::tests::test_git_filter_branch ... ok
[INFO] [stdout] test blast_radius::tests::test_fs_recursive_delete_hidden_slash ... ok
[INFO] [stdout] test blast_radius::tests::test_fs_recursive_delete_project_scope ... ok
[INFO] [stdout] test blast_radius::tests::test_fs_recursive_delete_hidden_slash_middle ... ok
[INFO] [stdout] test blast_radius::tests::test_git_strict_add_all ... ok
[INFO] [stdout] test blast_radius::tests::test_fs_recursive_delete_no_match ... ok
[INFO] [stdout] test checks::test_checks::can_check_custom_filter_with_contains ... ok
[INFO] [stdout] test blast_radius::tests::test_parse_du_output ... ok
[INFO] [stdout] test blast_radius::tests::test_unsupported_check_returns_none ... ok
[INFO] [stdout] test blast_radius::tests::test_kubernetes_delete_namespace ... ok
[INFO] [stdout] test blast_radius::tests::test_git_reset ... ok
[INFO] [stdout] test checks::test_checks::test_split_command_double_quoted_operator ... ok
[INFO] [stdout] test blast_radius::tests::test_fs_recursive_delete_no_false_positive_on_path ... ok
[INFO] [stdout] test checks::test_checks::test_split_command_and_and ... ok
[INFO] [stdout] test checks::test_checks::test_split_command_quoted_then_operator ... ok
[INFO] [stdout] test checks::test_checks::test_split_command_pipe ... ok
[INFO] [stdout] test checks::test_checks::test_split_command_single ... ok
[INFO] [stdout] test checks::test_checks::can_check_custom_filter_with_missing_capture_group ... ok
[INFO] [stdout] test config::test_config::can_reset_config ... ok
[INFO] [stdout] test config::test_config::get_settings_returns_defaults_without_file ... ok
[INFO] [stdout] test config::test_config::new_config_does_not_create_files ... ok
[INFO] [stdout] test config::test_config::read_config_as_value_empty_file_returns_empty_mapping ... ok
[INFO] [stdout] test config::test_config::sparse_config_on_fresh_install ... ok
[INFO] [stdout] test checks::test_checks::test_split_command_single_quoted_pipe ... ok
[INFO] [stdout] test checks::test_checks::test_split_command_mixed ... ok
[INFO] [stdout] test config::test_settings::can_get_settings_from_file ... ok
[INFO] [stdout] test checks::test_checks::test_validate_catches_bad_capture_group ... ok
[INFO] [stdout] test checks::test_checks::can_check_multiple_filters_all_must_pass ... ok
[INFO] [stdout] test config::test_settings::settings_yaml_roundtrip_preserves_enabled_groups ... ok
[INFO] [stdout] test context::tests::test_detect_normal_context ... ok
[INFO] [stdout] test context::tests::test_detect_production_env ... ok
[INFO] [stdout] test context::tests::test_detect_production_k8s ... ok
[INFO] [stdout] test context::tests::test_detect_protected_branch ... ok
[INFO] [stdout] test context::tests::test_detect_root_user ... ok
[INFO] [stdout] test context::tests::test_detect_ssh_session ... ok
[INFO] [stdout] test context::tests::test_escalate_cannot_lower ... ok
[INFO] [stdout] test context::tests::test_escalate_challenge_critical ... ok
[INFO] [stdout] test checks::test_checks::can_check_custom_filter_with_file_exists ... ok
[INFO] [stdout] test checks::test_checks::can_check_custom_filter_with_str_contains ... ok
[INFO] [stdout] test checks::test_checks::can_run_check_on_command ... ok
[INFO] [stdout] test context::tests::test_escalate_challenge_elevated ... ok
[INFO] [stdout] test context::tests::test_escalate_challenge_normal ... ok
[INFO] [stdout] test context::tests::test_filter_git_command_hides_k8s ... ok
[INFO] [stdout] test context::tests::test_filter_global_signals_never_hidden ... ok
[INFO] [stdout] test context::tests::test_feature_branch_is_normal ... ok
[INFO] [stdout] test context::tests::test_filter_compound_git_and_k8s ... ok
[INFO] [stdout] test context::tests::test_filter_fs_command_global_only ... ok
[INFO] [stdout] test context::tests::test_filter_k8s_command_hides_branch ... ok
[INFO] [stdout] test context::tests::test_filter_risk_level_recomputed ... ok
[INFO] [stdout] test llm::tests::test_create_provider_no_key ... ok
[INFO] [stdout] test llm::tests::test_create_provider_unknown_provider ... ok
[INFO] [stdout] test context::tests::test_release_wildcard_branch ... ok
[INFO] [stdout] test llm::tests::test_extract_json_from_plain_fences ... ok
[INFO] [stdout] test llm::tests::test_extract_json_from_markdown ... ok
[INFO] [stdout] test llm::tests::test_extract_json_plain ... ok
[INFO] [stdout] test llm::tests::test_mock_provider_availability ... ok
[INFO] [stdout] test llm::tests::test_llm_analysis_serialization ... ok
[INFO] [stdout] test llm::tests::test_mock_provider_returns_configured ... ok
[INFO] [stdout] test llm::tests::test_noop_provider_returns_safe ... ok
[INFO] [stdout] test llm::tests::test_parse_alternatives_response_valid ... ok
[INFO] [stdout] test llm::tests::test_parse_analysis_response_valid ... ok
[INFO] [stdout] test llm::tests::test_parse_analysis_response_invalid_falls_back ... ok
[INFO] [stdout] test mcp::tests::test_get_policy ... ok
[INFO] [stdout] test config::test_settings::default_settings_produce_nonempty_active_checks ... ok
[INFO] [stdout] test checks::test_checks::can_get_all_checks ... ok
[INFO] [stdout] test mcp::tests::test_handle_malformed_json ... ok
[INFO] [stdout] test mcp::tests::test_notification_returns_none ... ok
[INFO] [stdout] test mcp::tests::test_initialize ... ok
[INFO] [stdout] test config::test_settings::can_get_active_checks ... ok
[INFO] [stdout] test config::test_settings::old_includes_field_falls_back_to_default_enabled_groups ... ok
[INFO] [stdout] test mcp::tests::test_tools_list ... ok
[INFO] [stdout] test policy::tests::test_discover_no_policy ... ok
[INFO] [stdout] test policy::tests::test_branch_specific_override ... ok
[INFO] [stdout] test mcp::tests::test_unknown_method ... ok
[INFO] [stdout] test mcp::tests::test_unknown_tool ... ok
[INFO] [stdout] test policy::tests::test_merge_adds_deny ... ok
[INFO] [stdout] test policy::tests::test_parse_simple_policy ... ok
[INFO] [stdout] test policy::tests::test_scaffold_policy ... ok
[INFO] [stdout] test policy::tests::test_validate_policy ... ok
[INFO] [stdout] test policy::tests::test_discover_policy_walks_up ... ok
[INFO] [stdout] test policy::tests::test_effective_challenge_cannot_weaken ... ok
[INFO] [stdout] test wrap::common::tests::basic_semicolon_delimiter ... ok
[INFO] [stdout] test wrap::common::tests::cli_delimiter_overrides_all ... ok
[INFO] [stdout] test wrap::common::tests::delimiter_from_literal_newline ... ok
[INFO] [stdout] test policy::tests::test_validate_policy_bad_version ... ok
[INFO] [stdout] test wrap::common::tests::delimiter_from_newline_escape ... ok
[INFO] [stdout] test wrap::common::tests::delimiter_from_semicolon ... ok
[INFO] [stdout] test wrap::common::tests::delimiter_inside_double_quotes_not_split ... ok
[INFO] [stdout] test wrap::common::tests::delimiter_inside_single_quotes_not_split ... ok
[INFO] [stdout] test wrap::common::tests::empty_statement ... ok
[INFO] [stdout] test policy::tests::test_effective_challenge_escalates ... ok
[INFO] [stdout] test wrap::common::tests::escaped_quote_handling ... ok
[INFO] [stdout] test mcp::tests::test_explain_risk_safe_command ... ok
[INFO] [stdout] test wrap::common::tests::cr_is_control_passthrough ... ok
[INFO] [stdout] test wrap::common::tests::multi_line_sql ... ok
[INFO] [stdout] test wrap::common::tests::multiple_statements ... ok
[INFO] [stdout] test wrap::common::tests::newline_delimiter ... ok
[INFO] [stdout] test wrap::common::tests::empty_statement_forwards ... ok
[INFO] [stdout] test agent::tests::test_deny_listed_command_always_denied ... ok
[INFO] [stdout] test agent::tests::test_require_human_approval_flag ... ok
[INFO] [stdout] test mcp::tests::test_check_command_safe ... ok
[INFO] [stdout] test wrap::common::tests::redis_cli_gets_newline_delimiter ... ok
[INFO] [stdout] test wrap::common::tests::reset_clears_buffer ... ok
[INFO] [stdout] test wrap::common::tests::known_tool_gets_builtin_defaults ... ok
[INFO] [stdout] test agent::tests::test_safe_command_is_allowed ... ok
[INFO] [stdout] test wrap::common::tests::path_in_program_name_uses_basename ... ok
[INFO] [stdout] test wrap::common::tests::unknown_tool_gets_generic_fallback ... ok
[INFO] [stdout] test wrap::common::tests::user_override_takes_precedence ... ok
[INFO] [stdout] test wrap::common::tests::whitespace_only_statement ... ok
[INFO] [stdout] test mcp::tests::test_suggest_alternative_for_risky_command ... ok
[INFO] [stdout] test wrap::common::tests::interactive_flushall_triggers_challenge ... ok
[INFO] [stdout] test agent::tests::test_low_severity_allowed_by_agent ... ok
[INFO] [stdout] test wrap::common::tests::safe_statement_forwards ... ok
[INFO] [stdout] test config::test_settings::settings_file_roundtrip_produces_matches ... ok
[INFO] [stdout] test agent::tests::test_high_severity_command_denied_by_agent ... ok
[INFO] [stdout] test mcp::tests::test_check_command_risky ... ok
[INFO] [stdout] test wrap::common::tests::drop_table_triggers_challenge ... ok
[INFO] [stdout] test checks::test_checks::test_all_builtin_checks_pass_validation ... ok
[INFO] [stdout] test agent::tests::test_risk_assessment_includes_alternatives ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 144 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.06s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/shellfirm.rs (/opt/rustwide/target/debug/deps/shellfirm-d0b3d61856d5fbf2)
[INFO] [stdout] 
[INFO] [stdout] running 106 tests
[INFO] [stdout] test cmd::check_cmd::tests::hook_output_allowed_has_allow_decision ... ok
[INFO] [stdout] test cmd::check_cmd::tests::hook_output_is_valid_json_for_claude_code ... ok
[INFO] [stdout] test cmd::check_cmd::tests::parse_json_without_command_field_returns_error ... ok
[INFO] [stdout] test cmd::check_cmd::tests::parse_empty_input_returns_error ... ok
[INFO] [stdout] test cmd::check_cmd::tests::hook_output_denied_has_deny_decision_with_details ... ok
[INFO] [stdout] test cmd::check_cmd::tests::parse_claude_code_hooks_format ... ok
[INFO] [stdout] test cmd::check_cmd::tests::parse_plain_text_fallback ... ok
[INFO] [stdout] test cmd::check_cmd::tests::parse_plain_text_with_whitespace ... ok
[INFO] [stdout] test cmd::check_cmd::tests::parse_simple_json_command ... ok
[INFO] [stdout] test cmd::check_cmd::tests::text_exit_code_risky_command_returns_2 ... ok
[INFO] [stdout] test cmd::check_cmd::tests::parse_tool_input_takes_precedence_over_command ... ok
[INFO] [stdout] test cmd::check_cmd::tests::text_output_safe_command ... ok
[INFO] [stdout] test cmd::check_cmd::tests::text_exit_code_safe_command_returns_ok ... ok
[INFO] [stdout] test cmd::check_cmd::tests::no_exit_code_flag_always_returns_ok ... ok
[INFO] [stdout] test cmd::check_cmd::tests::text_output_risky_command_includes_match_and_blocked ... ok
[INFO] [stdout] test cmd::command::test_command_cli_command::regex_handles_multiple_quoted_segments ... ok
[INFO] [stdout] test cmd::command::test_command_cli_command::regex_strips_matching_single_quotes ... ok
[INFO] [stdout] test cmd::command::test_command_cli_command::regex_strips_matching_double_quotes ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::challenge_rejects_invalid ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::config_menu_delegates_to_show ... ok
[INFO] [stdout] test cmd::command::test_command_cli_command::regex_does_not_strip_mismatched_quotes ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::challenge_on_fresh_install ... ok
[INFO] [stdout] test cmd::check_cmd::tests::text_output_allowed_risky_has_no_blocked_line ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::challenge_set_valid ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::context_add_branch ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::context_remove_branch ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::context_set_escalation ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::escalation_group_on_fresh_install ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::escalation_group_set_fs ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::escalation_severity_set_high_and_disable ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::groups_disable ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::challenge_set_each_variant ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::deny_add ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::groups_rejects_unknown ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::escalation_check_set_and_remove ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::groups_enable_and_disable ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::ignore_add ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::deny_remove ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::groups_idempotent ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::groups_enable ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::llm_on_fresh_install ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::llm_set_provider ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::llm_set_multiple ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::severity_rejects_invalid ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::ignore_remove ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::reset_then_sparse_setup_round_trip ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::ignore_add_duplicate ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::severity_set_null ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::llm_set_model ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::show_default_config ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::show_on_fresh_install ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::all_providers_are_idempotent ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::show_modified_config ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::cline_install_mcp ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::cursor_config_path_is_project_level ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::cline_config_path ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::cursor_install_mcp ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::detection_on_empty_config ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::install_hooks_adds_pre_tool_use ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::install_hooks_is_idempotent ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::install_mcp_adds_server ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::install_preserves_existing_config ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::provider_registry_resolves_all ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::cursor_does_not_support_hooks ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::uninstall_noop_when_not_installed ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::uninstall_removes_hooks_and_mcp ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::windsurf_config_path ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::windsurf_install_mcp ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::zed_config_path ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::write_and_read_config_roundtrip ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::zed_install_is_idempotent ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::zed_uninstall_removes_context_server ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::zed_install_uses_context_servers ... ok
[INFO] [stdout] test cmd::init::tests::activate_hint_exec_for_posix_shells ... ok
[INFO] [stdout] test cmd::init::tests::activate_hint_restart_for_non_posix_shells ... ok
[INFO] [stdout] test cmd::init::tests::all_hooks_are_non_empty ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::severity_set_valid ... ok
[INFO] [stdout] test cmd::init::tests::display_matches_name ... ok
[INFO] [stdout] test cmd::init::tests::eval_shells_hook_contains_shellfirm_pre_command ... ok
[INFO] [stdout] test cmd::init::tests::from_name_round_trip ... ok
[INFO] [stdout] test cmd::init::tests::idempotent_install_detection ... ok
[INFO] [stdout] test cmd::init::tests::activate_hint_returns_non_empty_for_all_shells ... ok
[INFO] [stdout] test cmd::init::tests::install_to_temp_file ... ok
[INFO] [stdout] test cmd::init::tests::rc_paths_resolve_for_known_shells ... ok
[INFO] [stdout] test cmd::init::tests::rc_snippet_returns_full_hook_for_other_shells ... ok
[INFO] [stdout] test cmd::init::tests::uninstall_noop_when_not_installed ... ok
[INFO] [stdout] test cmd::init::tests::uninstall_preserves_rest_of_file ... ok
[INFO] [stdout] test cmd::init::tests::rc_snippet_returns_eval_for_eval_shells ... ok
[INFO] [stdout] test cmd::init::tests::uninstall_removes_block_with_current_marker ... ok
[INFO] [stdout] test cmd::init::tests::uninstall_removes_embedded_hook ... ok
[INFO] [stdout] test cmd::init::tests::validate_shell_arg_rejects_unknown ... ok
[INFO] [stdout] test cmd::init::tests::validate_shell_arg_accepts_known ... ok
[INFO] [stdout] test cmd::check_cmd::tests::json_output_is_valid_json_with_expected_fields ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::all_providers_preserve_existing_config ... ok
[INFO] [stdout] test cmd::connect_cmd::tests::config_path_resolves ... ok
[INFO] [stdout] test cmd::config::test_config_cli_command::reset_config_restores_defaults ... ok
[INFO] [stdout] test cmd::init::tests::detect_installed_shells_does_not_panic ... ok
[INFO] [stdout] test cmd::command::test_command_cli_command::can_run_pre_command_without_match ... ok
[INFO] [stdout] test cmd::command::test_command_cli_command::can_run_pre_command ... ok
[INFO] [stdout] test cmd::check_cmd::tests::check_safe_command_json_has_allowed_true ... ok
[INFO] [stdout] test cmd::check_cmd::tests::check_command_safe_json_exit_code_returns_0_with_allow ... ok
[INFO] [stdout] test cmd::check_cmd::tests::check_command_safe_returns_exit_0 ... ok
[INFO] [stdout] test cmd::check_cmd::tests::check_risky_command_json_has_allowed_false ... ok
[INFO] [stdout] test cmd::check_cmd::tests::check_command_risky_json_exit_code_returns_0_with_deny ... ok
[INFO] [stdout] test cmd::check_cmd::tests::backward_compat_text_mode_without_exit_code_returns_ok_for_risky ... ok
[INFO] [stdout] test cmd::check_cmd::tests::check_command_risky_text_exit_code_returns_2 ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 106 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.12s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/checks.rs (/opt/rustwide/target/debug/deps/checks-ddb33f87ba61855b)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test test_coverage_completeness ... ok
[INFO] [stdout] test test_all_checks ... ok
[INFO] [stderr]      Running tests/decision_matrix.rs (/opt/rustwide/target/debug/deps/decision_matrix-535612aa9f96bf88)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.27s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test test_decision_matrix ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/pure_logic.rs (/opt/rustwide/target/debug/deps/pure_logic-c7add02e5ebbbfc0)
[INFO] [stdout] 
[INFO] [stdout] running 35 tests
[INFO] [stdout] test test_escalate_critical_raises_to_yes ... ok
[INFO] [stdout] test test_escalate_cannot_lower ... ok
[INFO] [stdout] test test_escalate_elevated_raises_to_enter ... ok
[INFO] [stdout] test test_escalate_normal_does_not_change ... ok
[INFO] [stdout] test test_policy_branch_specific_override ... ok
[INFO] [stdout] test test_policy_cannot_weaken ... ok
[INFO] [stdout] test test_policy_merge_adds_deny ... ok
[INFO] [stdout] test test_policy_merge_escalates_challenge ... ok
[INFO] [stdout] test test_severity_escalation_defaults ... ok
[INFO] [stdout] test test_severity_escalation_yaml_roundtrip ... ok
[INFO] [stdout] test test_sparse_config_deserializes_new_fields_with_defaults ... ok
[INFO] [stdout] test test_split_command_double_ampersand ... ok
[INFO] [stdout] test test_split_command_mixed_operators ... ok
[INFO] [stdout] test test_settings_yaml_roundtrip_preserves_new_fields ... ok
[INFO] [stdout] test test_split_command_pipe ... ok
[INFO] [stdout] test test_split_command_respects_double_quotes ... ok
[INFO] [stdout] test test_split_command_respects_single_quotes ... ok
[INFO] [stdout] test test_split_command_semicolon ... ok
[INFO] [stdout] test test_validate_policy_bad_version ... ok
[INFO] [stdout] test test_severity_escalation_disabled_returns_none ... ok
[INFO] [stdout] test test_severity_escalation_custom_values ... ok
[INFO] [stdout] test test_validate_policy_empty_id ... ok
[INFO] [stdout] test test_split_command_single ... ok
[INFO] [stdout] test test_validate_valid_policy ... ok
[INFO] [stdout] test test_alternatives_present_in_force_push_check ... ok
[INFO] [stdout] test test_alternatives_present_in_rm_check ... ok
[INFO] [stdout] test test_safe_command_has_no_alternative ... ok
[INFO] [stdout] test test_pattern_matching_safe_command ... ok
[INFO] [stdout] test test_pattern_matching_database_drop ... ok
[INFO] [stdout] test test_pattern_matching_aws_s3_delete ... ok
[INFO] [stdout] test test_pattern_matching_terraform_auto_approve ... ok
[INFO] [stdout] test test_pattern_matching_git_force_push ... ok
[INFO] [stdout] test test_pattern_matching_kubectl_delete_ns ... ok
[INFO] [stdout] test test_pattern_matching_git_reset ... ok
[INFO] [stdout] test test_pattern_matching_docker_prune ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.77s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/sandboxed_integration.rs (/opt/rustwide/target/debug/deps/sandboxed_integration-60a2e83f050b9ff7)
[INFO] [stdout] 
[INFO] [stdout] running 25 tests
[INFO] [stdout] test test_context_production_ssh_is_critical ... ok
[INFO] [stdout] test test_audit_clear ... ok
[INFO] [stdout] test test_audit_log_written_to_temp_dir ... ok
[INFO] [stdout] test test_custom_checks_loaded_from_temp_dir ... ok
[INFO] [stdout] test test_context_local_dev_is_normal ... ok
[INFO] [stdout] test test_policy_discovery_walks_up ... ok
[INFO] [stdout] test test_policy_discovery_no_file ... ok
[INFO] [stdout] test test_multiple_critical_signals ... ok
[INFO] [stdout] test test_root_escalates_to_critical ... ok
[INFO] [stdout] test test_ssh_only_elevates_to_enter ... ok
[INFO] [stdout] test test_pipeline_safe_command_no_challenge ... ok
[INFO] [stdout] test test_pipeline_local_dev_force_push_passes ... ok
[INFO] [stdout] test test_relevant_context_git_push_shows_branch_hides_k8s ... ok
[INFO] [stdout] test test_pipeline_group_escalation ... ok
[INFO] [stdout] test test_relevant_context_rm_rf_hides_branch_and_k8s ... ok
[INFO] [stdout] test test_pipeline_check_id_escalation ... ok
[INFO] [stdout] test test_pipeline_alternative_shown_for_force_push ... ok
[INFO] [stdout] test test_pipeline_high_severity_escalates_to_enter ... ok
[INFO] [stdout] test test_pipeline_production_ssh_force_push_escalates ... ok
[INFO] [stdout] test test_pipeline_project_policy_denies_force_push ... ok
[INFO] [stdout] test test_pipeline_global_deny_blocks ... ok
[INFO] [stderr]    Doc-tests shellfirm
[INFO] [stdout] test test_relevant_context_kubectl_shows_k8s_hides_branch ... ok
[INFO] [stdout] test test_pipeline_all_layers_compose ... ok
[INFO] [stdout] test test_pipeline_compound_command_detects_risky_part ... ok
[INFO] [stdout] test test_pipeline_severity_disabled_stays_math ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s
[INFO] [stdout] 
[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] running `Command { std: "docker" "inspect" "cd656bddbb29a0c0a835f94755c2fee57d584dc09d7c56ec6cf52578224f54c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cd656bddbb29a0c0a835f94755c2fee57d584dc09d7c56ec6cf52578224f54c1", kill_on_drop: false }`
[INFO] [stdout] cd656bddbb29a0c0a835f94755c2fee57d584dc09d7c56ec6cf52578224f54c1
