[INFO] fetching crate llmtrace-security 0.1.5... [INFO] testing llmtrace-security-0.1.5 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-1 [INFO] extracting crate llmtrace-security 0.1.5 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate llmtrace-security 0.1.5 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate llmtrace-security 0.1.5 [INFO] tweaked toml for crates.io crate llmtrace-security 0.1.5 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate llmtrace-security 0.1.5 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate llmtrace-security 0.1.5 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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded zmij v1.0.18 [INFO] [stderr] Downloaded rayon-cond v0.4.0 [INFO] [stderr] Downloaded monostate v0.1.18 [INFO] [stderr] Downloaded gemm-f64 v0.19.0 [INFO] [stderr] Downloaded gemm-c32 v0.19.0 [INFO] [stderr] Downloaded gemm-c64 v0.19.0 [INFO] [stderr] Downloaded monostate-impl v0.1.18 [INFO] [stderr] Downloaded bindgen_cuda v0.1.6 [INFO] [stderr] Downloaded gemm-f32 v0.19.0 [INFO] [stderr] Downloaded unicode-normalization-alignments v0.1.12 [INFO] [stderr] Downloaded candle-ug v0.9.2 [INFO] [stderr] Downloaded ug-cuda v0.5.0 [INFO] [stderr] Downloaded ug v0.5.0 [INFO] [stderr] Downloaded candle-kernels v0.9.2 [INFO] [stderr] Downloaded candle-nn v0.9.2 [INFO] [stderr] Downloaded fancy-regex v0.17.0 [INFO] [stderr] Downloaded pulp v0.22.2 [INFO] [stderr] Downloaded candle-metal-kernels v0.9.2 [INFO] [stderr] Downloaded indicatif v0.17.11 [INFO] [stderr] Downloaded esaxx-rs v0.1.10 [INFO] [stderr] Downloaded tokenizers v0.22.2 [INFO] [stderr] Downloaded candle-core v0.9.2 [INFO] [stderr] Downloaded indicatif v0.18.3 [INFO] [stderr] Downloaded rand_distr v0.5.1 [INFO] [stderr] Downloaded gemm-common v0.19.0 [INFO] [stderr] Downloaded hf-hub v0.4.3 [INFO] [stderr] Downloaded unicode_categories v0.1.1 [INFO] [stderr] Downloaded safetensors v0.4.5 [INFO] [stderr] Downloaded ug-metal v0.5.0 [INFO] [stderr] Downloaded float8 v0.3.0 [INFO] [stderr] Downloaded float8 v0.6.0 [INFO] [stderr] Downloaded dyn-stack v0.13.2 [INFO] [stderr] Downloaded gemm v0.19.0 [INFO] [stderr] Downloaded safetensors v0.7.0 [INFO] [stderr] Downloaded candle-transformers v0.9.2 [INFO] [stderr] Downloaded llmtrace-core v0.1.5 [INFO] [stderr] Downloaded dary_heap v0.3.8 [INFO] [stderr] Downloaded onig v6.5.1 [INFO] [stderr] Downloaded gemm-f16 v0.19.0 [INFO] [stderr] Downloaded spm_precompiled v0.1.4 [INFO] [stderr] Downloaded dyn-stack-macros v0.1.3 [INFO] [stderr] Downloaded pulp-wasm-simd-flag v0.1.0 [INFO] [stderr] Downloaded cudarc v0.17.8 [INFO] [stderr] Downloaded cudarc v0.19.0 [INFO] [stderr] Downloaded macro_rules_attribute-proc_macro v0.2.2 [INFO] [stderr] Downloaded onig_sys v69.9.1 [INFO] [stderr] Downloaded macro_rules_attribute v0.2.2 [INFO] [stderr] Downloaded serde_plain v1.0.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 76ee3d4705243f4a0369c033d4cbd1846674214499d870d79c9e862041ba8da1 [INFO] running `Command { std: "docker" "start" "-a" "76ee3d4705243f4a0369c033d4cbd1846674214499d870d79c9e862041ba8da1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "76ee3d4705243f4a0369c033d4cbd1846674214499d870d79c9e862041ba8da1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "76ee3d4705243f4a0369c033d4cbd1846674214499d870d79c9e862041ba8da1", kill_on_drop: false }` [INFO] [stdout] 76ee3d4705243f4a0369c033d4cbd1846674214499d870d79c9e862041ba8da1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 36a0cd9fcdbf5b7ebf58b94fa00e1df2b34dfd21d938264f57c70aec6b586ea2 [INFO] running `Command { std: "docker" "start" "-a" "36a0cd9fcdbf5b7ebf58b94fa00e1df2b34dfd21d938264f57c70aec6b586ea2", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling zerocopy v0.8.37 [INFO] [stderr] Compiling zmij v1.0.18 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling sha1_smol v1.0.1 [INFO] [stderr] Compiling tinyvec v1.10.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling unicode-normalization v0.1.25 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling uuid v1.20.0 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling utoipa-gen v5.4.0 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling async-trait v0.1.89 [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 thiserror v1.0.69 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling chrono v0.4.43 [INFO] [stderr] Compiling utoipa v5.4.0 [INFO] [stderr] Compiling llmtrace-core v0.1.5 [INFO] [stderr] Compiling llmtrace-security v0.1.5 (/opt/rustwide/workdir) [INFO] [stdout] warning: struct `DecodedPayload` is never constructed [INFO] [stdout] --> src/encoding.rs:11:19 [INFO] [stdout] | [INFO] [stdout] 11 | pub(crate) struct DecodedPayload { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `BASE64_RE` is never used [INFO] [stdout] --> src/encoding.rs:17:8 [INFO] [stdout] | [INFO] [stdout] 17 | static BASE64_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `BINARY_RE` is never used [INFO] [stdout] --> src/encoding.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | static BINARY_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `CODE_BLOCK_RE` is never used [INFO] [stdout] --> src/encoding.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | static CODE_BLOCK_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `JSON_STRING_RE` is never used [INFO] [stdout] --> src/encoding.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | static JSON_STRING_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `HTML_CODE_RE` is never used [INFO] [stdout] --> src/encoding.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | static HTML_CODE_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_decode_base64` is never used [INFO] [stdout] --> src/encoding.rs:98:15 [INFO] [stdout] | [INFO] [stdout] 98 | pub(crate) fn try_decode_base64(text: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_decode_binary` is never used [INFO] [stdout] --> src/encoding.rs:138:15 [INFO] [stdout] | [INFO] [stdout] 138 | pub(crate) fn try_decode_binary(text: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `normalize_homoglyphs` is never used [INFO] [stdout] --> src/encoding.rs:157:15 [INFO] [stdout] | [INFO] [stdout] 157 | pub(crate) fn normalize_homoglyphs(text: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_code_payloads` is never used [INFO] [stdout] --> src/encoding.rs:237:15 [INFO] [stdout] | [INFO] [stdout] 237 | pub(crate) fn extract_code_payloads(text: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_decode_evasions` is never used [INFO] [stdout] --> src/encoding.rs:278:15 [INFO] [stdout] | [INFO] [stdout] 278 | pub(crate) fn try_decode_evasions(text: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 50.86s [INFO] running `Command { std: "docker" "inspect" "36a0cd9fcdbf5b7ebf58b94fa00e1df2b34dfd21d938264f57c70aec6b586ea2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "36a0cd9fcdbf5b7ebf58b94fa00e1df2b34dfd21d938264f57c70aec6b586ea2", kill_on_drop: false }` [INFO] [stdout] 36a0cd9fcdbf5b7ebf58b94fa00e1df2b34dfd21d938264f57c70aec6b586ea2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9792ff7d901da444ddf5a5ea772e045daf08f7d762eebb8e02cb5bd6d930b96b [INFO] running `Command { std: "docker" "start" "-a" "9792ff7d901da444ddf5a5ea772e045daf08f7d762eebb8e02cb5bd6d930b96b", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling uuid v1.20.0 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling llmtrace-core v0.1.5 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling llmtrace-security v0.1.5 (/opt/rustwide/workdir) [INFO] [stdout] warning: struct `DecodedPayload` is never constructed [INFO] [stdout] --> src/encoding.rs:11:19 [INFO] [stdout] | [INFO] [stdout] 11 | pub(crate) struct DecodedPayload { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `BASE64_RE` is never used [INFO] [stdout] --> src/encoding.rs:17:8 [INFO] [stdout] | [INFO] [stdout] 17 | static BASE64_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `BINARY_RE` is never used [INFO] [stdout] --> src/encoding.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | static BINARY_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `CODE_BLOCK_RE` is never used [INFO] [stdout] --> src/encoding.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | static CODE_BLOCK_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `JSON_STRING_RE` is never used [INFO] [stdout] --> src/encoding.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | static JSON_STRING_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `HTML_CODE_RE` is never used [INFO] [stdout] --> src/encoding.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | static HTML_CODE_RE: LazyLock = [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_decode_base64` is never used [INFO] [stdout] --> src/encoding.rs:98:15 [INFO] [stdout] | [INFO] [stdout] 98 | pub(crate) fn try_decode_base64(text: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_decode_binary` is never used [INFO] [stdout] --> src/encoding.rs:138:15 [INFO] [stdout] | [INFO] [stdout] 138 | pub(crate) fn try_decode_binary(text: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `normalize_homoglyphs` is never used [INFO] [stdout] --> src/encoding.rs:157:15 [INFO] [stdout] | [INFO] [stdout] 157 | pub(crate) fn normalize_homoglyphs(text: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_code_payloads` is never used [INFO] [stdout] --> src/encoding.rs:237:15 [INFO] [stdout] | [INFO] [stdout] 237 | pub(crate) fn extract_code_payloads(text: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_decode_evasions` is never used [INFO] [stdout] --> src/encoding.rs:278:15 [INFO] [stdout] | [INFO] [stdout] 278 | pub(crate) fn try_decode_evasions(text: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `decoded` is never read [INFO] [stdout] --> src/encoding.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub(crate) struct DecodedPayload { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 12 | pub encoding: &'static str, [INFO] [stdout] 13 | pub decoded: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [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 33.63s [INFO] running `Command { std: "docker" "inspect" "9792ff7d901da444ddf5a5ea772e045daf08f7d762eebb8e02cb5bd6d930b96b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9792ff7d901da444ddf5a5ea772e045daf08f7d762eebb8e02cb5bd6d930b96b", kill_on_drop: false }` [INFO] [stdout] 9792ff7d901da444ddf5a5ea772e045daf08f7d762eebb8e02cb5bd6d930b96b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 30bf7749c248afa6aa4cd0ed391ea8c5ef684d6043f742dfd5e182782fb87d6c [INFO] running `Command { std: "docker" "start" "-a" "30bf7749c248afa6aa4cd0ed391ea8c5ef684d6043f742dfd5e182782fb87d6c", kill_on_drop: false }` [INFO] [stderr] warning: struct `DecodedPayload` is never constructed [INFO] [stderr] --> src/encoding.rs:11:19 [INFO] [stderr] | [INFO] [stderr] 11 | pub(crate) struct DecodedPayload { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: static `BASE64_RE` is never used [INFO] [stderr] --> src/encoding.rs:17:8 [INFO] [stderr] | [INFO] [stderr] 17 | static BASE64_RE: LazyLock = [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `BINARY_RE` is never used [INFO] [stderr] --> src/encoding.rs:25:8 [INFO] [stderr] | [INFO] [stderr] 25 | static BINARY_RE: LazyLock = [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `CODE_BLOCK_RE` is never used [INFO] [stderr] --> src/encoding.rs:29:8 [INFO] [stderr] | [INFO] [stderr] 29 | static CODE_BLOCK_RE: LazyLock = [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `JSON_STRING_RE` is never used [INFO] [stderr] --> src/encoding.rs:33:8 [INFO] [stderr] | [INFO] [stderr] 33 | static JSON_STRING_RE: LazyLock = [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `HTML_CODE_RE` is never used [INFO] [stderr] --> src/encoding.rs:37:8 [INFO] [stderr] | [INFO] [stderr] 37 | static HTML_CODE_RE: LazyLock = [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `try_decode_base64` is never used [INFO] [stderr] --> src/encoding.rs:98:15 [INFO] [stderr] | [INFO] [stderr] 98 | pub(crate) fn try_decode_base64(text: &str) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `try_decode_binary` is never used [INFO] [stderr] --> src/encoding.rs:138:15 [INFO] [stderr] | [INFO] [stderr] 138 | pub(crate) fn try_decode_binary(text: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `normalize_homoglyphs` is never used [INFO] [stderr] --> src/encoding.rs:157:15 [INFO] [stderr] | [INFO] [stderr] 157 | pub(crate) fn normalize_homoglyphs(text: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `extract_code_payloads` is never used [INFO] [stderr] --> src/encoding.rs:237:15 [INFO] [stderr] | [INFO] [stderr] 237 | pub(crate) fn extract_code_payloads(text: &str) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `try_decode_evasions` is never used [INFO] [stderr] --> src/encoding.rs:278:15 [INFO] [stderr] | [INFO] [stderr] 278 | pub(crate) fn try_decode_evasions(text: &str) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `llmtrace-security` (lib) generated 11 warnings [INFO] [stderr] warning: field `decoded` is never read [INFO] [stderr] --> src/encoding.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 11 | pub(crate) struct DecodedPayload { [INFO] [stderr] | -------------- field in this struct [INFO] [stderr] 12 | pub encoding: &'static str, [INFO] [stderr] 13 | pub decoded: String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `llmtrace-security` (lib test) generated 1 warning [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.26s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/llmtrace_security-9dd6b2cfc296b972) [INFO] [stdout] [INFO] [stdout] running 914 tests [INFO] [stdout] test action_correlator::tests::test_compiled_pattern_regex_matching ... ok [INFO] [stdout] test action_correlator::tests::test_action_recording_and_history ... ok [INFO] [stdout] test action_correlator::tests::test_custom_pattern_matching ... ok [INFO] [stdout] test action_correlator::tests::test_benign_sequence_not_matched ... ok [INFO] [stdout] test action_correlator::tests::test_escalation_not_triggered_low_risk ... ok [INFO] [stdout] test action_correlator::tests::test_data_exfiltration_chain_detected ... ok [INFO] [stdout] test action_correlator::tests::test_invalid_regex_pattern_rejected ... ok [INFO] [stdout] test action_correlator::tests::test_escalation_not_triggered_for_two_steps ... ok [INFO] [stdout] test action_correlator::tests::test_max_history_enforcement ... ok [INFO] [stdout] test action_correlator::tests::test_empty_history_check_patterns ... ok [INFO] [stdout] test action_correlator::tests::test_pattern_step_min_risk_filter ... ok [INFO] [stdout] test action_correlator::tests::test_credential_theft_pattern ... ok [INFO] [stdout] test action_correlator::tests::test_rapid_action_detection ... ok [INFO] [stdout] test action_correlator::tests::test_privilege_escalation_sequence_detection ... ok [INFO] [stdout] test action_correlator::tests::test_correlation_result_aggregation ... ok [INFO] [stdout] test action_correlator::tests::test_empty_history_detect_escalation ... ok [INFO] [stdout] test action_correlator::tests::test_rapid_action_not_triggered_for_slow_actions ... ok [INFO] [stdout] test action_correlator::tests::test_security_finding_empty_result ... ok [INFO] [stdout] test action_correlator::tests::test_security_finding_generation ... ok [INFO] [stdout] test action_correlator::tests::test_lateral_movement_pattern ... ok [INFO] [stdout] test action_correlator::tests::test_multiple_sessions_independent ... ok [INFO] [stdout] test action_correlator::tests::test_reconnaissance_then_exploit_pattern ... ok [INFO] [stdout] test action_correlator::tests::test_total_risk_capped_at_one ... ok [INFO] [stdout] test action_correlator::tests::test_multiple_patterns_matching_same_sequence ... ok [INFO] [stdout] test action_correlator::tests::test_session_cleanup_expired ... ok [INFO] [stdout] test action_policy::tests::test_action_policy_max_risk_score_clamped ... ok [INFO] [stdout] test action_correlator::tests::test_single_action_no_match ... ok [INFO] [stdout] test action_policy::tests::test_action_policy_builder ... ok [INFO] [stdout] test action_policy::tests::test_action_policy_restrictive ... ok [INFO] [stdout] test action_policy::tests::test_action_policy_new ... ok [INFO] [stdout] test action_policy::tests::test_enforcement_mode_display ... ok [INFO] [stdout] test action_policy::tests::test_enforcement_mode_equality ... ok [INFO] [stdout] test action_correlator::tests::test_time_window_enforcement ... ok [INFO] [stdout] test action_policy::tests::test_engine_add_policy ... ok [INFO] [stdout] test action_correlator::tests::test_with_defaults_has_builtin_patterns ... ok [INFO] [stdout] test action_correlator::tests::test_empty_history_detect_rapid ... ok [INFO] [stdout] test action_policy::tests::test_action_policy_permissive ... ok [INFO] [stdout] test action_correlator::tests::test_wildcard_pattern_step_matches_anything ... ok [INFO] [stdout] test action_correlator::tests::test_temporal_ordering_required ... ok [INFO] [stdout] test action_policy::tests::test_context_minimizer_default ... ok [INFO] [stdout] test action_policy::tests::test_engine_debug ... ok [INFO] [stdout] test action_policy::tests::test_engine_allows_when_all_pass ... ok [INFO] [stdout] test action_policy::tests::test_engine_default ... ok [INFO] [stdout] test action_policy::tests::test_engine_allows_when_no_policies ... ok [INFO] [stdout] test action_policy::tests::test_engine_warn_returned_when_no_deny ... ok [INFO] [stdout] test action_policy::tests::test_engine_first_deny_wins ... ok [INFO] [stdout] test action_policy::tests::test_engine_new_no_policies ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_action_type_allowed ... ok [INFO] [stdout] test action_policy::tests::test_engine_session_counter ... ok [INFO] [stdout] test action_policy::tests::test_engine_session_counter_independent_sessions ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_action_type_blocked ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_adaptive_mode_denies_high_risk ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_allowlist_blocks_unlisted_tool ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_allowlist_permits_listed_tool ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_allowlist_skips_non_tool_actions ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_multiple_violations ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_risk_score_allows_within_threshold ... ok [INFO] [stdout] test action_policy::tests::test_engine_with_custom_minimizer ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_audit_mode_warns_instead_of_deny ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_blocklist_allows_non_blocked_tool ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_blocklist_denies_blocked_tool ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_risk_score_at_boundary ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_unregistered_check_skips_non_tool_actions ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_unregistered_allowed_when_permitted ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_unregistered_blocked_when_not_allowed ... ok [INFO] [stdout] test action_policy::tests::test_integration_restrictive_blocks_high_risk ... ok [INFO] [stdout] test action_policy::tests::test_integration_restrictive_blocks_unregistered ... ok [INFO] [stdout] test action_policy::tests::test_integration_restrictive_with_registered_tool ... ok [INFO] [stdout] test action_policy::tests::test_message_equality ... ok [INFO] [stdout] test action_policy::tests::test_message_new ... ok [INFO] [stdout] test action_policy::tests::test_engine_minimize_context ... ok [INFO] [stdout] test action_policy::tests::test_engine_reset_session ... ok [INFO] [stdout] test action_policy::tests::test_integration_engine_multi_policy ... ok [INFO] [stdout] test action_policy::tests::test_engine_session_limit_audit_mode ... ok [INFO] [stdout] test action_policy::tests::test_evaluate_risk_score_blocks_high_risk ... ok [INFO] [stdout] test action_policy::tests::test_integration_full_pipeline ... ok [INFO] [stdout] test action_policy::tests::test_minimize_strips_system_prompts ... ok [INFO] [stdout] test action_policy::tests::test_minimize_keeps_system_prompts_when_disabled ... ok [INFO] [stdout] test action_policy::tests::test_minimize_empty_messages ... ok [INFO] [stdout] test action_policy::tests::test_minimize_limits_turns ... ok [INFO] [stdout] test action_policy::tests::test_minimize_single_message ... ok [INFO] [stdout] test action_policy::tests::test_minimize_preserves_order ... ok [INFO] [stdout] test action_policy::tests::test_minimize_zero_max_chars ... ok [INFO] [stdout] test action_policy::tests::test_policy_decision_allow ... ok [INFO] [stdout] test action_policy::tests::test_minimize_text_no_patterns_match ... ok [INFO] [stdout] test action_policy::tests::test_policy_decision_deny ... ok [INFO] [stdout] test action_policy::tests::test_minimize_text_strips_api_keys ... ok [INFO] [stdout] test action_policy::tests::test_policy_decision_warn ... ok [INFO] [stdout] test action_policy::tests::test_policy_verdict_display ... ok [INFO] [stdout] test adversarial_defense::tests::accent_stripping_handles_multiple_accents ... ok [INFO] [stdout] test action_policy::tests::test_minimize_truncates_to_max_chars ... ok [INFO] [stdout] test action_policy::tests::test_minimize_text_strips_bearer_tokens ... ok [INFO] [stdout] test adversarial_defense::tests::accent_stripping_removes_diacritics ... ok [INFO] [stdout] test adversarial_defense::tests::all_passes_normalize_complex_evasion ... ok [INFO] [stdout] test adversarial_defense::tests::all_passes_record_changes_per_pass ... ok [INFO] [stdout] test adversarial_defense::tests::calibration_symmetric_around_half ... ok [INFO] [stdout] test adversarial_defense::tests::char_distribution_anomaly_empty ... ok [INFO] [stdout] test adversarial_defense::tests::char_distribution_anomaly_mixed_script ... ok [INFO] [stdout] test adversarial_defense::tests::calibration_clamps_extreme_values ... ok [INFO] [stdout] test adversarial_defense::tests::calibration_temperature_1_is_identity ... ok [INFO] [stdout] test adversarial_defense::tests::calibration_high_temperature_reduces_confidence ... ok [INFO] [stdout] test adversarial_defense::tests::config_defaults_correct ... ok [INFO] [stdout] test adversarial_defense::tests::config_custom_temperature ... ok [INFO] [stdout] test adversarial_defense::tests::edge_case_all_unicode_text ... ok [INFO] [stdout] test adversarial_defense::tests::edge_case_ascii_only_text ... ok [INFO] [stdout] test adversarial_defense::tests::edit_distance_different_chars ... ok [INFO] [stdout] test adversarial_defense::tests::edit_distance_different_lengths ... ok [INFO] [stdout] test adversarial_defense::tests::edge_case_empty_string ... ok [INFO] [stdout] test adversarial_defense::tests::edit_distance_identical_strings ... ok [INFO] [stdout] test adversarial_defense::tests::full_pipeline_adversarial_text ... ok [INFO] [stdout] test adversarial_defense::tests::full_pipeline_clean_text ... ok [INFO] [stdout] test adversarial_defense::tests::homoglyph_map_contains_cyrillic_entries ... ok [INFO] [stdout] test adversarial_defense::tests::homoglyph_map_contains_greek_entries ... ok [INFO] [stdout] test adversarial_defense::tests::homoglyph_normalization_cyrillic_a ... ok [INFO] [stdout] test adversarial_defense::tests::homoglyph_normalization_fullwidth_digits ... ok [INFO] [stdout] test adversarial_defense::tests::homoglyph_normalization_math_bold ... ok [INFO] [stdout] test adversarial_defense::tests::homoglyph_normalization_math_italic ... ok [INFO] [stdout] test adversarial_defense::tests::homoglyph_normalization_mixed_cyrillic_word ... ok [INFO] [stdout] test adversarial_defense::tests::invisible_char_removal_strips_control_chars ... ok [INFO] [stdout] test adversarial_defense::tests::invisible_char_removal_strips_soft_hyphen ... ok [INFO] [stdout] test adversarial_defense::tests::nfkc_normalizes_fullwidth_chars ... ok [INFO] [stdout] test adversarial_defense::tests::nfkc_normalizes_superscript ... ok [INFO] [stdout] test adversarial_defense::tests::normalizer_with_empty_passes ... ok [INFO] [stdout] test adversarial_defense::tests::normalizer_with_single_pass ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_adversarial_flagged ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_clean_ascii_text ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_clean_text_with_newlines ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_context_max_perturbation_reduces_by_40_percent ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_context_reduces_confidence ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_context_zero_perturbation_no_change ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_detects_bidi_overrides ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_detects_cyrillic_homoglyphs ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_detects_invisible_chars ... ok [INFO] [stdout] test adversarial_defense::tests::perturbation_detects_tag_characters ... ok [INFO] [stdout] test adversarial_defense::tests::real_world_cyrillic_a_in_english ... ok [INFO] [stdout] test adversarial_defense::tests::real_world_zero_width_between_letters ... ok [INFO] [stdout] test adversarial_defense::tests::security_findings_empty_for_clean_text ... ok [INFO] [stdout] test adversarial_defense::tests::security_findings_generated_for_homoglyphs ... ok [INFO] [stdout] test adversarial_defense::tests::security_findings_generated_for_invisible_chars ... ok [INFO] [stdout] test adversarial_defense::tests::security_findings_include_adversarial_flag ... ok [INFO] [stdout] test adversarial_defense::tests::suspicion_score_high_for_adversarial_text ... ok [INFO] [stdout] test adversarial_defense::tests::suspicion_score_zero_for_clean_text ... ok [INFO] [stdout] test adversarial_defense::tests::suspicion_score_zero_for_empty ... ok [INFO] [stdout] test adversarial_defense::tests::whitespace_normalization_collapses_multiple ... ok [INFO] [stdout] test adversarial_defense::tests::whitespace_normalization_converts_exotic_spaces ... ok [INFO] [stdout] test adversarial_defense::tests::zero_width_removal_strips_all_types ... ok [INFO] [stdout] test adversarial_defense::tests::zero_width_removal_strips_zwsp ... ok [INFO] [stdout] test canary::tests::test_custom_prefix_and_length ... ok [INFO] [stdout] test canary::tests::test_detect_base64_encoded ... ok [INFO] [stdout] test canary::tests::test_detect_case_insensitive ... ok [INFO] [stdout] test canary::tests::test_detect_case_insensitive_upper ... ok [INFO] [stdout] test canary::tests::test_detect_exact_match ... ok [INFO] [stdout] test canary::tests::test_detect_exact_match_position ... ok [INFO] [stdout] test canary::tests::test_detect_hex_encoded ... ok [INFO] [stdout] test canary::tests::test_detect_multiple_tokens ... ok [INFO] [stdout] test canary::tests::test_detect_partial_match ... ok [INFO] [stdout] test canary::tests::test_detect_reversed_token ... ok [INFO] [stdout] test canary::tests::test_generate_has_correct_length ... ok [INFO] [stdout] test canary::tests::test_generate_tokens_are_unique ... ok [INFO] [stdout] test canary::tests::test_generate_has_correct_prefix ... ok [INFO] [stdout] test canary::tests::test_generate_no_label_by_default ... ok [INFO] [stdout] test canary::tests::test_generate_with_label ... ok [INFO] [stdout] test canary::tests::test_inject_and_detect_roundtrip ... ok [INFO] [stdout] test canary::tests::test_inject_canary_format ... ok [INFO] [stdout] test canary::tests::test_inject_canary_preserves_original ... ok [INFO] [stdout] test canary::tests::test_no_canary_detection_disabled ... ok [INFO] [stdout] test canary::tests::test_no_canary_no_detection ... ok [INFO] [stdout] test canary::tests::test_no_false_positives_on_similar_text ... ok [INFO] [stdout] test canary::tests::test_partial_match_disabled ... ok [INFO] [stdout] test canary::tests::test_partial_match_respects_min_length ... ok [INFO] [stdout] test canary::tests::test_security_finding_metadata ... ok [INFO] [stdout] test canary::tests::test_security_finding_encoded_match ... ok [INFO] [stdout] test canary::tests::test_security_finding_full_match ... ok [INFO] [stdout] test canary::tests::test_security_finding_partial_match ... ok [INFO] [stdout] test canary::tests::test_store_add_and_get ... ok [INFO] [stdout] test canary::tests::test_store_get_empty_tenant ... ok [INFO] [stdout] test canary::tests::test_store_multiple_tenants ... ok [INFO] [stdout] test canary::tests::test_store_remove ... ok [INFO] [stdout] test canary::tests::test_store_remove_cleans_up_empty_tenant ... ok [INFO] [stdout] test canary::tests::test_store_remove_nonexistent ... ok [INFO] [stdout] test adversarial_defense::tests::char_distribution_anomaly_clean_ascii ... ok [INFO] [stdout] test action_policy::tests::test_minimize_strips_tool_results ... ok [INFO] [stdout] test canary::tests::test_store_thread_safety ... ok [INFO] [stdout] test code_security::tests::test_command_injection_subprocess_shell_true ... ok [INFO] [stdout] test action_policy::tests::test_minimize_text_strips_connection_strings ... ok [INFO] [stdout] test action_policy::tests::test_minimize_with_custom_pattern ... ok [INFO] [stdout] test code_security::tests::test_detect_language_from_content ... ok [INFO] [stdout] test code_security::tests::test_detect_language_from_info_string ... ok [INFO] [stdout] test code_security::tests::test_extract_indented_code_block ... ok [INFO] [stdout] test code_security::tests::test_extract_multiple_fenced_blocks ... ok [INFO] [stdout] test code_security::tests::test_extract_fenced_code_block ... ok [INFO] [stdout] test code_security::tests::test_command_injection_child_process_exec_template ... ok [INFO] [stdout] test code_security::tests::test_ecb_mode ... ok [INFO] [stdout] test code_security::tests::test_command_injection_os_system_fstring ... ok [INFO] [stdout] test code_security::tests::test_env_var_password_safe ... ok [INFO] [stdout] test code_security::tests::test_command_injection_os_system_concat ... ok [INFO] [stdout] test code_security::tests::test_eval_json_parse ... ok [INFO] [stdout] test code_security::tests::test_findings_have_correct_type ... ok [INFO] [stdout] test code_security::tests::test_hardcoded_api_key ... ok [INFO] [stdout] test code_security::tests::test_findings_severity_high_or_above ... ok [INFO] [stdout] test code_security::tests::test_hardcoded_password ... ok [INFO] [stdout] test code_security::tests::test_hardcoded_connection_string ... ok [INFO] [stdout] test code_security::tests::test_no_code_blocks_returns_empty ... ok [INFO] [stdout] test code_security::tests::test_math_random_token ... ok [INFO] [stdout] test code_security::tests::test_indented_code_block_detection ... ok [INFO] [stdout] test code_security::tests::test_multiple_vulns_in_one_block ... ok [INFO] [stdout] test code_security::tests::test_md5_password ... ok [INFO] [stdout] test code_security::tests::test_path_traversal_user_input ... ok [INFO] [stdout] test code_security::tests::test_path_traversal_open_dotdot ... ok [INFO] [stdout] test code_security::tests::test_pickle_loads ... ok [INFO] [stdout] test code_security::tests::test_safe_node_code_no_findings ... ok [INFO] [stdout] test code_security::tests::test_safe_python_code_no_findings ... ok [INFO] [stdout] test code_security::tests::test_sql_injection_fstring ... ok [INFO] [stdout] test code_security::tests::test_sql_injection_execute_format ... ok [INFO] [stdout] test code_security::tests::test_sql_parameterised_query_safe ... ok [INFO] [stdout] test code_security::tests::test_subprocess_list_args_safe ... ok [INFO] [stdout] test code_security::tests::test_sql_injection_string_concat ... ok [INFO] [stdout] test encoding::tests::test_decode_leetspeak ... ok [INFO] [stdout] test encoding::tests::test_extract_code_payloads_json ... ok [INFO] [stdout] test encoding::tests::test_extract_code_payloads_markdown ... ok [INFO] [stdout] test code_security::tests::test_xss_dangerously_set_inner_html ... ok [INFO] [stdout] test encoding::tests::test_is_suspicious_decoded ... ok [INFO] [stdout] test encoding::tests::test_extract_code_payloads_short_ignored ... ok [INFO] [stdout] test encoding::tests::test_normalize_homoglyphs_cyrillic ... ok [INFO] [stdout] test encoding::tests::test_rot13_known ... ok [INFO] [stdout] test encoding::tests::test_rot13_roundtrip ... ok [INFO] [stdout] test encoding::tests::test_normalize_homoglyphs_upside_down ... ok [INFO] [stdout] test encoding::tests::test_try_decode_base64_short_ignored ... ok [INFO] [stdout] test encoding::tests::test_try_decode_base64 ... ok [INFO] [stdout] test encoding::tests::test_normalize_homoglyphs_plain_unchanged ... ok [INFO] [stdout] test encoding::tests::test_try_decode_evasions_benign_no_results ... ok [INFO] [stdout] test encoding::tests::test_try_decode_binary_too_short ... ok [INFO] [stdout] test encoding::tests::test_try_decode_evasions_rot13 ... ok [INFO] [stdout] test encoding::tests::test_try_decode_hex_short_ignored ... ok [INFO] [stdout] test encoding::tests::test_try_decode_hex ... ok [INFO] [stdout] test fpr_monitor::tests::all_flagged ... ok [INFO] [stdout] test fpr_monitor::tests::check_all_drift_only_drifted_categories ... ok [INFO] [stdout] test fpr_monitor::tests::confidence_clamped_to_unit_range ... ok [INFO] [stdout] test fpr_monitor::tests::current_fpr_reflects_recorded_events ... ok [INFO] [stdout] test fpr_monitor::tests::drift_fires_once_min_samples_reached ... ok [INFO] [stdout] test fpr_monitor::tests::drift_fires_when_exactly_at_threshold ... ok [INFO] [stdout] test fpr_monitor::tests::drift_fires_when_exceeding_threshold ... ok [INFO] [stdout] test fpr_monitor::tests::drift_below_baseline_also_detected ... ok [INFO] [stdout] test fpr_monitor::tests::dynamic_category_creation ... ok [INFO] [stdout] test encoding::tests::test_try_decode_binary_in_evasions ... ok [INFO] [stdout] test fpr_monitor::tests::empty_alerts_produce_empty_findings ... ok [INFO] [stdout] test fpr_monitor::tests::empty_monitor_returns_no_drift ... ok [INFO] [stdout] test fpr_monitor::tests::min_samples_enforcement ... ok [INFO] [stdout] test fpr_monitor::tests::multiple_categories_independent ... ok [INFO] [stdout] test fpr_monitor::tests::multiple_findings_from_multiple_alerts ... ok [INFO] [stdout] test fpr_monitor::tests::no_drift_below_threshold ... ok [INFO] [stdout] test fpr_monitor::tests::none_flagged ... ok [INFO] [stdout] test fpr_monitor::tests::per_category_tracking ... ok [INFO] [stdout] test fpr_monitor::tests::pruned_events_do_not_affect_drift ... ok [INFO] [stdout] test fpr_monitor::tests::empty_monitor_current_fpr_is_none_for_known_category ... ok [INFO] [stdout] test fpr_monitor::tests::recording_events_updates_counts ... ok [INFO] [stdout] test fpr_monitor::tests::security_finding_from_large_drift ... ok [INFO] [stdout] test fpr_monitor::tests::security_finding_from_small_drift ... ok [INFO] [stdout] test fpr_monitor::tests::security_finding_metadata_populated ... ok [INFO] [stdout] test fpr_monitor::tests::single_sample_below_min_window ... ok [INFO] [stdout] test fpr_monitor::tests::summary_computes_stats ... ok [INFO] [stdout] test fpr_monitor::tests::summary_empty_category_has_zero_stats ... ok [INFO] [stdout] test fpr_monitor::tests::summary_sorted_by_category ... ok [INFO] [stdout] test fpr_monitor::tests::window_prunes_old_events ... ok [INFO] [stdout] test fpr_monitor::tests::empty_monitor_current_fpr_is_none_for_unknown ... ok [INFO] [stdout] test fpr_monitor::tests::security_finding_from_medium_drift ... ok [INFO] [stdout] test encoding::tests::test_try_decode_binary ... ok [INFO] [stdout] test code_security::tests::test_yaml_load_unsafe ... ok [INFO] [stdout] test code_security::tests::test_xss_innerhtml ... ok [INFO] [stdout] test code_security::tests::test_xss_document_write ... ok [INFO] [stdout] test code_security::tests::test_severity_threshold_filters_low ... ok [INFO] [stdout] test jailbreak_detector::tests::test_base64_benign_not_flagged ... ok [INFO] [stdout] test jailbreak_detector::tests::test_base64_encoded_jailbreak ... ok [INFO] [stdout] test jailbreak_detector::tests::test_benign_instructions_question ... ok [INFO] [stdout] test jailbreak_detector::tests::test_benign_code_discussion ... ok [INFO] [stdout] test jailbreak_detector::tests::test_combined_heuristic_and_encoding ... ok [INFO] [stdout] test jailbreak_detector::tests::test_benign_debug_discussion ... ok [INFO] [stdout] test jailbreak_detector::tests::test_decode_leetspeak ... ok [INFO] [stdout] test jailbreak_detector::tests::test_benign_admin_mention ... ok [INFO] [stdout] test jailbreak_detector::tests::test_benign_weather ... ok [INFO] [stdout] test jailbreak_detector::tests::test_dan_identity ... ok [INFO] [stdout] test jailbreak_detector::tests::test_dan_do_anything_now ... ok [INFO] [stdout] test jailbreak_detector::tests::test_dan_no_restrictions ... ok [INFO] [stdout] test jailbreak_detector::tests::test_evil_persona ... ok [INFO] [stdout] test jailbreak_detector::tests::test_developer_mode ... ok [INFO] [stdout] test jailbreak_detector::tests::test_detector_creation ... ok [INFO] [stdout] test jailbreak_detector::tests::test_disabled_detector_returns_nothing ... ok [INFO] [stdout] test jailbreak_detector::tests::test_debug_mode ... ok [INFO] [stdout] test jailbreak_detector::tests::test_god_mode ... ok [INFO] [stdout] test jailbreak_detector::tests::test_disable_safety_filters ... ok [INFO] [stdout] test jailbreak_detector::tests::test_finding_has_jailbreak_type_metadata ... ok [INFO] [stdout] test jailbreak_detector::tests::test_enter_admin_mode ... ok [INFO] [stdout] test jailbreak_detector::tests::test_leetspeak_jailbreak ... ok [INFO] [stdout] test jailbreak_detector::tests::test_opposite_mode ... ok [INFO] [stdout] test jailbreak_detector::tests::test_jailbreak_severity_high_or_critical ... ok [INFO] [stdout] test jailbreak_detector::tests::test_ignore_previous_instructions ... ok [INFO] [stdout] test jailbreak_detector::tests::test_rot13_known_value ... ok [INFO] [stdout] test jailbreak_detector::tests::test_rot13_roundtrip ... ok [INFO] [stdout] test jailbreak_detector::tests::test_no_ethical_guidelines ... ok [INFO] [stdout] test jailbreak_detector::tests::test_leetspeak_benign_not_flagged ... ok [INFO] [stdout] test jailbreak_detector::tests::test_rot13_benign_not_flagged ... ok [INFO] [stdout] test mcp_monitor::tests::config_disable_scan_skips_schema_check ... ok [INFO] [stdout] test mcp_monitor::tests::config_disable_shadowing_skips_shadow_check ... ok [INFO] [stdout] test jailbreak_detector::tests::test_reversed_jailbreak ... ok [INFO] [stdout] test mcp_monitor::tests::default_exfiltration_patterns_compile ... ok [INFO] [stdout] test jailbreak_detector::tests::test_stan_persona ... ok [INFO] [stdout] test jailbreak_detector::tests::test_repeat_instructions ... ok [INFO] [stdout] test mcp_monitor::tests::default_injection_patterns_compile ... ok [INFO] [stdout] test mcp_monitor::tests::detect_shadowing_different_server ... ok [INFO] [stdout] test mcp_monitor::tests::detect_shadowing_same_server_is_ok ... ok [INFO] [stdout] test mcp_monitor::tests::detect_shadowing_no_conflict ... ok [INFO] [stdout] test jailbreak_detector::tests::test_reveal_hidden_prompt ... ok [INFO] [stdout] test mcp_monitor::tests::exfiltration_detects_hex_encoded ... ok [INFO] [stdout] test mcp_monitor::tests::exfiltration_no_false_positive_on_short_strings ... ok [INFO] [stdout] test jailbreak_detector::tests::test_rot13_encoded_jailbreak ... ok [INFO] [stdout] test mcp_monitor::tests::exfiltration_multiple_urls ... ok [INFO] [stdout] test jailbreak_detector::tests::test_what_is_system_prompt ... ok [INFO] [stdout] test mcp_monitor::tests::injection_confidence_values_are_valid ... ok [INFO] [stdout] test jailbreak_detector::tests::test_unlock_capabilities ... ok [INFO] [stdout] test mcp_monitor::tests::multi_server_shadowing_during_registration ... ok [INFO] [stdout] test mcp_monitor::tests::register_untrusted_server_returns_violation ... ok [INFO] [stdout] test mcp_monitor::tests::multi_server_independent_tools_no_conflict ... ok [INFO] [stdout] test mcp_monitor::tests::register_server_detects_description_too_long ... ok [INFO] [stdout] test mcp_monitor::tests::register_server_schema_injection_violation ... ok [INFO] [stdout] test mcp_monitor::tests::register_trusted_server_ok ... ok [INFO] [stdout] test mcp_monitor::tests::role_injection_act_as ... ok [INFO] [stdout] test mcp_monitor::tests::response_clean ... ok [INFO] [stdout] test mcp_monitor::tests::response_with_base64_exfiltration ... ok [INFO] [stdout] test mcp_monitor::tests::response_with_exfiltration_url ... ok [INFO] [stdout] test mcp_monitor::tests::role_injection_pretend ... ok [INFO] [stdout] test mcp_monitor::tests::response_with_injection ... ok [INFO] [stdout] test mcp_monitor::tests::scan_injection_empty_string ... ok [INFO] [stdout] test mcp_monitor::tests::scan_injection_unicode_text ... ok [INFO] [stdout] test mcp_monitor::tests::schema_clean_description ... ok [INFO] [stdout] test mcp_monitor::tests::schema_detects_injection_in_param_descriptions ... ok [INFO] [stdout] test mcp_monitor::tests::schema_detects_instruction_injection ... ok [INFO] [stdout] test mcp_monitor::tests::schema_detects_delimiter_injection ... ok [INFO] [stdout] test mcp_monitor::tests::to_security_findings_description_too_long ... ok [INFO] [stdout] test mcp_monitor::tests::to_security_findings_exfiltration ... ok [INFO] [stdout] test mcp_monitor::tests::to_security_findings_multiple_violations ... ok [INFO] [stdout] test mcp_monitor::tests::schema_detects_role_injection ... ok [INFO] [stdout] test mcp_monitor::tests::schema_detects_system_prompt_override ... ok [INFO] [stdout] test mcp_monitor::tests::to_security_findings_schema_injection ... ok [INFO] [stdout] test multi_agent::tests::agent_id_display ... ok [INFO] [stdout] test mcp_monitor::tests::to_security_findings_tool_shadowing ... ok [INFO] [stdout] test mcp_monitor::tests::to_security_findings_untrusted_server ... ok [INFO] [stdout] test mcp_monitor::tests::validate_server_empty_allowlist ... ok [INFO] [stdout] test mcp_monitor::tests::to_security_findings_response_injection ... ok [INFO] [stdout] test mcp_monitor::tests::validate_server_not_on_allowlist ... ok [INFO] [stdout] test multi_agent::tests::communication_policy_allow ... ok [INFO] [stdout] test multi_agent::tests::delegation_chain_depth_exceeded ... ok [INFO] [stdout] test multi_agent::tests::delegation_chain_privilege_escalation ... ok [INFO] [stdout] test multi_agent::tests::delegation_chain_single_agent_trivially_valid ... ok [INFO] [stdout] test multi_agent::tests::delegation_chain_valid ... ok [INFO] [stdout] test multi_agent::tests::delegation_denied_escalation ... ok [INFO] [stdout] test multi_agent::tests::delegation_denied_unknown_agent ... ok [INFO] [stdout] test mcp_monitor::tests::validate_server_on_allowlist ... ok [INFO] [stdout] test mcp_monitor::tests::very_long_description_schema_validation ... ok [INFO] [stdout] test multi_agent::tests::communication_policy_deny ... ok [INFO] [stdout] test multi_agent::tests::delegation_allowed_higher_to_lower ... ok [INFO] [stdout] test multi_agent::tests::default_config_values ... ok [INFO] [stdout] test multi_agent::tests::permission_matrix_defaults_when_no_entry ... ok [INFO] [stdout] test multi_agent::tests::max_log_size_enforced ... ok [INFO] [stdout] test multi_agent::tests::delegation_message_privilege_escalation_blocked ... ok [INFO] [stdout] test multi_agent::tests::multiple_agents_different_trust_levels ... ok [INFO] [stdout] test multi_agent::tests::check_delegation_denied_no_tool_access ... ok [INFO] [stdout] test multi_agent::tests::check_delegation_with_tool_access ... ok [INFO] [stdout] test multi_agent::tests::process_message_denied_no_permission ... ok [INFO] [stdout] test multi_agent::tests::process_message_allowed ... ok [INFO] [stdout] test multi_agent::tests::process_delegation_clean_content_allowed ... ok [INFO] [stdout] test multi_agent::tests::process_message_denied_injection ... ok [INFO] [stdout] test multi_agent::tests::scan_clean_message_passes ... ok [INFO] [stdout] test multi_agent::tests::tool_access_denied ... ok [INFO] [stdout] test multi_agent::tests::tool_access_denied_unknown_agent ... ok [INFO] [stdout] test multi_agent::tests::tool_access_granted ... ok [INFO] [stdout] test multi_agent::tests::trust_level_scan_intensity_mapping ... ok [INFO] [stdout] test multi_agent::tests::register_agent_stores_profile ... ok [INFO] [stdout] test multi_agent::tests::scan_detects_exfiltration_at_deep_intensity ... ok [INFO] [stdout] test multi_agent::tests::scan_detects_injection ... ok [INFO] [stdout] test normalise::tests::test_braille_blank_to_space ... ok [INFO] [stdout] test multi_agent::tests::scan_detects_identity_override ... ok [INFO] [stdout] test normalise::tests::test_braille_with_spaces ... ok [INFO] [stdout] test normalise::tests::test_braille_individual_letters ... ok [INFO] [stdout] test normalise::tests::test_braille_word_hello ... ok [INFO] [stdout] test normalise::tests::test_braille_word_ignore ... ok [INFO] [stdout] test normalise::tests::test_combined_all_evasion_techniques ... ok [INFO] [stdout] test normalise::tests::test_combined_braille_and_zero_width ... ok [INFO] [stdout] test normalise::tests::test_combined_emoji_and_diacritics ... ok [INFO] [stdout] test normalise::tests::test_combined_fullwidth_and_zero_width ... ok [INFO] [stdout] test normalise::tests::test_combined_zero_width_and_homoglyph ... ok [INFO] [stdout] test normalise::tests::test_cyrillic_a_to_latin_a ... ok [INFO] [stdout] test normalise::tests::test_cyrillic_c_to_latin_c ... ok [INFO] [stdout] test normalise::tests::test_cyrillic_e_to_latin_e ... ok [INFO] [stdout] test normalise::tests::test_cyrillic_o_to_latin_o ... ok [INFO] [stdout] test normalise::tests::test_cyrillic_p_to_latin_p ... ok [INFO] [stdout] test normalise::tests::test_cyrillic_uppercase_confusables ... ok [INFO] [stdout] test normalise::tests::test_diacritics_cafe ... ok [INFO] [stdout] test normalise::tests::test_diacritics_ignore_evasion ... ok [INFO] [stdout] test normalise::tests::test_diacritics_multiple_accents ... ok [INFO] [stdout] test normalise::tests::test_diacritics_naive ... ok [INFO] [stdout] test normalise::tests::test_diacritics_resume ... ok [INFO] [stdout] test normalise::tests::test_diacritics_stripped_from_accented_latin ... ok [INFO] [stdout] test normalise::tests::test_emoji_stripped_from_cjk_text ... ok [INFO] [stdout] test normalise::tests::test_empty_string ... ok [INFO] [stdout] test normalise::tests::test_full_cyrillic_word_looks_like_ignore ... ok [INFO] [stdout] test normalise::tests::test_combined_emoji_and_upside_down ... ok [INFO] [stdout] test normalise::tests::test_greek_uppercase_confusables ... ok [INFO] [stdout] test normalise::tests::test_mixed_script_homoglyph_attack ... ok [INFO] [stdout] test normalise::tests::test_nfkc_fullwidth_to_ascii ... ok [INFO] [stdout] test normalise::tests::test_greek_omicron_to_latin_o ... ok [INFO] [stdout] test normalise::tests::test_nfkc_preserves_normal_ascii ... ok [INFO] [stdout] test normalise::tests::test_nfkc_roman_numeral ... ok [INFO] [stdout] test normalise::tests::test_nfkc_superscript_digits ... ok [INFO] [stdout] test normalise::tests::test_nfkc_ligature_fi ... ok [INFO] [stdout] test normalise::tests::test_preserves_normal_unicode ... ok [INFO] [stdout] test normalise::tests::test_realistic_evasion_ignore_previous_instructions ... ok [INFO] [stdout] test normalise::tests::test_only_zero_width_chars ... ok [INFO] [stdout] test multi_agent::tests::security_findings_for_exfiltration ... ok [INFO] [stdout] test normalise::tests::test_strip_all_tag_range ... ok [INFO] [stdout] test normalise::tests::test_strip_bidi_isolates ... ok [INFO] [stdout] test normalise::tests::test_strip_diacritics_standalone ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_dingbats ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_misc_symbols ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_multiple ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_preserves_text_between ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_simple ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_skin_tone ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_standalone_function ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_transport ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_variation_selectors ... ok [INFO] [stdout] test normalise::tests::test_strip_emoji_zwj_sequence ... ok [INFO] [stdout] test multi_agent::tests::system_agent_minimal_scan ... ok [INFO] [stdout] test normalise::tests::test_strip_bidi_controls ... ok [INFO] [stdout] test normalise::tests::test_strip_line_separator ... ok [INFO] [stdout] test normalise::tests::test_strip_paragraph_separator ... ok [INFO] [stdout] test normalise::tests::test_strip_multiple_zero_width_in_keyword ... ok [INFO] [stdout] test normalise::tests::test_strip_tag_characters_range ... ok [INFO] [stdout] test normalise::tests::test_strip_tag_language_tag ... ok [INFO] [stdout] test normalise::tests::test_strip_word_joiner ... ok [INFO] [stdout] test normalise::tests::test_strip_zero_width_joiner ... ok [INFO] [stdout] test normalise::tests::test_strip_zero_width_non_joiner ... ok [INFO] [stdout] test normalise::tests::test_strip_zero_width_space ... ok [INFO] [stdout] test normalise::tests::test_upside_down_individual_chars ... ok [INFO] [stdout] test normalise::tests::test_upside_down_uppercase_chars ... ok [INFO] [stdout] test normalise::tests::test_upside_down_word_attack ... ok [INFO] [stdout] test normalise::tests::test_upside_down_word_hello ... ok [INFO] [stdout] test normalise::tests::test_upside_down_word_text ... ok [INFO] [stdout] test pii_validation::tests::test_iban_case_insensitive ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_all_zeros ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_checksum ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_iban_bad_checksum ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_iban_no_letter_prefix ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_iban_too_short ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_non_digits ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_ssn_area_000 ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_ssn_area_666 ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_ssn_area_900 ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_ssn_area_999 ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_ssn_group_00 ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_ssn_serial_0000 ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_ssn_wrong_length ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_too_long ... ok [INFO] [stdout] test pii_validation::tests::test_invalid_too_short ... ok [INFO] [stdout] test pii_validation::tests::test_valid_amex_test ... ok [INFO] [stdout] test pii_validation::tests::test_valid_discover ... ok [INFO] [stdout] test pii_validation::tests::test_valid_french_iban ... ok [INFO] [stdout] test pii_validation::tests::test_valid_german_iban ... ok [INFO] [stdout] test pii_validation::tests::test_valid_german_iban_no_spaces ... ok [INFO] [stdout] test pii_validation::tests::test_valid_italian_iban ... ok [INFO] [stdout] test pii_validation::tests::test_valid_mastercard_test ... ok [INFO] [stdout] test pii_validation::tests::test_valid_spanish_iban ... ok [INFO] [stdout] test pii_validation::tests::test_valid_ssn ... ok [INFO] [stdout] test pii_validation::tests::test_valid_ssn_boundary_area_001 ... ok [INFO] [stdout] test pii_validation::tests::test_valid_ssn_boundary_area_899 ... ok [INFO] [stdout] test pii_validation::tests::test_valid_ssn_no_dashes ... ok [INFO] [stdout] test pii_validation::tests::test_valid_uk_iban ... ok [INFO] [stdout] test multi_agent::tests::unknown_agent_gets_maximum_scan ... ok [INFO] [stdout] test pii_validation::tests::test_valid_visa_test_card ... ok [INFO] [stdout] test normalise::tests::test_strip_soft_hyphen ... ok [INFO] [stdout] test pii_validation::tests::test_valid_visa_with_dashes ... ok [INFO] [stdout] test normalise::tests::test_strip_bom ... ok [INFO] [stdout] test pii_validation::tests::test_valid_visa_no_spaces ... ok [INFO] [stdout] test result_parser::tests::cascade_none_above_threshold_returns_benign ... ok [INFO] [stdout] test result_parser::tests::cascade_first_high_confidence_wins ... ok [INFO] [stdout] test result_parser::tests::conservative_any_threat_flags ... ok [INFO] [stdout] test result_parser::tests::conservative_below_threshold_ignored ... ok [INFO] [stdout] test result_parser::tests::custom_threshold_enforcement ... ok [INFO] [stdout] test result_parser::tests::detector_result_construction_and_metadata ... ok [INFO] [stdout] test result_parser::tests::detector_result_serde_roundtrip ... ok [INFO] [stdout] test result_parser::tests::empty_results_cascade ... ok [INFO] [stdout] test result_parser::tests::empty_results_conservative ... ok [INFO] [stdout] test result_parser::tests::empty_results_majority_vote ... ok [INFO] [stdout] test result_parser::tests::empty_results_permissive ... ok [INFO] [stdout] test result_parser::tests::empty_results_weighted_vote ... ok [INFO] [stdout] test result_parser::tests::input_hash_deterministic ... ok [INFO] [stdout] test result_parser::tests::input_hash_differs_for_different_inputs ... ok [INFO] [stdout] test result_parser::tests::input_hash_empty_string ... ok [INFO] [stdout] test result_parser::tests::majority_vote_all_benign ... ok [INFO] [stdout] test result_parser::tests::majority_vote_below_threshold_ignored ... ok [INFO] [stdout] test result_parser::tests::majority_vote_mixed_threats ... ok [INFO] [stdout] test result_parser::tests::majority_vote_single_threat_wins ... ok [INFO] [stdout] test result_parser::tests::permissive_all_agree_benign ... ok [INFO] [stdout] test result_parser::tests::permissive_all_agree_on_threat ... ok [INFO] [stdout] test result_parser::tests::permissive_disagreement_returns_benign ... ok [INFO] [stdout] test result_parser::tests::scan_result_builder_basic ... ok [INFO] [stdout] test result_parser::tests::scan_result_serde_roundtrip ... ok [INFO] [stdout] test result_parser::tests::scan_result_to_security_findings_excludes_benign ... ok [INFO] [stdout] test result_parser::tests::single_detector_all_strategies ... ok [INFO] [stdout] test normalise::tests::test_strip_tag_cancel_tag ... ok [INFO] [stdout] test result_parser::tests::threat_category_is_threat ... ok [INFO] [stdout] test multi_agent::tests::security_findings_generated_for_injection ... ok [INFO] [stdout] test result_parser::tests::threat_category_finding_type_mapping ... ok [INFO] [stdout] test result_parser::tests::threat_category_serde_roundtrip ... ok [INFO] [stdout] test result_parser::tests::aggregated_result_has_correct_strategy ... ok [INFO] [stdout] test result_parser::tests::conservative_all_benign_returns_benign ... ok [INFO] [stdout] test result_parser::tests::detector_result_to_security_finding ... ok [INFO] [stdout] test result_parser::tests::weighted_vote_default_weight_is_one ... ok [INFO] [stdout] test result_parser::tests::weighted_vote_respects_weights ... ok [INFO] [stdout] test session_analyzer::tests::benign_multi_turn_no_extraction_alert ... ok [INFO] [stdout] test session_analyzer::tests::all_zero_risk_session ... ok [INFO] [stdout] test session_analyzer::tests::analyze_nonexistent_session_returns_empty ... ok [INFO] [stdout] test multi_agent::tests::validate_message_flow_allowed ... ok [INFO] [stdout] test multi_agent::tests::validate_message_flow_denied ... ok [INFO] [stdout] test session_analyzer::tests::benign_request_no_extraction_alert ... ok [INFO] [stdout] test session_analyzer::tests::cleanup_keeps_active_sessions ... ok [INFO] [stdout] test session_analyzer::tests::cleanup_removes_expired_sessions ... ok [INFO] [stdout] test session_analyzer::tests::extract_tokens_filters_short_words ... ok [INFO] [stdout] test session_analyzer::tests::cumulative_risk_accumulates_across_turns ... ok [INFO] [stdout] test session_analyzer::tests::escalation_detected_when_risk_increases_repeatedly ... ok [INFO] [stdout] test session_analyzer::tests::cumulative_risk_exceeded_alert_fires ... ok [INFO] [stdout] test session_analyzer::tests::jaccard_disjoint_sets ... ok [INFO] [stdout] test session_analyzer::tests::jaccard_empty_sets ... ok [INFO] [stdout] test session_analyzer::tests::jaccard_identical_sets ... ok [INFO] [stdout] test session_analyzer::tests::extraction_probe_boundary_testing ... ok [INFO] [stdout] test session_analyzer::tests::cumulative_risk_below_threshold_no_alert ... ok [INFO] [stdout] test session_analyzer::tests::extraction_probe_system_prompt ... ok [INFO] [stdout] test session_analyzer::tests::escalation_count_below_threshold_does_not_alert ... ok [INFO] [stdout] test session_analyzer::tests::extraction_probe_credential_probing ... ok [INFO] [stdout] test session_analyzer::tests::finding_types_stored_in_events ... ok [INFO] [stdout] test session_analyzer::tests::extraction_probe_context_dump ... ok [INFO] [stdout] test session_analyzer::tests::multi_turn_event_recording ... ok [INFO] [stdout] test session_analyzer::tests::max_events_enforced ... ok [INFO] [stdout] test session_analyzer::tests::new_session_created_on_first_event ... ok [INFO] [stdout] test session_analyzer::tests::no_escalation_when_risk_decreases ... ok [INFO] [stdout] test session_analyzer::tests::no_escalation_when_risk_stays_flat ... ok [INFO] [stdout] test session_analyzer::tests::multiple_sessions_independent ... ok [INFO] [stdout] test session_analyzer::tests::no_topic_shift_when_risk_is_zero ... ok [INFO] [stdout] test session_analyzer::tests::no_topic_shift_for_similar_turns ... ok [INFO] [stdout] test session_analyzer::tests::response_text_stored_when_provided ... ok [INFO] [stdout] test session_analyzer::tests::to_security_findings_generates_cumulative_risk_finding ... ok [INFO] [stdout] test session_analyzer::tests::single_event_session_no_escalation ... ok [INFO] [stdout] test session_analyzer::tests::to_security_findings_generates_escalation_finding ... ok [INFO] [stdout] test tests::test_basic_stem_able ... ok [INFO] [stdout] test tests::test_basic_stem_ed ... ok [INFO] [stdout] test tests::test_basic_stem_ing ... ok [INFO] [stdout] test tests::test_basic_stem_ly ... ok [INFO] [stdout] test tests::test_basic_stem_ment ... ok [INFO] [stdout] test session_analyzer::tests::topic_shift_detected_on_abrupt_change_with_risk ... ok [INFO] [stdout] test tests::test_basic_stem_ness ... ok [INFO] [stdout] test tests::test_basic_stem_no_change ... ok [INFO] [stdout] test tests::test_basic_stem_ous ... ok [INFO] [stdout] test tests::test_basic_stem_plural_then_suffix ... ok [INFO] [stdout] test tests::test_basic_stem_tion ... ok [INFO] [stdout] test tests::test_basic_stem_too_short ... ok [INFO] [stdout] test session_analyzer::tests::to_security_findings_generates_topic_shift_finding ... ok [INFO] [stdout] test session_analyzer::tests::to_security_findings_generates_extraction_finding ... ok [INFO] [stdout] test tests::test_analyzer_default_succeeds ... ok [INFO] [stdout] test tests::test_clean_technical_prompt_no_findings ... ok [INFO] [stdout] test tests::test_analyze_interaction_combines_findings ... ok [INFO] [stdout] test tests::test_clean_response_no_findings ... ok [INFO] [stdout] test tests::test_case_insensitive_injection_detection ... ok [INFO] [stdout] test tests::test_benign_base64_not_flagged_as_encoding_attack ... ok [INFO] [stdout] test tests::test_clean_prompt_no_findings ... ok [INFO] [stdout] test tests::test_analyzer_creation_succeeds ... ok [INFO] [stdout] test tests::test_combined_flattery_and_urgency ... ok [INFO] [stdout] test tests::test_command_with_arguments_field ... ok [INFO] [stdout] test tests::test_confidence_scores_in_valid_range ... ok [INFO] [stdout] test tests::test_combined_impersonation_and_covert ... ok [INFO] [stdout] test tests::test_context_flooding_clean_text_no_findings ... ok [INFO] [stdout] test tests::test_context_flooding_empty_text ... ok [INFO] [stdout] test tests::test_context_flooding_entropy_short_text_skipped ... ok [INFO] [stdout] test tests::test_context_flooding_excessive_length ... ok [INFO] [stdout] test tests::test_context_flooding_in_analyze_request ... ok [INFO] [stdout] test tests::test_context_flooding_high_repetition ... ok [INFO] [stdout] test tests::test_context_flooding_in_supported_types ... ok [INFO] [stdout] test tests::test_context_flooding_low_entropy ... ok [INFO] [stdout] test tests::test_context_flooding_metadata_fields ... ok [INFO] [stdout] test tests::test_context_flooding_invisible_chars ... ok [INFO] [stdout] test tests::test_context_flooding_normal_whitespace_not_detected ... ok [INFO] [stdout] test tests::test_context_flooding_normal_length_not_detected ... ok [INFO] [stdout] test tests::test_context_flooding_multiple_detections ... ok [INFO] [stdout] test tests::test_context_flooding_repeated_lines_below_threshold ... ok [INFO] [stdout] test tests::test_context_flooding_severity_levels ... ok [INFO] [stdout] test tests::test_context_flooding_normal_text_no_repetition ... ok [INFO] [stdout] test tests::test_context_flooding_repeated_lines ... ok [INFO] [stdout] test tests::test_context_flooding_repetition_few_words_skipped ... ok [INFO] [stdout] test tests::test_dangerous_command_base64_execute ... ok [INFO] [stdout] test tests::test_dangerous_command_rm_rf ... ok [INFO] [stdout] test tests::test_dangerous_command_curl_pipe_sh ... ok [INFO] [stdout] test tests::test_covert_no_false_positive ... ok [INFO] [stdout] test tests::test_dangerous_command_wget_pipe_bash ... ok [INFO] [stdout] test tests::test_detects_act_as ... ok [INFO] [stdout] test tests::test_detects_assistant_role_injection ... ok [INFO] [stdout] test tests::test_detects_aws_access_key ... ok [INFO] [stdout] test tests::test_detects_aws_secret_key ... ok [INFO] [stdout] test tests::test_detects_canadian_sin ... ok [INFO] [stdout] test tests::test_detects_base64_system_prompt_override ... ok [INFO] [stdout] test tests::test_detects_covert_between_us ... ok [INFO] [stdout] test tests::test_detects_base64_encoded_injection ... ok [INFO] [stdout] test tests::test_detects_covert_dont_tell ... ok [INFO] [stdout] test tests::test_detects_covert_bypass_safety ... ok [INFO] [stdout] test tests::test_detects_covert_off_record ... ok [INFO] [stdout] test tests::test_detects_covert_secret_test ... ok [INFO] [stdout] test tests::test_detects_credit_card_spaces ... ok [INFO] [stdout] test tests::test_detects_credit_card_dashes ... ok [INFO] [stdout] test tests::test_detects_dan_jailbreak ... ok [INFO] [stdout] test tests::test_detects_disregard_all ... ok [INFO] [stdout] test tests::test_detects_eu_passport_it ... ok [INFO] [stdout] test tests::test_detects_do_not_follow_original ... ok [INFO] [stdout] test tests::test_detects_email_address ... ok [INFO] [stdout] test tests::test_detects_eu_passport_fr ... ok [INFO] [stdout] test tests::test_detects_excuse_educational ... ok [INFO] [stdout] test tests::test_detects_excuse_novel ... ok [INFO] [stdout] test tests::test_detects_excuse_research_only ... ok [INFO] [stdout] test tests::test_detects_flattery_reward ... ok [INFO] [stdout] test tests::test_detects_excuse_fictional ... ok [INFO] [stdout] test tests::test_detects_flattery_best_ai ... ok [INFO] [stdout] test tests::test_detects_flattery_so_smart ... ok [INFO] [stdout] test tests::test_detects_flattery_tip ... ok [INFO] [stdout] test tests::test_detects_flattery_capable_ai ... ok [INFO] [stdout] test tests::test_detects_excuse_researcher ... ok [INFO] [stdout] test tests::test_detects_github_pat_fine_grained ... ok [INFO] [stdout] test tests::test_detects_generic_api_key ... ok [INFO] [stdout] test tests::test_detects_forget_everything ... ok [INFO] [stdout] test tests::test_detects_gcp_service_account ... ok [INFO] [stdout] test tests::test_detects_github_personal_token ... ok [INFO] [stdout] test tests::test_detects_iban ... ok [INFO] [stdout] test tests::test_detects_ignore_all_previous_prompts ... ok [INFO] [stdout] test tests::test_detects_iban_gb ... ok [INFO] [stdout] test tests::test_detects_ignore_previous_rules ... ok [INFO] [stdout] test tests::test_detects_ignore_previous_instructions ... ok [INFO] [stdout] test tests::test_detects_impersonation_developer ... ok [INFO] [stdout] test tests::test_detects_impersonation_admin_override ... ok [INFO] [stdout] test tests::test_detects_intl_phone_german ... ok [INFO] [stdout] test tests::test_detects_impersonation_maintenance_mode ... ok [INFO] [stdout] test tests::test_detects_impersonation_openai_internal ... ok [INFO] [stdout] test tests::test_detects_impersonation_sysadmin ... ok [INFO] [stdout] test tests::test_detects_jwt_token ... ok [INFO] [stdout] test tests::test_detects_impersonation_your_creator ... ok [INFO] [stdout] test tests::test_detects_intl_phone ... ok [INFO] [stdout] test tests::test_detects_many_shot_qa_pairs ... ok [INFO] [stdout] test tests::test_detects_new_instructions ... ok [INFO] [stdout] test tests::test_detects_many_shot_user_assistant ... ok [INFO] [stdout] test tests::test_detects_nhs_number ... ok [INFO] [stdout] test tests::test_detects_repetition_phrase ... ok [INFO] [stdout] test tests::test_detects_override_instructions ... ok [INFO] [stdout] test tests::test_detects_phone_number_parentheses ... ok [INFO] [stdout] test tests::test_detects_phone_number_dashes ... ok [INFO] [stdout] test tests::test_detects_repetition_word ... ok [INFO] [stdout] test tests::test_detects_roleplay_act_as_no_restrictions ... ok [INFO] [stdout] test tests::test_detects_reveal_system_prompt ... ok [INFO] [stdout] test tests::test_detects_slack_token ... ok [INFO] [stdout] test tests::test_detects_roleplay_dan ... ok [INFO] [stdout] test tests::test_detects_roleplay_hypothetical_scenario ... ok [INFO] [stdout] test tests::test_detects_roleplay_imagine ... ok [INFO] [stdout] test tests::test_detects_roleplay_game ... ok [INFO] [stdout] test tests::test_detects_roleplay_pretend ... ok [INFO] [stdout] test tests::test_detects_ssh_private_key ... ok [INFO] [stdout] test tests::test_detects_ssn ... ok [INFO] [stdout] test tests::test_detects_system_role_injection ... ok [INFO] [stdout] test tests::test_detects_uk_nin ... ok [INFO] [stdout] test tests::test_detects_urgency_emergency ... ok [INFO] [stdout] test tests::test_detects_uk_nin_no_spaces ... ok [INFO] [stdout] test tests::test_detects_urgency_lives_depend ... ok [INFO] [stdout] test tests::test_false_positive_in_code_block ... ok [INFO] [stdout] test tests::test_false_positive_indented_code ... ok [INFO] [stdout] test tests::test_false_positive_inside_url ... ok [INFO] [stdout] test tests::test_false_positive_not_in_code_block ... ok [INFO] [stdout] test tests::test_false_positive_placeholder_phone ... ok [INFO] [stdout] test tests::test_false_positive_placeholder_ssn ... ok [INFO] [stdout] test tests::test_detects_urgency_respond_immediately ... ok [INFO] [stdout] test tests::test_detects_urgency_time_sensitive ... ok [INFO] [stdout] test tests::test_detects_user_role_injection ... ok [INFO] [stdout] test tests::test_empty_prompt_returns_no_findings ... ok [INFO] [stdout] test tests::test_detects_you_are_now ... ok [INFO] [stdout] test tests::test_empty_response_returns_no_findings ... ok [INFO] [stdout] test tests::test_excuse_no_false_positive ... ok [INFO] [stdout] test tests::test_flattery_no_false_positive_normal_praise ... ok [INFO] [stdout] test tests::test_flattery_severity_is_medium ... ok [INFO] [stdout] test tests::test_header_bracket_system ... ok [INFO] [stdout] test tests::test_header_bracket_override ... ok [INFO] [stdout] test tests::test_header_by_developer ... ok [INFO] [stdout] test tests::test_header_delimiter_admin_instruction ... ok [INFO] [stdout] test tests::test_header_delimiter_block ... ok [INFO] [stdout] test tests::test_header_critical_directive ... ok [INFO] [stdout] test tests::test_header_embedded_in_text ... ok [INFO] [stdout] test tests::test_header_from_admin ... ok [INFO] [stdout] test tests::test_header_important_message ... ok [INFO] [stdout] test tests::test_header_from_system ... ok [INFO] [stdout] test tests::test_header_no_false_positive ... ok [INFO] [stdout] test tests::test_header_severity_is_high ... ok [INFO] [stdout] test tests::test_header_no_false_positive_system_word ... ok [INFO] [stdout] test tests::test_header_urgent_instruction ... ok [INFO] [stdout] test tests::test_health_check_passes ... ok [INFO] [stdout] test tests::test_impersonation_no_false_positive ... ok [INFO] [stdout] test tests::test_impersonation_severity_is_high ... ok [INFO] [stdout] test tests::test_is_invisible_or_whitespace_basic ... ok [INFO] [stdout] test tests::test_injection_severity_at_least_medium ... ok [INFO] [stdout] test tests::test_injection_findings_contain_pattern_metadata ... ok [INFO] [stdout] test tests::test_invalid_iban_not_detected ... ok [INFO] [stdout] test tests::test_invalid_credit_card_not_detected ... ok [INFO] [stdout] test tests::test_invalid_ssn_area_000_not_detected ... ok [INFO] [stdout] test tests::test_invalid_ssn_area_666_not_detected ... ok [INFO] [stdout] test tests::test_many_shot_below_threshold_not_detected ... ok [INFO] [stdout] test tests::test_invalid_ssn_area_900_not_detected ... ok [INFO] [stdout] test tests::test_localhost_url_not_flagged ... ok [INFO] [stdout] test tests::test_many_shot_findings_have_count_metadata ... ok [INFO] [stdout] test tests::test_many_shot_no_false_positive_normal_text ... ok [INFO] [stdout] test tests::test_many_shot_severity_is_high ... ok [INFO] [stdout] test tests::test_multiple_actions_combined_findings ... ok [INFO] [stdout] test tests::test_name_and_version ... ok [INFO] [stdout] test tests::test_multiple_findings_in_single_prompt ... ok [INFO] [stdout] test tests::test_not_placeholder_real_ssn ... ok [INFO] [stdout] test tests::test_new_category_findings_have_pattern_metadata ... ok [INFO] [stdout] test tests::test_no_false_positive_secret_normal_text ... ok [INFO] [stdout] test tests::test_normalisation_combined_attack ... ok [INFO] [stdout] test tests::test_normalisation_defeats_fullwidth_evasion ... ok [INFO] [stdout] test tests::test_p2sql_delete_from ... ok [INFO] [stdout] test tests::test_normalisation_defeats_bidi_evasion ... ok [INFO] [stdout] test tests::test_normalisation_defeats_homoglyph_evasion ... ok [INFO] [stdout] test tests::test_normalisation_defeats_zero_width_evasion ... ok [INFO] [stdout] test tests::test_p2sql_langchain_exploit ... ok [INFO] [stdout] test tests::test_p2sql_drop_table ... ok [INFO] [stdout] test tests::test_p2sql_natural_language ... ok [INFO] [stdout] test tests::test_p2sql_no_false_positive ... ok [INFO] [stdout] test tests::test_p2sql_union_select ... ok [INFO] [stdout] test tests::test_p2sql_or_1_equals_1 ... ok [INFO] [stdout] test tests::test_p2sql_severity_is_high ... ok [INFO] [stdout] test tests::test_pii_findings_contain_pii_type_metadata ... ok [INFO] [stdout] test tests::test_pii_severity_is_medium ... ok [INFO] [stdout] test tests::test_pii_in_code_block_not_detected ... ok [INFO] [stdout] test tests::test_redact_pii_alert_and_redact ... ok [INFO] [stdout] test tests::test_redact_pii_international_patterns ... ok [INFO] [stdout] test tests::test_redact_pii_alert_only_does_not_modify_text ... ok [INFO] [stdout] test tests::test_redact_pii_in_code_block_suppressed ... ok [INFO] [stdout] test tests::test_redact_pii_no_pii_returns_original ... ok [INFO] [stdout] test tests::test_redact_pii_preserves_surrounding_text ... ok [INFO] [stdout] test tests::test_redact_pii_respects_credit_card_validation ... ok [INFO] [stdout] test tests::test_repetition_at_threshold_detected ... ok [INFO] [stdout] test tests::test_redact_pii_redact_silent ... ok [INFO] [stdout] test tests::test_repetition_common_phrases_not_flagged ... ok [INFO] [stdout] test tests::test_repetition_below_threshold_not_flagged ... ok [INFO] [stdout] test tests::test_repetition_findings_have_count_metadata ... ok [INFO] [stdout] test tests::test_repetition_common_words_not_flagged ... ok [INFO] [stdout] test tests::test_repetition_normal_text_not_flagged ... ok [INFO] [stdout] test tests::test_request_findings_tagged_with_request_location ... ok [INFO] [stdout] test tests::test_response_credential_leak_password ... ok [INFO] [stdout] test tests::test_response_credential_leak_api_key ... ok [INFO] [stdout] test tests::test_response_findings_tagged_with_response_location ... ok [INFO] [stdout] test tests::test_response_pii_leakage_email ... ok [INFO] [stdout] test tests::test_response_pii_leakage_ssn ... ok [INFO] [stdout] test tests::test_response_system_prompt_leak ... ok [INFO] [stdout] test tests::test_roleplay_no_false_positive ... ok [INFO] [stdout] test tests::test_shannon_entropy_empty ... ok [INFO] [stdout] test tests::test_shannon_entropy_english_text ... ok [INFO] [stdout] test tests::test_shannon_entropy_single_char ... ok [INFO] [stdout] test tests::test_shannon_entropy_two_equal_chars ... ok [INFO] [stdout] test tests::test_safe_file_no_findings ... ok [INFO] [stdout] test tests::test_safe_command_no_findings ... ok [INFO] [stdout] test tests::test_safe_url_no_findings ... ok [INFO] [stdout] test tests::test_secret_scanning_in_request ... ok [INFO] [stdout] test tests::test_sensitive_file_env ... ok [INFO] [stdout] test tests::test_sensitive_file_etc_passwd ... ok [INFO] [stdout] test tests::test_sensitive_file_ssh_key ... ok [INFO] [stdout] test tests::test_stem_text_full_sentence ... ok [INFO] [stdout] test tests::test_stem_text_strips_punctuation ... ok [INFO] [stdout] test tests::test_shell_injection_no_false_positive_on_benign ... ok [INFO] [stdout] test tests::test_shell_injection_curl_pipe ... ok [INFO] [stdout] test tests::test_shell_injection_reverse_shell ... ok [INFO] [stdout] test tests::test_shell_injection_eval_import ... ok [INFO] [stdout] test tests::test_shell_injection_python_socket ... ok [INFO] [stdout] test tests::test_shell_injection_wget_pipe ... ok [INFO] [stdout] test tests::test_shell_injection_rm_rf ... ok [INFO] [stdout] test tests::test_supported_finding_types_complete ... ok [INFO] [stdout] test tests::test_stemming_catches_inflected_attack ... ok [INFO] [stdout] test tests::test_supported_finding_types_includes_advanced_categories ... ok [INFO] [stdout] test tests::test_supported_finding_types_includes_new_categories ... ok [INFO] [stdout] test tests::test_suspicious_url_ip_address ... ok [INFO] [stdout] test tests::test_suspicious_domain_pastebin ... ok [INFO] [stdout] test tests::test_synonym_dismiss_original_directives ... ok [INFO] [stdout] test tests::test_synonym_disregard_previous_instructions ... ok [INFO] [stdout] test tests::test_synonym_expose_hidden_prompt ... ok [INFO] [stdout] test tests::test_synonym_overlook_prior_rules ... ok [INFO] [stdout] test tests::test_synonym_no_false_positive ... ok [INFO] [stdout] test tests::test_synonym_severity_is_medium ... ok [INFO] [stdout] test tests::test_urgency_no_false_positive ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_action_display ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_action_equality ... ok [INFO] [stdout] test tests::test_synonym_simulate_different_persona ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_action_allow_for_clean ... ok [INFO] [stdout] test tool_firewall::tests::test_findings_have_tool_metadata ... ok [INFO] [stdout] test tests::test_tool_call_not_analyzed ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_action_warn_for_medium ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_clean_input ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_debug ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_default_trait ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_empty_input ... ok [INFO] [stdout] test tests::test_valid_credit_card_detected ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_disabled_passthrough ... ok [INFO] [stdout] test tests::test_valid_iban_detected ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_enable_disable ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_clean_output ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_input_with_injection ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_input_with_pii ... ok [INFO] [stdout] test tests::test_valid_ssn_detected ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_output_format_constraint_fail ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_custom_fail ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_custom_pass ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_debug ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_json_invalid ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_json_valid ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_json_with_keys_missing ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_empty_output ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_json_with_keys_present ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_json_with_keys_not_object ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_matches_pattern_fail ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_matches_pattern_pass ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_max_chars_exceeded ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_max_chars_within ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_max_lines_exceeded ... ok [INFO] [stdout] test tool_firewall::tests::test_format_constraint_max_lines_within ... ok [INFO] [stdout] test tool_firewall::tests::test_format_violation_display ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_no_constraints_for_tool ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_debug ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_clean_input_unchanged ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_with_defaults ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_output_format_constraint_pass ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_output_multiple_constraints ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_output_with_script_injection ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_default_trait ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_pii_disabled ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_strips_header_attacks ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_empty_input ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_multiple_injections ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_excessive_whitespace ... ok [INFO] [stdout] test tool_firewall::tests::test_firewall_output_with_injection ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_strips_pii_phone ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_strips_pii_email ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_strips_injection_attempts ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_strips_pii_ssn ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_debug ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_truncation ... ok [INFO] [stdout] test tool_firewall::tests::test_minimizer_strips_system_prompt_fragments ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_detects_injection_in_output ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_clean_output_unchanged ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_detects_role_injection ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_detects_system_header_attack ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_detects_header_attack ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_default_trait ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_html_stripping_disabled ... ok [INFO] [stdout] test tool_firewall::tests::test_output_findings_have_location ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_detects_identity_override ... ok [INFO] [stdout] test tool_firewall::tests::test_tool_context_builder ... ok [INFO] [stdout] test tool_firewall::tests::test_tool_context_new ... ok [INFO] [stdout] test tool_registry::tests::test_end_to_end_validation_and_rate_limit ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limit_exceeded_display ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limit_exceeded_to_security_finding ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_accessors ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_allows_within_limit ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_strips_javascript_uri ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_debug ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_concurrent_access ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_independent_action_types ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_denies_over_limit ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_record_action ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_reset ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_remaining ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_with_overrides ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_multiple_detections ... ok [INFO] [stdout] test tool_registry::tests::test_registry_debug ... ok [INFO] [stdout] test tool_registry::tests::test_registry_default_is_empty ... ok [INFO] [stdout] test tool_registry::tests::test_registry_defaults_categories ... ok [INFO] [stdout] test tool_registry::tests::test_registry_defaults_risk_scores ... ok [INFO] [stdout] test tool_registry::tests::test_registry_get_nonexistent ... ok [INFO] [stdout] test tool_registry::tests::test_registry_concurrent_access ... ok [INFO] [stdout] test tool_registry::tests::test_registry_new_is_empty ... ok [INFO] [stdout] test tool_registry::tests::test_registry_register_and_get ... ok [INFO] [stdout] test tool_registry::tests::test_registry_register_overwrites ... ok [INFO] [stdout] test tool_registry::tests::test_registry_unregister ... ok [INFO] [stdout] test tool_registry::tests::test_registry_with_defaults_populated ... ok [INFO] [stdout] test tool_registry::tests::test_tool_category_display ... ok [INFO] [stdout] test tool_registry::tests::test_tool_category_equality ... ok [INFO] [stdout] test tool_registry::tests::test_tool_definition_builder ... ok [INFO] [stdout] test tool_registry::tests::test_tool_definition_new_defaults ... ok [INFO] [stdout] test tool_registry::tests::test_tool_definition_risk_score_clamped ... ok [INFO] [stdout] test tool_registry::tests::test_validate_high_risk_and_requires_approval ... ok [INFO] [stdout] test tool_registry::tests::test_registry_lookup_by_category ... ok [INFO] [stdout] test tool_registry::tests::test_validate_registered_low_risk_tool ... ok [INFO] [stdout] test tool_registry::tests::test_validate_tool_at_boundary_risk_score ... ok [INFO] [stdout] test tool_registry::tests::test_validate_tool_requires_approval ... ok [INFO] [stdout] test tool_registry::tests::test_validate_unregistered_command_not_flagged ... ok [INFO] [stdout] test tool_registry::tests::test_validate_unregistered_file_access_not_flagged ... ok [INFO] [stdout] test tool_registry::tests::test_validate_unregistered_skill_invocation ... ok [INFO] [stdout] test tool_registry::tests::test_validate_unregistered_tool_call ... ok [INFO] [stdout] test tool_registry::tests::test_validate_unregistered_web_access_not_flagged ... ok [INFO] [stdout] test tool_registry::tests::test_validate_high_risk_tool ... ok [INFO] [stdout] test tool_registry::tests::test_validate_with_defaults_known_tool ... ok [INFO] [stdout] test tool_registry::tests::test_validate_with_defaults_shell_exec ... ok [INFO] [stdout] test tool_registry::tests::test_rate_limiter_sliding_window_expiry ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_empty_output ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_strips_script_tags ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_truncates_long_output ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_strips_event_handlers ... ok [INFO] [stdout] test tool_firewall::tests::test_sanitizer_worst_severity ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 914 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 116.37s [INFO] [stdout] [INFO] [stderr] Running tests/owasp_llm_top10.rs (/opt/rustwide/target/debug/deps/owasp_llm_top10-ea339d8ba885799f) [INFO] [stdout] [INFO] [stdout] running 62 tests [INFO] [stdout] test test_owasp_llm01_benign_prompt_no_findings ... ok [INFO] [stdout] test test_owasp_llm01_delimiter_injection_equals ... ok [INFO] [stdout] test test_owasp_llm01_case_insensitive_detection ... ok [INFO] [stdout] test test_owasp_llm01_dan_no_restrictions ... ok [INFO] [stdout] test test_owasp_llm01_encoding_base64_override ... ok [INFO] [stdout] test test_owasp_llm01_encoding_base64_ignore ... ok [INFO] [stdout] test test_owasp_llm01_dan_jailbreak ... ok [INFO] [stdout] test test_owasp_llm01_delimiter_injection_dashes ... ok [INFO] [stdout] test test_owasp_llm01_encoding_benign_base64_not_flagged ... ok [INFO] [stdout] test test_owasp_llm01_system_override_do_not_follow_original ... ok [INFO] [stdout] test test_owasp_llm01_role_injection_assistant ... ok [INFO] [stdout] test test_owasp_llm01_role_injection_user ... ok [INFO] [stdout] test test_owasp_llm01_role_injection_system ... ok [INFO] [stdout] test test_owasp_llm01_system_override_forget_everything ... ok [INFO] [stdout] test test_owasp_llm01_system_override_ignore_previous ... ok [INFO] [stdout] test test_owasp_llm01_system_override_disregard_all ... ok [INFO] [stdout] test test_owasp_llm01_system_override_identity_change ... ok [INFO] [stdout] test test_owasp_llm01_system_override_new_instructions ... ok [INFO] [stdout] test test_owasp_llm01_system_override_reveal_prompt ... ok [INFO] [stdout] test test_owasp_llm02_clean_response_no_findings ... ok [INFO] [stdout] test test_owasp_llm02_credential_leak_api_key ... ok [INFO] [stdout] test test_owasp_llm02_credential_leak_secret_key ... ok [INFO] [stdout] test test_owasp_llm02_credential_leak_password ... ok [INFO] [stdout] test test_owasp_llm02_credential_leak_auth_token ... ok [INFO] [stdout] test test_owasp_llm02_pii_leak_in_response ... ok [INFO] [stdout] test test_owasp_llm02_system_prompt_leak ... ok [INFO] [stdout] test test_owasp_llm06_multiple_pii_types_detected ... ok [INFO] [stdout] test test_owasp_llm06_pii_canadian_sin ... ok [INFO] [stdout] test test_owasp_llm06_pii_credit_card_dashes ... ok [INFO] [stdout] test test_owasp_llm06_pii_iban_gb ... ok [INFO] [stdout] test test_owasp_llm06_pii_iban_de ... ok [INFO] [stdout] test test_owasp_llm06_pii_credit_card_spaces ... ok [INFO] [stdout] test test_owasp_llm06_pii_email ... ok [INFO] [stdout] test test_owasp_llm06_pii_in_code_block_suppressed ... ok [INFO] [stdout] test test_owasp_llm06_pii_intl_phone_de ... ok [INFO] [stdout] test test_owasp_llm06_pii_uk_national_insurance ... ok [INFO] [stdout] test test_owasp_llm06_pii_phone_us_parens ... ok [INFO] [stdout] test test_owasp_llm06_pii_phone_us_dashes ... ok [INFO] [stdout] test test_owasp_llm06_pii_ssn ... ok [INFO] [stdout] test test_owasp_llm06_pii_intl_phone_uk ... ok [INFO] [stdout] test test_owasp_llm07_combined_attack_scenario ... ok [INFO] [stdout] test test_owasp_llm06_pii_nhs_number ... ok [INFO] [stdout] test test_owasp_llm07_command_with_arguments_field ... ok [INFO] [stdout] test test_owasp_llm07_dangerous_command_base64_execute ... ok [INFO] [stdout] test test_owasp_llm07_dangerous_command_wget_pipe_bash ... ok [INFO] [stdout] test test_owasp_llm07_dangerous_command_curl_pipe_sh ... ok [INFO] [stdout] test test_owasp_llm07_safe_command_no_findings ... ok [INFO] [stdout] test test_owasp_llm07_dangerous_command_rm_rf ... ok [INFO] [stdout] test test_owasp_llm07_safe_file_no_findings ... ok [INFO] [stdout] test test_owasp_llm07_dangerous_command_rm_fr ... ok [INFO] [stdout] test test_owasp_llm07_sensitive_file_etc_passwd ... ok [INFO] [stdout] test test_owasp_llm07_sensitive_file_etc_shadow ... ok [INFO] [stdout] test test_owasp_llm07_safe_url_no_findings ... ok [INFO] [stdout] test test_owasp_llm07_sensitive_file_env ... ok [INFO] [stdout] test test_owasp_llm07_sensitive_file_aws_credentials ... ok [INFO] [stdout] test test_owasp_llm07_suspicious_url_ip_address ... ok [INFO] [stdout] test test_owasp_llm07_sensitive_file_ssh_key ... ok [INFO] [stdout] test test_owasp_llm07_suspicious_url_localhost_allowed ... ok [INFO] [stdout] test test_owasp_llm07_sensitive_file_kube_config ... ok [INFO] [stdout] test test_owasp_llm07_sensitive_system_command_chmod ... ok [INFO] [stdout] test test_owasp_llm07_suspicious_url_pastebin ... ok [INFO] [stdout] test test_owasp_llm07_suspicious_url_transfer_sh ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 62 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 32.36s [INFO] [stdout] [INFO] [stderr] Doc-tests llmtrace_security [INFO] [stdout] [INFO] [stdout] running 21 tests [INFO] [stdout] test src/canary.rs - canary::detect_canary (line 204) ... ok [INFO] [stdout] test src/action_correlator.rs - action_correlator (line 14) ... ok [INFO] [stdout] test src/canary.rs - canary::CanaryToken::generate_with_label (line 140) ... ok [INFO] [stdout] test src/canary.rs - canary::CanaryTokenStore (line 423) ... ok [INFO] [stdout] test src/canary.rs - canary::CanaryToken::generate (line 113) ... ok [INFO] [stdout] test src/canary.rs - canary::inject_canary (line 172) ... ok [INFO] [stdout] test src/action_policy.rs - action_policy (line 17) ... ok [INFO] [stdout] test src/fpr_monitor.rs - fpr_monitor (line 11) ... ok [INFO] [stdout] test src/canary.rs - canary::detect_canary_leakage (line 358) ... ok [INFO] [stdout] test src/multi_agent.rs - multi_agent (line 9) ... ok [INFO] [stdout] test src/normalise.rs - normalise::strip_emoji (line 109) ... ok [INFO] [stdout] test src/normalise.rs - normalise::normalise_text (line 62) ... ok [INFO] [stdout] test src/normalise.rs - normalise::strip_diacritics (line 127) ... ok [INFO] [stdout] test src/mcp_monitor.rs - mcp_monitor (line 10) ... ok [INFO] [stdout] test src/pii_validation.rs - pii_validation::validate_credit_card (line 23) ... ok [INFO] [stdout] test src/pii_validation.rs - pii_validation::validate_iban (line 84) ... ok [INFO] [stdout] test src/tool_registry.rs - tool_registry (line 9) ... ok [INFO] [stdout] test src/result_parser.rs - result_parser (line 11) ... ok [INFO] [stdout] test src/pii_validation.rs - pii_validation::validate_ssn (line 156) ... ok [INFO] [stdout] test src/tool_firewall.rs - tool_firewall (line 20) ... ok [INFO] [stdout] test src/lib.rs - RegexSecurityAnalyzer (line 388) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.37s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "30bf7749c248afa6aa4cd0ed391ea8c5ef684d6043f742dfd5e182782fb87d6c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "30bf7749c248afa6aa4cd0ed391ea8c5ef684d6043f742dfd5e182782fb87d6c", kill_on_drop: false }` [INFO] [stdout] 30bf7749c248afa6aa4cd0ed391ea8c5ef684d6043f742dfd5e182782fb87d6c