[INFO] fetching crate tap-mcp-bridge 0.3.3...
[INFO] testing tap-mcp-bridge-0.3.3 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate tap-mcp-bridge 0.3.3 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate tap-mcp-bridge 0.3.3
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate tap-mcp-bridge 0.3.3
[INFO] tweaked toml for crates.io crate tap-mcp-bridge 0.3.3 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate tap-mcp-bridge 0.3.3 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate tap-mcp-bridge 0.3.3 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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_derive_internals v0.30.0
[INFO] [stderr]   Downloaded schemars_derive v1.2.2
[INFO] [stderr]   Downloaded lru v0.18.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda
[INFO] running `Command { std: "docker" "start" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda", 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" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda", 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" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.4.0
[INFO] [stderr]    Compiling zeroize_derive v1.5.0
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling aws-lc-rs v1.17.3
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling futures-io v0.3.33
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling rustls v0.23.42
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling ref-cast v1.0.26
[INFO] [stderr]    Compiling curve25519-dalek v5.0.0
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling ref-cast-impl v1.0.26
[INFO] [stderr]    Compiling serde_derive_internals v0.30.0
[INFO] [stderr]    Compiling time v0.3.54
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling rmcp v2.2.0
[INFO] [stderr]    Compiling rust_decimal v1.42.1
[INFO] [stderr]    Compiling signature v3.0.0
[INFO] [stderr]    Compiling ed25519 v3.0.0
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling pastey v0.2.3
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling toml v1.1.4+spec-1.1.0
[INFO] [stderr]    Compiling rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling schemars_derive v1.2.2
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling lru v0.18.1
[INFO] [stderr]    Compiling secrecy v0.10.3
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling uuid v1.24.0
[INFO] [stderr]    Compiling base64 v0.23.0
[INFO] [stderr]    Compiling ed25519-dalek v3.0.0
[INFO] [stderr]    Compiling aws-lc-sys v0.43.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling schemars v1.2.2
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling rmcp-macros v2.2.0
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling futures-executor v0.3.33
[INFO] [stderr]    Compiling futures v0.3.33
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling h2 v0.4.15
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling jsonwebtoken v11.0.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.13.4
[INFO] [stderr]    Compiling tap-mcp-bridge v0.3.3 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 16s
[INFO] running `Command { std: "docker" "inspect" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda", 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" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerocopy-derive v0.8.55
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling clap_builder v4.6.2
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.0
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rust_decimal v1.42.1
[INFO] [stderr]    Compiling h2 v0.4.15
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling rand v0.9.5
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling schemars v1.2.2
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling jsonwebtoken v11.0.0
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling rmcp v2.2.0
[INFO] [stderr]    Compiling clap v4.6.4
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.13.4
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]    Compiling tap-mcp-bridge v0.3.3 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 53.22s
[INFO] running `Command { std: "docker" "inspect" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda", 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" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.32s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/tap_mcp_bridge-93187c1a454e0720)
[INFO] [stdout] 
[INFO] [stdout] running 645 tests
[INFO] [stdout] test error::tests::test_invalid_consumer_id_error ... ok
[INFO] [stdout] test error::tests::test_error_display ... ok
[INFO] [stdout] test error::tests::test_merchant_error ... ok
[INFO] [stdout] test mcp::cart::tests::test_add_to_cart_params_creation ... ok
[INFO] [stdout] test mcp::cart::tests::test_add_to_cart_params_new_cart ... ok
[INFO] [stdout] test mcp::cart::tests::test_cart_id_formats ... ok
[INFO] [stdout] test error::tests::test_invalid_merchant_url_error ... ok
[INFO] [stdout] test mcp::cart::tests::test_add_to_cart_request_no_cart_id ... ok
[INFO] [stdout] test mcp::cart::tests::test_add_to_cart_request_with_variant ... ok
[INFO] [stdout] test mcp::cart::tests::test_get_cart_params_creation ... ok
[INFO] [stdout] test mcp::cart::tests::test_add_to_cart_params_quantity_edge_cases ... ok
[INFO] [stdout] test mcp::cart::tests::test_multiple_operations_same_cart ... ok
[INFO] [stdout] test mcp::cart::tests::test_remove_from_cart_params_creation ... ok
[INFO] [stdout] test mcp::cart::tests::test_add_to_cart_request_serialization ... ok
[INFO] [stdout] test mcp::cart::tests::test_update_cart_item_params_creation ... ok
[INFO] [stdout] test mcp::cart::tests::test_update_cart_item_request_deserialization ... ok
[INFO] [stdout] test mcp::cart::tests::test_item_id_formats ... ok
[INFO] [stdout] test mcp::http::tests::test_build_url_with_query_empty_value ... ok
[INFO] [stdout] test mcp::http::tests::test_build_url_with_query_multiple_params ... ok
[INFO] [stdout] test mcp::http::tests::test_build_url_with_query_no_params ... ok
[INFO] [stdout] test mcp::http::tests::test_build_url_with_query_path_with_segments ... ok
[INFO] [stdout] test mcp::http::tests::test_build_url_with_query_simple ... ok
[INFO] [stdout] test mcp::http::tests::test_build_url_with_query_special_chars ... ok
[INFO] [stdout] test mcp::cart::tests::test_update_cart_item_params_zero_quantity ... ok
[INFO] [stdout] test mcp::http::tests::test_build_url_with_query_unicode ... ok
[INFO] [stdout] test mcp::http::tests::test_compose_request_url_no_trailing_slash ... ok
[INFO] [stdout] test mcp::cart::tests::test_update_cart_item_request ... ok
[INFO] [stdout] test mcp::http::tests::test_compose_request_url_path_without_leading_slash ... ok
[INFO] [stdout] test mcp::cart::tests::test_variant_id_none_vs_some ... ok
[INFO] [stdout] test mcp::http::tests::test_compose_request_url_with_query_string_in_path ... ok
[INFO] [stdout] test mcp::http::tests::test_http_method_as_str ... ok
[INFO] [stdout] test mcp::http::tests::test_http_method_eq ... ok
[INFO] [stdout] test mcp::http::tests::test_compose_request_url_prefix_with_trailing_slash ... ok
[INFO] [stdout] test mcp::http::tests::test_reject_path_traversal_accepts_normal_paths ... ok
[INFO] [stdout] test mcp::http::tests::test_http_method_clone ... ok
[INFO] [stdout] test mcp::http::tests::test_compose_request_url_trailing_slash ... ok
[INFO] [stdout] test mcp::http::tests::test_validate_search_param_empty ... ok
[INFO] [stdout] test mcp::http::tests::test_validate_search_param_max_length ... ok
[INFO] [stdout] test mcp::http::tests::test_validate_search_param_null_bytes ... ok
[INFO] [stdout] test mcp::models::tests::test_address_creation ... ok
[INFO] [stdout] test mcp::http::tests::test_reject_path_traversal_inspects_only_path_component ... ok
[INFO] [stdout] test mcp::models::tests::test_address_without_phone ... ok
[INFO] [stdout] test mcp::http::tests::test_validate_search_param_valid ... ok
[INFO] [stdout] test mcp::models::tests::test_address_serialization ... ok
[INFO] [stdout] test mcp::http::tests::test_compose_request_url_preserves_path_prefix ... ok
[INFO] [stdout] test mcp::http::tests::test_validate_search_param_non_ascii ... ok
[INFO] [stdout] test mcp::models::tests::test_decimal_zero_edge_case ... ok
[INFO] [stdout] test mcp::models::tests::test_empty_string_fields ... ok
[INFO] [stdout] test mcp::models::tests::test_cart_item_serialization ... ok
[INFO] [stdout] test mcp::models::tests::test_order_creation ... ok
[INFO] [stdout] test mcp::http::tests::test_reject_path_traversal_rejects_single_dot ... ok
[INFO] [stdout] test mcp::http::tests::test_reject_path_traversal_rejects_double_dot ... ok
[INFO] [stdout] test mcp::models::tests::test_cart_state_creation ... ok
[INFO] [stdout] test mcp::models::tests::test_cart_state_empty ... ok
[INFO] [stdout] test mcp::models::tests::test_order_line_item ... ok
[INFO] [stdout] test mcp::models::tests::test_large_quantity_edge_case ... ok
[INFO] [stdout] test mcp::models::tests::test_cart_item_creation ... ok
[INFO] [stdout] test mcp::models::tests::test_currency_codes ... ok
[INFO] [stdout] test mcp::models::tests::test_order_line_item_serialization ... ok
[INFO] [stdout] test mcp::models::tests::test_order_status_all_variants ... ok
[INFO] [stdout] test mcp::models::tests::test_order_status_deserialization ... ok
[INFO] [stdout] test mcp::models::tests::test_order_status_serialization ... ok
[INFO] [stdout] test mcp::models::tests::test_cart_state_with_items ... ok
[INFO] [stdout] test mcp::models::tests::test_payment_result_declined ... ok
[INFO] [stdout] test mcp::models::tests::test_payment_result_serialization ... ok
[INFO] [stdout] test mcp::models::tests::test_payment_status_all_variants ... ok
[INFO] [stdout] test mcp::models::tests::test_product_creation ... ok
[INFO] [stdout] test mcp::models::tests::test_payment_status_equality ... ok
[INFO] [stdout] test mcp::models::tests::test_product_with_variants ... ok
[INFO] [stdout] test mcp::models::tests::test_payment_result_creation ... ok
[INFO] [stdout] test mcp::models::tests::test_product_serialization ... ok
[INFO] [stdout] test mcp::orders::tests::test_create_order_params ... ok
[INFO] [stdout] test mcp::orders::tests::test_create_order_params_no_options ... ok
[INFO] [stdout] test mcp::orders::tests::test_create_order_request_serialization ... ok
[INFO] [stdout] test mcp::orders::tests::test_create_order_params_separate_billing ... ok
[INFO] [stdout] test mcp::orders::tests::test_delivery_options ... ok
[INFO] [stdout] test mcp::orders::tests::test_get_order_params_creation ... ok
[INFO] [stdout] test mcp::models::tests::test_product_catalog_serialization ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_params_card_various_formats ... ok
[INFO] [stdout] test mcp::orders::tests::test_create_order_request_no_optionals ... ok
[INFO] [stdout] test mcp::orders::tests::test_order_id_formats ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_params_digital_wallet ... ok
[INFO] [stdout] test mcp::payment::tests::test_bank_account_data_conversion ... ok
[INFO] [stdout] test mcp::payment::tests::test_card_data_conversion ... ok
[INFO] [stdout] test mcp::payment::tests::test_digital_wallet_data_conversion ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_params_wallet_types ... ok
[INFO] [stdout] test mcp::payment::tests::test_empty_cvv ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_deserialization_bank_account ... ok
[INFO] [stdout] test mcp::payment::tests::test_process_payment_params_creation ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_deserialization_digital_wallet ... ok
[INFO] [stdout] test mcp::payment::tests::test_process_payment_request_deserialization ... ok
[INFO] [stdout] test mcp::payment::tests::test_process_payment_params_with_digital_wallet ... ok
[INFO] [stdout] test mcp::payment::tests::test_various_expiry_year_formats ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_params_bank_account ... ok
[INFO] [stdout] test mcp::products::tests::test_contextual_data_country_codes ... ok
[INFO] [stdout] test mcp::products::tests::test_empty_search_query ... ok
[INFO] [stdout] test mcp::products::tests::test_get_product_params_creation ... ok
[INFO] [stdout] test mcp::products::tests::test_get_product_params_various_ids ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_params_bank_account_types ... ok
[INFO] [stdout] test mcp::orders::tests::test_promo_codes ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_deserialization_card ... ok
[INFO] [stdout] test mcp::payment::tests::test_process_payment_params_with_bank_account ... ok
[INFO] [stdout] test mcp::payment::tests::test_process_payment_request_serialization ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_method_params_card ... ok
[INFO] [stdout] test mcp::products::tests::test_get_products_params_creation ... ok
[INFO] [stdout] test mcp::products::tests::test_get_products_params_edge_case_large_page ... ok
[INFO] [stdout] test mcp::products::tests::test_get_products_params_no_filters ... ok
[INFO] [stdout] test mcp::products::tests::test_get_products_params_with_search ... ok
[INFO] [stdout] test mcp::products::tests::test_ip_address_formats ... ok
[INFO] [stdout] test mcp::payment::tests::test_payment_rate_limiter_is_per_consumer ... ok
[INFO] [stdout] test mcp::products::tests::test_pagination_edge_cases ... ok
[INFO] [stdout] test mcp::products::tests::test_product_catalog_response_with_products ... ok
[INFO] [stdout] test mcp::products::tests::test_user_agent_strings ... ok
[INFO] [stdout] test mcp::products::tests::test_product_catalog_response_deserialization ... ok
[INFO] [stdout] test mcp::products::tests::test_zip_code_formats ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_active_to_canceled_at_period_end ... ok
[INFO] [stdout] test mcp::products::tests::test_platform_values ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_active_to_paused_transition ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_active_to_canceled_immediate ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_active_update_quantity ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_past_due_failure_count ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_past_due_grace_period_expiration ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_past_due_record_failure ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_past_due_to_active_recovery ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_paused_resume_at ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_paused_to_active_transition ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_active_to_past_due_transition ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_state_data_active_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_state_data_canceled_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_state_data_paused_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_paused_to_canceled_transition ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_response_from_trial ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_response_from_active ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_state_data_trial_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_status_active_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_status_canceled_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_status_expired_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_response_roundtrip ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_status_past_due_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_status_paused_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_subscription_status_trial_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_trial_ends_at ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_trial_is_expired ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_trial_not_expired ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_trial_to_active_transition ... ok
[INFO] [stdout] test mcp::subscriptions::lifecycle::tests::test_trial_to_canceled_transition ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_billing_cycle_custom_multi_day_display ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_billing_cycle_custom_single_day_display ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_billing_cycle_annual_display ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_billing_cycle_monthly_display ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_billing_cycle_onetime_display ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_billing_cycle_deserialization ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_billing_cycle_weekly_display ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_billing_cycle_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_plan_id_empty_rejected ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_plan_id_accepts_valid_chars ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_plan_id_exactly_64_chars_accepted ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_plan_id_rejects_path_traversal ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_plan_id_rejects_slash ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_plan_id_single_char_accepted ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_plan_id_too_long_rejected ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_plan_id_valid ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_subscription_id_empty_rejected ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_subscription_id_exactly_64_chars_accepted ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_subscription_id_rejects_special_chars ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_subscription_id_rejects_whitespace ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_subscription_id_too_long_rejected ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_subscription_id_valid ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_usage_action_deserialization ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_usage_action_increment_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::models::tests::test_usage_action_set_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_flat_rate_minimum_price ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_flat_rate_with_setup_fee ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_hybrid_minimum_price ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_per_seat_minimum_price_no_minimum ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_hybrid_zero_base_price ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_per_seat_minimum_price_with_minimum ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_per_seat_minimum_price_zero_seats ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_pricing_model_serialization_flat_rate ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_tier_mode_graduated_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_tier_mode_volume_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_tiered_minimum_price_empty_tiers ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_tiered_minimum_price_multiple_tiers ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_tiered_minimum_price_single_tier ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_pricing_model_serialization_tiered ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_usage_aggregation_average_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_usage_aggregation_last_value_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_usage_aggregation_max_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_usage_aggregation_sum_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_usage_based_minimum_price_no_commitment ... ok
[INFO] [stdout] test mcp::subscriptions::pricing::tests::test_usage_based_minimum_price_with_commitment ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_charge_end_of_period ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_charge_half_period ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_charge_invalid_date_after_end ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_charge_invalid_date_before_start ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_charge_start_of_period ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_credit_half_period ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_credit_invalid_date_after_end ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_credit_start_of_period ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_credit_invalid_date_before_start ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_charge_zero_duration_period ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_credit_zero_duration_period ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_annual_day_clamped ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_annual_month_clamped ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_custom_large_interval ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_custom_interval ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_custom_single_day ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_monthly ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_credit_end_of_period ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_monthly_anchor_day_clamped ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_annual ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_monthly_anchor_day_28 ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_onetime_no_validity ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_weekly_monday ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_weekly_saturday ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_weekly_sunday ... ok
[INFO] [stdout] test mcp::subscriptions::tools::tests::test_proration_behavior_all_variants ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_weekly_anchor_clamped ... ok
[INFO] [stdout] test mcp::subscriptions::tools::tests::test_proration_behavior_create_prorations_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::tools::tests::test_proration_behavior_none_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::tools::tests::test_proration_behavior_always_invoice_serialization ... ok
[INFO] [stdout] test mcp::subscriptions::proration::tests::test_calculate_next_billing_date_onetime_with_validity ... ok
[INFO] [stdout] test mcp::tools::tests::test_compute_content_digest_empty ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_empty ... ok
[INFO] [stdout] test mcp::tools::tests::test_compute_content_digest_known_value ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_ftp_rejected ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_invalid ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_rejects_localhost ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_rejects_127_0_0_1 ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_rejects_localhost_plain ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_requires_https ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_valid ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_policy_default_rejects_http_loopback ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_policy_default_rejects_https_loopback ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_policy_loopback_accepts_http_127001 ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_path ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_policy_loopback_accepts_https_loopback ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_policy_loopback_still_rejects_ws ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_port ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_ws_rejected ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_policy_loopback_accepts_http_localhost ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_consumer_id_alphanumeric_only ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_consumer_id_empty ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_consumer_id_invalid_characters ... ok
[INFO] [stdout] test mcp::tools::tests::test_parse_merchant_url_with_policy_loopback_still_rejects_http_remote ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_consumer_id_max_length ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_consumer_id_too_long ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_path_id_empty ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_consumer_id_valid ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_path_id_rejects_separators_and_query ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_path_id_length_boundary ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_path_id_rejects_traversal_segments ... ok
[INFO] [stdout] test merchant::config::tests::test_auth_config_api_key ... ok
[INFO] [stdout] test merchant::config::tests::test_auth_config_bearer ... ok
[INFO] [stdout] test mcp::tools::tests::test_validate_path_id_accepts_allowlist ... ok
[INFO] [stdout] test merchant::config::tests::test_empty_api_prefix_default ... ok
[INFO] [stdout] test merchant::config::tests::test_auth_config_oauth2 ... ok
[INFO] [stdout] test merchant::config::tests::test_all_endpoints_configured ... ok
[INFO] [stdout] test merchant::config::tests::test_empty_field_mappings ... ok
[INFO] [stdout] test merchant::config::tests::test_endpoint_config_default ... ok
[INFO] [stdout] test merchant::config::tests::test_complete_config ... ok
[INFO] [stdout] test merchant::config::tests::test_merchant_config_default ... ok
[INFO] [stdout] test merchant::config::tests::test_merchant_config_from_toml ... ok
[INFO] [stdout] test merchant::config::tests::test_endpoint_config_from_toml ... ok
[INFO] [stdout] test merchant::config::tests::test_missing_required_base_url ... ok
[INFO] [stdout] test merchant::config::tests::test_field_mappings_from_toml ... ok
[INFO] [stdout] test merchant::config::tests::test_missing_required_name ... ok
[INFO] [stdout] test merchant::config::tests::test_none_auth_config ... ok
[INFO] [stdout] test merchant::config::tests::test_pagination_cursor_based ... ok
[INFO] [stdout] test merchant::config::tests::test_pagination_style ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_base_url_rejects_127_x_loopback ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_base_url_rejects_ipv4_mapped_ipv6_loopback ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_base_url_rejects_unspecified_v4 ... ok
[INFO] [stdout] test merchant::config::tests::test_invalid_toml_syntax ... ok
[INFO] [stdout] test merchant::config::tests::test_pagination_style_default ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_base_url_rejects_userinfo ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_double_slash_endpoint_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_empty_base_url_allowed ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_endpoint_must_start_with_slash ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_endpoint_rejects_fragment ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_endpoint_rejects_null_byte ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_endpoint_rejects_whitespace ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_endpoint_rejects_query_string ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_env_var_name_invalid_chars ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_field_name_empty_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_field_name_mixed_case_constructor_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_env_var_starts_with_number_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_field_name_uppercase_proto_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_header_name_invalid_chars ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_http_base_url_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_localhost_base_url_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_loopback_base_url_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_null_byte_field_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_oauth2_http_token_url_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_oauth2_localhost_token_url_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_oauth_token_url_rejects_port_zero ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_oauth_token_url_rejects_userinfo ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_path_traversal_endpoint_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_sql_injection_field_rejected ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_oauth_token_url_rejects_bracketed_ipv6_loopback ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_prototype_pollution_field_rejected ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_clone ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_valid_auth_configs ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_config_accessor ... ok
[INFO] [stdout] test merchant::config::tests::test_validate_valid_config ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_default ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_field_mapper ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_endpoint_resolver ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_from_file_not_found ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_from_toml_empty ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_from_toml ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_from_toml_invalid ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_identity_conversions ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_minimal_config ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_identity_conversion_with_empty_collections ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_no_transformers ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_with_config ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_from_toml_missing_name ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_with_all_pagination_styles ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_with_custom_endpoints ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_with_all_auth_types ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_with_unicode_config ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_configurable_clone ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_with_field_mappings ... ok
[INFO] [stdout] test merchant::default::tests::test_default_merchant_new ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_all_endpoints_with_same_resolver ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_configurable_endpoint_resolver_defaults ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_configurable_endpoint_resolver_partial ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_configurable_endpoint_resolver_custom ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_configurable_multiple_template_placeholders ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_configurable_no_template_placeholder ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_configurable_template_with_special_chars ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_default_endpoint_resolver ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_default_endpoint_resolver_default_trait ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_empty_cart_id ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_empty_order_id ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_product_endpoint_with_special_characters ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_empty_product_id ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_product_endpoint_with_unicode ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_remove_cart_item_with_long_id ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_template_substitution ... ok
[INFO] [stdout] test merchant::endpoint::tests::test_update_cart_item_with_empty_id ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_field_mapper_bidirectional ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_field_mapper_default ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_field_mapper_empty ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_field_mapper_multiple_mappings ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_field_mapper_request_mapping ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_field_mapper_response_mapping ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_case_sensitivity ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_clone ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_cow_borrowed_when_not_mapped ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_response_only_mappings ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_special_characters ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_unicode_field_names ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_with_empty_string_key ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_cow_owned_when_mapped ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_with_empty_string_value ... ok
[INFO] [stdout] test merchant::field_map::tests::test_configurable_mapper_very_long_field_names ... ok
[INFO] [stdout] test merchant::field_map::tests::test_identity_field_mapper ... ok
[INFO] [stdout] test merchant::field_map::tests::test_has_mappings ... ok
[INFO] [stdout] test merchant::field_map::tests::test_identity_field_mapper_default ... ok
[INFO] [stdout] test merchant::field_map::tests::test_identity_mapper_cow_borrowed ... ok
[INFO] [stdout] test merchant::field_map::tests::test_identity_mapper_with_unicode ... ok
[INFO] [stdout] test merchant::field_map::tests::test_identity_mapper_with_empty_string ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_endpoint_config_validate_path_traversal ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_field_mapping_config_default ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_endpoint_config_validate_valid ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_field_mapping_config_validate_forbidden_field_name ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_field_mapping_config_validate_null_byte ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_field_mapping_config_validate_valid ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_endpoint_config_validate_double_slash ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_merchant_config_default ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_endpoint_config_default ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_merchant_config_default_values ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_merchant_config_validate_invalid_endpoint ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_settings_custom ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_merchant_config_from_toml_basic ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_merchant_config_validate_success ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_merchant_config_validate_invalid_field_mapping ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_merchant_config_from_toml_full ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_pause ... ok
[INFO] [stdout] test merchant::subscription_config::tests::test_subscription_settings_default ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_plan ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_plans ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_plans_with_filters ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_cancel ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_resume ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_subscription ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_payment_method ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_subscriptions ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_proration_preview ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_usage_summary ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_endpoint_resolver_usage ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_merchant_plan_catalog_passthrough ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_merchant_subscription_passthrough ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_plan_query_params_custom ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_plan_query_params_default ... ok
[INFO] [stdout] test merchant::transform::tests::test_operation_clone ... ok
[INFO] [stdout] test merchant::transform::tests::test_operation_debug ... ok
[INFO] [stdout] test merchant::transform::tests::test_operation_all_variants ... ok
[INFO] [stdout] test merchant::transform::tests::test_operation_equality ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_circuit_breaker_error_display ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_circuit_breaker_very_long_timeout ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_circuit_breaker_zero_reset_timeout ... ok
[INFO] [stdout] test merchant::subscription_traits::tests::test_default_subscription_merchant_creation ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_circuit_opens_after_threshold ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_default_config ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_error_propagation ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_initial_state ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_failed_operation ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_successful_operation ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_thread_safety ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_circuit_open ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_crypto_error ... ok
[INFO] [stdout] test reliability::retry::tests::test_delay_capped_at_max ... ok
[INFO] [stdout] test reliability::retry::tests::test_delay_for_attempt_large_values ... ok
[INFO] [stdout] test reliability::retry::tests::test_delay_for_attempt ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_invalid_consumer_id ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_rate_limit_exceeded ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_merchant_error ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_replay_attack ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_request_too_old ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_signature_error ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_policy_default ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_policy_new ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_policy_with_max_attempts ... ok
[INFO] [stdout] test reliability::retry::tests::test_is_not_retryable_invalid_url ... ok
[INFO] [stdout] test security::audit::tests::test_audit_event_builder ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_with_backoff_immediate_success ... ok
[INFO] [stdout] test security::audit::tests::test_audit_event_serialization ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_circuit_breaker_high_failure_count ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_with_backoff_single_attempt ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_with_backoff_success_first_attempt ... ok
[INFO] [stdout] test security::audit::tests::test_audit_event_with_error ... ok
[INFO] [stdout] test security::audit::tests::test_redact_consumer_id ... ok
[INFO] [stdout] test security::audit::tests::test_redact_consumer_id_edge_cases ... ok
[INFO] [stdout] test security::audit::tests::test_redact_credit_card ... ok
[INFO] [stdout] test security::audit::tests::test_redact_credit_card_with_spaces ... ok
[INFO] [stdout] test security::audit::tests::test_redact_credit_card_without_separators ... ok
[INFO] [stdout] test security::audit::tests::test_redact_cvv ... ok
[INFO] [stdout] test security::audit::tests::test_redact_cvv_no_space ... ok
[INFO] [stdout] test security::audit::tests::test_redact_sensitive_empty_string ... ok
[INFO] [stdout] test security::audit::tests::test_redact_multiple_credit_cards ... ok
[INFO] [stdout] test security::audit::tests::test_redact_sensitive_preserves_safe_data ... ok
[INFO] [stdout] test security::audit::tests::test_redact_sensitive_with_multiple_patterns ... ok
[INFO] [stdout] test security::audit::tests::test_redact_ssn ... ok
[INFO] [stdout] test security::audit::tests::test_audit_event_with_very_long_error ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limit_config_default ... ok
[INFO] [stdout] test security::rate_limit::tests::test_keyed_rate_limiter_isolates_buckets_per_key ... ok
[INFO] [stdout] test security::rate_limit::tests::test_keyed_rate_limiter_lru_eviction_resets_evicted_bucket ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_allows_requests_within_limit ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_concurrent_access ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limited_signer_enforces_limit ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limited_signer_preserves_signature_correctness ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_precision_with_small_intervals ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_rejects_excess_requests ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_very_high_rate ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_with_burst_size_one ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_creation ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_deserialization ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_different_data_different_signatures ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_different_keys_different_signatures ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_kid_matches_requirement ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_nonce_matches_requirement ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_serialization ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_signature_not_empty ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_with_backoff_timing ... ok
[INFO] [stdout] test tap::acro::tests::test_contextual_data_creation ... ok
[INFO] [stdout] test tap::acro::tests::test_device_data_creation ... ok
[INFO] [stdout] test tap::acro::tests::test_signature_base_excludes_signature ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_creation ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_deserialization ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_different_data_different_signatures ... ok
[INFO] [stdout] test tap::acro::tests::test_acro_signature_verifiable ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_different_keys_different_signatures ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_kid_matches_requirement ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_nonce_matches_requirement ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_serialization ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_signature_not_empty ... ok
[INFO] [stdout] test tap::apc::tests::test_bank_account_creation ... ok
[INFO] [stdout] test tap::apc::tests::test_bank_account_data_debug_does_not_leak_sensitive_data ... ok
[INFO] [stdout] test tap::apc::tests::test_bank_account_last_four ... ok
[INFO] [stdout] test tap::apc::tests::test_card_credential_hash ... ok
[INFO] [stdout] test tap::apc::tests::test_card_credential_hash_consistency ... ok
[INFO] [stdout] test tap::apc::tests::test_card_data_creation ... ok
[INFO] [stdout] test tap::apc::tests::test_card_data_debug_does_not_leak_sensitive_data ... ok
[INFO] [stdout] test tap::apc::tests::test_card_last_four ... ok
[INFO] [stdout] test tap::apc::tests::test_digital_wallet_creation ... ok
[INFO] [stdout] test tap::apc::tests::test_apc_signature_verifiable ... ok
[INFO] [stdout] test tap::apc::tests::test_payment_method_bank_account_to_json_key_order ... ok
[INFO] [stdout] test tap::apc::tests::test_payment_method_bank_account_encryption ... ok
[INFO] [stdout] test tap::apc::tests::test_payment_method_card_encryption ... ok
[INFO] [stdout] test tap::apc::tests::test_payment_method_card_to_json_key_order ... ok
[INFO] [stdout] test tap::apc::tests::test_payment_method_digital_wallet_encryption ... ok
[INFO] [stdout] test tap::apc::tests::test_payment_method_digital_wallet_to_json_key_order ... ok
[INFO] [stdout] test tap::apc::tests::test_signature_base_excludes_signature ... ok
[INFO] [stdout] test mcp::http::tests::test_create_http_client ... ok
[INFO] [stdout] test mcp::http::tests::test_create_http_client_does_not_follow_redirects ... ok
[INFO] [stdout] test mcp::tools::tests::test_http_client_does_not_follow_redirects ... ok
[INFO] [stdout] test tap::jwe::tests::rejects_invalid_pem_header ... ok
[INFO] [stdout] test tap::jwe::tests::rejects_pkcs1_pem ... ok
[INFO] [stdout] test tap::jwe::tests::rejects_short_rsa_keys ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_blocking_waits ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limited_signer_blocking_waits ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_refills_over_time ... ok
[INFO] [stdout] test tap::jwk::tests::test_different_keys_different_thumbprints ... ok
[INFO] [stdout] test tap::jwk::tests::test_jwk_compute_thumbprint ... ok
[INFO] [stdout] test tap::jwk::tests::test_jwk_from_verifying_key ... ok
[INFO] [stdout] test tap::jwk::tests::test_jwk_thumbprint_canonical_json ... ok
[INFO] [stdout] test tap::jwk::tests::test_jwk_thumbprint_matches_keyid ... ok
[INFO] [stdout] test tap::jwk::tests::test_jwks_deserialization ... ok
[INFO] [stdout] test tap::jwk::tests::test_jwks_roundtrip ... ok
[INFO] [stdout] test tap::jwk::tests::test_jwks_serialization ... ok
[INFO] [stdout] test tap::jwk::tests::test_same_key_same_thumbprint ... ok
[INFO] [stdout] test tap::jwt::tests::test_base64_url_encode ... ok
[INFO] [stdout] test tap::jwt::tests::test_claims_serialization ... ok
[INFO] [stdout] test tap::jwt::tests::test_claims_with_agent_directory_serialization ... ok
[INFO] [stdout] test tap::jwt::tests::test_different_claims_different_tokens ... ok
[INFO] [stdout] test tap::jwt::tests::test_different_keys_different_signatures ... ok
[INFO] [stdout] test tap::jwt::tests::test_id_token_claims_creation ... ok
[INFO] [stdout] test tap::jwt::tests::test_id_token_claims_creation_without_agent_directory ... ok
[INFO] [stdout] test tap::jwt::tests::test_id_token_creation ... ok
[INFO] [stdout] test tap::jwt::tests::test_id_token_format ... ok
[INFO] [stdout] test tap::jwt::tests::test_jwt_header_format ... ok
[INFO] [stdout] test tap::jwt::tests::test_jwt_payload_format ... ok
[INFO] [stdout] test tap::jwt::tests::test_jwt_signature_length ... ok
[INFO] [stdout] test tap::jwt::tests::test_jwt_signature_verifiable ... ok
[INFO] [stdout] test tap::jwt::tests::test_token_expiration_time ... ok
[INFO] [stdout] test tap::signer::tests::test_build_signature_base_component_order ... ok
[INFO] [stdout] test tap::signer::tests::test_build_signature_base_format ... ok
[INFO] [stdout] test tap::signer::tests::test_compute_content_digest ... ok
[INFO] [stdout] test tap::signer::tests::test_compute_content_digest_empty_body ... ok
[INFO] [stdout] test tap::signer::tests::test_compute_content_digest_known_value ... ok
[INFO] [stdout] test tap::signer::tests::test_compute_keyid ... ok
[INFO] [stdout] test tap::signer::tests::test_compute_keyid_different_keys_different_thumbprints ... ok
[INFO] [stdout] test tap::signer::tests::test_compute_keyid_rfc7638_test_vector ... ok
[INFO] [stdout] test tap::signer::tests::test_different_requests_produce_different_signatures ... ok
[INFO] [stdout] test tap::signer::tests::test_generate_acro ... ok
[INFO] [stdout] test tap::signer::tests::test_generate_acro_kid_matches_signature_keyid ... ok
[INFO] [stdout] test tap::signer::tests::test_generate_acro_nonce_correlation ... ok
[INFO] [stdout] test tap::signer::tests::test_generate_id_token ... ok
[INFO] [stdout] test tap::signer::tests::test_generate_id_token_format ... ok
[INFO] [stdout] test tap::signer::tests::test_generate_id_token_nonce_matches_signature ... ok
[INFO] [stdout] test tap::signer::tests::test_generate_jwks ... ok
[INFO] [stdout] test tap::signer::tests::test_generate_jwks_kid_matches_signature_keyid ... ok
[INFO] [stdout] test tap::signer::tests::test_sign_request ... ok
[INFO] [stdout] test tap::signer::tests::test_sign_request_keyid_consistent ... ok
[INFO] [stdout] test tap::signer::tests::test_sign_request_signature_format ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_circuit_half_open_after_timeout ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_circuit_closes_after_success_threshold ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_half_open_reopens_on_failure ... ok
[INFO] [stdout] test tap::signer::tests::test_signature_input_format ... ok
[INFO] [stdout] test tap::signer::tests::test_sign_request_signature_verifiable ... ok
[INFO] [stdout] test tap::verifier::tests::test_replay_cache_fails_closed_when_saturated ... ok
[INFO] [stdout] test tap::verifier::tests::test_replay_cache_sweep_drops_expired_entries ... ok
[INFO] [stdout] test tap::verifier::tests::test_replay_protection ... ok
[INFO] [stdout] test tap::verifier::tests::test_verify_valid_signature ... ok
[INFO] [stdout] test tests::test_library_exports ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_default ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_empty_toml ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_from_toml ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_invalid_toml ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_large_pool_size ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_large_timeout ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_partial_fields ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_timeout ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_validate_connect_timeout_too_large ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_validate_connect_timeout_zero ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_validate_default ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_validate_timeout_too_large ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_validate_timeout_zero ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_validate_valid_bounds ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_with_defaults ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_zero_pool_size ... ok
[INFO] [stdout] test transport::config::tests::test_http_config_zero_timeout ... ok
[INFO] [stdout] test transport::config::tests::test_http_version_all_variants ... ok
[INFO] [stdout] test transport::config::tests::test_http_version_default ... ok
[INFO] [stdout] test transport::config::tests::test_http_version_from_toml ... ok
[INFO] [stdout] test transport::config::tests::test_http_version_invalid_value ... ok
[INFO] [stdout] test transport::config::tests::test_transport_config_default ... ok
[INFO] [stdout] test transport::config::tests::test_transport_config_from_toml ... ok
[INFO] [stdout] test transport::config::tests::test_transport_config_http2 ... ok
[INFO] [stdout] test transport::config::tests::test_transport_config_invalid_protocol ... ok
[INFO] [stdout] test transport::config::tests::test_transport_config_missing_protocol ... ok
[INFO] [stdout] test tap::verifier::tests::test_replay_cache_does_not_drop_unexpired_nonces_under_flood ... ok
[INFO] [stdout] test tap::jwe::tests::each_encryption_uses_fresh_cek_and_iv ... ok
[INFO] [stdout] test transport::http::tests::test_default_http_client_is_singleton ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_debug_format ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_default_config ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_get_invalid_url ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_delete_request ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_new ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_path_without_leading_slash ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_post_empty_body ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_post_with_content_type ... ok
[INFO] [stdout] test reliability::circuit_breaker::tests::test_circuit_breaker_multiple_half_open_failures ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_with_backoff_all_attempts_fail ... ok
[INFO] [stdout] test reliability::retry::tests::test_retry_with_backoff_success_after_retries ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_rejects_crlf_header ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_rejects_http_url ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_rejects_localhost ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_put_request ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_rejects_path_traversal ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_url_missing_host ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_url_with_trailing_slash ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_with_custom_headers ... ok
[INFO] [stdout] test tap::jwe::tests::tampered_ciphertext_fails_to_decrypt ... ok
[INFO] [stdout] test tap::jwe::tests::round_trip_empty_payload ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_http1_only ... ok
[INFO] [stdout] test transport::http::tests::test_sanitize_path_leading_slash_required ... ok
[INFO] [stdout] test transport::http::tests::test_sanitize_path_traversal_blocked ... ok
[INFO] [stdout] test transport::http::tests::test_sanitize_path_valid ... ok
[INFO] [stdout] test transport::http::tests::test_validate_header_crlf_injection_blocked ... ok
[INFO] [stdout] test transport::http::tests::test_validate_header_valid ... ok
[INFO] [stdout] test transport::http::tests::test_validate_url_https_required ... ok
[INFO] [stdout] test transport::http::tests::test_validate_url_localhost_blocked ... ok
[INFO] [stdout] test transport::tests::test_request_context_clone ... ok
[INFO] [stdout] test transport::tests::test_request_context_creation ... ok
[INFO] [stdout] test transport::tests::test_request_context_debug ... ok
[INFO] [stdout] test transport::tests::test_request_context_multiple_headers ... ok
[INFO] [stdout] test transport::tests::test_request_context_no_headers ... ok
[INFO] [stdout] test transport::tests::test_request_context_with_empty_path ... ok
[INFO] [stdout] test transport::tests::test_request_context_with_query_params ... ok
[INFO] [stdout] test transport::tests::test_transport_response_binary_body ... ok
[INFO] [stdout] test transport::tests::test_transport_response_creation ... ok
[INFO] [stdout] test transport::tests::test_transport_response_debug ... ok
[INFO] [stdout] test transport::tests::test_transport_response_empty_body ... ok
[INFO] [stdout] test transport::tests::test_transport_response_error_status ... ok
[INFO] [stdout] test transport::http::tests::test_http_clients_do_not_follow_redirects ... ok
[INFO] [stdout] test tap::jwe::tests::round_trip_large_payload ... ok
[INFO] [stdout] test transport::tests::test_transport_response_large_body ... ok
[INFO] [stdout] test transport::tests::test_transport_response_multiple_headers ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_with_config ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_with_large_timeout ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_with_zero_pool_size ... ok
[INFO] [stdout] test tap::jwe::tests::decode_spki_pem_strips_whitespace ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_with_large_pool_size ... ok
[INFO] [stdout] test tap::jwe::tests::encrypt_compact_has_five_parts ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_with_zero_timeout ... ok
[INFO] [stdout] test transport::http::tests::test_http_transport_protocol_name ... ok
[INFO] [stdout] test tap::jwe::tests::round_trip_card_payload ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_fractional_refill ... ok
[INFO] [stdout] test security::rate_limit::tests::test_rate_limiter_caps_at_burst_size ... ok
[INFO] [stdout] test tap::tests::proptest_signatures::test_replay_protection_property ... ok
[INFO] [stdout] test tap::tests::proptest_signatures::test_signature_verification_roundtrip ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 645 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.40s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_test.rs (/opt/rustwide/target/debug/deps/integration_test-5d2ebbe0f75ea9a4)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test test_signature_generation_end_to_end ... ok
[INFO] [stdout] test test_checkout_with_invalid_url ... ok
[INFO] [stdout] test test_checkout_params_validation ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/merchant_integration_test.rs (/opt/rustwide/target/debug/deps/merchant_integration_test-e2daa703e2585fe6)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test test_merchant_field_mapper_integration ... ok
[INFO] [stdout] test test_merchant_with_product_query_params ... ok
[INFO] [stdout] test test_merchant_endpoint_resolver_integration ... ok
[INFO] [stdout] test test_merchant_identity_conversions ... ok
[INFO] [stdout] test test_merchant_with_minimal_configuration ... ok
[INFO] [stdout] test test_merchant_config_roundtrip ... ok
[INFO] [stdout] test test_full_merchant_configuration_flow ... ok
[INFO] [stdout] test test_multiple_merchants_isolation ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests tap_mcp_bridge
[INFO] [stdout] 
[INFO] [stdout] running 104 tests
[INFO] [stdout] test src/lib.rs - (line 46) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 81) - compile ... ok
[INFO] [stdout] test src/mcp/mod.rs - mcp (line 49) - compile ... ok
[INFO] [stdout] test src/mcp/orders.rs - mcp::orders::create_order (line 94) - compile ... ok
[INFO] [stdout] test src/mcp/payment.rs - mcp::payment::process_payment (line 170) - compile ... ok
[INFO] [stdout] test src/mcp/orders.rs - mcp::orders::get_order (line 196) - compile ... ok
[INFO] [stdout] test src/mcp/payment.rs - mcp::payment::process_payment_rate_limited (line 315) - compile ... ok
[INFO] [stdout] test src/mcp/products.rs - mcp::products::get_product (line 236) - compile ... ok
[INFO] [stdout] test src/mcp/products.rs - mcp::products::get_products (line 107) - compile ... ok
[INFO] [stdout] test src/mcp/tools.rs - mcp::tools::browse_merchant (line 214) - compile ... ok
[INFO] [stdout] test src/mcp/tools.rs - mcp::tools::checkout_with_tap (line 138) - compile ... ok
[INFO] [stdout] test src/error.rs - error (line 16) ... ok
[INFO] [stdout] test src/lib.rs - (line 139) ... ok
[INFO] [stdout] test src/lib.rs - (line 111) ... ok
[INFO] [stdout] test src/lib.rs - (line 245) ... ok
[INFO] [stdout] test src/error.rs - error::BridgeError::InvalidConsumerId (line 171) ... ok
[INFO] [stdout] test src/error.rs - error::BridgeError::InvalidMerchantUrl (line 141) ... ok
[INFO] [stdout] test src/mcp/http.rs - mcp::http::build_url_with_query (line 322) ... ok
[INFO] [stdout] test src/mcp/subscriptions/proration.rs - mcp::subscriptions::proration::calculate_credit (line 31) ... ok
[INFO] [stdout] test src/reliability/circuit_breaker.rs - reliability::circuit_breaker (line 26) ... ok
[INFO] [stdout] test src/reliability/circuit_breaker.rs - reliability::circuit_breaker::CircuitBreaker::new (line 231) ... ok
[INFO] [stdout] test src/reliability/circuit_breaker.rs - reliability::circuit_breaker::CircuitBreaker (line 181) ... ok
[INFO] [stdout] test src/reliability/circuit_breaker.rs - reliability::circuit_breaker::CircuitBreakerError (line 429) ... ok
[INFO] [stdout] test src/merchant/config.rs - merchant::config::MerchantConfig::validate (line 76) ... ok
[INFO] [stdout] test src/reliability/retry.rs - reliability::retry::RetryPolicy::with_max_attempts (line 76) ... ok
[INFO] [stdout] test src/reliability/retry.rs - reliability::retry::RetryPolicy (line 17) ... ok
[INFO] [stdout] test src/reliability/retry.rs - reliability::retry::RetryPolicy::new (line 61) ... ok
[INFO] [stdout] test src/reliability/circuit_breaker.rs - reliability::circuit_breaker::CircuitBreaker::state (line 261) ... ok
[INFO] [stdout] test src/reliability/circuit_breaker.rs - reliability::circuit_breaker::CircuitBreakerConfig (line 96) ... ok
[INFO] [stdout] test src/reliability/retry.rs - reliability::retry::retry_with_backoff (line 118) ... ok
[INFO] [stdout] test src/reliability/circuit_breaker.rs - reliability::circuit_breaker::CircuitBreaker::call (line 304) ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::AuditEvent::new (line 99) ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::AuditEvent (line 69) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit (line 36) - compile ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::AuditEvent::with_consumer_id (line 148) ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::AuditEvent::with_error (line 193) ... ok
[INFO] [stdout] test src/reliability/retry.rs - reliability::retry::is_retryable (line 212) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::RateLimitedSigner (line 418) - compile ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::AuditEvent::with_merchant_url (line 124) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::RateLimitedSigner::sign_request_blocking (line 528) - compile ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::audit_log (line 242) ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::AuditEvent::with_nonce (line 170) ... ok
[INFO] [stdout] test src/security/mod.rs - security (line 11) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::RateLimitedSigner::sign_request (line 480) - compile ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::AuditEvent::with_duration (line 215) ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::redact_consumer_id (line 398) ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::redact_sensitive (line 277) ... ok
[INFO] [stdout] test src/security/audit.rs - security::audit::audit (line 439) ... ok
[INFO] [stdout] test src/security/mod.rs - security (line 44) ... ok
[INFO] [stdout] test src/security/mod.rs - security (line 31) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::KeyedRateLimiter (line 318) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit (line 18) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::KeyedRateLimiter::acquire (line 390) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::KeyedRateLimiter::new (line 348) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::RateLimiter (line 117) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::RateLimiter::acquire (line 176) ... ok
[INFO] [stdout] test src/tap/acro.rs - tap::acro::Acro (line 79) ... ok
[INFO] [stdout] test src/tap/acro.rs - tap::acro::ContextualData (line 254) ... ok
[INFO] [stdout] test src/tap/acro.rs - tap::acro (line 25) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::RateLimiter::new (line 149) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::RateLimiter::acquire_blocking (line 231) ... ok
[INFO] [stdout] test src/tap/acro.rs - tap::acro::Acro::create (line 146) ... ok
[INFO] [stdout] test src/security/rate_limit.rs - security::rate_limit::RateLimitedSigner::new (line 451) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::Apc (line 97) ... ok
[INFO] [stdout] test src/tap/jwe.rs - tap::jwe::RsaPublicKey (line 64) - compile ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::Apc::create (line 168) ... ok
[INFO] [stdout] test src/tap/jwe.rs - tap::jwe::RsaPublicKey::from_pem (line 95) - compile ... ok
[INFO] [stdout] test src/tap/acro.rs - tap::acro::DeviceData (line 305) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::BankAccountData (line 529) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc (line 24) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::CardData (line 412) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::PaymentMethod::encrypt (line 325) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::CardData::last_four (line 456) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::CardData::credential_hash (line 485) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::DigitalWalletData (line 591) ... ok
[INFO] [stdout] test src/tap/jwk.rs - tap::jwk::Jwk::compute_thumbprint (line 183) ... ok
[INFO] [stdout] test src/tap/jwk.rs - tap::jwk (line 48) ... ok
[INFO] [stdout] test src/tap/jwk.rs - tap::jwk::Jwk::from_verifying_key (line 134) ... ok
[INFO] [stdout] test src/tap/apc.rs - tap::apc::PaymentMethod (line 267) ... ok
[INFO] [stdout] test src/tap/jwk.rs - tap::jwk::Jwk (line 89) ... ok
[INFO] [stdout] test src/tap/jwk.rs - tap::jwk::Jwks::to_json (line 266) ... ok
[INFO] [stdout] test src/tap/jwk.rs - tap::jwk::Jwks::new (line 242) ... ok
[INFO] [stdout] test src/tap/jwt.rs - tap::jwt (line 29) ... ok
[INFO] [stdout] test src/tap/jwt.rs - tap::jwt::IdToken (line 221) ... ok
[INFO] [stdout] test src/tap/jwk.rs - tap::jwk (line 64) ... ok
[INFO] [stdout] test src/tap/jwk.rs - tap::jwk::Jwks (line 218) ... ok
[INFO] [stdout] test src/transport/http/mod.rs - transport::http::HttpTransport (line 91) - compile ... ok
[INFO] [stdout] test src/tap/jwt.rs - tap::jwt::IdTokenClaims (line 74) ... ok
[INFO] [stdout] test src/transport/mod.rs - transport::Transport (line 118) - compile ... ok
[INFO] [stdout] test src/transport/mod.rs - transport (line 15) - compile ... ok
[INFO] [stdout] test src/tap/signer.rs - tap::signer::TapSigner::compute_content_digest (line 169) ... ok
[INFO] [stdout] test src/tap/signer.rs - tap::signer::TapSigner::generate_acro (line 278) ... ok
[INFO] [stdout] test src/tap/jwt.rs - tap::jwt::IdTokenClaims::new (line 160) ... ok
[INFO] [stdout] test src/tap/signer.rs - tap::signer::TapSigner::generate_apc (line 337) ... ok
[INFO] [stdout] test src/tap/signer.rs - tap::signer::TapSigner::generate_id_token (line 226) ... ok
[INFO] [stdout] test src/tap/mod.rs - tap (line 44) ... ok
[INFO] [stdout] test src/tap/mod.rs - tap (line 121) ... ok
[INFO] [stdout] test src/tap/signer.rs - tap::signer::TapSigner::new (line 62) ... ok
[INFO] [stdout] test src/tap/mod.rs - tap (line 95) ... ok
[INFO] [stdout] test src/tap/jwt.rs - tap::jwt::IdToken::create (line 274) ... ok
[INFO] [stdout] test src/tap/signer.rs - tap::signer::TapSigner::sign_request (line 89) ... ok
[INFO] [stdout] test src/tap/signer.rs - tap::signer::TapSigner::generate_jwks (line 190) ... ok
[INFO] [stdout] test src/transport/http/mod.rs - transport::http::HttpTransport::with_config (line 162) ... ok
[INFO] [stdout] test src/transport/http/mod.rs - transport::http::HttpTransport::new (line 145) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 104 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 1.93s; merged doctests compilation took 1.85s
[INFO] running `Command { std: "docker" "inspect" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda", kill_on_drop: false }`
[INFO] [stdout] 952cb8348a9c6924d7aefab5fc285432c416d6464757f39b6c5aab0912510eda
