[INFO] fetching crate vellaveto-mcp 6.0.8...
[INFO] testing vellaveto-mcp-6.0.8 against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] extracting crate vellaveto-mcp 6.0.8 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate vellaveto-mcp 6.0.8
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate vellaveto-mcp 6.0.8
[INFO] tweaked toml for crates.io crate vellaveto-mcp 6.0.8 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate vellaveto-mcp 6.0.8 on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate vellaveto-mcp 6.0.8 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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] dc7d2493621ec1efdbd33ebf4fb76ed0adefcadcd847a41d0f26d6ceb9315a1d
[INFO] running `Command { std: "docker" "start" "-a" "dc7d2493621ec1efdbd33ebf4fb76ed0adefcadcd847a41d0f26d6ceb9315a1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dc7d2493621ec1efdbd33ebf4fb76ed0adefcadcd847a41d0f26d6ceb9315a1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dc7d2493621ec1efdbd33ebf4fb76ed0adefcadcd847a41d0f26d6ceb9315a1d", kill_on_drop: false }`
[INFO] [stdout] dc7d2493621ec1efdbd33ebf4fb76ed0adefcadcd847a41d0f26d6ceb9315a1d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e18056fc20e05087c29013c43c8ffa765ea204c413c58a4c83a8e087a55664ac
[INFO] running `Command { std: "docker" "start" "-a" "e18056fc20e05087c29013c43c8ffa765ea204c413c58a4c83a8e087a55664ac", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling tinyvec v1.10.0
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling uuid v1.22.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling universal-hash v0.5.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling unicode-normalization v0.1.25
[INFO] [stderr]    Compiling ryu-js v1.0.2
[INFO] [stderr]    Compiling poly1305 v0.8.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling chacha20 v0.9.1
[INFO] [stderr]    Compiling metrics v0.24.3
[INFO] [stderr]    Compiling aead v0.5.2
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling chacha20poly1305 v0.10.1
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling vellaveto-types v6.0.8
[INFO] [stderr]    Compiling serde_json_canonicalizer v0.3.2
[INFO] [stderr]    Compiling toml_parser v1.0.9+spec-1.1.0
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling toml v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling vellaveto-canonical v6.0.8
[INFO] [stderr]    Compiling vellaveto-audit v6.0.8
[INFO] [stderr]    Compiling vellaveto-engine v6.0.8
[INFO] [stderr]    Compiling vellaveto-approval v6.0.8
[INFO] [stderr]    Compiling vellaveto-config v6.0.8
[INFO] [stderr]    Compiling vellaveto-mcp v6.0.8 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.41s
[INFO] running `Command { std: "docker" "inspect" "e18056fc20e05087c29013c43c8ffa765ea204c413c58a4c83a8e087a55664ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e18056fc20e05087c29013c43c8ffa765ea204c413c58a4c83a8e087a55664ac", kill_on_drop: false }`
[INFO] [stdout] e18056fc20e05087c29013c43c8ffa765ea204c413c58a4c83a8e087a55664ac
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 20f8bcffe58646703f491c1aa91fc1ca24b967df944387c84d5dd8da2e644c3a
[INFO] running `Command { std: "docker" "start" "-a" "20f8bcffe58646703f491c1aa91fc1ca24b967df944387c84d5dd8da2e644c3a", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]    Compiling zerocopy-derive v0.8.42
[INFO] [stderr]    Compiling vellaveto-types v6.0.8
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling serde_json_canonicalizer v0.3.2
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling metrics v0.24.3
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling proptest v1.10.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]    Compiling vellaveto-approval v6.0.8
[INFO] [stderr]    Compiling vellaveto-config v6.0.8
[INFO] [stderr]    Compiling vellaveto-audit v6.0.8
[INFO] [stderr]    Compiling vellaveto-canonical v6.0.8
[INFO] [stderr]    Compiling vellaveto-engine v6.0.8
[INFO] [stderr]    Compiling vellaveto-mcp v6.0.8 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 31.58s
[INFO] running `Command { std: "docker" "inspect" "20f8bcffe58646703f491c1aa91fc1ca24b967df944387c84d5dd8da2e644c3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "20f8bcffe58646703f491c1aa91fc1ca24b967df944387c84d5dd8da2e644c3a", kill_on_drop: false }`
[INFO] [stdout] 20f8bcffe58646703f491c1aa91fc1ca24b967df944387c84d5dd8da2e644c3a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] db1970280bc3ab12a83446ffa32274d99bac9d67498014ba701fcfc3b89cc2a9
[INFO] running `Command { std: "docker" "start" "-a" "db1970280bc3ab12a83446ffa32274d99bac9d67498014ba701fcfc3b89cc2a9", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/vellaveto_mcp-fadc256805ddf721)
[INFO] [stdout] 
[INFO] [stdout] running 1829 tests
[INFO] [stdout] test accountability::tests::test_sign_invalid_key_hex ... ok
[INFO] [stdout] test accountability::tests::test_sign_invalid_key_length ... ok
[INFO] [stdout] test accountability::tests::test_canonical_content_all_fields_length_prefixed ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_agent_id_control_chars ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_agent_id_bidi_override ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_did_control_chars ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_agent_id_too_long ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_empty_agent_id ... ok
[INFO] [stdout] test accountability::tests::test_sign_accepts_max_ttl ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_empty_policy_hash ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_empty_statement ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_policy_hash_control_chars ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_policy_hash_too_long ... ok
[INFO] [stdout] test accountability::tests::test_sign_accepts_max_length_agent_id ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_ttl_exceeding_max ... ok
[INFO] [stdout] test accountability::tests::test_boundary_collision_prevention ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_statement_too_long ... ok
[INFO] [stdout] test accountability::tests::test_attestation_unique_ids ... ok
[INFO] [stdout] test accountability::tests::test_sign_rejects_statement_zero_width ... ok
[INFO] [stdout] test accountability::tests::test_two_attestations_same_content_different_signatures ... ok
[INFO] [stdout] test agent_message::tests::test_agent_key_registry ... ok
[INFO] [stdout] test agent_message::tests::test_message_expiry ... ok
[INFO] [stdout] test agent_message::tests::test_missing_sender_key ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_tampered_did ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_expired ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_tampered_agent_id ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_did_added_after_signing_without_did ... ok
[INFO] [stdout] test agent_message::tests::test_nonce_tracker_capacity ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_did_removed_after_signing_with_did ... ok
[INFO] [stdout] test accountability::tests::test_verify_accepts_created_at_within_skew ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_tampered_attestation_id ... ok
[INFO] [stdout] test agent_message::tests::test_signed_agent_message_deny_unknown_fields ... ok
[INFO] [stdout] test agent_message::tests::test_payload_str ... ok
[INFO] [stdout] test agent_message::tests::test_validate_recipient_too_long ... ok
[INFO] [stdout] test agent_message::tests::test_validate_payload_too_large ... ok
[INFO] [stdout] test agent_message::tests::test_validate_recipient_dangerous_chars ... ok
[INFO] [stdout] test agent_message::tests::test_validate_sender_dangerous_chars ... ok
[INFO] [stdout] test agent_message::tests::test_validate_valid_message ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_tampered_statement ... ok
[INFO] [stdout] test agent_message::tests::test_validate_sender_too_long ... ok
[INFO] [stdout] test agent_trust::tests::test_add_trust_rejects_dangerous_chars ... ok
[INFO] [stdout] test agent_message::tests::test_verify_calls_validate ... ok
[INFO] [stdout] test agent_trust::tests::test_can_delegate_to ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_wrong_key ... ok
[INFO] [stdout] test agent_trust::tests::test_cannot_delegate_without_trust ... ok
[INFO] [stdout] test agent_trust::tests::test_detect_circular_delegation ... ok
[INFO] [stdout] test agent_trust::tests::test_detect_upward_delegation ... ok
[INFO] [stdout] test agent_trust::tests::test_escalation_alert_deny_unknown_fields ... ok
[INFO] [stdout] test accountability::tests::test_verify_malformed_created_at_treated_as_expired ... ok
[INFO] [stdout] test agent_trust::tests::test_detect_chain_depth_exceeded ... ok
[INFO] [stdout] test agent_trust::tests::test_no_escalation_on_valid_chain ... ok
[INFO] [stdout] test agent_trust::tests::test_privilege_level_ordering ... ok
[INFO] [stdout] test agent_trust::tests::test_record_request_rejects_dangerous_chars_in_action ... ok
[INFO] [stdout] test agent_trust::tests::test_record_request_chain ... ok
[INFO] [stdout] test agent_trust::tests::test_record_request_rejects_dangerous_chars_in_from_agent ... ok
[INFO] [stdout] test agent_trust::tests::test_register_and_trust ... ok
[INFO] [stdout] test agent_trust::tests::test_register_agent_rejects_dangerous_chars ... ok
[INFO] [stdout] test agent_trust::tests::test_record_request_rejects_too_long_session_id ... ok
[INFO] [stdout] test agent_trust::tests::test_request_chain_entry_deny_unknown_fields ... ok
[INFO] [stdout] test agent_trust::tests::test_trust_closure ... ok
[INFO] [stdout] test agent_trust::tests::test_stats ... ok
[INFO] [stdout] test attack_sim::tests::test_add_custom_scenario ... ok
[INFO] [stdout] test agent_trust::tests::test_trust_graph_stats_deny_unknown_fields ... ok
[INFO] [stdout] test agent_trust::tests::test_trusted_agents_bypass ... ok
[INFO] [stdout] test attack_sim::tests::test_attack_category_asi_id ... ok
[INFO] [stdout] test attack_sim::tests::test_attack_simulator_empty ... ok
[INFO] [stdout] test attack_sim::tests::test_get_scenario ... ok
[INFO] [stdout] test attack_sim::tests::test_all_scenarios_have_payloads ... ok
[INFO] [stdout] test accountability::tests::test_verify_rejects_future_created_at ... ok
[INFO] [stdout] test attack_sim::tests::test_attack_simulator_new ... ok
[INFO] [stdout] test accountability::tests::test_sign_and_verify_attestation ... ok
[INFO] [stdout] test agent_message::tests::test_nonce_replay_protection ... ok
[INFO] [stdout] test attack_sim::tests::test_scenario_ids_unique ... ok
[INFO] [stdout] test attack_sim::tests::test_summarize_results ... ok
[INFO] [stdout] test attack_sim::tests::test_payload_ids_unique_within_scenario ... ok
[INFO] [stdout] test attack_sim::tests::test_scenarios_by_severity ... ok
[INFO] [stdout] test attack_sim::tests::test_scenarios_by_category ... ok
[INFO] [stdout] test auth_level::tests::test_get_level_default_none ... ok
[INFO] [stdout] test auth_level::tests::test_downgrade_level ... ok
[INFO] [stdout] test auth_level::tests::test_requires_step_up ... ok
[INFO] [stdout] test auth_level::tests::test_remove_session ... ok
[INFO] [stdout] test capability::tests::test_capability_blocked_not_found ... ok
[INFO] [stdout] test capability::tests::test_capability_blocked_found ... ok
[INFO] [stdout] test auth_level::tests::test_session_info ... ok
[INFO] [stdout] test auth_level::tests::test_upgrade_level ... ok
[INFO] [stdout] test capability::tests::test_capability_format ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_empty ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_invalid_name ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_multiple ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_paren_before_open ... ok
[INFO] [stdout] test accountability::tests::test_verify_malformed_expires_at_treated_as_expired ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_simple ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_unclosed_paren ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_versioned ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_versioned_with_subs ... ok
[INFO] [stdout] test capability::tests::test_capability_parse_with_subs ... ok
[INFO] [stdout] test capability::tests::test_capability_required_not_satisfied ... ok
[INFO] [stdout] test capability::tests::test_capability_required_satisfied ... ok
[INFO] [stdout] test capability::tests::test_capability_sub_required_not_satisfied ... ok
[INFO] [stdout] test accountability::tests::test_verify_detects_tampered_expires_at ... ok
[INFO] [stdout] test capability::tests::test_capability_sub_required_satisfied ... ok
[INFO] [stdout] test accountability::tests::test_verify_no_expected_key ... ok
[INFO] [stdout] test attack_sim::tests::test_scenarios_serialization ... ok
[INFO] [stdout] test capability_token::tests::test_attenuate_rejects_new_holder_control_chars ... ok
[INFO] [stdout] test capability_token::tests::test_attenuate_rejects_self_delegation ... ok
[INFO] [stdout] test capability_token::tests::test_attenuate_rejects_self_delegation_case_insensitive ... ok
[INFO] [stdout] test capability_token::tests::test_attenuate_rejects_self_delegation_homoglyph ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_allows_literal_child_under_glob_parent ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_depth_zero_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_empty_domains_escalation_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_empty_paths_escalation_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_allows_exact_child_domain_under_parent_wildcard ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_allows_identical_glob_pattern ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_allows_narrower_child_domain_wildcard ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_allows_narrower_child_glob_subset ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_escalation_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_max_invocations_escalation_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_max_invocations_exceeds_parent_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_path_traversal_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_expiry_clamping ... ok
[INFO] [stdout] test capability_token::tests::test_canonical_content_depth_length_prefix_correct ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_rejects_glob_escalation_function_pattern ... ok
[INFO] [stdout] test capability_token::tests::test_canonical_content_includes_expires_at ... ok
[INFO] [stdout] test capability_token::tests::test_canonical_content_no_collision_different_depths ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_max_invocations_valid_subset ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_rejects_invalid_child_domain_pattern ... ok
[INFO] [stdout] test capability_token::tests::test_empty_issuer_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_rejects_glob_escalation_tool_pattern ... ok
[INFO] [stdout] test capability_token::tests::test_empty_holder_rejected ... ok
[INFO] [stdout] test agent_message::tests::test_sign_and_verify ... ok
[INFO] [stdout] test capability_token::tests::test_boundary_collision_different_issuer_holder ... ok
[INFO] [stdout] test capability_token::tests::test_attenuation_valid ... ok
[INFO] [stdout] test capability_token::tests::test_expired_token_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_grant_coverage_exact_match ... ok
[INFO] [stdout] test agent_message::tests::test_verify_wrong_key ... ok
[INFO] [stdout] test capability_token::tests::test_grant_coverage_glob_match ... ok
[INFO] [stdout] test capability_token::tests::test_grant_coverage_no_match ... ok
[INFO] [stdout] test capability_token::tests::test_grant_coverage_returns_first_matching_index ... ok
[INFO] [stdout] test capability_token::tests::test_grant_domain_constraint_missing_action_domains_denied ... ok
[INFO] [stdout] test capability_token::tests::test_grant_domain_constraint_match ... ok
[INFO] [stdout] test capability_token::tests::test_grant_path_constraint_malformed_action_path_denied ... ok
[INFO] [stdout] test capability_token::tests::test_grant_domain_constraint_normalizes_case_and_trailing_dot ... ok
[INFO] [stdout] test capability_token::tests::test_grant_domain_constraint_malformed_action_domain_denied ... ok
[INFO] [stdout] test capability_token::tests::test_grant_domain_constraint_requires_all_targets_covered ... ok
[INFO] [stdout] test capability_token::tests::test_grant_path_constraint_match ... ok
[INFO] [stdout] test capability_token::tests::test_issue_rejects_holder_bidi_override ... ok
[INFO] [stdout] test capability_token::tests::test_grant_path_constraint_requires_all_targets_covered ... ok
[INFO] [stdout] test capability_token::tests::test_grant_path_constraint_missing_action_paths_denied ... ok
[INFO] [stdout] test capability_token::tests::test_structural_validation_depth_exceeds_max ... ok
[INFO] [stdout] test capability_token::tests::test_issue_accepts_max_length_issuer ... ok
[INFO] [stdout] test capability_token::tests::test_issue_rejects_issuer_control_chars ... ok
[INFO] [stdout] test capability_token::tests::test_holder_mismatch_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_issue_rejects_issuer_zero_width ... ok
[INFO] [stdout] test capability_token::tests::test_issue_rejects_issuer_too_long ... ok
[INFO] [stdout] test capability_token::tests::test_structural_validation_empty_fields ... ok
[INFO] [stdout] test capability_token::tests::test_structural_validation_too_many_grants ... ok
[INFO] [stdout] test capability_token::tests::test_serde_roundtrip ... ok
[INFO] [stdout] test capability_token::tests::test_tampered_signature_rejected ... ok
[INFO] [stdout] test data_flow::tests::test_accessors ... ok
[INFO] [stdout] test capability_token::tests::test_verify_rejects_future_issued_at_beyond_skew ... ok
[INFO] [stdout] test capability_token::tests::test_verify_rejects_wrong_public_key_length ... ok
[INFO] [stdout] test capability_token::tests::test_verify_rejects_wrong_signature_length ... ok
[INFO] [stdout] test data_flow::tests::test_config_invalid_max_findings ... ok
[INFO] [stdout] test data_flow::tests::test_config_invalid_max_fingerprints ... ok
[INFO] [stdout] test data_flow::tests::test_default_config_valid ... ok
[INFO] [stdout] test data_flow::tests::test_config_max_fingerprints_too_large ... ok
[INFO] [stdout] test data_flow::tests::test_error_display ... ok
[INFO] [stdout] test data_flow::tests::test_empty_pattern_name_ignored ... ok
[INFO] [stdout] test data_flow::tests::test_empty_request_findings_no_alert ... ok
[INFO] [stdout] test data_flow::tests::test_exact_match_mode_accepts_same_value ... ok
[INFO] [stdout] test capability_token::tests::test_wrong_key_rejected ... ok
[INFO] [stdout] test data_flow::tests::test_exact_match_mode_rejects_no_fingerprint ... ok
[INFO] [stdout] test data_flow::tests::test_exfiltration_alert_display ... ok
[INFO] [stdout] test data_flow::tests::test_exact_match_mode_rejects_different_values ... ok
[INFO] [stdout] test data_flow::tests::test_finding_eviction_when_full ... ok
[INFO] [stdout] test data_flow::tests::test_exfiltration_alert_display_no_exact ... ok
[INFO] [stdout] test data_flow::tests::test_fingerprint_none_when_no_text ... ok
[INFO] [stdout] test data_flow::tests::test_fingerprint_deterministic ... ok
[INFO] [stdout] test data_flow::tests::test_exfiltration_chain_detected ... ok
[INFO] [stdout] test data_flow::tests::test_fingerprint_eviction ... ok
[INFO] [stdout] test data_flow::tests::test_multiple_patterns_detected ... ok
[INFO] [stdout] test data_flow::tests::test_multiple_source_tools_for_same_pattern ... ok
[INFO] [stdout] test data_flow::tests::test_no_alert_for_different_pattern ... ok
[INFO] [stdout] test data_flow::tests::test_multiple_target_domains ... ok
[INFO] [stdout] test data_flow::tests::test_no_alert_without_target_domains ... ok
[INFO] [stdout] test data_flow::tests::test_pattern_level_match_without_fingerprint ... ok
[INFO] [stdout] test data_flow::tests::test_no_alert_without_response_findings ... ok
[INFO] [stdout] test data_flow::tests::test_pattern_name_truncation_3byte_utf8_no_panic ... ok
[INFO] [stdout] test data_flow::tests::test_pattern_name_truncation_multibyte_utf8_no_panic ... ok
[INFO] [stdout] test data_flow::tests::test_pattern_survives_partial_eviction ... ok
[INFO] [stdout] test did_plc::tests::test_base32_encode_15_bytes_produces_24_chars ... ok
[INFO] [stdout] test data_flow::tests::test_simple_api_record_and_check ... ok
[INFO] [stdout] test data_flow::tests::test_pattern_name_truncation_4byte_utf8_no_panic ... ok
[INFO] [stdout] test did_plc::tests::test_base32_encode_known_vectors ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_format ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_from_key ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_different_keys_different_dids ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_from_key_empty ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_deterministic ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_from_key_at_max_algorithm ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_from_key_oversized_algorithm ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_genesis_exceeds_max_entries ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_from_key_oversized_public_key ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_missing_fields ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_no_keys ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_with_services ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_sig_ignored ... ok
[INFO] [stdout] test did_plc::tests::test_validate_did_plc_invalid ... ok
[INFO] [stdout] test did_plc::tests::test_validate_did_plc_multibyte_utf8_no_panic ... ok
[INFO] [stdout] test did_plc::tests::test_validate_did_plc_oversized_input ... ok
[INFO] [stdout] test did_plc::tests::test_validate_did_plc_valid ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_blocked_by_default ... ok
[INFO] [stdout] test did_plc::tests::test_generate_did_plc_from_key_at_max_public_key ... ok
[INFO] [stdout] test auth_level::tests::test_cleanup_expired ... ok
[INFO] [stdout] test auth_level::tests::test_expiry ... ok
[INFO] [stdout] test auth_level::tests::test_default_expiry ... ok
[INFO] [stdout] test capability_token::tests::test_issue_and_verify_two_digit_depth ... ok
[INFO] [stdout] test capability_token::tests::test_tampered_content_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_tampered_expires_at_rejected ... ok
[INFO] [stdout] test capability_token::tests::test_verify_accepts_issued_at_within_skew ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_rate_limit_at_u32_max ... ok
[INFO] [stdout] test capability_token::tests::test_issue_and_verify_roundtrip ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_rate_limit_exact_boundary ... ok
[INFO] [stdout] test agent_trust::tests::test_last_activity_bounded ... ok
[INFO] [stdout] test agent_trust::tests::test_last_activity_existing_agent_updates_at_capacity ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_rate_limit_boundary_minus_one ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_rate_limited ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_rate_limit_max_per_session_u32_max ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_no_schema_allowed ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_blocked_field_type_by_property_name ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_no_urls_passes_with_domain_config ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_blocked_url_domain_wildcard ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_allowed_url_domain_passes ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_allowed_url_domain_blocks_unknown ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_allowed_when_enabled ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_nested_blocked_type ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_blocked_field_type_case_insensitive ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_blocked_url_domain_in_message ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_blocked_field_type_password ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_schema_clean_description_allowed ... ok
[INFO] [stdout] test elicitation::tests::test_extract_tool_references_deduplicates ... ok
[INFO] [stdout] test elicitation::tests::test_extract_urls_from_text_basic ... ok
[INFO] [stdout] test elicitation::tests::test_extract_urls_from_text_deduplicates ... ok
[INFO] [stdout] test elicitation::tests::test_r227_collect_schema_defaults_both_example_and_examples ... ok
[INFO] [stdout] test elicitation::tests::test_r227_collect_schema_defaults_singular_example ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_url_in_schema_default ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_schema_description_injection_detected ... ok
[INFO] [stdout] test elicitation::tests::test_r232_sampling_include_context_this_server_allowed ... ok
[INFO] [stdout] test elicitation::tests::test_elicitation_schema_top_level_description_injection ... ok
[INFO] [stdout] test elicitation::tests::test_r232_sampling_no_include_context_allowed ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_allowed_model_filter ... ok
[INFO] [stdout] test elicitation::tests::test_r232_sampling_max_tokens_exceeded_denied ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_allowed_when_enabled ... ok
[INFO] [stdout] test elicitation::tests::test_r228_elicitation_title_injection_blocked ... ok
[INFO] [stdout] test elicitation::tests::test_r228_elicitation_clean_title_allowed ... ok
[INFO] [stdout] test elicitation::tests::test_r232_sampling_include_context_all_servers_denied ... ok
[INFO] [stdout] test elicitation::tests::test_r232_sampling_max_tokens_within_limit_allowed ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_blocked_with_tool_output ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_blocked_with_tool_result_content ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_blocked_by_default ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_blocks_resource_content_type ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_blocked_model_filter ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_model_via_top_level_field ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_no_model_with_filter_denies ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_rate_limit_at_u32_max ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_rate_limit_boundary ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_rate_limit_checked_before_model_filter ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_rate_limited ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_tool_allowlist_allows_permitted_tool ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_tool_allowlist_empty_allows_all ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_tool_allowlist_blocks_disallowed_tool ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_tool_allowlist_glob_pattern ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_tool_allowlist_no_tool_refs_allows ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_tool_allowlist_tool_result_extraction ... ok
[INFO] [stdout] test elicitation::tests::test_sampling_tool_output_allowed_when_not_blocking ... ok
[INFO] [stdout] test elicitation::tests::test_schema_additional_properties_boolean_ignored ... ok
[INFO] [stdout] test elicitation::tests::test_schema_additional_properties_hidden_token ... ok
[INFO] [stdout] test elicitation::tests::test_schema_allof_hidden_api_key ... ok
[INFO] [stdout] test elicitation::tests::test_schema_anyof_hidden_credential ... ok
[INFO] [stdout] test elicitation::tests::test_schema_definitions_hidden_ssn ... ok
[INFO] [stdout] test elicitation::tests::test_schema_defs_clean_no_false_positive ... ok
[INFO] [stdout] test elicitation::tests::test_schema_defs_hidden_password ... ok
[INFO] [stdout] test elicitation::tests::test_schema_nested_oneof_in_anyof ... ok
[INFO] [stdout] test elicitation::tests::test_schema_oneof_hidden_password ... ok
[INFO] [stdout] test elicitation::tests::test_schema_contains_field_type_in_array_items ... ok
[INFO] [stdout] test elicitation::tests::test_schema_dependent_schemas_hidden_password ... ok
[INFO] [stdout] test elicitation::tests::test_schema_ref_detected_as_suspicious ... ok
[INFO] [stdout] test elicitation::tests::test_tool_matches_any_pattern_exact ... ok
[INFO] [stdout] test elicitation::tests::test_schema_contains_hidden_password ... ok
[INFO] [stdout] test elicitation::tests::test_schema_if_then_else_hidden_password ... ok
[INFO] [stdout] test elicitation::tests::test_tool_matches_any_pattern_wildcard ... ok
[INFO] [stdout] test elicitation::tests::test_schema_prefix_items_hidden_password ... ok
[INFO] [stdout] test elicitation::tests::test_schema_pattern_properties_hidden_password ... ok
[INFO] [stdout] test elicitation::tests::test_schema_no_false_positive_without_ref ... ok
[INFO] [stdout] test escalation_detector::tests::test_bidirectional_control_chars ... ok
[INFO] [stdout] test escalation_detector::tests::test_analysis_caching ... ok
[INFO] [stdout] test escalation_detector::tests::test_clean_content_passes ... ok
[INFO] [stdout] test escalation_detector::tests::test_privilege_gap_detection ... ok
[INFO] [stdout] test escalation_detector::tests::test_detect_delimiter_injection ... ok
[INFO] [stdout] test escalation_detector::tests::test_detect_injection_keywords ... ok
[INFO] [stdout] test elicitation::tests::test_schema_not_hidden_password ... ok
[INFO] [stdout] test escalation_detector::tests::test_privilege_to_value ... ok
[INFO] [stdout] test escalation_detector::tests::test_escalation_detector_safe_chain ... ok
[INFO] [stdout] test escalation_detector::tests::test_suspicious_pair_tracking ... ok
[INFO] [stdout] test escalation_detector::tests::test_tool_call_injection_detection ... ok
[INFO] [stdout] test escalation_detector::tests::test_detect_unicode_manipulation ... ok
[INFO] [stdout] test etdi::signature::tests::test_compute_tool_hash ... ok
[INFO] [stdout] test etdi::signature::tests::test_compute_key_fingerprint ... ok
[INFO] [stdout] test etdi::signature::tests::test_compute_tool_hash_canonical ... ok
[INFO] [stdout] test elicitation::tests::test_schema_scan_depth_limit_fail_closed ... ok
[INFO] [stdout] test etdi::signature::tests::test_signer_from_private_key ... ok
[INFO] [stdout] test etdi::signature::tests::test_tool_signer_generate_and_sign ... ok
[INFO] [stdout] test etdi::attestation::tests::test_empty_chain_is_valid ... ok
[INFO] [stdout] test etdi::store::tests::test_list_signatures ... ok
[INFO] [stdout] test etdi::store::tests::test_list_pins ... ok
[INFO] [stdout] test etdi::attestation::tests::test_verify_hash_matches ... ok
[INFO] [stdout] test etdi::attestation::tests::test_create_initial_attestation ... ok
[INFO] [stdout] test etdi::attestation::tests::test_get_current_attestation ... ok
[INFO] [stdout] test etdi::store::tests::test_store_save_and_load_pin ... ok
[INFO] [stdout] test etdi::attestation::tests::test_create_update_attestation ... ok
[INFO] [stdout] test etdi::store::tests::test_store_remove_pin ... ok
[INFO] [stdout] test etdi::store::tests::test_store_save_and_load_signature ... ok
[INFO] [stdout] test etdi::store::tests::test_store_with_hmac ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_check_pin_constraint_matches ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_check_pin_no_pin ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_check_pin_matches ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_check_pin_constraint_violated ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_pin_check_result_is_ok ... ok
[INFO] [stdout] test etdi::store::tests::test_store_wrong_hmac_key_rejects ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_check_pin_hash_drift ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_pin_constraint_invalid ... ok
[INFO] [stdout] test extension_registry::tests::test_duplicate_extension_rejection ... ok
[INFO] [stdout] test extension_registry::tests::test_duplicate_method_rejection ... ok
[INFO] [stdout] test extension_registry::tests::test_glob_match_exact ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_check_pin_version_drift ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_list_pins ... ok
[INFO] [stdout] test extension_registry::tests::test_glob_match_star ... ok
[INFO] [stdout] test extension_registry::tests::test_glob_match_question ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_pin_constraint ... ok
[INFO] [stdout] test extension_registry::tests::test_list_extensions ... ok
[INFO] [stdout] test extension_registry::tests::test_negotiate_allowed ... ok
[INFO] [stdout] test extension_registry::tests::test_negotiate_blocked ... ok
[INFO] [stdout] test extension_registry::tests::test_signature_required_but_missing ... ok
[INFO] [stdout] test extension_registry::tests::test_signature_required_but_no_public_key ... ok
[INFO] [stdout] test extension_registry::tests::test_signature_required_untrusted_key ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_pin_version ... ok
[INFO] [stdout] test extension_registry::tests::test_register_and_route ... ok
[INFO] [stdout] test extensions::audit_query::tests::test_audit_query_descriptor ... ok
[INFO] [stdout] test extension_registry::tests::test_unknown_method_error ... ok
[INFO] [stdout] test extensions::audit_query::tests::test_audit_query_on_load ... ok
[INFO] [stdout] test extension_registry::tests::test_unregister ... ok
[INFO] [stdout] test etdi::version_pin::tests::test_unpin ... ok
[INFO] [stdout] test extensions::audit_query::tests::test_audit_query_stats ... ok
[INFO] [stdout] test extractor::tests::test_classify_batch_request_returns_batch ... ok
[INFO] [stdout] test extractor::tests::test_classify_bom_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_case_variation_sampling ... ok
[INFO] [stdout] test extensions::audit_query::tests::test_audit_query_unknown_method ... ok
[INFO] [stdout] test extractor::tests::test_classify_case_variation_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_elicitation_case_insensitive ... ok
[INFO] [stdout] test extractor::tests::test_classify_elicitation_create ... ok
[INFO] [stdout] test extractor::tests::test_classify_elicitation_trailing_slash ... ok
[INFO] [stdout] test extractor::tests::test_classify_error_response ... ok
[INFO] [stdout] test extractor::tests::test_classify_multiple_zero_width_chars_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_empty_batch_returns_batch ... ok
[INFO] [stdout] test extractor::tests::test_classify_extension_method ... ok
[INFO] [stdout] test extractor::tests::test_classify_no_method_no_result_is_invalid ... ok
[INFO] [stdout] test extractor::tests::test_classify_extension_with_subpath ... ok
[INFO] [stdout] test extractor::tests::test_classify_non_tool_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_notification ... ok
[INFO] [stdout] test extractor::tests::test_classify_null_byte_suffix_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_progress_notification ... ok
[INFO] [stdout] test extractor::tests::test_classify_progress_notification_missing_params ... ok
[INFO] [stdout] test extractor::tests::test_classify_resource_read ... ok
[INFO] [stdout] test extractor::tests::test_classify_resource_read_empty_uri_rejected ... ok
[INFO] [stdout] test extractor::tests::test_classify_resource_read_http_uri ... ok
[INFO] [stdout] test extractor::tests::test_classify_resources_list_is_passthrough ... ok
[INFO] [stdout] test extractor::tests::test_classify_response ... ok
[INFO] [stdout] test extractor::tests::test_classify_resource_read_missing_params ... ok
[INFO] [stdout] test extractor::tests::test_classify_single_element_batch_returns_batch ... ok
[INFO] [stdout] test extractor::tests::test_classify_tasks_cancel ... ok
[INFO] [stdout] test extractor::tests::test_classify_tasks_get ... ok
[INFO] [stdout] test extractor::tests::test_classify_rtl_mark_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_tasks_get_no_task_id ... ok
[INFO] [stdout] test extractor::tests::test_classify_tasks_case_insensitive ... ok
[INFO] [stdout] test extractor::tests::test_classify_tool_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_tasks_trailing_slash ... ok
[INFO] [stdout] test extractor::tests::test_classify_tool_call_empty_name_returns_invalid ... ok
[INFO] [stdout] test extractor::tests::test_classify_tool_call_missing_params_returns_invalid ... ok
[INFO] [stdout] test extractor::tests::test_classify_tool_call_non_string_name_returns_invalid ... ok
[INFO] [stdout] test extractor::tests::test_classify_tool_call_non_object_arguments_returns_invalid ... ok
[INFO] [stdout] test extractor::tests::test_classify_trailing_space_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_zero_width_joiner_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_trailing_slash_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_classify_zero_width_sampling_bypass ... ok
[INFO] [stdout] test extractor::tests::test_classify_trailing_slash_sampling ... ok
[INFO] [stdout] test extractor::tests::test_classify_trailing_slash_resources_read ... ok
[INFO] [stdout] test extractor::tests::test_classify_zero_width_space_tools_call ... ok
[INFO] [stdout] test extractor::tests::test_extract_action_populates_target_domains_from_url ... ok
[INFO] [stdout] test extractor::tests::test_extract_action ... ok
[INFO] [stdout] test extractor::tests::test_extract_action_no_targets_for_plain_values ... ok
[INFO] [stdout] test extractor::tests::test_extract_action_populates_target_paths ... ok
[INFO] [stdout] test extractor::tests::test_extract_action_file_uri_populates_target_paths ... ok
[INFO] [stdout] test extractor::tests::test_extract_extension_action ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_file_localhost_case_insensitive ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_file_uri ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_file_populates_target_paths ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_file_uri_with_localhost ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_http_populates_target_domains ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_http_uri ... ok
[INFO] [stdout] test etdi::signature::tests::test_signature_verification_untrusted_signer ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_mixed_case_file_scheme ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_uppercase_http_scheme ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_unknown_scheme ... ok
[INFO] [stdout] test etdi::signature::tests::test_signature_verification_wrong_tool_name ... ok
[INFO] [stdout] test etdi::signature::tests::test_signature_verification_valid ... ok
[INFO] [stdout] test extractor::tests::test_extract_task_action_no_task_id ... ok
[INFO] [stdout] test etdi::signature::tests::test_signature_verification_expired ... ok
[INFO] [stdout] test extractor::tests::test_extract_resource_action_uppercase_file_scheme ... ok
[INFO] [stdout] test etdi::signature::tests::test_signature_verification_wrong_schema ... ok
[INFO] [stdout] test etdi::signature::tests::test_spiffe_trust ... ok
[INFO] [stdout] test extractor::tests::test_extract_task_action_cancel ... ok
[INFO] [stdout] test extractor::tests::test_extract_task_action_unknown_method ... ok
[INFO] [stdout] test extractor::tests::test_extract_task_action_get ... ok
[INFO] [stdout] test extractor::tests::test_make_denial_response ... ok
[INFO] [stdout] test extractor::tests::test_non_extension_passthrough ... ok
[INFO] [stdout] test extractor::tests::test_normalize_method_strips_control_characters ... ok
[INFO] [stdout] test fips::tests::test_allowed_hash_algorithms ... ok
[INFO] [stdout] test fips::tests::test_allowed_signature_algorithms_fips ... ok
[INFO] [stdout] test fips::tests::test_allowed_signature_algorithms_non_fips ... ok
[INFO] [stdout] test fips::tests::test_disabled_fips_allows_everything ... ok
[INFO] [stdout] test fips::tests::test_ecdsa_p256_not_enabled ... ok
[INFO] [stdout] test fips::tests::test_fips_algorithm_names ... ok
[INFO] [stdout] test fips::tests::test_fips_mode_accepts_ecdsa_p256 ... ok
[INFO] [stdout] test fips::tests::test_fips_mode_accepts_sha256 ... ok
[INFO] [stdout] test fips::tests::test_fips_mode_rejects_blake2 ... ok
[INFO] [stdout] test fips::tests::test_fips_mode_rejects_unknown_algorithm ... ok
[INFO] [stdout] test extractor::tests::test_make_approval_response ... ok
[INFO] [stdout] test fips::tests::test_fips_rejects_control_chars_in_algorithm_name ... ok
[INFO] [stdout] test fips::tests::test_fips_mode_rejects_ed25519 ... ok
[INFO] [stdout] test fips::tests::test_fips_rejects_oversized_algorithm_name ... ok
[INFO] [stdout] test framing::tests::test_deeply_nested_duplicate ... ok
[INFO] [stdout] test extractor::tests::test_make_batch_error_response_format ... ok
[INFO] [stdout] test framing::tests::test_malformed_key_lone_surrogate_rejected ... ok
[INFO] [stdout] test fips::tests::test_fips_mode_rejects_chacha20 ... ok
[INFO] [stdout] test etdi::attestation::tests::test_verify_chain_valid ... ok
[INFO] [stdout] test framing::tests::test_detects_top_level_duplicate_key ... ok
[INFO] [stdout] test framing::tests::test_mcp_tools_call_duplicate_attack ... ok
[INFO] [stdout] test framing::tests::test_detects_nested_duplicate_key ... ok
[INFO] [stdout] test framing::tests::test_mixed_arrays_and_objects ... ok
[INFO] [stdout] test framing::tests::test_empty_json_object_no_duplicates ... ok
[INFO] [stdout] test framing::tests::test_handles_escaped_quotes_duplicate ... ok
[INFO] [stdout] test framing::tests::test_handles_escaped_quotes_in_keys ... ok
[INFO] [stdout] test framing::tests::test_fix14_only_empty_lines_returns_eof ... ok
[INFO] [stdout] test framing::tests::test_fix14_empty_line_does_not_terminate_session ... ok
[INFO] [stdout] test framing::tests::test_no_duplicate_keys_in_valid_json ... ok
[INFO] [stdout] test framing::tests::test_r230_case_folding_custom_keys_allowed ... ok
[INFO] [stdout] test framing::tests::test_r230_case_folding_exact_lowercase_passes ... ok
[INFO] [stdout] test framing::tests::test_r230_case_folding_smuggle_method ... ok
[INFO] [stdout] test framing::tests::test_no_duplicates_in_array ... ok
[INFO] [stdout] test framing::tests::test_r231_unicode_confusable_kelvin_non_jsonrpc_passes ... ok
[INFO] [stdout] test framing::tests::test_r230_case_folding_smuggle_params ... ok
[INFO] [stdout] test framing::tests::test_r231_unicode_confusable_long_s_result_smuggle ... ok
[INFO] [stdout] test framing::tests::test_read_message_invalid_json ... ok
[INFO] [stdout] test framing::tests::test_r231_unicode_confusable_long_s_smuggle ... ok
[INFO] [stdout] test framing::tests::test_read_message_rejects_batch ... ok
[INFO] [stdout] test framing::tests::test_read_message_rejects_empty_batch ... ok
[INFO] [stdout] test framing::tests::test_same_key_different_scopes_is_ok ... ok
[INFO] [stdout] test framing::tests::test_unicode_escape_keys_detected_as_duplicate ... ok
[INFO] [stdout] test framing::tests::test_read_message_valid ... ok
[INFO] [stdout] test framing::tests::test_read_message_rejects_duplicate_keys ... ok
[INFO] [stdout] test framing::tests::test_roundtrip ... ok
[INFO] [stdout] test goal_tracking::tests::test_clear_session ... ok
[INFO] [stdout] test goal_tracking::tests::test_diverged_action ... ok
[INFO] [stdout] test framing::tests::test_read_message_eof ... ok
[INFO] [stdout] test goal_tracking::tests::test_no_goal_recorded ... ok
[INFO] [stdout] test goal_tracking::tests::test_detect_goal_drift ... ok
[INFO] [stdout] test framing::tests::test_write_message ... ok
[INFO] [stdout] test goal_tracking::tests::test_no_drift_for_similar_goal ... ok
[INFO] [stdout] test goal_tracking::tests::test_goal_tracker_config_validate_default_ok ... ok
[INFO] [stdout] test goal_tracking::tests::test_manipulation_keywords_detection ... ok
[INFO] [stdout] test goal_tracking::tests::test_detect_drift_similarity_is_clamped_to_unit_range ... ok
[INFO] [stdout] test goal_tracking::tests::test_goal_tracker_config_validate_nan_drift ... ok
[INFO] [stdout] test goal_tracking::tests::test_goal_tracker_config_validate_diverge_gt_drift ... ok
[INFO] [stdout] test goal_tracking::tests::test_set_and_check_aligned_goal ... ok
[INFO] [stdout] test goal_tracking::tests::test_stop_word_filtering ... ok
[INFO] [stdout] test goal_tracking::tests::test_truncate_string ... ok
[INFO] [stdout] test goal_tracking::tests::test_set_initial_goal_rejects_at_capacity ... ok
[INFO] [stdout] test goal_tracking::tests::test_session_stats ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_buffer_capacity_enforcement ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_buffer_cleanup_on_session_end ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_config_cross_call_disabled ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_empty_value_no_panic ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_config_validation_bounds ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_multibyte_utf8_boundary ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_overlap_size_bounds ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_r237_mcp4_capacity_exhaustion_produces_finding ... ok
[INFO] [stdout] test extension_registry::tests::test_signature_required_invalid_signature ... ok
[INFO] [stdout] test extension_registry::tests::test_signature_required_valid_signature ... ok
[INFO] [stdout] test framing::tests::test_line_too_long_drains_remainder ... ok
[INFO] [stdout] test framing::tests::test_fix6_line_too_long_rejected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_active_pattern_count ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_field_eviction_at_capacity ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_r237_mcp4_existing_field_at_capacity_no_finding ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_clean_keys_no_false_positive ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_annotations_clean_no_false_positive ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_base64url_encoded_aws_key_detected_in_params ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_base64url_encoded_secret_detected_in_response ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_array_detection ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_base64url_no_pad_encoded_aws_key_detected_in_params ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_base64_url_safe_encoded_detected ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_no_false_positive_normal_text ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_base64_encoded_split ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_aws_access_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_base64_encoded_aws_key_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_aws_key_through_combining_marks ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_aws_key_through_extended_combining_marks ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_aws_key_with_fullwidth_unicode ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_clean_parameters ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_base64_then_percent_encoded_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_base64_encoded_github_token_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_database_uri_mysql ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_gcp_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_database_uri_redis ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_split_aws_key_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_database_uri_postgres ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_generic_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_azure_connection_string ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_github_token_through_combining_marks ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_huggingface_token ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_jwt ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_groq_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_github_token ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_mailchimp_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_npm_token ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_github_token_in_nested_key ... ok
[INFO] [stdout] test inspection::cross_call_dlp::tests::test_split_jwt_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_jwt_without_signature ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_database_uri_mongodb ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_cohere_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_openai_project_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_anthropic_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_clean_base64_no_false_positive ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_azure_shared_access_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_openai_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_private_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_secret_in_json_object_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_slack_token ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_stripe_restricted_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_stripe_live_secret_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_discord_bot_token ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_replicate_token ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_sendgrid_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_stripe_test_publishable_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_twilio_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_nested_detection ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_hex_clean_no_false_positive ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_hex_encoded_uppercase_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_double_encoded_always_runs ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_hex_encoded_aws_key_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_raw_match_not_duplicated_with_encoding ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_double_encoding_location_labels ... ok
[INFO] [stdout] test inspection::dlp::tests::test_is_dlp_available ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_hex_encoded_github_token_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_scans_resource_blob ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_double_encoded_github_token_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_scans_content_annotations_for_secrets ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_respects_depth_limit ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r226_shannon_entropy_calculation ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r226_url_exfil_high_entropy_path ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_url_encoded_aws_key_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_url_encoded_private_key_header_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r226_dlp_gcp_aiza_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_pypi_token ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r226_url_exfil_normal_url_no_false_positive ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r226_url_exfil_high_entropy_query ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r226_dlp_supabase_secret_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r228_url_exfil_ftp_inspected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r226_dlp_wandb_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r231_sharded_exfil_above_threshold_alerts ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r231_sharded_exfil_low_entropy_not_counted ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_no_false_positive_on_clean_double_encoding ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r231_sharded_exfil_disabled_no_tracking ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r232_url_exfil_ws_inspected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r236_exfil3_hex_entropy_not_excluded ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_detects_together_api_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r231_sharded_exfil_below_threshold_no_alert ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r232_url_exfil_websocket_inspected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r232_url_exfil_wired_into_dlp_pipeline ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_double_hex_encoded_aws_key_detected ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_detects_aws_key_in_content ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_detects_base64_encoded_secret ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r253_dlp_detects_html_entity_encoded_aws_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_detects_github_token ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_clean_response_passes ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_detects_secret_in_resource_read_blob ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_detects_secret_in_resource_read_contents_text ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_scans_instructions_for_user ... ok
[INFO] [stdout] test inspection::dlp::tests::test_scan_notification_clean_is_empty ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_detects_secret_in_resource_read_metadata ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_detects_secret_in_structured_content ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r253_dlp_detects_named_html_entity_encoded_secret ... ok
[INFO] [stdout] test inspection::dlp::tests::test_scan_notification_detects_secret_in_params ... ok
[INFO] [stdout] test inspection::dlp::tests::test_try_base64_decode_url_safe_variant ... ok
[INFO] [stdout] test inspection::dlp::tests::test_try_base64_decode_all_variants_produce_valid_result ... ok
[INFO] [stdout] test inspection::dlp::tests::test_try_hex_decode_at_16_char_threshold ... ok
[INFO] [stdout] test inspection::dlp::tests::test_scan_text_for_secrets_detects_base64_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_scan_text_for_secrets_detects_raw_key ... ok
[INFO] [stdout] test inspection::dlp::tests::test_try_hex_decode_too_short ... ok
[INFO] [stdout] test inspection::dlp::tests::test_try_hex_decode_non_hex_chars ... ok
[INFO] [stdout] test inspection::dlp::tests::test_try_hex_decode_valid ... ok
[INFO] [stdout] test inspection::dlp::tests::test_try_hex_decode_odd_length ... ok
[INFO] [stdout] test inspection::dlp::tests::test_scan_notification_detects_secret_in_progress_message ... ok
[INFO] [stdout] test inspection::injection::tests::test_ascii_fast_path ... ok
[INFO] [stdout] test inspection::dlp::tests::test_response_dlp_detects_secret_in_resource_text ... ok
[INFO] [stdout] test inspection::dlp::tests::test_dlp_percent_then_base64_encoded_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scan_notification_default_does_not_detect_custom_pattern ... ok
[INFO] [stdout] test inspection::dlp::tests::test_r231_sharded_exfil_fragment_count_bounded ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scan_notification_no_params ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scans_error_fields ... ok
[INFO] [stdout] test inspection::injection::tests::test_default_pattern_count ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scan_notification_nested_params ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_inspect_detects_phonetic_encoding ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scan_response ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scan_notification_detects_custom_pattern ... ok
[INFO] [stdout] test inspection::injection::tests::test_detects_chatml_delimiter ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scan_notification_clean_is_empty ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scans_resource_text ... ok
[INFO] [stdout] test inspection::injection::tests::test_detects_generic_system_delimiter ... ok
[INFO] [stdout] test inspection::injection::tests::test_detects_alpaca_instruction_marker ... ok
[INFO] [stdout] test inspection::injection::tests::test_detects_llama_sys_delimiter ... ok
[INFO] [stdout] test inspection::injection::tests::test_detects_llama_inst_delimiter ... ok
[INFO] [stdout] test inspection::injection::tests::test_flipattack_system_tag_reversal_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_false_positive_prone_patterns_removed ... ok
[INFO] [stdout] test inspection::injection::tests::test_flipattack_char_reversal_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_flipattack_clean_reversed_text_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_flipattack_word_reversal_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_with_domain_patterns ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_inspect_clean_phonetic_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_injection_pattern_count ... ok
[INFO] [stdout] test inspection::injection::tests::test_from_config_returns_none_when_all_disabled ... ok
[INFO] [stdout] test inspection::injection::tests::test_injection_in_instructions_for_user ... ok
[INFO] [stdout] test inspection::injection::tests::test_injection_in_meta ... ok
[INFO] [stdout] test inspection::injection::tests::test_flipattack_custom_scanner_reversal ... ok
[INFO] [stdout] test inspection::injection::tests::test_inspect_detects_through_bidi_isolate_evasion ... ok
[INFO] [stdout] test inspection::injection::tests::test_inspect_detects_basic_injection ... ok
[INFO] [stdout] test inspection::injection::tests::test_injection_detection_fail_closed_on_missing_automaton ... ok
[INFO] [stdout] test inspection::injection::tests::test_inspect_case_insensitive ... ok
[INFO] [stdout] test inspection::injection::tests::test_inspect_detects_through_combining_diacritical_evasion ... ok
[INFO] [stdout] test inspection::injection::tests::test_inspect_no_injection_in_normal_text ... ok
[INFO] [stdout] test inspection::injection::tests::test_inspect_detects_through_interlinear_evasion ... ok
[INFO] [stdout] test inspection::injection::tests::test_inspect_detects_through_unicode_evasion ... ok
[INFO] [stdout] test inspection::injection::tests::test_is_injection_available ... ok
[INFO] [stdout] test inspection::injection::tests::test_llm_delimiters_no_false_positive_on_normal_markdown ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_decode_leetspeak_2_to_z ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_decode_leetspeak_digits ... ok
[INFO] [stdout] test inspection::injection::tests::test_inspect_detects_through_combining_grapheme_joiner_evasion ... ok
[INFO] [stdout] test inspection::injection::tests::test_custom_scanner_scan_notification_still_detects_builtin_when_included ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_decode_leetspeak_expanded ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_decode_leetspeak_unit ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_itp_credential_forwarding ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_leetspeak_disregard ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_leetspeak_ignore_instructions ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_leetspeak_system_prompt ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_itp_exfiltrate ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_itp_cross_tool_reference ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_leetspeak_normal_numbers_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_from_config_patterns_accessor ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_policy_puppetry_admin_mode ... ok
[INFO] [stdout] test inspection::injection::tests::test_from_config_extra_patterns ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_normal_tool_description_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_policy_puppetry_ini_style ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_confusable_dispatches_math_alpha ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_policy_puppetry_yaml_style ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_policy_puppetry_system_prompt_tag ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_decode_rot13_below_threshold ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_decode_rot13_unit ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_decode_rot13_self_inverse ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_policy_puppetry_override_tag ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_math_alpha_bold_lowercase ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_math_alpha_out_of_range ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_math_alpha_fraktur ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_math_bold_injection_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_math_alpha_monospace ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_rot13_with_unicode_spacing_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_math_sans_serif_injection_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_math_alpha_bold_uppercase ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_rot13_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_r230_error_msg_social_eng_file_read ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_rot13_injection_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r227_rot13_custom_scanner ... ok
[INFO] [stdout] test inspection::injection::tests::test_r230_error_msg_social_eng_credential_request ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_log_to_leak_compliance_forward ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_log_to_leak_include_full_context ... ok
[INFO] [stdout] test inspection::injection::tests::test_r230_normal_error_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_memory_persistence_always_recommend ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_log_to_leak_telemetry_justification ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_log_to_leak_debugging_justification ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_memory_persistence_remember_as_trusted ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_metabreak_fim_prefix ... ok
[INFO] [stdout] test inspection::injection::tests::test_r230_error_msg_social_eng_tool_redirect ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_metabreak_fim_middle ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_metabreak_fim_suffix ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_normal_logging_text_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_normal_text_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_viral_loop_copy_prompt ... ok
[INFO] [stdout] test inspection::injection::tests::test_r231_viral_loop_forward_this_to_all ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_html_comment_hidden_payload_exposed ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_html_comment_delimiter_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_strip_html_comments_function ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_base64_injection_mixed_case_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_html_comment_normal_text_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_tokenbreak_prepended_char_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_tokenbreak_normal_text_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_base64_injection_scanner_struct ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_inj1_latin_small_capital_injection_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_inj1_ipa_alpha_confusable ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp1_named_entity_unknown_passthrough ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_inj1_mixed_small_capital_and_ascii ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_inj3_html_entity_hex_injection ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_inj3_html_entity_decimal_injection ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp1_named_html_entity_amp_quot_apos ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp1_named_html_entity_nbsp ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp3_decode_punycode_labels_extracts_xn ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp1_named_html_entity_lt_gt_injection ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_tokenbreak_scanner_struct ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp1_named_html_entity_system_prompt ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp1_named_html_entity_mixed_encoding ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp3_decode_punycode_labels_no_xn ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp3_punycode_decode_invalid_input ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp3_punycode_decode_basic ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp3_punycode_decode_max_output_len ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp3_punycode_decode_ascii_only ... ok
[INFO] [stdout] test inspection::injection::tests::test_r238_mcp1_extended_named_entities_decoded ... ok
[INFO] [stdout] test inspection::injection::tests::test_r238_mcp1_case_insensitive_html_entities_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp3_punycode_injection_free_fn ... ok
[INFO] [stdout] test inspection::injection::tests::test_r238_mcp1_mixed_case_entities_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_regional_indicator_decoding ... ok
[INFO] [stdout] test inspection::injection::tests::test_r238_mcp3_rot13_long_natural_english_not_decoded ... ok
[INFO] [stdout] test inspection::injection::tests::test_r238_mcp4_double_encoded_entities_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r238_mcp2_base64_colon_delimited_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_regional_indicator_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_regional_indicator_injection_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_r238_mcp2_base64_comma_delimited_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_regional_indicator_variation_selector_stripped ... ok
[INFO] [stdout] test inspection::injection::tests::test_regional_indicator_none_when_no_indicators ... ok
[INFO] [stdout] test inspection::injection::tests::test_r238_mcp3_rot13_short_text_with_stopwords_still_decoded ... ok
[INFO] [stdout] test inspection::injection::tests::test_regional_indicator_zwj_stripped ... ok
[INFO] [stdout] test inspection::injection::tests::test_sanitize_strips_combining_grapheme_joiner ... ok
[INFO] [stdout] test inspection::injection::tests::test_regional_indicator_zwj_injection_detected ... ok
[INFO] [stdout] test inspection::injection::tests::test_sanitize_strips_bidi_isolates ... ok
[INFO] [stdout] test inspection::injection::tests::test_sanitize_strips_soft_hyphen ... ok
[INFO] [stdout] test inspection::injection::tests::test_sanitize_strips_combining_diacritical_marks ... ok
[INFO] [stdout] test inspection::injection::tests::test_sanitize_strips_tag_chars ... ok
[INFO] [stdout] test inspection::injection::tests::test_sanitize_strips_interlinear_annotation ... ok
[INFO] [stdout] test inspection::injection::tests::test_sanitize_strips_zero_width ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_notification_injection_no_params ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_notification_injection_detects_pattern_in_params ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_notification_injection_nested_params ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_json_value_for_injection_detects_injection_in_object_key_free_fn ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_notification_injection_clean_is_empty ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_json_value_detects_injection_in_object_key_scanner ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_checks_structured_content ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_clean_error_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_detects_injection_in_error_data_string ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_detects_injection_in_error_message ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_detects_injection_in_error_data_object ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_handles_missing_content ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_empty_on_safe_content ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_detects_injection_in_resource_blob ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_extracts_from_content ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_resource_blob_binary_no_false_positive ... ok
[INFO] [stdout] test inspection::injection::tests::test_scan_response_resource_blob_invalid_base64_no_panic ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_avi_magic_bytes ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_blocked_content_type_not_checked_when_disabled ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_config_default_values ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_config_defaults_audio_video_sizes ... ok
[INFO] [stdout] test inspection::injection::tests::test_from_config_extra_and_disabled ... ok
[INFO] [stdout] test inspection::injection::tests::test_injection_scanner_detects_injection_in_resource_blob ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_magic_bytes ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_magic_bytes_empty ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_magic_bytes_gif ... ok
[INFO] [stdout] test inspection::injection::tests::test_from_config_disabled_is_case_insensitive ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_magic_bytes_mp3 ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_magic_bytes_short ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_magic_bytes_wav ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_magic_bytes_webp ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_mime ... ok
[INFO] [stdout] test inspection::injection::tests::test_from_config_disabled_patterns ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_mime_case_insensitive ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_name_audio ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_name_image ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_name_pdf ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_name_unknown ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_from_name_video ... ok
[INFO] [stdout] test inspection::injection::tests::test_from_config_defaults_only ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_inflate_with_budget_rejects_over_limit ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_inflate_with_budget_tracks_cumulative ... ok
[INFO] [stdout] test inspection::injection::tests::test_r226_leetspeak_scanner_instance ... ok
[INFO] [stdout] test inspection::injection::tests::test_r232_html_comment_scanner_struct ... ok
[INFO] [stdout] test inspection::injection::tests::test_r237_mcp3_punycode_injection_negative ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_magic_bytes_flac ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_magic_bytes_ogg ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_blocked_content_type_video_rejected ... ok
[INFO] [stdout] test inspection::injection::tests::test_validate_injection_patterns_all_compile ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_audio_size_limit_enforced ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_too_large ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_blocked_content_type_audio_rejected ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_blocked_content_type_overrides_allowed ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_too_large_error_message ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_syncsafe_size_decoding ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_magic_bytes_agrees_with_mime ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_content_type_magic_bytes_override_mime ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_image_size_limit_unchanged_for_images ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_injection_detected_in_png_metadata ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp4_box_size_1_extended_64bit ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp4_ftyp_magic_bytes ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp4_box_size_1_truncated ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_jpeg_com_extraction ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_jpeg_exif_text_extraction ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_multimodal_config_from_policy_config ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_multimodal_config_from_policy_config_defaults ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_multimodal_config_from_policy_config_unknown_type ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_pdf_backslash_escape ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_pdf_escaped_parens ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_pdf_named_escape_sequences ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_pdf_octal_escape_sequences ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_id3v24_syncsafe_frame_sizes ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_id3v2_comment_extraction ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_id3v2_lyrics_injection ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_id3v2_multiple_frames ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_id3v2_utf8_encoding ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_no_id3_sync_word_only ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_blob_disabled_scanner ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp4_udta_metadata_extraction ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_truncated_id3_header ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp4_truncated_returns_none ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp3_id3v2_title_extraction ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp4_no_metadata_returns_none ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_disabled_scanner ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_disabled_skips_size_checks ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp4_injection_in_comment ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scanner_disabled_by_default ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_pdf_scan_no_streams_returns_empty ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_pdf_stream_text_extraction ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_pdf_uses_image_size_limit ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_png_malformed_returns_empty ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_mp4_nested_depth_bounded ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_png_text_chunk_extraction ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_blob_invalid_base64 ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_png_ztxt_chunk_extraction ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_blob_with_mime_hint ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_content_auto_detect_type ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_skipped_for_unlisted_content_type ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_result_has_duration ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_webm_magic_bytes ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_stego_no_detection_normal_data ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_stego_detection_uniform_lsb ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_scan_truncated_png_returns_no_text ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_size_limit_enforced_for_multimodal ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_with_injection_scanner ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_extract_notification_text ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_extract_response_text_content ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_extract_response_text_error ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_extract_response_text_covers_resource_read_contents ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_normalize_text_fullwidth ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_normalize_text_preserves_content ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_scan_finding_dlp ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_scan_finding_serialization ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_scan_finding_severity_clamped ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_scan_finding_with_decode_layer ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_scan_finding_with_severity ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_scanner_type_display ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_traverse_json_strings_array ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_traverse_json_strings_depth_limit ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_stego_non_image_returns_empty ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_traverse_json_strings_simple ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_traverse_json_strings_with_keys_includes_keys ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_traverse_json_strings_without_keys_excludes_keys ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_stego_small_data_returns_empty ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_collect_schema_descriptions_includes_property_names ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_fsp_const_field_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_fsp_contains_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_fsp_dependent_schemas_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_fsp_comment_field_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_fsp_not_keyword_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_fsp_pattern_properties_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_fsp_if_then_else_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_fsp_prefix_items_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r226_content_schema_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r226_itp_exfiltration_instruction_in_schema ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r226_itp_cross_tool_reference_in_description ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r226_property_names_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r226_unevaluated_items_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r226_itp_policy_puppetry_in_tool_description ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r226_unevaluated_properties_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r226_normal_tool_descriptions_no_false_positive ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r227_imperative_in_tool_scan ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r227_imperative_multiple_flagged ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r227_imperative_single_below_threshold ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r227_imperative_normal_description_clean ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r231_exfil_param_normal_params_clean ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r231_exfil_param_system_prompt_detected ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r231_exfil_param_chain_of_thought_detected ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_wav_info_chunk_extraction ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r232_preference_manipulation_in_tool_scan ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r231_scan_for_exfiltration_params_direct ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r232_preference_manipulation_multiple_flagged ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r232_preference_manipulation_normal_clean ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r232_tool_name_dangerous_chars_detected ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r232_preference_manipulation_single_below_threshold ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r232_tool_name_injection_pattern_detected ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r232_tool_name_html_comment_detected ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r35_mcp_7_clean_schema_description_no_false_positive ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r35_mcp_7_top_level_schema_description_scanned ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_r232_tool_name_normal_clean ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_scan_tool_descriptions_empty_response ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_scan_tool_descriptions_no_description_skipped ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_scan_tool_descriptions_clean_tools ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_scan_tool_descriptions_detects_injection ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_scan_tool_descriptions_with_system_tag ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_video_size_limit_enforced ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_schema_descriptions_allof_anyof_oneof ... ok
[INFO] [stdout] test inspection::util::tests::test_try_base64_decode_boundary_9_chars ... ok
[INFO] [stdout] test inspection::util::tests::test_try_base64_decode_invalid ... ok
[INFO] [stdout] test inspection::util::tests::test_try_base64_decode_medium_length ... ok
[INFO] [stdout] test inspection::tool_description::tests::test_schema_descriptions_title_and_enum ... ok
[INFO] [stdout] test inspection::util::tests::test_try_base64_decode_standard ... ok
[INFO] [stdout] test inspection::util::tests::test_try_base64_decode_non_utf8 ... ok
[INFO] [stdout] test inspection::util::tests::test_try_base64_decode_too_short ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_wav_no_info_returns_none ... ok
[INFO] [stdout] test inspection::util::tests::test_try_base64_decode_url_safe ... ok
[INFO] [stdout] test inspection::util::tests::test_try_base64_decode_with_spaces ... ok
[INFO] [stdout] test inspection::verified_cross_call_dlp::tests::test_existing_field_updates_even_at_capacity ... ok
[INFO] [stdout] test inspection::verified_cross_call_dlp::tests::test_new_field_rejected_at_capacity ... ok
[INFO] [stdout] test inspection::verified_cross_call_dlp::tests::test_new_field_at_capacity_emits_capacity_finding ... ok
[INFO] [stdout] test inspection::verified_cross_call_dlp::tests::test_new_field_rejected_on_byte_budget ... ok
[INFO] [stdout] test inspection::verified_cross_call_dlp::tests::test_new_field_updates_below_capacity ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d1_ascii_all_boundaries ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d1_continuation_bytes_not_boundaries ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_wav_oversized_chunk_bounded ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d1_extract_tail_4byte_emoji ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d1_extract_tail_lands_on_boundary ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d1_leading_bytes_are_boundaries ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d2_tail_never_exceeds_max_size ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d2_empty_value ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d2_value_shorter_than_max ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d3_normal_accounting ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d4_at_max_fields_rejects ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d3_add_first_buffer ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d2_zero_max_size ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d3_remove_buffer ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d4_byte_limit_exact_accepts ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d4_above_max_fields_rejects ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d4_below_max_fields_accepts ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d4_byte_overflow_rejects ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d4_byte_limit_rejects ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d5_max_values ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d5_saturating_add_near_max ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d5_saturating_sub_prevents_underflow ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d5_zero_old_total ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_current_too_short ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_wav_truncated_returns_none ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_exhaustive_small_secrets ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_overlap_region_saturating ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_not_split_returns_false ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_secret_equals_2x_overlap ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_secret_fully_in_overlap ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_secret_split_at_start ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_overlap_region_size ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_prev_too_short ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_secret_split_at_end ... ok
[INFO] [stdout] test inspection::verified_dlp_core::tests::test_d6_split_beyond_overlap_returns_false ... ok
[INFO] [stdout] test mediation::tests::test_build_acis_envelope_deny_with_findings ... ok
[INFO] [stdout] test mediation::tests::test_block_quarantined_privileged_sink_denies_by_default ... ok
[INFO] [stdout] test mediation::tests::test_block_tainted_privileged_sink_counterfactual_signal_requires_review_reason ... ok
[INFO] [stdout] test mediation::tests::test_block_quarantined_privileged_sink_requires_approval_when_configured ... ok
[INFO] [stdout] test mediation::tests::test_block_tainted_privileged_sink_requires_approval_when_configured ... ok
[INFO] [stdout] test mediation::tests::test_build_secondary_envelope_preserves_security_context ... ok
[INFO] [stdout] test mediation::tests::test_build_acis_envelope_enriches_canonical_request_hash ... ok
[INFO] [stdout] test mediation::tests::test_build_acis_envelope_fingerprint_matches_mediate ... ok
[INFO] [stdout] test mediation::tests::test_build_acis_envelope_allow ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_webm_no_tags_returns_none ... ok
[INFO] [stdout] test mediation::tests::test_cross_transport_dlp_parity ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_webm_injection_in_tag ... ok
[INFO] [stdout] test mediation::tests::test_cross_transport_envelope_validates ... ok
[INFO] [stdout] test mediation::tests::test_deny_replay_blocks_replayed_request ... ok
[INFO] [stdout] test mediation::tests::test_mediate_deny_no_policies_strict_mode ... ok
[INFO] [stdout] test mediation::tests::test_cross_transport_verdict_parity ... ok
[INFO] [stdout] test mediation::tests::test_mediate_allow_with_matching_policy ... ok
[INFO] [stdout] test mediation::tests::test_mediate_dlp_audit_only_does_not_block ... ok
[INFO] [stdout] test mediation::tests::test_mediate_different_actions_different_fingerprints ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_wav_injection_in_comment ... ok
[INFO] [stdout] test mediation::tests::test_mediate_envelope_validates ... ok
[INFO] [stdout] test mediation::tests::test_r254_all_stages_disabled ... ok
[INFO] [stdout] test mediation::tests::test_mediate_dlp_blocks_secrets ... ok
[INFO] [stdout] test mediation::tests::test_cross_transport_strict_deny_parity ... ok
[INFO] [stdout] test mediation::tests::test_mediate_timing_disabled ... ok
[INFO] [stdout] test mediation::tests::test_mediate_fingerprint_deterministic ... ok
[INFO] [stdout] test mediation::tests::test_mediate_findings_disabled ... ok
[INFO] [stdout] test mediation::tests::test_require_agent_identity_denies_when_missing ... ok
[INFO] [stdout] test mediation::tests::test_r254_combined_dlp_and_injection_findings ... ok
[INFO] [stdout] test mediation::tests::test_r254_build_secondary_envelope_all_origins ... ok
[INFO] [stdout] test mediation::tests::test_r254_call_chain_depth_at_boundary ... ok
[INFO] [stdout] test mediation::tests::test_r254_empty_tool_name_caught_by_envelope_validation ... ok
[INFO] [stdout] test mediation::tests::test_mediate_injection_blocks ... ok
[INFO] [stdout] test mediation::tests::test_require_both_session_and_identity_enforced ... ok
[INFO] [stdout] test mediation::tests::test_r254_oversized_tool_name_caught_by_envelope_validation ... ok
[INFO] [stdout] test mediation::tests::test_require_lineage_for_privileged_sink_allows_verified_flow ... ok
[INFO] [stdout] test mediation::tests::test_require_lineage_for_privileged_sink_denies_low_trust_flow ... ok
[INFO] [stdout] test mediation::tests::test_require_ephemeral_client_provenance_allows_ephemeral_provenance ... ok
[INFO] [stdout] test mediation::tests::test_require_ephemeral_client_provenance_denies_non_ephemeral_provenance ... ok
[INFO] [stdout] test mediation::tests::test_require_agent_identity_allows_when_present ... ok
[INFO] [stdout] test mediation::tests::test_require_lineage_for_privileged_sink_requires_approval_for_gated_low_trust_flow ... ok
[INFO] [stdout] test mediation::tests::test_session_enforcement_runs_before_dlp ... ok
[INFO] [stdout] test memory_security::tests::test_content_hash_is_deterministic ... ok
[INFO] [stdout] test mediation::tests::test_require_session_id_denies_when_missing ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_webm_tag_extraction ... ok
[INFO] [stdout] test mediation::tests::test_require_session_id_allows_when_present ... ok
[INFO] [stdout] test memory_security::tests::test_fingerprint_differs_from_content_hash ... ok
[INFO] [stdout] test memory_security::tests::test_disabled_manager ... ok
[INFO] [stdout] test memory_security::tests::test_fingerprint_is_deterministic ... ok
[INFO] [stdout] test mediation::tests::test_require_verified_signature_denies_unverified_provenance ... ok
[INFO] [stdout] test memory_security::tests::test_cross_session_detection ... ok
[INFO] [stdout] test memory_security::tests::test_namespace_isolation ... ok
[INFO] [stdout] test inspection::multimodal::tests::test_webm_truncated_returns_none ... ok
[INFO] [stdout] test memory_security::tests::test_quarantine_entry ... ok
[INFO] [stdout] test memory_security::tests::test_notification_replay_detection ... ok
[INFO] [stdout] test memory_security::tests::test_record_and_check_response ... ok
[INFO] [stdout] test memory_security::tests::test_record_stores_different_fingerprint_and_hash ... ok
[INFO] [stdout] test memory_security::tests::test_sharing_approval ... ok
[INFO] [stdout] test memory_security::tests::test_short_strings_ignored ... ok
[INFO] [stdout] test memory_tracking::tests::test_matched_preview_multibyte_utf8_safe ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_annotations_nested_values ... ok
[INFO] [stdout] test memory_security::tests::test_stats_tracking ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_blob_both_forms_detected ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_case_sensitive_evasion ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_disabled_by_default_is_noop ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_cross_session_isolation ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_blob_invalid_base64_ignored ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_detects_replayed_url ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_error_message ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_exact_match_works ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_blob_base64_encoded_form_detected ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_blob_non_utf8_ignored ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_fingerprints_annotations ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_fingerprints_resource_blob_url_safe ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_percent_encoding_evasion ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_fingerprints_resource_blob ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_short_strings_ignored ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_query_param_reordering_evasion ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_resource_text ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_no_false_positive_on_different_data ... ok
[INFO] [stdout] test memory_tracking::tests::test_r38_mcp_1_notification_params_not_fingerprinted_by_record_response ... ok
[INFO] [stdout] test memory_tracking::tests::test_r38_mcp_1_notification_params_fingerprinted_via_extract_from_value ... ok
[INFO] [stdout] test nhi::tests::test_check_rotation_compliance_nonexistent_rejected ... ok
[INFO] [stdout] test nhi::tests::test_check_rotation_compliance_disabled_rejected ... ok
[INFO] [stdout] test nhi::tests::test_check_behavior_infinity_interval_flagged_as_anomaly ... ok
[INFO] [stdout] test nhi::tests::test_check_rotation_compliance_compliant ... ok
[INFO] [stdout] test nhi::tests::test_check_rotation_compliance_terminal_state_is_compliant ... ok
[INFO] [stdout] test nhi::tests::test_behavioral_check ... ok
[INFO] [stdout] test nhi::tests::test_check_behavior_nan_zscore_flagged_as_anomaly ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_allows_active_agents ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_rejects_from_revoked_agent ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_allows_reverse_edge_after_revocation ... ok
[INFO] [stdout] test nhi::tests::test_behavioral_baseline ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_rejects_direct_live_cycle ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_rejects_multi_hop_live_cycle ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_allows_reverse_edge_after_expiry ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_rejects_self_delegation ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_rejects_self_delegation_homoglyph ... ok
[INFO] [stdout] test nhi::tests::test_attestation_limit_enforced ... ok
[INFO] [stdout] test nhi::tests::test_attestation_stored_on_identity ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_rejects_to_expired_agent ... ok
[INFO] [stdout] test nhi::tests::test_create_delegation_rejects_self_delegation_case_insensitive ... ok
[INFO] [stdout] test nhi::tests::test_delegation_chain ... ok
[INFO] [stdout] test nhi::tests::test_disabled_manager ... ok
[INFO] [stdout] test nhi::tests::test_credential_rotation ... ok
[INFO] [stdout] test nhi::tests::test_dpop_nonce ... ok
[INFO] [stdout] test nhi::tests::test_dpop_nonce_tracker_generate_ok ... ok
[INFO] [stdout] test nhi::tests::test_delegation_ascii_agents_no_homoglyph_divergence ... ok
[INFO] [stdout] test nhi::tests::test_enforce_rotation_policy_returns_non_compliant ... ok
[INFO] [stdout] test nhi::tests::test_ephemeral_credential_deny_unknown_fields ... ok
[INFO] [stdout] test nhi::tests::test_ephemeral_credential_serialization_roundtrip ... ok
[INFO] [stdout] test nhi::tests::test_generate_agent_did_no_public_key ... ok
[INFO] [stdout] test nhi::tests::test_get_identity_inventory_with_identities ... ok
[INFO] [stdout] test nhi::tests::test_get_identity_inventory_empty ... ok
[INFO] [stdout] test nhi::tests::test_inventory_summary_serialization ... ok
[INFO] [stdout] test nhi::tests::test_generate_agent_did ... ok
[INFO] [stdout] test nhi::tests::test_generate_agent_did_deterministic ... ok
[INFO] [stdout] test nhi::tests::test_identity_inventory_terminal_health ... ok
[INFO] [stdout] test nhi::tests::test_get_inventory_summary_counts ... ok
[INFO] [stdout] test nhi::tests::test_is_terminal_returns_false_for_nonexistent ... ok
[INFO] [stdout] test nhi::tests::test_identity_lifecycle ... ok
[INFO] [stdout] test nhi::tests::test_is_terminal_returns_false_for_active ... ok
[INFO] [stdout] test nhi::tests::test_is_terminal_returns_true_for_expired ... ok
[INFO] [stdout] test nhi::tests::test_issue_ephemeral_credential_control_chars_rejected ... ok
[INFO] [stdout] test nhi::tests::test_issue_ephemeral_credential_disabled_rejected ... ok
[INFO] [stdout] test nhi::tests::test_is_terminal_returns_true_for_revoked ... ok
[INFO] [stdout] test nhi::tests::test_issue_ephemeral_credential_revoked_identity_rejected ... ok
[INFO] [stdout] test nhi::tests::test_issue_ephemeral_credential_empty_scopes_rejected ... ok
[INFO] [stdout] test nhi::tests::test_issue_ephemeral_credential_ttl_exceeds_max_rejected ... ok
[INFO] [stdout] test nhi::tests::test_r250_nhi1_revocation_cascades_to_delegations ... ok
[INFO] [stdout] test nhi::tests::test_issue_ephemeral_credential_success ... ok
[INFO] [stdout] test nhi::tests::test_r250_nhi1_revocation_cascades_to_delegations_as_target ... ok
[INFO] [stdout] test nhi::tests::test_r250_nhi2_chain_empty_when_origin_expired ... ok
[INFO] [stdout] test nhi::tests::test_r250_nhi2_delegation_chain_shortened_when_origin_revoked ... ok
[INFO] [stdout] test nhi::tests::test_r250_nhi2_single_delegation_empty_when_origin_revoked ... ok
[INFO] [stdout] test nhi::tests::test_register_identity ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_long_metadata_key ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_empty_name ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_long_metadata_value ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_long_spiffe_id ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_long_name ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_long_tag ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_name_control_chars ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_name_unicode_format_chars ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_metadata_key_control_chars ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_tag_control_chars ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_spiffe_id_control_chars ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_too_many_metadata ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_rejects_too_many_tags ... ok
[INFO] [stdout] test nhi::tests::test_register_identity_valid_inputs_succeed ... ok
[INFO] [stdout] test nhi::tests::test_revocation_list_below_capacity_succeeds ... ok
[INFO] [stdout] test memory_tracking::tests::test_deep_nested_json_no_stack_overflow ... ok
[INFO] [stdout] test nhi::tests::test_rotation_enforcement_result_serialization ... ok
[INFO] [stdout] test nhi::tests::test_rotate_credentials_default_ttl_within_max_succeeds ... ok
[INFO] [stdout] test nhi::tests::test_rotate_credentials_rejects_ttl_exceeding_max ... ok
[INFO] [stdout] test nhi::tests::test_set_verification_tier ... ok
[INFO] [stdout] test nhi::tests::test_rotate_credentials_ttl_at_max_succeeds ... ok
[INFO] [stdout] test nhi::tests::test_set_verification_tier_no_downgrade ... ok
[INFO] [stdout] test nhi::tests::test_stats ... ok
[INFO] [stdout] test nhi::tests::test_validate_ephemeral_credential_expired ... ok
[INFO] [stdout] test nhi::tests::test_validate_ephemeral_credential_bad_expiry_fails_closed ... ok
[INFO] [stdout] test nhi::tests::test_validate_ephemeral_credential_max_uses_exhausted ... ok
[INFO] [stdout] test nhi::tests::test_validate_ephemeral_credential_valid ... ok
[INFO] [stdout] test output_contracts::tests::test_command_like_violation_requires_quarantine ... ok
[INFO] [stdout] test nhi::tests::test_validate_ephemeral_credential_revoked ... ok
[INFO] [stdout] test output_contracts::tests::test_free_text_output_with_command_is_contract_violation ... ok
[INFO] [stdout] test output_contracts::tests::test_instructions_for_user_map_to_approval_prompt ... ok
[INFO] [stdout] test output_contracts::tests::test_free_text_output_without_privilege_escalation_is_not_violation ... ok
[INFO] [stdout] test output_contracts::tests::test_non_quarantined_violation_security_context ... ok
[INFO] [stdout] test output_contracts::tests::test_quarantined_violation_security_context ... ok
[INFO] [stdout] test output_contracts::tests::test_resource_read_stays_resource_content ... ok
[INFO] [stdout] test output_contracts::tests::test_structured_output_defaults_to_data_contract ... ok
[INFO] [stdout] test output_contracts::tests::test_structured_output_url_is_contract_violation ... ok
[INFO] [stdout] test output_contracts::tests::test_url_violation_does_not_require_quarantine ... ok
[INFO] [stdout] test output_security::tests::test_calculate_entropy ... ok
[INFO] [stdout] test output_security::tests::test_baseline_update ... ok
[INFO] [stdout] test output_security::tests::test_baseline_capacity_bound ... ok
[INFO] [stdout] test output_security::tests::test_control_char_detection ... ok
[INFO] [stdout] test output_security::tests::test_disabled_detection ... ok
[INFO] [stdout] test output_security::tests::test_entropy_normal ... ok
[INFO] [stdout] test output_security::tests::test_entropy_too_low ... ok
[INFO] [stdout] test output_security::tests::test_entropy_too_high ... ok
[INFO] [stdout] test output_security::tests::test_get_baseline_returns_none_for_oversized_session_id ... ok
[INFO] [stdout] test output_security::tests::test_homoglyph_empty_input ... ok
[INFO] [stdout] test output_security::tests::test_invisible_char_detection ... ok
[INFO] [stdout] test output_security::tests::test_homoglyph_detection ... ok
[INFO] [stdout] test output_security::tests::test_normalize_output ... ok
[INFO] [stdout] test output_security::tests::test_output_config_validate_min_ge_max ... ok
[INFO] [stdout] test output_security::tests::test_output_config_validate_nan_max ... ok
[INFO] [stdout] test output_security::tests::test_output_config_validate_default_ok ... ok
[INFO] [stdout] test output_security::tests::test_full_analysis ... ok
[INFO] [stdout] test output_security::tests::test_output_config_validate_min_out_of_range ... ok
[INFO] [stdout] test output_security::tests::test_update_baseline_rejects_oversized_session_id ... ok
[INFO] [stdout] test output_security::tests::test_output_config_validate_nan_min ... ok
[INFO] [stdout] test output_security::tests::test_zero_width_detection ... ok
[INFO] [stdout] test output_validation::tests::test_integer_accepts_whole_numbers ... ok
[INFO] [stdout] test output_validation::tests::test_meta_field_preserved_with_additional_properties_false ... ok
[INFO] [stdout] test output_validation::tests::test_register_and_validate_with_mixed_case_name ... ok
[INFO] [stdout] test output_validation::tests::test_puppet_attack_detection ... ok
[INFO] [stdout] test output_validation::tests::test_register_from_tools_list ... ok
[INFO] [stdout] test output_validation::tests::test_register_from_tools_list_normalizes_names ... ok
[INFO] [stdout] test output_validation::tests::test_registry_register_and_validate ... ok
[INFO] [stdout] test output_validation::tests::test_tools_list_invalid_schema_type_is_rejected_fail_closed ... ok
[INFO] [stdout] test output_validation::tests::test_validate_additional_properties_false ... ok
[INFO] [stdout] test output_validation::tests::test_validate_array_items ... ok
[INFO] [stdout] test output_validation::tests::test_validate_at_exact_depth_limit ... ok
[INFO] [stdout] test output_validation::tests::test_validate_missing_required_property ... ok
[INFO] [stdout] test output_validation::tests::test_validate_nested_object ... ok
[INFO] [stdout] test output_validation::tests::test_validate_no_schema_returns_no_schema ... ok
[INFO] [stdout] test output_validation::tests::test_validate_root_type_mismatch ... ok
[INFO] [stdout] test output_validation::tests::test_validate_with_invisible_chars_in_name ... ok
[INFO] [stdout] test output_validation::tests::test_validate_wrong_type ... ok
[INFO] [stdout] test output_validation::tests::test_validate_deeply_nested_schema_hits_depth_limit ... ok
[INFO] [stdout] test output_validation::tests::test_registry_rejects_oversized_schema ... ok
[INFO] [stdout] test nhi::tests::test_dpop_nonce_tracker_cleanup_allows_new_nonce ... ok
[INFO] [stdout] test output_validation::tests::test_registry_caps_total_entries ... ok
[INFO] [stdout] test nhi::tests::test_generate_dpop_nonce_at_capacity_succeeds_via_eviction ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_inject_approval_id_sets_error_data_field ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_injection_security_context_marks_untrusted_channel ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_lineage_distinct_sources ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_lineage_has_source_in_lineage ... ok
[INFO] [stdout] test nhi::tests::test_dpop_nonce_tracker_capacity_emergency_eviction ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_lineage_has_tainted_source ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_lineage_min_trust_tier ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_notification_dlp_security_context_marks_sensitive_channel ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_notification_observed_channel_uses_params_shape ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_output_schema_violation_security_context_marks_integrity_failure ... ok
[INFO] [stdout] test nhi::tests::test_sign_and_verify_attestation ... ok
[INFO] [stdout] test inspection::scanner_base::tests::test_traverse_json_strings_element_count_limit ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_evaluation_context_ignores_inactive_delegation_depth ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_evaluation_context_includes_action_history ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_evaluation_context_includes_call_counts ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_evaluation_context_prefers_configured_identity_over_claim ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_evaluation_context_projects_active_delegation_depth ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_evaluation_context_promotes_deputy_validated_claim ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_evaluation_context_rejects_unvalidated_claim ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_evaluation_context_strips_untrusted_identity_and_capability_token ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_flag_tool_rejects_at_capacity ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_flag_tool_succeeds_under_capacity ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_has_unique_session_id ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_new_initializes_empty ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_create_pending_approval_persists_containment_context ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_create_pending_approval_binds_action_fingerprint ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_record_forwarded_action_increments_count ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_record_forwarded_action_evicts_oldest_history ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_runtime_security_context_merges_session_semantics ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_runtime_security_context_preserves_quarantined_session_semantics ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_semantic_lineage_caps_at_limit ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_track_pending_request_ignores_null_id ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_track_pending_request_succeeds_under_limit ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_request_principal_binding_prefers_configured_identity_for_deputy_and_eval ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_request_principal_binding_rejects_mismatched_claim_against_configured_identity ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_track_pending_request_rejects_at_limit ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_request_principal_binding_uses_claim_for_deputy_when_unconfigured ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_response_dlp_security_context_marks_sensitive_channel ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_server_request_blocked_security_context_marks_cross_agent_quarantine ... ok
[INFO] [stdout] test inspection::dlp::tests::test_validate_dlp_patterns_all_compile ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_shield_failure_security_context_marks_sensitive_quarantine ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_strip_server_meta_content_blocks ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_strip_server_meta_no_meta_is_noop ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_strip_server_meta_resource_contents ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_strip_server_meta_security_fields_removes_injected_context ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_tool_discovery_integrity_security_context_marks_enforced_tool_output ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_tool_discovery_integrity_security_context_marks_quarantined_command_like_drift ... ok
[INFO] [stdout] test proxy::bridge::tests::test_build_runtime_security_context_extracts_meta_and_infers_sink_class ... ok
[INFO] [stdout] test proxy::bridge::tests::test_child_crash_error_format ... ok
[INFO] [stdout] test proxy::bridge::tests::test_classify_initialize_request_is_passthrough ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_consume_presented_approval_accepts_once_and_rejects_replay ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_self_approval_blocked_when_requested_by_set ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_create_pending_approval_sets_requested_by ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_presented_approval_matches_action_rejects_legacy_unbound_approval ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_presented_approval_matches_action_accepts_matching_approved_fingerprint ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_consume_with_session_binding ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_presented_approval_matches_action_rejects_mismatched_fingerprint ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_relay_state_record_forwarded_action_caps_at_max_call_counts ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_deny_overrides_allow_same_priority ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_flagged_tool_blocked ... ok
[INFO] [stdout] test proxy::bridge::relay::tests::test_session_bound_approval_rejects_different_session ... ok
[INFO] [stdout] test proxy::bridge::tests::test_default_timeout_is_30_seconds ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_allowed_tool_call ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_denied_tool_call ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_conditional_with_glob_constraint ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_empty_policies_denies ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_no_matching_policy_denies ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_multiple_policies_priority_ordering ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_require_approval ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_tool_call_with_readonly_annotation ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_resource_read_with_action_allowed ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_resource_read_with_action_denied ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_accepts_valid_id ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_camelcase_variant ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_max_length_accepted ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_missing_agent_id_field_returns_none ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_missing_meta_returns_none ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_nested_in_params_meta ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_rejects_control_chars ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_rejects_null_byte ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_rejects_oversized_id ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_agent_id_rejects_unicode_format_chars ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_approval_id_from_meta_missing_field_returns_none ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_approval_id_from_meta_nested_in_params ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_approval_id_from_meta_rejects_control_chars ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_fingerprint_from_meta_empty_meta ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_fingerprint_from_meta_nested_in_params ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_fingerprint_from_meta_no_meta_field ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_fingerprint_from_meta_prefers_snake_case_over_camel ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_fingerprint_from_meta_with_all_fields ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_fingerprint_from_meta_with_camelcase_fields ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_tool_call_with_action_allowed ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_tool_call_with_action_denied ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_tool_call_with_annotations ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_with_network_rules_blocked_domain ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_tool_call_with_security_context_blocks_tainted_privileged_sink ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_with_network_rules_allowed_domain ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_with_parameter_constraints ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_with_path_rules_allowed ... ok
[INFO] [stdout] test proxy::bridge::tests::test_evaluate_with_path_rules_blocked ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_tool_annotations_non_tools_list_response_ignored ... ok
[INFO] [stdout] test proxy::bridge::tests::test_initialize_response_has_protocol_version ... ok
[INFO] [stdout] test proxy::bridge::tests::test_injection_block_error_format ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_tool_annotations_basic ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_tool_annotations_defaults ... ok
[INFO] [stdout] test proxy::bridge::tests::test_injection_detected_through_variation_selector_evasion ... ok
[INFO] [stdout] test proxy::bridge::tests::test_injection_detected_through_zero_width_evasion ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_tool_annotations_rug_pull_detection ... ok
[INFO] [stdout] test proxy::bridge::tests::test_nfkc_normalizes_fullwidth_chars ... ok
[INFO] [stdout] test proxy::bridge::tests::test_r227_per_tool_sampling_disabled_when_zero ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_tool_annotations_detects_new_tool_after_initial ... ok
[INFO] [stdout] test proxy::bridge::tests::test_r227_per_tool_sampling_rate_limit_exceeded ... ok
[INFO] [stdout] test proxy::bridge::tests::test_r227_per_tool_sampling_rate_limit_independent_tools ... ok
[INFO] [stdout] test proxy::bridge::tests::test_r230_injection_scan_detects_in_extension_params ... ok
[INFO] [stdout] test proxy::bridge::tests::test_r230_clean_sampling_no_false_positive ... ok
[INFO] [stdout] test proxy::bridge::tests::test_extract_tool_annotations_detects_tool_removal ... ok
[INFO] [stdout] test proxy::bridge::tests::test_r230_injection_scan_detects_in_resource_uri ... ok
[INFO] [stdout] test proxy::bridge::tests::test_r230_injection_scan_detects_in_task_params ... ok
[INFO] [stdout] test proxy::bridge::tests::test_r230_injection_scan_detects_in_sampling_system_prompt ... ok
[INFO] [stdout] test proxy::bridge::tests::test_first_tools_list_does_not_flag_as_additions ... ok
[INFO] [stdout] test proxy::bridge::tests::test_injection_blocking_builder_default_false ... ok
[INFO] [stdout] test proxy::bridge::tests::test_flagged_tools_loaded_on_restart ... ok
[INFO] [stdout] test proxy::bridge::tests::test_response_inspection_clean_response ... ok
[INFO] [stdout] test proxy::bridge::tests::test_response_inspection_detects_injection ... ok
[INFO] [stdout] test proxy::bridge::tests::test_response_inspection_no_result_field ... ok
[INFO] [stdout] test proxy::bridge::tests::test_response_inspection_structured_content ... ok
[INFO] [stdout] test proxy::bridge::tests::test_response_inspection_system_tag ... ok
[INFO] [stdout] test proxy::bridge::tests::test_sampling_request_detection ... ok
[INFO] [stdout] test proxy::bridge::tests::test_sampling_request_vs_normal_response ... ok
[INFO] [stdout] test proxy::bridge::tests::test_sampling_request_without_messages ... ok
[INFO] [stdout] test proxy::bridge::tests::test_flagged_tools_blocked_after_reload ... ok
[INFO] [stdout] test proxy::bridge::tests::test_flagged_tools_persist_to_file ... ok
[INFO] [stdout] test proxy::bridge::tests::test_sanitize_strips_tag_characters ... ok
[INFO] [stdout] test proxy::bridge::tests::test_sanitize_strips_bidi_overrides ... ok
[INFO] [stdout] test proxy::bridge::tests::test_sanitize_strips_zero_width_chars ... ok
[INFO] [stdout] test proxy::bridge::tests::test_injection_blocking_builder_enabled ... ok
[INFO] [stdout] test proxy::bridge::tests::test_resource_read_denied_by_policy ... ok
[INFO] [stdout] test proxy::bridge::tests::test_task_request_dlp_clean_params_no_findings ... ok
[INFO] [stdout] test proxy::bridge::tests::test_task_request_dlp_detects_aws_key_in_params ... ok
[INFO] [stdout] test proxy::bridge::tests::test_task_request_dlp_detects_github_token_in_params ... ok
[INFO] [stdout] test proxy::bridge::tests::test_injection_disabled_overrides_blocking ... ok
[INFO] [stdout] test proxy::bridge::tests::test_resource_read_allowed ... ok
[INFO] [stdout] test proxy::bridge::tests::test_tool_call_audit_metadata_destructive_tool_annotations ... ok
[INFO] [stdout] test proxy::bridge::tests::test_tool_call_audit_metadata_with_annotations ... ok
[INFO] [stdout] test proxy::bridge::tests::test_tool_call_audit_metadata_without_annotations ... ok
[INFO] [stdout] test proxy::bridge::tests::test_resource_read_blocked_by_path_constraint ... ok
[INFO] [stdout] test proxy::bridge::tests::test_resource_read_http_domain_blocked ... ok
[INFO] [stdout] test proxy::bridge::tests::test_resource_read_no_matching_policy_denies ... ok
[INFO] [stdout] test proxy::bridge::tests::test_task_request_fail_closed_no_matching_policy ... ok
[INFO] [stdout] test proxy::bridge::tests::test_task_request_allowed_by_policy ... ok
[INFO] [stdout] test proxy::bridge::tests::test_task_request_with_context ... ok
[INFO] [stdout] test red_team::tests::test_context_wrapping_mutation ... ok
[INFO] [stdout] test proxy::bridge::tests::test_task_cancel_denied_by_policy ... ok
[INFO] [stdout] test red_team::tests::test_empty_scenarios_handled ... ok
[INFO] [stdout] test red_team::tests::test_homoglyph_mutation ... ok
[INFO] [stdout] test memory_tracking::tests::test_memory_tracker_lru_eviction ... ok
[INFO] [stdout] test red_team::tests::test_mutation_generates_different_payloads ... ok
[INFO] [stdout] test red_team::tests::test_mutation_type_all_returns_all_variants ... ok
[INFO] [stdout] test red_team::tests::test_null_byte_mutation ... ok
[INFO] [stdout] test red_team::tests::test_prompt_injection_mutation ... ok
[INFO] [stdout] test red_team::tests::test_mutate_all_produces_more_scenarios ... ok
[INFO] [stdout] test red_team::tests::test_max_payloads_cap ... ok
[INFO] [stdout] test proxy::bridge::tests::test_task_request_denied_by_policy ... ok
[INFO] [stdout] test red_team::tests::test_url_encoding_mutation ... ok
[INFO] [stdout] test red_team::tests::test_whitespace_inject_mutation ... ok
[INFO] [stdout] test rekor::tests::test_empty_proof_hashes_with_tree_size_zero ... ok
[INFO] [stdout] test red_team::tests::test_report_serialization ... ok
[INFO] [stdout] test rekor::tests::test_empty_proof_rejected_for_large_tree ... ok
[INFO] [stdout] test rekor::tests::test_full_verification_hash_mismatch ... ok
[INFO] [stdout] test rekor::tests::test_full_offline_verification ... ok
[INFO] [stdout] test proxy::bridge::tests::test_trace_enabled_allow ... ok
[INFO] [stdout] test rekor::tests::test_inclusion_proof_rejected_with_tampered_hash ... ok
[INFO] [stdout] test rekor::tests::test_inclusion_proof_with_known_good_proof ... ok
[INFO] [stdout] test rekor::tests::test_missing_inclusion_proof ... ok
[INFO] [stdout] test rekor::tests::test_inclusion_proof_with_sibling ... ok
[INFO] [stdout] test rekor::tests::test_rekor_entry_serialization ... ok
[INFO] [stdout] test red_team::tests::test_runner_with_strict_engine ... ok
[INFO] [stdout] test rekor::tests::test_tool_hash_matching ... ok
[INFO] [stdout] test rekor::tests::test_tool_hash_unsupported_algorithm ... ok
[INFO] [stdout] test red_team::tests::test_runner_reports_coverage ... ok
[INFO] [stdout] test rekor::tests::test_validate_rejects_control_chars_in_api_version ... ok
[INFO] [stdout] test rekor::tests::test_validate_accepts_clean_entry ... ok
[INFO] [stdout] test rekor::tests::test_log_index_exceeds_tree_size ... ok
[INFO] [stdout] test rekor::tests::test_validate_rejects_control_chars_in_hash_value ... ok
[INFO] [stdout] test rekor::tests::test_validate_rejects_control_chars_in_kind ... ok
[INFO] [stdout] test rekor::tests::test_validate_rejects_control_chars_in_log_id ... ok
[INFO] [stdout] test rekor::tests::test_validate_rejects_control_chars_in_proof_hash ... ok
[INFO] [stdout] test rekor::tests::test_validate_rejects_control_chars_in_root_hash ... ok
[INFO] [stdout] test rekor::tests::test_verifier_with_public_key ... ok
[INFO] [stdout] test red_team::tests::test_deterministic_with_same_seed ... ok
[INFO] [stdout] test rekor::tests::test_verification_result_deny_unknown_fields ... ok
[INFO] [stdout] test reputation::tests::test_new_server_has_no_score ... ok
[INFO] [stdout] test rekor::tests::test_verification_result_serialization ... ok
[INFO] [stdout] test reputation::tests::test_is_below_threshold ... ok
[INFO] [stdout] test reputation::tests::test_clean_server_has_high_score ... ok
[INFO] [stdout] test reputation::tests::test_deny_rate_computation ... ok
[INFO] [stdout] test reputation::tests::test_signals_lower_score ... ok
[INFO] [stdout] test rug_pull::tests::test_annotation_change_detected_after_normalization ... ok
[INFO] [stdout] test rug_pull::tests::test_case_variant_tool_name_normalized ... ok
[INFO] [stdout] test rug_pull::tests::test_detect_combined_attacks ... ok
[INFO] [stdout] test rug_pull::tests::test_detect_annotation_change ... ok
[INFO] [stdout] test rug_pull::tests::test_detect_tool_addition ... ok
[INFO] [stdout] test rug_pull::tests::test_detect_first_list_no_detections ... ok
[INFO] [stdout] test rug_pull::tests::test_detect_no_tools_in_response ... ok
[INFO] [stdout] test rug_pull::tests::test_detect_tool_removal ... ok
[INFO] [stdout] test rug_pull::tests::test_flagged_names_are_normalized ... ok
[INFO] [stdout] test rug_pull::tests::test_homoglyph_cyrillic_ka_em_en_te ... ok
[INFO] [stdout] test rug_pull::tests::test_flagged_tool_names_includes_squatting_alerts ... ok
[INFO] [stdout] test rug_pull::tests::test_homoglyph_fullwidth_latin ... ok
[INFO] [stdout] test rug_pull::tests::test_homoglyph_cyrillic_lowercase_ve ... ok
[INFO] [stdout] test rug_pull::tests::test_homoglyph_greek_iota_kappa_nu ... ok
[INFO] [stdout] test rug_pull::tests::test_homoglyph_normalization ... ok
[INFO] [stdout] test rug_pull::tests::test_levenshtein_basic ... ok
[INFO] [stdout] test rug_pull::tests::test_levenshtein_unicode_correctness ... ok
[INFO] [stdout] test rug_pull::tests::test_normalize_homoglyphs_all_new_cyrillic_uppercase_mappings ... ok
[INFO] [stdout] test rug_pull::tests::test_normalize_homoglyphs_cyrillic_a_produces_latin ... ok
[INFO] [stdout] test rug_pull::tests::test_normalize_homoglyphs_cyrillic_uppercase_je_mapped ... ok
[INFO] [stdout] test rug_pull::tests::test_normalize_homoglyphs_cyrillic_uppercase_u_mapped ... ok
[INFO] [stdout] test rug_pull::tests::test_normalize_homoglyphs_full_cyrillic_spoofed_tool_name ... ok
[INFO] [stdout] test rug_pull::tests::test_injection_flagged_tool_names_includes_injection ... ok
[INFO] [stdout] test rug_pull::tests::test_parse_annotations_defaults ... ok
[INFO] [stdout] test rug_pull::tests::test_parse_annotations_custom ... ok
[INFO] [stdout] test rug_pull::tests::test_no_injection_in_clean_descriptions ... ok
[INFO] [stdout] test reputation::tests::test_capacity_bounded ... ok
[INFO] [stdout] test proxy::bridge::tests::test_trace_disabled_by_default ... ok
[INFO] [stdout] test rug_pull::tests::test_removed_tool_detected_and_flagged_end_to_end ... ok
[INFO] [stdout] test rug_pull::tests::test_injection_in_tool_description_detected ... ok
[INFO] [stdout] test rug_pull::tests::test_same_schema_not_flagged ... ok
[INFO] [stdout] test rug_pull::tests::test_removed_tools_in_flagged_tool_names ... ok
[INFO] [stdout] test rug_pull::tests::test_schema_hash_canonical_key_order ... ok
[INFO] [stdout] test rug_pull::tests::test_schema_change_detected ... ok
[INFO] [stdout] test rug_pull::tests::test_schema_hash_null_returns_none ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_case_normalized ... ok
[INFO] [stdout] test rug_pull::tests::test_schema_hash_computation_correct ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_empty_known_tools_no_flags ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_detection_cyrillic_homoglyph_attack ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_custom_known_tools ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_alerts_in_detect_rug_pull_and_squatting ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_exact_match_not_flagged ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_combined_with_rug_pull ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_fullwidth_tool_name ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_homoglyph_cyrillic_a ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_math_bold_nfkc_exact_match_not_flagged ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_math_bold_partial_with_typo_detected ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_levenshtein_far_enough ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_levenshtein_near_match ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_levenshtein_distance_3_for_long_names ... ok
[INFO] [stdout] test rug_pull::tests::test_squatting_short_names_not_flagged ... ok
[INFO] [stdout] test sampling_detector::tests::test_clear_session ... ok
[INFO] [stdout] test sampling_detector::tests::test_different_sessions_independent ... ok
[INFO] [stdout] test sampling_detector::tests::test_prompt_too_long ... ok
[INFO] [stdout] test sampling_detector::tests::test_model_not_allowed ... ok
[INFO] [stdout] test rug_pull::tests::test_zero_width_char_tool_name_normalized ... ok
[INFO] [stdout] test sampling_detector::tests::test_rate_limit_exceeded ... ok
[INFO] [stdout] test sampling_detector::tests::test_remaining_requests ... ok
[INFO] [stdout] test sampling_detector::tests::test_request_within_limit ... ok
[INFO] [stdout] test sampling_detector::tests::test_scan_content ... ok
[INFO] [stdout] test sampling_detector::tests::test_sensitive_content_blocked ... ok
[INFO] [stdout] test sampling_detector::tests::test_validate_model_wildcard ... ok
[INFO] [stdout] test proxy::bridge::tests::test_trace_enabled_deny ... ok
[INFO] [stdout] test schema_poisoning::tests::test_detect_changes ... ok
[INFO] [stdout] test schema_poisoning::tests::test_concurrent_reads ... ok
[INFO] [stdout] test schema_poisoning::tests::test_hash_consistency ... ok
[INFO] [stdout] test schema_poisoning::tests::test_lineage_tracking ... ok
[INFO] [stdout] test schema_poisoning::tests::test_concurrent_eviction ... ok
[INFO] [stdout] test schema_poisoning::tests::test_max_schemas_eviction ... ok
[INFO] [stdout] test schema_poisoning::tests::test_minor_change_warning ... ok
[INFO] [stdout] test schema_poisoning::tests::test_first_observation_recorded ... ok
[INFO] [stdout] test schema_poisoning::tests::test_concurrent_writes ... ok
[INFO] [stdout] test schema_poisoning::tests::test_concurrent_trust_modifications ... ok
[INFO] [stdout] test proxy::bridge::tests::test_trace_resource_read_with_trace ... ok
[INFO] [stdout] test schema_poisoning::tests::test_similarity_different ... ok
[INFO] [stdout] test schema_poisoning::tests::test_r227_drift_minor_change_detected ... ok
[INFO] [stdout] test schema_poisoning::tests::test_r227_drift_unchanged_schema_no_drift ... ok
[INFO] [stdout] test schema_poisoning::tests::test_r228_detect_poisoning_uses_actual_similarity ... ok
[INFO] [stdout] test schema_poisoning::tests::test_reset_trust ... ok
[INFO] [stdout] test schema_poisoning::tests::test_similarity_identical ... ok
[INFO] [stdout] test schema_poisoning::tests::test_trust_score_calculation ... ok
[INFO] [stdout] test secret_substitution::tests::test_no_secret_resolved_skips ... ok
[INFO] [stdout] test schema_poisoning::tests::test_unchanged_schema_no_alert ... ok
[INFO] [stdout] test secret_substitution::tests::test_nested_value_substitution ... ok
[INFO] [stdout] test secret_substitution::tests::test_roundtrip_substitution ... ok
[INFO] [stdout] test secret_substitution::tests::test_substitute_outbound_all_params ... ok
[INFO] [stdout] test secret_substitution::tests::test_substitute_specific_param_paths ... ok
[INFO] [stdout] test secret_substitution::tests::test_substitute_tool_pattern_filtering ... ok
[INFO] [stdout] test security_context_mint::tests::test_mint_and_verify ... ok
[INFO] [stdout] test secret_substitution::tests::test_restore_inbound_all_params ... ok
[INFO] [stdout] test security_context_mint::tests::test_verify_fails_tampered_token ... ok
[INFO] [stdout] test session_guard::tests::test_active_repeated_violation_count_zero_is_noop ... ok
[INFO] [stdout] test security_context_mint::tests::test_token_validation_passes ... ok
[INFO] [stdout] test security_context_mint::tests::test_verify_fails_wrong_secret ... ok
[INFO] [stdout] test session_guard::tests::test_active_stays_active_on_normal_action ... ok
[INFO] [stdout] test session_guard::tests::test_active_to_suspicious_on_threshold ... ok
[INFO] [stdout] test session_guard::tests::test_admin_unlock_brute_force_ends_session ... ok
[INFO] [stdout] test session_guard::tests::test_admin_unlock_rejected_when_no_token_configured ... ok
[INFO] [stdout] test session_guard::tests::test_admin_unlock_rejected_with_wrong_token ... ok
[INFO] [stdout] test session_guard::tests::test_admin_unlock_success_resets_attempts ... ok
[INFO] [stdout] test session_guard::tests::test_config_defaults ... ok
[INFO] [stdout] test proxy::bridge::tests::test_strict_tool_name_validation_builder ... ok
[INFO] [stdout] test session_guard::tests::test_admin_unlock_to_active ... ok
[INFO] [stdout] test session_guard::tests::test_critical_anomaly_immediate_suspicious ... ok
[INFO] [stdout] test session_guard::tests::test_concurrent_session_isolation ... ok
[INFO] [stdout] test session_guard::tests::test_goal_drift_integration ... ok
[INFO] [stdout] test session_guard::tests::test_ended_state_is_terminal ... ok
[INFO] [stdout] test proxy::bridge::tests::test_with_timeout_configures_bridge ... ok
[INFO] [stdout] test session_guard::tests::test_init_to_active_on_first_action ... ok
[INFO] [stdout] test session_guard::tests::test_goal_drift_negative_similarity_maps_to_critical ... ok
[INFO] [stdout] test session_guard::tests::test_goal_drift_nan_similarity_maps_to_critical ... ok
[INFO] [stdout] test session_guard::tests::test_locked_cooldown_to_suspicious ... ok
[INFO] [stdout] test session_guard::tests::test_locked_sessions_not_evicted ... ok
[INFO] [stdout] test session_guard::tests::test_max_sessions_eviction ... ok
[INFO] [stdout] test session_guard::tests::test_locked_denies_normal_actions ... ok
[INFO] [stdout] test schema_poisoning::tests::test_concurrent_detect_poisoning ... ok
[INFO] [stdout] test session_guard::tests::test_process_event_rejects_empty_session_id ... ok
[INFO] [stdout] test session_guard::tests::test_process_event_rejects_control_char_session_id ... ok
[INFO] [stdout] test session_guard::tests::test_process_event_rejects_overlong_session_id ... ok
[INFO] [stdout] test session_guard::tests::test_process_event_rejects_unicode_format_session_id ... ok
[INFO] [stdout] test session_guard::tests::test_session_duration_exceeded_ends_session ... ok
[INFO] [stdout] test session_guard::tests::test_session_duration_within_limit_ok ... ok
[INFO] [stdout] test session_guard::tests::test_session_summary ... ok
[INFO] [stdout] test session_guard::tests::test_session_end_from_any_state ... ok
[INFO] [stdout] test session_guard::tests::test_should_deny_no_duration_limit_allows ... ok
[INFO] [stdout] test session_guard::tests::test_should_deny_none_in_active ... ok
[INFO] [stdout] test session_guard::tests::test_should_deny_unknown_session_returns_none ... ok
[INFO] [stdout] test session_guard::tests::test_should_deny_transitions_expired_to_ended ... ok
[INFO] [stdout] test session_guard::tests::test_summary_deny_unknown_fields ... ok
[INFO] [stdout] test session_guard::tests::test_summary_serialization ... ok
[INFO] [stdout] test session_guard::tests::test_should_deny_enforces_duration_limit ... ok
[INFO] [stdout] test session_guard::tests::test_should_deny_in_locked ... ok
[INFO] [stdout] test schema_poisoning::tests::test_concurrent_same_tool_updates ... ok
[INFO] [stdout] test session_guard::tests::test_suspicious_repeated_violation_count_zero_is_noop ... ok
[INFO] [stdout] test session_guard::tests::test_suspicious_sessions_not_evicted ... ok
[INFO] [stdout] test session_guard::tests::test_suspicious_to_locked_on_violations ... ok
[INFO] [stdout] test session_guard::tests::test_transition_history_bounded_at_max ... ok
[INFO] [stdout] test session_guard::tests::test_transition_result_deny_unknown_fields ... ok
[INFO] [stdout] test session_guard::tests::test_truncate_event_field_multibyte_boundary ... ok
[INFO] [stdout] test session_guard::tests::test_truncate_event_field_over_limit ... ok
[INFO] [stdout] test session_guard::tests::test_truncate_event_field_under_limit ... ok
[INFO] [stdout] test session_guard::tests::test_unknown_session_returns_init ... ok
[INFO] [stdout] test session_guard::tests::test_workflow_alert_integration ... ok
[INFO] [stdout] test shadow_agent::tests::test_max_agents_eviction ... ok
[INFO] [stdout] test shadow_agent::tests::test_known_agent_identified ... ok
[INFO] [stdout] test shadow_agent::tests::test_new_agent_registered ... ok
[INFO] [stdout] test shadow_agent::tests::test_shadow_agent_detected ... ok
[INFO] [stdout] test shadow_agent::tests::test_trust_level_upgrade ... ok
[INFO] [stdout] test shadow_agent::tests::test_unknown_identity_not_shadow ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_approved_tool_not_tracked ... ok
[INFO] [stdout] test shadow_agent::tests::test_severity_calculation ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_backward_compat_new_does_not_require_server_registration ... ok
[INFO] [stdout] test shadow_agent::tests::test_record_request ... ok
[INFO] [stdout] test schema_poisoning::tests::test_concurrent_mixed_operations ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_empty_agent_id_not_tracked ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_empty_approved_tools_allows_all ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_empty_tool_name_not_tracked ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_is_server_known_with_empty_list ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_generate_report_empty ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_is_server_known_with_populated_list ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_is_valid_id_rejects_bom ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_is_valid_id_rejects_control_chars ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_is_valid_id_rejects_bidi_overrides ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_is_valid_id_accepts_normal_strings ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_is_valid_id_rejects_null_byte ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_bounded_unknown_servers_increments_drop_counter ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_is_valid_id_rejects_zwsp ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_known_server_not_tracked ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_request_accepts_max_length_ids ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_request_rejects_control_char_agent_id ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_request_rejects_overlong_server_id ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_request_rejects_overlong_agent_id ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_request_rejects_overlong_tool_name ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_request_rejects_zwsp_server_id ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_request_rejects_bidi_tool_name ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_unapproved_tool ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_unknown_server ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_observe_unregistered_agent ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_register_agent_at_runtime ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_register_agent_allows_at_max_length ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_register_agent_rejects_overlong_id ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_registered_agent_not_tracked ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_risk_score_computation ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_should_deny_unregistered_when_not_required ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_should_deny_unknown_server_when_required ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_should_not_deny_known_server ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_request_count_increments ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_should_not_deny_server_when_known_list_empty ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_should_deny_unregistered_when_required ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_should_not_deny_server_when_enforcement_disabled ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_total_risk_score_aggregation ... ok
[INFO] [stdout] test task_security::tests::test_cleanup_old_tasks_clamps_huge_retention ... ok
[INFO] [stdout] test task_security::tests::test_cleanup_old_tasks_normal_retention ... ok
[INFO] [stdout] test task_security::tests::test_integrity_violation_detection ... ok
[INFO] [stdout] test task_security::tests::test_create_secure_task ... ok
[INFO] [stdout] test task_security::tests::test_integrity_violations_counter_incremented ... ok
[INFO] [stdout] test task_security::tests::test_replay_blocked_counter_incremented ... ok
[INFO] [stdout] test task_security::tests::test_replay_protection ... ok
[INFO] [stdout] test task_security::tests::test_resume_with_invalid_token ... ok
[INFO] [stdout] test task_security::tests::test_state_encryption_decryption ... ok
[INFO] [stdout] test task_security::tests::test_state_transition_chain ... ok
[INFO] [stdout] test task_security::tests::test_stats ... ok
[INFO] [stdout] test task_security::tests::test_terminal_task_cannot_transition ... ok
[INFO] [stdout] test task_state::tests::test_cleanup_old_tasks_clamps_huge_retention ... ok
[INFO] [stdout] test task_state::tests::test_cleanup_old_tasks_removes_terminal_task_with_invalid_timestamp ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_bounded_unapproved_tools_increments_drop_counter ... ok
[INFO] [stdout] test task_state::tests::test_duplicate_task_rejected ... ok
[INFO] [stdout] test task_state::tests::test_session_active_count ... ok
[INFO] [stdout] test task_state::tests::test_stats ... ok
[INFO] [stdout] test task_state::tests::test_task_cancel_by_allowed_agent ... ok
[INFO] [stdout] test task_state::tests::test_task_cancel_by_other_denied ... ok
[INFO] [stdout] test task_state::tests::test_task_expiry_eviction ... ok
[INFO] [stdout] test task_state::tests::test_task_registration_under_limit_succeeds ... ok
[INFO] [stdout] test task_state::tests::test_task_registration_over_limit_denied ... ok
[INFO] [stdout] test task_state::tests::test_update_status ... ok
[INFO] [stdout] test task_state::tests::test_task_self_cancel_allowed ... ok
[INFO] [stdout] test task_state::tests::test_verify_task_access_creator_match_allowed ... ok
[INFO] [stdout] test task_state::tests::test_verify_task_access_different_agent_denied ... ok
[INFO] [stdout] test task_state::tests::test_verify_task_access_disabled_allows_all ... ok
[INFO] [stdout] test task_state::tests::test_verify_task_access_no_agent_denied_for_creator_bound ... ok
[INFO] [stdout] test task_state::tests::test_verify_task_access_different_session_denied ... ok
[INFO] [stdout] test task_state::tests::test_verify_task_access_no_creator_on_task_allows ... ok
[INFO] [stdout] test task_state::tests::test_verify_task_access_unknown_task_allowed ... ok
[INFO] [stdout] test token_security::tests::test_config_validate_default_ok ... ok
[INFO] [stdout] test tests::test_mcp_invalid_method ... ok
[INFO] [stdout] test tests::test_mcp_evaluate_action ... ok
[INFO] [stdout] test token_security::tests::test_config_validate_nan_threshold ... ok
[INFO] [stdout] test token_security::tests::test_config_validate_threshold_out_of_range ... ok
[INFO] [stdout] test token_security::tests::test_config_validate_zero_budget ... ok
[INFO] [stdout] test token_security::tests::test_context_accumulation ... ok
[INFO] [stdout] test token_security::tests::test_confusable_detection ... ok
[INFO] [stdout] test token_security::tests::test_disabled_detection ... ok
[INFO] [stdout] test token_security::tests::test_estimate_tokens ... ok
[INFO] [stdout] test token_security::tests::test_context_budget ... ok
[INFO] [stdout] test token_security::tests::test_full_analysis ... ok
[INFO] [stdout] test tests::test_mcp_request_size_protection ... ok
[INFO] [stdout] test token_security::tests::test_get_session_stats_zero_budget ... ok
[INFO] [stdout] test token_security::tests::test_glitch_token_detection ... ok
[INFO] [stdout] test token_security::tests::test_session_management ... ok
[INFO] [stdout] test token_security::tests::test_special_token_detection ... ok
[INFO] [stdout] test token_security::tests::test_token_boundary_detection ... ok
[INFO] [stdout] test token_security::tests::test_total_tokens_saturating_add ... ok
[INFO] [stdout] test token_security::tests::test_unicode_normalization_detection ... ok
[INFO] [stdout] test token_security::tests::test_zero_budget_fail_closed ... ok
[INFO] [stdout] test tool_namespace::tests::test_capacity_exceeded ... ok
[INFO] [stdout] test tool_namespace::tests::test_case_insensitivity ... ok
[INFO] [stdout] test tool_namespace::tests::test_check_collision ... ok
[INFO] [stdout] test tool_namespace::tests::test_get_source ... ok
[INFO] [stdout] test tool_namespace::tests::test_exact_collision ... ok
[INFO] [stdout] test tool_namespace::tests::test_invalid_tool_name ... ok
[INFO] [stdout] test tool_namespace::tests::test_levenshtein_distance ... ok
[INFO] [stdout] test tool_namespace::tests::test_register_rejects_dangerous_chars_in_definition_hash ... ok
[INFO] [stdout] test tool_namespace::tests::test_list_tools ... ok
[INFO] [stdout] test tool_namespace::tests::test_register_rejects_empty_server ... ok
[INFO] [stdout] test tool_namespace::tests::test_register_rejects_dangerous_chars_in_version ... ok
[INFO] [stdout] test tool_namespace::tests::test_register_rejects_dangerous_chars_in_server ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_bounded_unregistered_agents_increments_drop_counter ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_bounded_unregistered_agents ... ok
[INFO] [stdout] test tool_namespace::tests::test_register_rejects_oversized_server ... ok
[INFO] [stdout] test tool_namespace::tests::test_remove_tool ... ok
[INFO] [stdout] test tool_namespace::tests::test_similar_name_detection ... ok
[INFO] [stdout] test tool_namespace::tests::test_tool_source_deny_unknown_fields ... ok
[INFO] [stdout] test tool_namespace::tests::test_register_tool ... ok
[INFO] [stdout] test tool_namespace::tests::test_trust_violation ... ok
[INFO] [stdout] test tool_namespace::tests::test_version_conflict ... ok
[INFO] [stdout] test tool_quota::tests::test_quota_allows_under_limit ... ok
[INFO] [stdout] test tool_namespace::tests::test_validate_selection ... ok
[INFO] [stdout] test tool_quota::tests::test_quota_no_quotas_always_allows ... ok
[INFO] [stdout] test tool_quota::tests::test_quota_denies_at_limit ... ok
[INFO] [stdout] test tool_quota::tests::test_quota_glob_pattern ... ok
[INFO] [stdout] test tool_registry::tests::test_compute_schema_hash_null ... ok
[INFO] [stdout] test tool_quota::tests::test_quota_unmatched_tool_allowed ... ok
[INFO] [stdout] test tool_quota::tests::test_quota_require_approval_on_exceed ... ok
[INFO] [stdout] test tool_registry::tests::test_compute_schema_hash_deterministic ... ok
[INFO] [stdout] test tool_registry::tests::test_compute_schema_hash_canonical_key_order ... ok
[INFO] [stdout] test tool_registry::tests::test_r226_namespace_non_strict_allows_collision ... ok
[INFO] [stdout] test tool_registry::tests::test_r226_namespace_same_server_no_conflict ... ok
[INFO] [stdout] test tool_registry::tests::test_r226_namespace_strict_rejects_collision ... ok
[INFO] [stdout] test tool_registry::tests::test_register_tool_same_server_no_conflict ... ok
[INFO] [stdout] test tool_registry::tests::test_register_tool_server_id_conflict_detected ... ok
[INFO] [stdout] test tool_registry::tests::test_register_tool_none_server_then_server_fills_in ... ok
[INFO] [stdout] test tool_registry::tests::test_register_tool_with_server_id ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_approve_not_found ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_check_trust_below_threshold ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_approve_revoke ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_list ... ok
[INFO] [stdout] test tool_registry::tests::test_register_tool_server_id_conflict_persists_across_load ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_hmac_rejects_unsigned_when_key_configured ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_load_nonexistent_file ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_hmac_rejects_wrong_key ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_hmac_rejects_tampered_data ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_hmac_persist_and_load ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_record_call ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_no_hmac_loads_normally ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_register_existing_tool_same_schema ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_register_existing_tool_changed_schema ... ok
[INFO] [stdout] test task_security::tests::test_checkpoint_creation_and_verification ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_register_new_tool ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_admin_approved ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_age_bonus_30_days ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_requires_approval ... ok
[INFO] [stdout] test tool_registry::tests::test_tool_entry_serialization_roundtrip ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_clamp_max ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_age_bonus_7_days ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_clamp_min ... ok
[INFO] [stdout] test tool_registry::tests::test_registry_persist_and_load ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_base ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_combined ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_schema_change_penalty ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_server_id_conflict_penalty ... ok
[INFO] [stdout] test transparency::tests::test_glob_match_exact ... ok
[INFO] [stdout] test tool_registry::tests::test_trust_score_squatting_penalty ... ok
[INFO] [stdout] test transparency::tests::test_glob_match_star ... ok
[INFO] [stdout] test transparency::tests::test_inject_decision_explanation_no_trace ... ok
[INFO] [stdout] test transparency::tests::test_inject_decision_explanation_none_verbosity ... ok
[INFO] [stdout] test transparency::tests::test_inject_decision_explanation_error_response_unchanged ... ok
[INFO] [stdout] test transparency::tests::test_inject_decision_explanation_full ... ok
[INFO] [stdout] test transparency::tests::test_inject_decision_explanation_preserves_existing_meta ... ok
[INFO] [stdout] test transparency::tests::test_mark_ai_mediated_adds_meta ... ok
[INFO] [stdout] test transparency::tests::test_inject_decision_explanation_summary ... ok
[INFO] [stdout] test task_security::tests::test_tampered_checkpoint_fails_verification ... ok
[INFO] [stdout] test transparency::tests::test_mark_ai_mediated_no_result ... ok
[INFO] [stdout] test transparency::tests::test_mark_ai_mediated_null_result ... ok
[INFO] [stdout] test transparency::tests::test_mark_ai_mediated_preserves_existing_meta ... ok
[INFO] [stdout] test transparency::tests::test_requires_human_oversight_empty_patterns ... ok
[INFO] [stdout] test transparency::tests::test_requires_human_oversight_glob_match ... ok
[INFO] [stdout] test transparency::tests::test_requires_human_oversight_multiple_patterns ... ok
[INFO] [stdout] test transparency::tests::test_requires_human_oversight_no_match ... ok
[INFO] [stdout] test transparency::tests::test_requires_human_oversight_question_mark ... ok
[INFO] [stdout] test util::tests::test_glob_match_bytes_case_sensitive ... ok
[INFO] [stdout] test util::tests::test_glob_match_exact ... ok
[INFO] [stdout] test util::tests::test_glob_match_bytes_star ... ok
[INFO] [stdout] test util::tests::test_glob_match_star ... ok
[INFO] [stdout] test util::tests::test_glob_match_question ... ok
[INFO] [stdout] test verified_bridge_principal::tests::test_deputy_principal_source_prefers_configured_identity ... ok
[INFO] [stdout] test verified_bridge_principal::tests::test_configured_claim_consistent_requires_match_when_both_present ... ok
[INFO] [stdout] test verified_capability_attenuation::tests::test_attenuated_expiry_epoch_clamps_to_parent ... ok
[INFO] [stdout] test verified_bridge_principal::tests::test_evaluation_principal_source_only_trusts_configured_identity ... ok
[INFO] [stdout] test verified_capability_attenuation::tests::test_attenuated_expiry_epoch_rejects_excessive_ttl ... ok
[INFO] [stdout] test verified_capability_attenuation::tests::test_attenuated_expiry_epoch_uses_requested_window ... ok
[INFO] [stdout] test verified_capability_attenuation::tests::test_attenuated_remaining_depth_decrements ... ok
[INFO] [stdout] test verified_capability_coverage::tests::test_grant_restrictions_cover_action_accepts_satisfied_restrictions ... ok
[INFO] [stdout] test verified_capability_coverage::tests::test_grant_restrictions_cover_action_rejects_missing_domains ... ok
[INFO] [stdout] test verified_capability_coverage::tests::test_grant_restrictions_cover_action_ignores_absent_restrictions ... ok
[INFO] [stdout] test verified_capability_coverage::tests::test_grant_restrictions_cover_action_rejects_missing_paths ... ok
[INFO] [stdout] test verified_capability_coverage::tests::test_grant_restrictions_cover_action_rejects_uncovered_domains ... ok
[INFO] [stdout] test verified_capability_coverage::tests::test_grant_restrictions_cover_action_rejects_uncovered_paths ... ok
[INFO] [stdout] test verified_capability_attenuation::tests::test_attenuated_expiry_epoch_rejects_overflow ... ok
[INFO] [stdout] test verified_capability_attenuation::tests::test_attenuated_expiry_epoch_rejects_expired_parent ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_domain_pattern_is_subset_rejects_expanding_or_malformed_children ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_domain_matches_pattern_accepts_exact_and_wildcard_domains ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_domain_pattern_shape_valid_accepts_exact_and_prefix_wildcard ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_domain_pattern_shape_valid_rejects_bad_shapes ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_domain_matches_pattern_rejects_malformed_inputs ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_domain_pattern_is_subset_accepts_exact_and_narrower_wildcards ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_normalize_domain_pattern_for_match_rejects_unsupported_metacharacters ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_normalize_domain_pattern_for_match_normalizes_case_trailing_dot_and_idna ... ok
[INFO] [stdout] test verified_capability_domain::tests::test_normalized_domain_suffix_matches_requires_dot_boundary ... ok
[INFO] [stdout] test verified_capability_glob::tests::test_byte_eq_ignore_ascii_case_is_case_insensitive ... ok
[INFO] [stdout] test verified_capability_glob::tests::test_literal_child_matches_parent_glob_accepts_case_insensitive_literal ... ok
[INFO] [stdout] test verified_capability_glob::tests::test_literal_child_matches_parent_glob_accepts_empty_star_match ... ok
[INFO] [stdout] test verified_capability_glob::tests::test_ascii_fold_byte_lowers_ascii_uppercase ... ok
[INFO] [stdout] test verified_capability_glob::tests::test_literal_child_matches_parent_glob_accepts_star_backtracking ... ok
[INFO] [stdout] test verified_capability_grant::tests::test_domain_restrictions_cannot_be_dropped ... ok
[INFO] [stdout] test verified_capability_glob_subset::tests::test_glob_pattern_subset_rejects_broader_child_star ... ok
[INFO] [stdout] test verified_capability_glob_subset::tests::test_glob_pattern_subset_accepts_narrower_child_star_prefix ... ok
[INFO] [stdout] test verified_capability_glob_subset::tests::test_glob_pattern_subset_is_case_insensitive ... ok
[INFO] [stdout] test verified_capability_glob::tests::test_literal_child_matches_parent_glob_accepts_question_mark ... ok
[INFO] [stdout] test verified_capability_grant::tests::test_limited_parent_accepts_smaller_child_limit ... ok
[INFO] [stdout] test verified_capability_grant::tests::test_limited_parent_rejects_larger_child_limit ... ok
[INFO] [stdout] test verified_capability_grant::tests::test_limited_parent_rejects_unlimited_child ... ok
[INFO] [stdout] test verified_capability_glob_subset::tests::test_glob_pattern_subset_accepts_narrower_child_question_branch ... ok
[INFO] [stdout] test verified_capability_identity::tests::test_delegated_child_issuer_valid_accepts_root_tokens ... ok
[INFO] [stdout] test verified_capability_grant::tests::test_path_restrictions_cannot_be_dropped ... ok
[INFO] [stdout] test verified_capability_grant::tests::test_unlimited_parent_leaves_only_shape_checks ... ok
[INFO] [stdout] test verified_capability_identity::tests::test_holder_expectation_satisfied_is_identity ... ok
[INFO] [stdout] test verified_capability_identity::tests::test_delegation_holder_distinct_rejects_self_delegation ... ok
[INFO] [stdout] test verified_capability_literal::tests::test_literal_child_pattern_subset_rejects_child_glob ... ok
[INFO] [stdout] test verified_capability_identity::tests::test_delegated_child_issuer_valid_requires_parent_holder_link ... ok
[INFO] [stdout] test verified_capability_literal::tests::test_literal_child_pattern_subset_rejects_mismatching_literal_child ... ok
[INFO] [stdout] test verified_capability_literal::tests::test_literal_pattern_matches_accepts_equal_literal ... ok
[INFO] [stdout] test verified_capability_literal::tests::test_literal_child_pattern_subset_accepts_matching_literal_child ... ok
[INFO] [stdout] test verified_capability_literal::tests::test_literal_pattern_matches_rejects_literal_mismatch ... ok
[INFO] [stdout] test verified_capability_literal::tests::test_literal_pattern_matches_rejects_metacharacter_pattern ... ok
[INFO] [stdout] test verified_capability_path::tests::test_normalize_path_for_grant_fails_closed ... ok
[INFO] [stdout] test verified_capability_path::tests::test_normalize_path_for_grant_normalizes_components ... ok
[INFO] [stdout] test verified_capability_path::tests::test_path_component_next_depth_fails_closed_above_root ... ok
[INFO] [stdout] test verified_capability_path::tests::test_path_component_next_depth_pops_or_pushes ... ok
[INFO] [stdout] test verified_capability_path::tests::test_path_component_next_depth_skips_empty_or_dot ... ok
[INFO] [stdout] test verified_capability_pattern::tests::test_pattern_subset_guard_allows_literal_child_fallthrough ... ok
[INFO] [stdout] test verified_capability_pattern::tests::test_pattern_subset_guard_allows_identical_pattern ... ok
[INFO] [stdout] test verified_capability_pattern::tests::test_pattern_subset_guard_allows_wildcard_parent ... ok
[INFO] [stdout] test verified_capability_pattern::tests::test_has_glob_metacharacters ... ok
[INFO] [stdout] test verified_capability_pattern::tests::test_pattern_subset_guard_rejects_non_identical_child_glob ... ok
[INFO] [stdout] test verified_capability_selection::tests::test_next_covering_grant_index_preserves_existing_selection ... ok
[INFO] [stdout] test verified_capability_verification::tests::test_capability_expected_public_key_matches_is_identity ... ok
[INFO] [stdout] test verified_capability_selection::tests::test_next_covering_grant_index_skips_non_match ... ok
[INFO] [stdout] test verified_capability_selection::tests::test_next_covering_grant_index_selects_first_match ... ok
[INFO] [stdout] test verified_capability_verification::tests::test_capability_not_expired_rejects_elapsed_window ... ok
[INFO] [stdout] test verified_capability_verification::tests::test_capability_signature_length_valid_requires_exact_length ... ok
[INFO] [stdout] test verified_capability_verification::tests::test_capability_issued_at_within_skew_rejects_future_drift ... ok
[INFO] [stdout] test verified_deputy_handoff::tests::test_deputy_validated_claim_trusted_requires_active_delegation ... ok
[INFO] [stdout] test verified_capability_verification::tests::test_capability_public_key_length_valid_requires_exact_length ... ok
[INFO] [stdout] test verified_delegation_projection::tests::test_projected_call_chain_len_is_zero_without_active_delegation ... ok
[INFO] [stdout] test verified_deputy_handoff::tests::test_evaluation_principal_source_after_deputy_promotes_validated_claim ... ok
[INFO] [stdout] test verified_delegation_projection::tests::test_projected_call_chain_len_preserves_active_depth ... ok
[INFO] [stdout] test verified_deputy_handoff::tests::test_evaluation_principal_source_after_deputy_prefers_configured_identity ... ok
[INFO] [stdout] test verified_evaluation_context_projection::tests::test_project_evaluation_context_prefers_configured_identity ... ok
[INFO] [stdout] test verified_evaluation_context_projection::tests::test_project_evaluation_context_promotes_validated_claim ... ok
[INFO] [stdout] test verified_evaluation_context_projection::tests::test_project_evaluation_context_rejects_unvalidated_claim ... ok
[INFO] [stdout] test verified_evaluation_context_projection::tests::test_project_evaluation_context_without_any_principal_is_empty ... ok
[INFO] [stdout] test verified_nhi_delegation::tests::test_delegation_chain_depth_exceeded_is_strict ... ok
[INFO] [stdout] test verified_nhi_delegation::tests::test_delegation_link_effective_for_chain_requires_all_guards ... ok
[INFO] [stdout] test verified_nhi_delegation::tests::test_delegation_participant_allowed_rejects_terminal_states ... ok
[INFO] [stdout] test verified_nhi_graph::tests::test_delegation_edge_preserves_acyclicity_rejects_live_back_path ... ok
[INFO] [stdout] test verified_nhi_graph::tests::test_delegation_link_effective_for_successor_requires_all_guards ... ok
[INFO] [stdout] test workflow_tracker::tests::test_budget_exceeded ... ok
[INFO] [stdout] test workflow_tracker::tests::test_clear_session ... ok
[INFO] [stdout] test workflow_tracker::tests::test_custom_workflow_budget ... ok
[INFO] [stdout] test workflow_tracker::tests::test_end_workflow ... ok
[INFO] [stdout] test workflow_tracker::tests::test_max_workflow_actions_constant ... ok
[INFO] [stdout] test verified_nhi_delegation::tests::test_identity_is_terminal_matches_revoked_or_expired ... ok
[INFO] [stdout] test workflow_tracker::tests::test_auto_create_session ... ok
[INFO] [stdout] test workflow_tracker::tests::test_get_stats ... ok
[INFO] [stdout] test workflow_tracker::tests::test_no_session_prediction ... ok
[INFO] [stdout] test workflow_tracker::tests::test_record_step_allows_existing_workflow_at_max_workflows ... ok
[INFO] [stdout] test workflow_tracker::tests::test_record_step_rejects_new_session_at_max_sessions ... ok
[INFO] [stdout] test workflow_tracker::tests::test_predict_outcome_benign ... ok
[INFO] [stdout] test workflow_tracker::tests::test_record_step_rejects_new_workflow_at_max_workflows ... ok
[INFO] [stdout] test workflow_tracker::tests::test_start_and_record_workflow ... ok
[INFO] [stdout] test workflow_tracker::tests::test_suspicious_pattern_detection ... ok
[INFO] [stdout] test workflow_tracker::tests::test_record_step_allows_existing_session_at_max_sessions ... ok
[INFO] [stdout] test workflow_tracker::tests::test_workflow_limit ... ok
[INFO] [stdout] test verified_capability_glob_subset::tests::test_glob_pattern_subset_matches_small_bruteforce_oracle ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_register_agent_bounded_at_max ... ok
[INFO] [stdout] test shadow_ai_discovery::tests::test_register_agent_already_present_at_capacity ... ok
[INFO] [stdout] test nhi::tests::test_revocation_list_capacity_exceeded ... ok
[INFO] [stdout] test workflow_tracker::tests::test_workflow_actions_bounded_with_fifo_eviction ... ok
[INFO] [stdout] test tool_registry::tests::test_register_unknown_respects_capacity_limit ... ok
[INFO] [stdout] test agent_message::tests::test_nonce_tracker_cleanup ... ok
[INFO] [stdout] test nhi::tests::test_cleanup_expired_transitions_probationary ... ok
[INFO] [stdout] test nhi::tests::test_cleanup_expired_still_transitions_active ... ok
[INFO] [stdout] test nhi::tests::test_resolve_delegation_chain_excludes_expired_links ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1829 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.41s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/proptest_inspection.rs (/opt/rustwide/target/debug/deps/proptest_inspection-10ac8cab728e024e)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test tools_call_detected_despite_noise ... ok
[INFO] [stdout] test normalize_method_idempotent_via_classify ... ok
[INFO] [stdout] test classification_is_deterministic ... ok
[INFO] [stdout] test classification_never_panics ... ok
[INFO] [stdout] test detection_is_case_insensitive ... ok
[INFO] [stdout] test known_pattern_always_detected ... ok
[INFO] [stdout] test sanitize_produces_valid_utf8 ... ok
[INFO] [stdout] test zero_width_chars_dont_affect_detection ... ok
[INFO] [stdout] test sanitize_is_idempotent ... ok
[INFO] [stdout] test injection_scan_is_deterministic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests vellaveto_mcp
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test src/auth_level.rs - auth_level (line 18) ... ignored
[INFO] [stdout] test src/inspection/dlp.rs - inspection::dlp::validate_dlp_patterns (line 104) ... ignored
[INFO] [stdout] test src/inspection/injection.rs - inspection::injection::validate_injection_patterns (line 226) ... ignored
[INFO] [stdout] test src/inspection/multimodal.rs - inspection::multimodal (line 32) ... ignored
[INFO] [stdout] test src/inspection/util.rs - inspection::util::try_base64_decode (line 37) ... ignored
[INFO] [stdout] test src/sampling_detector.rs - sampling_detector (line 17) ... ignored
[INFO] [stdout] test src/schema_poisoning.rs - schema_poisoning (line 18) ... ignored
[INFO] [stdout] test src/shadow_agent.rs - shadow_agent (line 18) ... ignored
[INFO] [stdout] test src/task_security.rs - task_security (line 29) ... ignored
[INFO] [stdout] test src/task_state.rs - task_state (line 19) ... ignored
[INFO] [stdout] test src/capability.rs - capability (line 18) ... ok
[INFO] [stdout] test src/data_flow.rs - data_flow::DataFlowTracker (line 260) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 0.68s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "db1970280bc3ab12a83446ffa32274d99bac9d67498014ba701fcfc3b89cc2a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "db1970280bc3ab12a83446ffa32274d99bac9d67498014ba701fcfc3b89cc2a9", kill_on_drop: false }`
[INFO] [stdout] db1970280bc3ab12a83446ffa32274d99bac9d67498014ba701fcfc3b89cc2a9
