[INFO] cloning repository https://github.com/studiomeyer-io/mcp-armor
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/studiomeyer-io/mcp-armor" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstudiomeyer-io%2Fmcp-armor", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstudiomeyer-io%2Fmcp-armor'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 187020fa67879e59848d59c1e1b732cb5c3777b3
[INFO] testing studiomeyer-io/mcp-armor against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstudiomeyer-io%2Fmcp-armor" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/studiomeyer-io/mcp-armor
[INFO] finished tweaking git repo https://github.com/studiomeyer-io/mcp-armor
[INFO] tweaked toml for git repo https://github.com/studiomeyer-io/mcp-armor written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/studiomeyer-io/mcp-armor on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/studiomeyer-io/mcp-armor already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_json_canonicalizer v0.3.2
[INFO] [stderr]   Downloaded ryu-js v1.0.2
[INFO] [stderr]   Downloaded rmcp v1.8.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2
[INFO] running `Command { std: "docker" "start" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling log v0.4.32
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling cc v1.2.64
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling hybrid-array v0.4.12
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling mcp-armor v0.8.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 44.92s
[INFO] running `Command { std: "docker" "inspect" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling zerocopy-derive v0.8.52
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling insta v1.48.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling mcp-armor v0.8.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 31.26s
[INFO] running `Command { std: "docker" "inspect" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.35s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mcp_armor-fc53929bf53f9c96)
[INFO] [stdout] 
[INFO] [stdout] running 270 tests
[INFO] [stdout] test control::history::tests::allow_results_skipped ... ok
[INFO] [stdout] test control::history::tests::block_results_kept ... ok
[INFO] [stdout] test control::history::tests::limit_caps_output ... ok
[INFO] [stdout] test control::history::tests::rfc3339_known_date ... ok
[INFO] [stdout] test control::history::tests::rfc3339_unix_epoch ... ok
[INFO] [stdout] test control::history::tests::rfc3339_lex_sortable_against_user_iso ... ok
[INFO] [stdout] test control::history::tests::rfc3339_handles_leap_year_feb_29 ... ok
[INFO] [stdout] test control::history::tests::ring_buffer_overwrites_oldest ... ok
[INFO] [stdout] test control::history::tests::recovers_from_poisoned_mutex ... ok
[INFO] [stdout] test control::tests::armor_get_drift_history_unknown_program_returns_baseline_present_false ... ok
[INFO] [stdout] test control::tools::tests::all_tools_read_only ... ok
[INFO] [stdout] test control::tools::tests::list_has_eleven_entries_v08 ... ok
[INFO] [stdout] test cve::feed::tests::every_cve_has_simulate_payload ... ok
[INFO] [stdout] test cve::feed::tests::feed_contains_v05_refresh_wave_cves ... ok
[INFO] [stdout] test cve::feed::tests::feed_contains_v08_path_traversal_cve ... ok
[INFO] [stdout] test cve::feed::tests::feed_parses ... ok
[INFO] [stdout] test cve::feed::tests::find_is_case_insensitive ... ok
[INFO] [stdout] test manifest::canonical::tests::escapes_quote_and_backslash ... ok
[INFO] [stdout] test manifest::canonical::tests::keys_sorted ... ok
[INFO] [stdout] test manifest::canonical::tests::nan_rejected ... ok
[INFO] [stdout] test manifest::canonical::tests::nested_keys_sorted ... ok
[INFO] [stdout] test manifest::canonical::tests::null_bool_int ... ok
[INFO] [stdout] test manifest::drift::tests::added_tool_surfaces_in_diff ... ok
[INFO] [stdout] test manifest::drift::tests::default_drift_mode_is_warn ... ok
[INFO] [stdout] test manifest::drift::tests::description_drift_surfaces_in_diff ... ok
[INFO] [stdout] test manifest::drift::tests::drift_block_inbound_response_uses_distinct_message ... ok
[INFO] [stdout] test manifest::drift::tests::drift_block_response_carries_remediation_hints ... ok
[INFO] [stdout] test manifest::drift::tests::drift_mode_serialises_lowercase ... ok
[INFO] [stdout] test manifest::drift::tests::empty_tools_array_is_a_valid_baseline ... ok
[INFO] [stdout] test control::tests::armor_get_drift_history_returns_default_path_summary ... ok
[INFO] [stdout] test manifest::drift::tests::err_drift_policy_violation_is_minus_32001 ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_changes_when_description_mutates ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_changes_when_param_added ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_changes_when_required_set_mutates ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_handles_parameters_shape_alongside_input_schema ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_is_stable_across_tool_reordering ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_meta_value_carries_backend_as_string ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_missing_tools_array_is_an_error ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_tool_entry_missing_name_is_an_error ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_with_opts_records_jcs_flag_on_baseline ... ok
[INFO] [stdout] test manifest::drift::tests::first_sight_yields_unknown_and_stores_baseline ... ok
[INFO] [stdout] test manifest::drift::tests::fold_identifier_folds_cyrillic_homoglyphs ... ok
[INFO] [stdout] test manifest::drift::tests::fold_identifier_strips_zero_width_and_lowercases ... ok
[INFO] [stdout] test manifest::drift::tests::forget_removes_and_returns_bool ... ok
[INFO] [stdout] test manifest::drift::tests::hash_backend_digest_is_deterministic ... ok
[INFO] [stdout] test manifest::drift::tests::fingerprint_with_opts_stable_under_reordering_for_both_backends ... ok
[INFO] [stdout] test manifest::drift::tests::hash_backend_prefix_is_lowercase_string ... ok
[INFO] [stdout] test manifest::drift::tests::hash_backend_digest_returns_32_bytes_for_both_variants ... ok
[INFO] [stdout] test manifest::drift::tests::inject_fingerprint_meta_no_ops_on_error_envelope ... ok
[INFO] [stdout] test manifest::drift::tests::looks_like_prompts_list_changed_recognises_notification_only ... ok
[INFO] [stdout] test manifest::drift::tests::looks_like_resources_list_changed_recognises_notification_only ... ok
[INFO] [stdout] test manifest::drift::tests::looks_like_tools_list_request_rejects_responses ... ok
[INFO] [stdout] test manifest::drift::tests::looks_like_tools_list_response_recognises_typical_shape ... ok
[INFO] [stdout] test manifest::drift::tests::looks_like_tools_list_response_rejects_error_response ... ok
[INFO] [stdout] test manifest::drift::tests::looks_like_tools_list_response_rejects_tools_call ... ok
[INFO] [stdout] test manifest::drift::tests::meta_fingerprint_key_uses_studiomeyer_namespace_prefix ... ok
[INFO] [stdout] test manifest::drift::tests::now_iso_produces_canonical_shape ... ok
[INFO] [stdout] test manifest::drift::tests::params_changed_surfaces_in_diff ... ok
[INFO] [stdout] test manifest::drift::tests::persist_and_load_roundtrip ... ok
[INFO] [stdout] test manifest::drift::tests::persist_sets_unix_0600_mode ... ok
[INFO] [stdout] test manifest::drift::tests::program_baseline_with_v06_fields_round_trips_through_toml ... ok
[INFO] [stdout] test control::tests::list_blocked_starts_empty ... ok
[INFO] [stdout] test manifest::drift::tests::prune_removes_old_entries ... ok
[INFO] [stdout] test manifest::drift::tests::re_baseline_with_opts_replaces_existing_entry ... ok
[INFO] [stdout] test manifest::drift::tests::removed_tool_surfaces_in_diff ... ok
[INFO] [stdout] test control::tests::armor_verify_bundle_minimal_shape_succeeds ... ok
[INFO] [stdout] test control::tests::armor_get_keystore_on_empty_default_path_returns_zero_entries ... ok
[INFO] [stdout] test manifest::drift::tests::hash_backend_serialises_lowercase ... ok
[INFO] [stdout] test manifest::drift::tests::second_sight_same_shape_yields_match_and_touches_last_seen ... ok
[INFO] [stdout] test manifest::drift::tests::tool_name_collision_all_invisible_name_is_not_flagged ... ok
[INFO] [stdout] test manifest::drift::tests::re_baseline_overwrites_existing_entry ... ok
[INFO] [stdout] test manifest::drift::tests::tool_name_collision_catches_zero_width_suffix ... ok
[INFO] [stdout] test manifest::drift::tests::tool_name_collision_catches_fullwidth_homoglyph ... ok
[INFO] [stdout] test manifest::drift::tests::tool_name_collision_distinct_names_do_not_collide ... ok
[INFO] [stdout] test manifest::drift::tests::tool_name_collision_empty_known_set_is_not_flagged ... ok
[INFO] [stdout] test manifest::drift::tests::tool_name_collision_exact_match_is_not_flagged ... ok
[INFO] [stdout] test manifest::drift::tests::tool_name_collision_catches_cyrillic_homoglyph ... ok
[INFO] [stdout] test manifest::drift::tests::tool_name_collision_unrelated_new_tool_is_not_flagged ... ok
[INFO] [stdout] test manifest::ed25519::tests::malformed_key_returns_err ... ok
[INFO] [stdout] test manifest::drift::tests::schema_version_forward_compat_refuses_higher ... ok
[INFO] [stdout] test control::tests::simulate_attack_blocks_known_cve ... ok
[INFO] [stdout] test manifest::ed25519::tests::invalid_sig_fails_gracefully ... ok
[INFO] [stdout] test manifest::ed25519::tests::happy_path_verifies ... ok
[INFO] [stdout] test manifest::ed25519::tests::tampered_message_fails ... ok
[INFO] [stdout] test control::tests::tools_list_returns_eleven_tools_in_v08 ... ok
[INFO] [stdout] test manifest::ed25519::tests::tofu_pin_on_first_use_succeeds_and_persists_fingerprint ... ok
[INFO] [stdout] test control::tests::check_cve_returns_affected_for_fastmcp ... ok
[INFO] [stdout] test control::tests::invalid_request_no_method ... ok
[INFO] [stdout] test manifest::sigstore::tests::bundle_parse_empty_signature_rejected ... ok
[INFO] [stdout] test manifest::sigstore::tests::artifact_hash_is_canonical ... ok
[INFO] [stdout] test manifest::sigstore::tests::bundle_parse_full_shape ... ok
[INFO] [stdout] test manifest::sigstore::tests::sha256_empty_string_vector ... ok
[INFO] [stdout] test manifest::sigstore::tests::sha256_nist_long_vector ... ok
[INFO] [stdout] test manifest::sigstore::tests::verify_inclusion_bad_set_length ... ok
[INFO] [stdout] test manifest::sigstore::tests::sha256_abc_vector ... ok
[INFO] [stdout] test control::tests::initialize_returns_protocol_version ... ok
[INFO] [stdout] test manifest::sigstore::tests::verify_inclusion_no_rekor_bundle_returns_partial ... ok
[INFO] [stdout] test manifest::sigstore::tests::bundle_parse_minimal ... ok
[INFO] [stdout] test manifest::tofu::tests::empty_keystore_has_schema_version_1 ... ok
[INFO] [stdout] test manifest::tofu::tests::load_missing_file_returns_empty ... ok
[INFO] [stdout] test manifest::tofu::tests::find_by_fingerprint_finds_pinned_entry ... ok
[INFO] [stdout] test manifest::tofu::tests::pin_different_fingerprint_under_same_server_refused ... ok
[INFO] [stdout] test manifest::tofu::tests::pin_same_fingerprint_is_idempotent ... ok
[INFO] [stdout] test manifest::tofu::tests::default_path_uses_xdg_data_home ... ok
[INFO] [stdout] test manifest::tofu::tests::pin_unpin_roundtrip ... ok
[INFO] [stdout] test control::tests::armor_get_keystore_ignores_caller_supplied_path ... ok
[INFO] [stdout] test manifest::tofu::tests::persist_roundtrip_through_toml ... ok
[INFO] [stdout] test manifest::tofu::tests::verify_pin_three_states ... ok
[INFO] [stdout] test otel::tests::emit_block_span_no_op_without_otlp_does_not_panic ... ok
[INFO] [stdout] test otel::tests::init_no_panic_without_endpoint ... ok
[INFO] [stdout] test manifest::ed25519::tests::tofu_fingerprint_mismatch_always_rejects ... ok
[INFO] [stdout] test control::tests::get_policy_returns_default ... ok
[INFO] [stdout] test policy::loader::tests::drift_inbound_check_defaults_to_false ... ok
[INFO] [stdout] test policy::loader::tests::env_key_deny_is_case_insensitive ... ok
[INFO] [stdout] test policy::loader::tests::default_policy_denies_loader_env_keys ... ok
[INFO] [stdout] test policy::loader::tests::drift_fingerprint_opts_reflects_policy_fields ... ok
[INFO] [stdout] test policy::loader::tests::custom_deny_env_keys_replaces_default ... ok
[INFO] [stdout] test policy::loader::tests::hash_backend_defaults_to_blake3 ... ok
[INFO] [stdout] test policy::loader::tests::inject_fingerprint_meta_defaults_to_false ... ok
[INFO] [stdout] test policy::loader::tests::empty_deny_env_keys_disables_guard ... ok
[INFO] [stdout] test manifest::tofu::tests::persist_sets_unix_0600_mode ... ok
[INFO] [stdout] test policy::loader::tests::invalid_toml_fails_gracefully ... ok
[INFO] [stdout] test manifest::tofu::tests::schema_version_forward_compat_refuses_higher ... ok
[INFO] [stdout] test control::tests::armor_rekor_lookup_without_feature_returns_feature_disabled ... ok
[INFO] [stdout] test policy::loader::tests::jcs_canonicalize_defaults_to_false ... ok
[INFO] [stdout] test manifest::sigstore::tests::verify_inclusion_64_byte_set_shape_only_ok ... ok
[INFO] [stdout] test policy::loader::tests::parses_v06_inject_fingerprint_meta_from_toml ... ok
[INFO] [stdout] test policy::loader::tests::parses_v06_inbound_check_from_toml ... ok
[INFO] [stdout] test policy::loader::tests::parses_valid_toml ... ok
[INFO] [stdout] test policy::loader::tests::tool_allows_patterns_all_or_nothing ... ok
[INFO] [stdout] test policy::loader::tests::tool_allows_patterns_empty_matched_returns_false ... ok
[INFO] [stdout] test policy::loader::tests::scan_confusable_defaults_to_true ... ok
[INFO] [stdout] test policy::loader::tests::v05_policy_file_loads_with_v06_safe_defaults ... ok
[INFO] [stdout] test manifest::ed25519::tests::tofu_unknown_server_without_pin_flag_refuses ... ok
[INFO] [stdout] test policy::loader::tests::unknown_hash_backend_value_fails_to_parse ... ok
[INFO] [stdout] test proxy::stdio::tests::allowlist_empty_never_matches ... ok
[INFO] [stdout] test proxy::stdio::tests::allowlist_matches_basename_of_path ... ok
[INFO] [stdout] test proxy::stdio::tests::allowlist_matches_program_directly ... ok
[INFO] [stdout] test proxy::stdio::tests::block_response_shape ... ok
[INFO] [stdout] test policy::reload::tests::spawn_does_not_panic ... ok
[INFO] [stdout] test policy::reload::tests::snapshot_recovers_from_poisoned_lock ... ok
[INFO] [stdout] test policy::loader::tests::permissive_mode_does_not_block_load ... ok
[INFO] [stdout] test proxy::stdio::tests::detect_tool_name_collision_is_gated_off_when_drift_off ... ok
[INFO] [stdout] test proxy::stdio::tests::detect_tool_name_collision_no_baseline_is_not_flagged ... ok
[INFO] [stdout] test proxy::stdio::tests::extract_returns_args_text ... ok
[INFO] [stdout] test manifest::ed25519::tests::tofu_does_not_pin_bad_signature ... ok
[INFO] [stdout] test policy::loader::tests::missing_file_returns_default ... ok
[INFO] [stdout] test policy::loader::tests::parses_v06_hash_backend_from_toml ... ok
[INFO] [stdout] test policy::loader::tests::parses_v06_jcs_toggle_from_toml ... ok
[INFO] [stdout] test proxy::stdio::tests::extract_tool_name_returns_none_for_other_methods ... ok
[INFO] [stdout] test policy::loader::tests::parses_per_tool_allowlist ... ok
[INFO] [stdout] test proxy::stdio::tests::extract_handles_missing_params ... ok
[INFO] [stdout] test proxy::stdio::tests::poison_off_returns_none ... ok
[INFO] [stdout] test control::tests::unknown_method_returns_method_not_found ... ok
[INFO] [stdout] test proxy::stdio::tests::detect_tool_name_collision_flags_confusable_call_against_baseline ... ok
[INFO] [stdout] test proxy::stdio::tests::precedence_no_poison_block_keeps_drift_decision ... ok
[INFO] [stdout] test proxy::stdio::tests::precedence_poison_block_supersedes_passthrough_and_meta ... ok
[INFO] [stdout] test proxy::stdio::tests::precedence_poison_block_yields_to_drift_replace ... ok
[INFO] [stdout] test scanner::aho::tests::prefilter_hits_path_traversal ... ok
[INFO] [stdout] test scanner::aho::tests::prefilter_hits_shell_subst ... ok
[INFO] [stdout] test scanner::aho::tests::prefilter_is_case_insensitive ... ok
[INFO] [stdout] test scanner::aho::tests::prefilter_no_hit_on_clean ... ok
[INFO] [stdout] test scanner::confusable::tests::ascii_passthrough_returns_input_unchanged ... ok
[INFO] [stdout] test scanner::confusable::tests::cherokee_capital_letters_fold_to_latin ... ok
[INFO] [stdout] test scanner::confusable::tests::confusables_table_has_no_duplicate_from_codepoints ... ok
[INFO] [stdout] test scanner::confusable::tests::cyrillic_lowercase_folds_to_latin ... ok
[INFO] [stdout] test scanner::confusable::tests::cyrillic_uppercase_folds_to_latin ... ok
[INFO] [stdout] test scanner::confusable::tests::greek_omicron_folds_to_o ... ok
[INFO] [stdout] test scanner::confusable::tests::has_confusables_detects_correctly ... ok
[INFO] [stdout] test scanner::confusable::tests::latin_extended_dotless_i_folds_to_i ... ok
[INFO] [stdout] test scanner::confusable::tests::math_bold_a_folds_to_a_belt_and_braces ... ok
[INFO] [stdout] test scanner::confusable::tests::mixed_script_payload_normalises_to_pure_latin ... ok
[INFO] [stdout] test scanner::confusable::tests::skeleton_is_idempotent ... ok
[INFO] [stdout] test scanner::confusable::tests::unmapped_codepoints_kept_verbatim ... ok
[INFO] [stdout] test proxy::stdio::tests::extract_tool_name_returns_name_for_tools_call ... ok
[INFO] [stdout] test scanner::regex_stage::tests::instruction_override_matches ... ok
[INFO] [stdout] test scanner::regex_stage::tests::path_traversal_catches_adjacency_broken_bypass ... ok
[INFO] [stdout] test proxy::stdio::tests::extract_tool_name_returns_none_when_params_missing ... ok
[INFO] [stdout] test scanner::regex_stage::tests::shell_subst_regex_matches ... ok
[INFO] [stdout] test policy::loader::tests::tool_allows_patterns_unknown_tool_returns_false ... ok
[INFO] [stdout] test policy::loader::tests::scan_confusable_can_be_disabled_via_toml ... ok
[INFO] [stdout] test scanner::regex_stage::tests::javascript_uri_matches_case_insensitive ... ok
[INFO] [stdout] test manifest::ed25519::tests::tofu_subsequent_call_with_matching_fingerprint_succeeds ... ok
[INFO] [stdout] test manifest::ed25519::tests::key_order_independent ... ok
[INFO] [stdout] test scanner::regex_stage::tests::path_traversal_needs_repeated_climb ... ok
[INFO] [stdout] test proxy::stdio::tests::poison_ignores_non_tools_list ... ok
[INFO] [stdout] test control::tests::scan_tool_returns_verdict ... ok
[INFO] [stdout] test scanner::tests::ansi_wrapped_injection_blocks_after_normalize ... ok
[INFO] [stdout] test proxy::stdio::tests::poison_clean_catalog_returns_none ... ok
[INFO] [stdout] test control::tests::armor_scan_tools_list_flags_poison_via_dispatch ... ok
[INFO] [stdout] test proxy::stdio::tests::poison_block_produces_layer8_error_with_matching_id ... ok
[INFO] [stdout] test proxy::stdio::tests::poison_lone_weak_signal_does_not_block ... ok
[INFO] [stdout] test proxy::stdio::tests::poison_respects_confusable_toggle ... ok
[INFO] [stdout] test proxy::stdio::tests::poison_warn_reports_but_does_not_block ... ok
[INFO] [stdout] test proxy::stdio::tests::poison_allow_patterns_suppresses_findings ... ok
[INFO] [stdout] test scanner::tests::cyrillic_homoglyph_blocks_via_stage4 ... ok
[INFO] [stdout] test scanner::tests::auto_invoke_privileged_blocks ... ok
[INFO] [stdout] test scanner::tests::clean_payload_allows ... ok
[INFO] [stdout] test scanner::tests::ansi_osc_hyperlink_injection_blocks ... ok
[INFO] [stdout] test scanner::tests::benign_bracketed_payloads_still_allow ... ok
[INFO] [stdout] test scanner::tests::tag_injection_blocks ... ok
[INFO] [stdout] test scanner::tests::fullwidth_evasion_blocks_after_normalize ... ok
[INFO] [stdout] test scanner::tool_poison::tests::bare_string_tool_entry_is_scanned ... ok
[INFO] [stdout] test scanner::tool_poison::tests::block_response_has_layer8_code_and_findings ... ok
[INFO] [stdout] test scanner::tests::path_traversal_blocks_end_to_end ... ok
[INFO] [stdout] test scanner::tests::cherokee_homoglyph_blocks_via_stage4 ... ok
[INFO] [stdout] test scanner::tool_poison::tests::clean_catalog_has_no_findings ... ok
[INFO] [stdout] test scanner::tests::localhost_callback_blocks ... ok
[INFO] [stdout] test scanner::tests::ansi_strip_is_gated_on_scan_unicode ... ok
[INFO] [stdout] test scanner::tool_poison::tests::default_mode_is_warn ... ok
[INFO] [stdout] test scanner::tool_poison::tests::every_pattern_compiles ... ok
[INFO] [stdout] test scanner::tool_poison::tests::cross_field_split_directive_is_assembled ... ok
[INFO] [stdout] test scanner::tool_poison::tests::classic_tpa_flags_strong_and_is_block_eligible ... ok
[INFO] [stdout] test scanner::tool_poison::tests::fsp_in_enum_and_default ... ok
[INFO] [stdout] test scanner::tests::scan_confusable_false_skips_stage4 ... ok
[INFO] [stdout] test scanner::tests::combined_zerowidth_plus_cyrillic_blocks ... ok
[INFO] [stdout] test scanner::tests::html_script_inject_blocks ... ok
[INFO] [stdout] test scanner::tests::instruction_override_blocks ... ok
[INFO] [stdout] test scanner::tool_poison::tests::homoglyph_evasion_needs_confusable_fold ... ok
[INFO] [stdout] test scanner::tool_poison::tests::non_tools_list_envelope_is_noop ... ok
[INFO] [stdout] test scanner::tool_poison::tests::fsp_in_param_description ... ok
[INFO] [stdout] test scanner::tool_poison::tests::legit_common_phrasings_do_not_fire ... ok
[INFO] [stdout] test scanner::tool_poison::tests::snippet_truncates_on_char_boundary ... ok
[INFO] [stdout] test scanner::tool_poison::tests::output_schema_is_walked ... ok
[INFO] [stdout] test scanner::tool_poison::tests::prompt_extraction_is_a_strong_signal ... ok
[INFO] [stdout] test scanner::tests::javascript_uri_blocks ... ok
[INFO] [stdout] test scanner::tool_poison::tests::zero_width_evasion_needs_unicode_strip ... ok
[INFO] [stdout] test scanner::tool_poison::tests::two_weak_classes_in_one_tool_corroborate ... ok
[INFO] [stdout] test scanner::unicode::tests::benign_text_unaffected_by_ansi_strip ... ok
[INFO] [stdout] test scanner::unicode::tests::folds_fullwidth ... ok
[INFO] [stdout] test scanner::unicode::tests::ansi_strip_fast_path_is_identity ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_8bit_c1_csi ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_all_bidi_formatting ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_ansi_plus_zero_width_combined ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_bidi_override ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_combined_evasion ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_csi_inside_keyword ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_csi_sgr_colour ... ok
[INFO] [stdout] test scanner::unicode::tests::passthrough_clean_ascii ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_invisible_math_operators ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_lone_esc_and_stray_c1 ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_dcs_string_sequence ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_osc_st_terminated ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_tag_unicode ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_two_byte_esc ... ok
[INFO] [stdout] test scanner::tool_poison::tests::cross_field_assembly_does_not_false_positive_on_benign_ssh_tool ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_osc_hyperlink_bel_terminated ... ok
[INFO] [stdout] test scanner::unicode::tests::strips_zero_width ... ok
[INFO] [stdout] test scanner::tool_poison::tests::german_and_spanish_directives_caught ... ok
[INFO] [stdout] test scanner::tests::pattern_ids_are_stable ... ok
[INFO] [stdout] test util::tests::hex_short_n_greater_than_input_takes_all ... ok
[INFO] [stdout] test util::tests::now_iso_produces_canonical_shape ... ok
[INFO] [stdout] test util::tests::civil_from_days_known_dates ... ok
[INFO] [stdout] test util::tests::hex_short_zero_pads ... ok
[INFO] [stdout] test util::tests::rfc3339_handles_leap_year_feb_29 ... ok
[INFO] [stdout] test util::tests::rfc3339_known_date ... ok
[INFO] [stdout] test util::tests::hex_short_truncates ... ok
[INFO] [stdout] test util::tests::rfc3339_lex_sortable_against_user_iso ... ok
[INFO] [stdout] test util::tests::rfc3339_unix_epoch ... ok
[INFO] [stdout] test scanner::tool_poison::tests::lone_weak_signal_warns_but_is_not_block_eligible ... ok
[INFO] [stdout] test scanner::tool_poison::tests::legit_secrets_tool_does_not_fire ... ok
[INFO] [stdout] test scanner::tests::zero_width_evasion_blocks_after_normalize ... ok
[INFO] [stdout] test scanner::tests::shell_substitution_blocks ... ok
[INFO] [stdout] test scanner::tests::scan_with_backward_compat_keeps_stage4_on ... ok
[INFO] [stdout] test scanner::tests::tag_unicode_evasion_blocks_after_normalize ... ok
[INFO] [stdout] test scanner::tests::scan_unicode_false_skips_stage3 ... ok
[INFO] [stdout] test scanner::tool_poison::tests::deeply_nested_schema_does_not_overflow ... ok
[INFO] [stdout] test scanner::tool_poison::tests::wide_enum_respects_node_budget ... ok
[INFO] [stdout] test scanner::tool_poison::tests::many_tools_share_one_budget ... ok
[INFO] [stdout] test scanner::tool_poison::tests::wide_top_level_keys_are_budget_bounded ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 270 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.09s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/mcp_armor-f5468fd2d2890d3b)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cve_simulation.rs (/opt/rustwide/target/debug/deps/cve_simulation-a9a6147d7fc2e0ad)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test every_cve_simulate_payload_is_blocked ... ok
[INFO] [stdout] test clean_payload_does_not_block ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_control.rs (/opt/rustwide/target/debug/deps/integration_control-45bfd798a5e293b7)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test simulate_attack_does_not_spawn_upstream ... ok
[INFO] [stdout] test initialize_returns_protocol_2025_11_25 ... ok
[INFO] [stdout] test list_blocked_records_block_only ... ok
[INFO] [stdout] test tools_list_has_all_six_plan_tools ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_drift_v05.rs (/opt/rustwide/target/debug/deps/integration_drift_v05-9ec4c7a1eda52ba5)
[INFO] [stdout] 
[INFO] [stdout] running 22 tests
[INFO] [stdout] test clear_baseline_triggers_fresh_first_sight ... ok
[INFO] [stdout] test default_policy_picks_up_warn_drift_mode ... ok
[INFO] [stdout] test default_drift_mode_is_warn ... ok
[INFO] [stdout] test drift_mode_variants_are_stable ... ok
[INFO] [stdout] test pregate_only_accepts_tools_list_responses ... ok
[INFO] [stdout] test now_iso_is_lex_comparable_with_format_pub ... ok
[INFO] [stdout] test fingerprint_20_tools_under_envelope_budget ... ok
[INFO] [stdout] test public_reexports_expose_v05_drift_types ... ok
[INFO] [stdout] test policy_loader_round_trips_off_mode ... ok
[INFO] [stdout] test fingerprint_is_deterministic_across_invocations ... ok
[INFO] [stdout] test zero_tool_baseline_then_added_tool_is_drift ... ok
[INFO] [stdout] test tool_reorder_does_not_trigger_drift ... ok
[INFO] [stdout] test persist_roundtrip_preserves_aggregate_hash ... ok
[INFO] [stdout] test prune_workflow_drops_stale_baselines ... ok
[INFO] [stdout] test rug_pull_description_mutation_surfaces_as_drift ... ok
[INFO] [stdout] test first_sight_persists_schema_version_1 ... ok
[INFO] [stdout] test policy_loader_round_trips_block_mode ... ok
[INFO] [stdout] test concurrent_persist_locked_does_not_lose_updates ... ok
[INFO] [stdout] test trust_workflow_accepts_new_shape ... ok
[INFO] [stdout] test run_proxy_signature_accepts_drift_history_arg ... ok
[INFO] [stdout] test cross_server_tool_shadowing_creates_separate_baseline ... ok
[INFO] [stdout] test control_plane_drift_tool_returns_default_path ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_drift_v05_r1_fixes.rs (/opt/rustwide/target/debug/deps/integration_drift_v05_r1_fixes-a4de8fd74035173c)
[INFO] [stdout] running 24 tests
[INFO] [stdout] test r1_first_sight_still_yields_unknown ... ok
[INFO] [stdout] test r1_p0_1_strips_bidi_formatting_in_tool_name ... ok
[INFO] [stdout] test r1_drift_still_triggers_on_description_change ... ok
[INFO] [stdout] test r1_p0_1_zero_width_swap_does_not_evade_drift ... ok
[INFO] [stdout] test r1_p0_1_zero_width_tool_name_canonicalises ... ok
[INFO] [stdout] test r1_p0_1_trims_leading_trailing_whitespace_in_tool_name ... ok
[INFO] [stdout] test r1_p0_3_block_error_code_constant_is_in_policy_violation_range ... ok
[INFO] [stdout] test r1_p0_4_required_set_hash_is_now_128_bit ... ok
[INFO] [stdout] test r1_p1_6_list_changed_notification_recognised ... ok
[INFO] [stdout] test r1_p1_6_other_notifications_not_recognised_as_list_changed ... ok
[INFO] [stdout] test r1_p1_6_tools_call_not_recognised_as_list_changed ... ok
[INFO] [stdout] test r2_w5_canonicalize_identifier_pure_invisible_collapses_to_empty ... ok
[INFO] [stdout] test r2_w5_canonicalize_identifier_empty_string_yields_empty ... ok
[INFO] [stdout] test r2_w5_canonicalize_identifier_whitespace_only_trims_to_empty ... ok
[INFO] [stdout] test r2_w5_param_names_dedupe_after_canonicalisation ... ok
[INFO] [stdout] test r1_p0_2_persist_locked_merge_no_op_when_disk_unchanged ... ok
[INFO] [stdout] test r1_p0_2_persist_locked_merge_preserves_concurrent_first_sights ... ok
[INFO] [stdout] test r2_w2_cve_feed_filename_reflects_curation_provenance ... ok
[INFO] [stdout] test r1_p0_1_nfkc_folds_ligatures_in_tool_name ... ok
[INFO] [stdout] test r1_p1_7_armor_check_cve_finds_n8n_mcp_creds_leak ... ok
[INFO] [stdout] test r1_p1_7_armor_check_cve_finds_excel_mcp_path_traversal ... ok
[INFO] [stdout] test r1_p1_5_armor_get_policy_surfaces_drift_mode ... ok
[INFO] [stdout] test r1_p1_7_armor_check_cve_finds_lyrie_collision_class ... ok
[INFO] [stdout] test r1_p1_7_armor_check_cve_finds_rmcp_dns_rebinding ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_manifest.rs (/opt/rustwide/target/debug/deps/integration_manifest-5139f1723821fd9a)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test key_order_independence ... ok
[INFO] [stdout] test detects_tamper_post_signing ... ok
[INFO] [stdout] test happy_roundtrip ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stderr]      Running tests/integration_per_tool_allowlist_v02.rs (/opt/rustwide/target/debug/deps/integration_per_tool_allowlist_v02-b8303a7fb4e25765)
[INFO] [stdout] test code_interpreter_is_allowed_to_use_shell_substitution ... ok
[INFO] [stdout] test other_tool_not_allowed_when_listed_for_different_tool ... ok
[INFO] [stdout] test strict_subset_required_for_mixed_matches ... ok
[INFO] [stdout] test unlisted_pattern_not_covered ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_sigstore_v02.rs (/opt/rustwide/target/debug/deps/integration_sigstore_v02-16bbf9543eff3197)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test bundle_minimal_signature_only_parses_cleanly ... ok
[INFO] [stdout] test artifact_hash_is_canonical_key_order_independent ... ok
[INFO] [stdout] test bundle_with_rekor_section_parses_log_index_and_integrated_time ... ok
[INFO] [stdout] test artifact_hash_matches_nist_vector_for_known_input ... ok
[INFO] [stdout] test missing_signature_field_rejected ... ok
[INFO] [stdout] test oversized_bundle_rejected_before_parse ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_tofu_v02.rs (/opt/rustwide/target/debug/deps/integration_tofu_v02-85bcba108e394fb7)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test default_path_falls_back_when_xdg_unset ... ok
[INFO] [stdout] test tofu_attacker_swap_under_known_server_rejected ... ok
[INFO] [stdout] test tofu_pin_persist_reload_succeeds ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_tool_name_collision_v07.rs (/opt/rustwide/target/debug/deps/integration_tool_name_collision_v07-dfa248b4bd77e748)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test cve_2026_29774_cyrillic_homoglyph_tool_name_is_flagged ... ok
[INFO] [stdout] test unrelated_new_tool_against_real_baseline_is_not_a_collision ... ok
[INFO] [stdout] test cve_2026_29774_zero_width_tool_name_is_flagged ... ok
[INFO] [stdout] test scanner_alone_does_not_flag_confusable_tool_name ... ok
[INFO] [stdout] test legitimate_exact_tool_name_is_not_flagged ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_tool_poison_v08.rs (/opt/rustwide/target/debug/deps/integration_tool_poison_v08-7528daf3925fadea)
[INFO] [stdout] 
[INFO] [stdout] running 15 tests
[INFO] [stdout] test poison_mode_serde_round_trips ... ok
[INFO] [stdout] test registry_lists_armor_scan_tools_list ... ok
[INFO] [stdout] test poison_block_response_is_layer8_shaped ... ok
[INFO] [stdout] test control_scan_tools_list_non_json_string_errors ... ok
[INFO] [stdout] test control_scan_tools_list_rejects_oversized_string ... ok
[INFO] [stdout] test get_policy_surfaces_poison_scan_field ... ok
[INFO] [stdout] test control_scan_tools_list_missing_arg_errors ... ok
[INFO] [stdout] test control_scan_tools_list_clean_is_not_poisoned ... ok
[INFO] [stdout] test control_scan_tools_list_object_form_flags_poison ... ok
[INFO] [stdout] test control_scan_tools_list_string_form_works ... ok
[INFO] [stdout] test clean_catalog_yields_nothing ... ok
[INFO] [stdout] test tpa_in_top_level_description_is_caught ... ok
[INFO] [stdout] test control_scan_tools_list_lone_weak_is_poisoned_but_not_block_eligible ... ok
[INFO] [stdout] test full_schema_poisoning_across_every_field_kind ... ok
[INFO] [stdout] test legit_secrets_and_common_phrasings_do_not_false_positive ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_v03_features.rs (/opt/rustwide/target/debug/deps/integration_v03_features-5dd8c51fe2eb95c0)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test feature_a_policy_methods_reject_arbitrary_keys ... ok
[INFO] [stdout] test feature_a_pure_env_keys_are_not_denied_by_default ... ok
[INFO] [stdout] test feature_b_skeleton_helper_is_idempotent_on_real_payloads ... ok
[INFO] [stdout] test feature_a_custom_policy_replaces_default ... ok
[INFO] [stdout] test feature_a_default_policy_includes_all_seven_loader_classes ... ok
[INFO] [stdout] test feature_b_combined_zero_width_plus_cyrillic_blocks ... ok
[INFO] [stdout] test feature_b_pure_ascii_skips_stage4_fast_path ... ok
[INFO] [stdout] test feature_b_stage4_off_lets_homoglyph_pass ... ok
[INFO] [stdout] test feature_b_cyrillic_homoglyph_evasion_blocks_via_stage4 ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_v04_features.rs (/opt/rustwide/target/debug/deps/integration_v04_features-6319928d128b639c)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test v04_pin_outcome_enum_round_trips_to_constants ... ok
[INFO] [stdout] test v04_artifact_hash_remains_canonical_key_order_independent ... ok
[INFO] [stdout] test v04_verify_inclusion_emits_warning_even_when_bundle_has_no_rekor_section ... ok
[INFO] [stdout] test v04_verify_inclusion_emits_warning_on_shape_only_outcome ... ok
[INFO] [stdout] test v04_sha256_nist_long_vector_matches_rustcrypto_sha2 ... ok
[INFO] [stdout] test v04_tofu_persist_locked_round_trips_through_disk ... ok
[INFO] [stdout] test v04_tofu_persist_locked_creates_lock_file_in_parent_directory ... ok
[INFO] [stdout] test v04_pin_outcome_constants_match_json_serialised_tags ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_v06_features.rs (/opt/rustwide/target/debug/deps/integration_v06_features-859527fdd6d6f786)
[INFO] [stdout] 
[INFO] [stdout] running 52 tests
[INFO] [stdout] test drift_fingerprint_opts_is_pure_each_call ... ok
[INFO] [stdout] test drift_block_response_uses_implementation_defined_error_code ... ok
[INFO] [stdout] test drift_does_not_touch_baseline_iso_or_last_seen ... ok
[INFO] [stdout] test empty_tools_baseline_still_records_backend_choice ... ok
[INFO] [stdout] test fingerprint_detects_rug_pull_description_swap ... ok
[INFO] [stdout] test empty_to_nonempty_tools_is_drift_added ... ok
[INFO] [stdout] test canonicalize_identifier_strips_invisible_and_normalises ... ok
[INFO] [stdout] test baseline_iso_is_immutable_under_repeated_match ... ok
[INFO] [stdout] test hash_backend_prefix_matches_aggregate_hash_prefix ... ok
[INFO] [stdout] test canonicalize_identifier_empty_inputs_remain_empty ... ok
[INFO] [stdout] test baseline_uses_own_hash_backend_not_policys_after_flip ... ok
[INFO] [stdout] test inbound_tools_list_request_recognition_is_distinct_from_response ... ok
[INFO] [stdout] test jcs_canonicalize_silent_fallback_when_feature_off_produces_fingerprint ... ok
[INFO] [stdout] test jcs_toggle_round_trips_through_toml_without_feature ... ok
[INFO] [stdout] test list_changed_handlers_are_symmetric_across_prompts_resources_tools ... ok
[INFO] [stdout] test fingerprint_meta_value_has_minimal_stable_shape ... ok
[INFO] [stdout] test fingerprint_opts_default_is_v05_behaviour ... ok
[INFO] [stdout] test hash_backend_switch_yields_distinct_aggregates ... ok
[INFO] [stdout] test meta_fingerprint_injection_is_no_op_for_unrelated_envelopes ... ok
[INFO] [stdout] test meta_fingerprint_injection_is_idempotent ... ok
[INFO] [stdout] test meta_fingerprint_key_uses_studiomeyer_namespace ... ok
[INFO] [stdout] test meta_fingerprint_injection_stamps_baseline_into_envelope ... ok
[INFO] [stdout] test meta_pin_version_matches_crate_version ... ok
[INFO] [stdout] test meta_fingerprint_injection_overwrites_previous_entry ... ok
[INFO] [stdout] test meta_pin_version_is_exact_cargo_pkg_version ... ok
[INFO] [stdout] test observe_with_opts_errors_on_malformed_payload_without_mutation ... ok
[INFO] [stdout] test policy_default_v06_toggles_are_safe_off_or_blake3 ... ok
[INFO] [stdout] test prune_respects_last_seen_iso_touched_by_match ... ok
[INFO] [stdout] test hash_backend_round_trips_through_toml_lowercase ... ok
[INFO] [stdout] test nonempty_to_empty_tools_is_drift_removed ... ok
[INFO] [stdout] test r1_l1_hash_backend_digest_matches_canonical_empty_string_vectors ... ok
[INFO] [stdout] test canonicalize_identifier_collapses_invisible_evasions ... ok
[INFO] [stdout] test inbound_block_response_uses_distinct_error_message ... ok
[INFO] [stdout] test meta_fingerprint_injection_creates_meta_when_absent ... ok
[INFO] [stdout] test meta_fingerprint_injection_preserves_other_result_fields ... ok
[INFO] [stdout] test r1_l2_meta_payload_keys_are_pinned_by_name ... ok
[INFO] [stdout] test re_baseline_with_opts_flips_backend_for_subsequent_observes ... ok
[INFO] [stdout] test util_hex_short_matches_legacy_callsites ... ok
[INFO] [stdout] test util_rfc3339_is_the_single_source_of_truth ... ok
[INFO] [stdout] test v05_tools_list_response_shape_is_still_recognised ... ok
[INFO] [stdout] test jcs_canonical_flag_round_trips_through_persistence ... ok
[INFO] [stdout] test drift_history_persist_locked_still_works_but_is_deprecated ... ok
[INFO] [stdout] test legacy_v05_baseline_loads_as_blake3_default ... ok
[INFO] [stdout] test r1_m2_empty_history_file_yields_empty_history_for_fall_through ... ok
[INFO] [stdout] test r1_m2_corrupt_history_file_yields_load_error_for_fail_open ... ok
[INFO] [stdout] test deprecated_persist_locked_still_sets_unix_0600_mode ... ok
[INFO] [stdout] test baseline_round_trips_v06_fields_through_toml ... ok
[INFO] [stdout] test inbound_block_response_payload_shape ... ok
[INFO] [stdout] test drift_history_persist_locked_merge_preserves_concurrent_additions ... ok
[INFO] [stdout] test keystore_persist_locked_merge_preserves_concurrent_additions ... ok
[INFO] [stdout] test r1_h1_keystore_collision_identical_fingerprint_is_idempotent ... ok
[INFO] [stdout] test r1_h1_keystore_collision_caller_pin_wins_over_disk ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/perf_gate.rs (/opt/rustwide/target/debug/deps/perf_gate-d30c9d26d5b23b65)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test scanner_p99_under_budget ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/server_json_provenance.rs (/opt/rustwide/target/debug/deps/server_json_provenance-268699d5f59d864e)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test server_json_version_matches_crate ... ok
[INFO] [stdout] test server_json_advertises_current_tool_count ... ok
[INFO] [stdout] test server_json_oci_tag_matches_crate ... ok
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests mcp_armor
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2", kill_on_drop: false }`
[INFO] [stdout] 648d62c15a53f5644a7ee3c2f77f0182b2278327e8ad2687172e8a2691e2cbc2
