[INFO] fetching crate pylon-plugin 0.3.23...
[INFO] testing pylon-plugin-0.3.23 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate pylon-plugin 0.3.23 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate pylon-plugin 0.3.23
[INFO] finished tweaking crates.io crate pylon-plugin 0.3.23
[INFO] tweaked toml for crates.io crate pylon-plugin 0.3.23 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate pylon-plugin 0.3.23 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 pylon-plugin 0.3.23 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]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded pylon-kernel v0.3.23
[INFO] [stderr]   Downloaded pylon-auth v0.3.23
[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] ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55
[INFO] running `Command { std: "docker" "start" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55", 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" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55" "/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" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55", 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" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling keccak v0.1.6
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling sec1 v0.7.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling ff v0.13.1
[INFO] [stderr]    Compiling crypto-bigint v0.5.5
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling blake2 v0.10.6
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling sha3 v0.10.9
[INFO] [stderr]    Compiling group v0.13.0
[INFO] [stderr]    Compiling rfc6979 v0.4.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling argon2 v0.5.3
[INFO] [stderr]    Compiling elliptic-curve v0.13.8
[INFO] [stderr]    Compiling ecdsa v0.16.9
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling k256 v0.13.4
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling pylon-kernel v0.3.23
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling pylon-auth v0.3.23
[INFO] [stderr]    Compiling pylon-plugin v0.3.23 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 39.65s
[INFO] running `Command { std: "docker" "inspect" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55", 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" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55" "/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 pylon-plugin v0.3.23 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `org1`
[INFO] [stdout]    --> src/builtin/organizations.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 |         let org1 = plugin.create_org("Team A", "user-1");
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_org1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 5.06s
[INFO] running `Command { std: "docker" "inspect" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55", 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" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `org1`
[INFO] [stderr]    --> src/builtin/organizations.rs:255:13
[INFO] [stderr]     |
[INFO] [stderr] 255 |         let org1 = plugin.create_org("Team A", "user-1");
[INFO] [stderr]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_org1`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `pylon-plugin` (lib test) generated 1 warning (run `cargo fix --lib -p pylon-plugin --tests` to apply 1 suggestion)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/pylon_plugin-1996d28f2e07e1fb)
[INFO] [stdout] 
[INFO] [stdout] running 331 tests
[INFO] [stdout] test builtin::ai_proxy::tests::creates_openai_provider ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::parse_anthropic_sse_ignores_non_text_delta ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::parse_openai_sse_extracts_content ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::parse_anthropic_sse_extracts_text ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::parse_openai_sse_handles_done ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::creates_custom_provider_with_model ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::parse_anthropic_sse_ignores_non_delta ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::ai_message_constructors ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::parse_openai_sse_ignores_non_data ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::creates_anthropic_provider ... ok
[INFO] [stdout] test builtin::api_keys::tests::generated_keys_are_unique ... ok
[INFO] [stdout] test builtin::api_keys::tests::hash_key_is_deterministic ... ok
[INFO] [stdout] test builtin::api_keys::tests::hash_key_is_sha256_length ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::custom_with_empty_model_stores_none ... ok
[INFO] [stdout] test builtin::api_keys::tests::hash_key_differs_for_different_inputs ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::https_returns_informative_error ... ok
[INFO] [stdout] test builtin::audit_log::tests::anonymous_audit ... ok
[INFO] [stdout] test builtin::api_keys::tests::resolve_invalid_key ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::completion_without_server_returns_error ... ok
[INFO] [stdout] test builtin::api_keys::tests::is_active_tracks_revocation ... ok
[INFO] [stdout] test builtin::api_keys::tests::create_and_resolve ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::creates_custom_provider ... ok
[INFO] [stdout] test builtin::audit_log::tests::records_insert ... ok
[INFO] [stdout] test builtin::audit_log::tests::trims_over_max ... ok
[INFO] [stdout] test builtin::api_keys::tests::wildcard_scope ... ok
[INFO] [stdout] test builtin::ai_proxy::tests::plugin_name ... ok
[INFO] [stdout] test builtin::api_keys::tests::raw_key_not_stored ... ok
[INFO] [stdout] test builtin::api_keys::tests::empty_scopes_allows_all ... ok
[INFO] [stdout] test builtin::audit_log::tests::records_update_and_delete ... ok
[INFO] [stdout] test builtin::api_keys::tests::scope_checking ... ok
[INFO] [stdout] test builtin::api_keys::tests::list_keys_by_user ... ok
[INFO] [stdout] test builtin::cache::tests::del_existing_key ... ok
[INFO] [stdout] test builtin::api_keys::tests::revoke_key ... ok
[INFO] [stdout] test builtin::cache::tests::glob_match_exact ... ok
[INFO] [stdout] test builtin::cache::tests::glob_match_question ... ok
[INFO] [stdout] test builtin::cache::tests::hexists_and_hlen ... ok
[INFO] [stdout] test builtin::cache::tests::expire_on_missing_key ... ok
[INFO] [stdout] test builtin::cache::tests::expire_and_persist ... ok
[INFO] [stdout] test builtin::cache::tests::hdel_field ... ok
[INFO] [stdout] test builtin::cache::tests::hincrby_creates_and_increments ... ok
[INFO] [stdout] test builtin::cache::tests::decr_key ... ok
[INFO] [stdout] test builtin::cache::tests::del_missing_key ... ok
[INFO] [stdout] test builtin::cache::tests::exists_key ... ok
[INFO] [stdout] test builtin::cache::tests::hgetall_returns_map ... ok
[INFO] [stdout] test builtin::cache::tests::hkeys_returns_field_names ... ok
[INFO] [stdout] test builtin::cache::tests::glob_match_star ... ok
[INFO] [stdout] test builtin::cache::tests::flushall_clears_everything ... ok
[INFO] [stdout] test builtin::cache::tests::get_missing_key_returns_none ... ok
[INFO] [stdout] test builtin::cache::tests::getset_on_missing_key ... ok
[INFO] [stdout] test builtin::cache::tests::getset_swaps_value ... ok
[INFO] [stdout] test builtin::cache::tests::incr_creates_key ... ok
[INFO] [stdout] test builtin::cache::tests::keys_question_mark_pattern ... ok
[INFO] [stdout] test builtin::cache::tests::incrby_amount ... ok
[INFO] [stdout] test builtin::cache::tests::key_type_detection ... ok
[INFO] [stdout] test builtin::cache::tests::hset_and_hget ... ok
[INFO] [stdout] test builtin::cache::tests::keys_star_pattern ... ok
[INFO] [stdout] test builtin::cache::tests::lpop_and_rpop ... ok
[INFO] [stdout] test builtin::cache::tests::scard_and_empty ... ok
[INFO] [stdout] test builtin::cache::tests::lrange_with_negative_indices ... ok
[INFO] [stdout] test builtin::cache::tests::set_and_get ... ok
[INFO] [stdout] test builtin::cache::tests::mget_and_mset ... ok
[INFO] [stdout] test builtin::cache::tests::plugin_name ... ok
[INFO] [stdout] test builtin::cache::tests::sadd_and_sismember ... ok
[INFO] [stdout] test builtin::cache::tests::set_with_ttl_and_get_before_expiry ... ok
[INFO] [stdout] test builtin::cache::tests::stats_hit_miss_tracking ... ok
[INFO] [stdout] test builtin::cache::tests::srem_member ... ok
[INFO] [stdout] test builtin::cache::tests::setnx_only_sets_if_missing ... ok
[INFO] [stdout] test builtin::cache::tests::sinter_two_sets ... ok
[INFO] [stdout] test builtin::cache::tests::lru_eviction_when_over_max_keys ... ok
[INFO] [stdout] test builtin::cache::tests::ttl_missing_key ... ok
[INFO] [stdout] test builtin::cache::tests::ttl_no_expiry ... ok
[INFO] [stdout] test builtin::cache::tests::cleanup_expired_keys ... ok
[INFO] [stdout] test builtin::cache::tests::dbsize_counts_non_expired ... ok
[INFO] [stdout] test builtin::cache_client::tests::parse_base_url ... ok
[INFO] [stdout] test builtin::cache::tests::zcard_empty_and_filled ... ok
[INFO] [stdout] test builtin::cache::tests::zrank_by_score ... ok
[INFO] [stdout] test builtin::cache::tests::zrem_member ... ok
[INFO] [stdout] test builtin::cache_client::tests::parse_base_url_trailing_slash ... ok
[INFO] [stdout] test builtin::cache::tests::zadd_and_zscore ... ok
[INFO] [stdout] test builtin::cache_client::tests::parse_base_url_no_scheme ... ok
[INFO] [stdout] test builtin::cascade::tests::multiple_children ... ok
[INFO] [stdout] test builtin::cascade::tests::queues_cascade_on_delete ... ok
[INFO] [stdout] test builtin::cascade::tests::take_clears_pending ... ok
[INFO] [stdout] test builtin::cascade::tests::unrelated_entity_no_cascade ... ok
[INFO] [stdout] test builtin::computed::tests::apply_all_rows ... ok
[INFO] [stdout] test builtin::computed::tests::no_config_no_change ... ok
[INFO] [stdout] test builtin::computed::tests::computed_field_from_numeric ... ok
[INFO] [stdout] test builtin::cors::tests::allow_all ... ok
[INFO] [stdout] test builtin::cache::tests::get_expired_key_returns_none ... ok
[INFO] [stdout] test builtin::cors::tests::allow_origin_header_matches ... ok
[INFO] [stdout] test builtin::cors::tests::specific_origins ... ok
[INFO] [stdout] test builtin::cache::tests::lpush_and_rpush ... ok
[INFO] [stdout] test builtin::csrf::tests::matching_origin_passes ... ok
[INFO] [stdout] test builtin::csrf::tests::all_state_changing_methods_reject_wrong_origin ... ok
[INFO] [stdout] test builtin::computed::tests::basic_computed_field ... ok
[INFO] [stdout] test builtin::csrf::tests::referer_fallback_when_origin_missing ... ok
[INFO] [stdout] test builtin::cache::tests::zrange_returns_ordered_slice ... ok
[INFO] [stdout] test builtin::csrf::tests::referer_fallback_wrong_origin ... ok
[INFO] [stdout] test builtin::csrf::tests::safe_methods_pass_with_bad_origin ... ok
[INFO] [stdout] test builtin::cascade::tests::no_rules_no_cascade ... ok
[INFO] [stdout] test builtin::computed::tests::multiple_computed_fields ... ok
[INFO] [stdout] test builtin::csrf::tests::wildcard_allows_all ... ok
[INFO] [stdout] test builtin::cache_client::tests::parse_base_url_with_path ... ok
[INFO] [stdout] test builtin::email::tests::dev_mode_logs_and_records ... ok
[INFO] [stdout] test builtin::csrf::tests::plugin_name ... ok
[INFO] [stdout] test builtin::csrf::tests::wrong_origin_rejected ... ok
[INFO] [stdout] test builtin::email::tests::send_welcome_formats_correctly ... ok
[INFO] [stdout] test builtin::csrf::tests::server_to_server_no_origin_passes ... ok
[INFO] [stdout] test builtin::email::tests::multiple_sends_accumulate ... ok
[INFO] [stdout] test builtin::email::tests::plugin_name ... ok
[INFO] [stdout] test builtin::email::tests::smtp_blocks_metadata_endpoint ... ok
[INFO] [stdout] test builtin::feature_flags::tests::disabled_flag_ignores_rules ... ok
[INFO] [stdout] test builtin::feature_flags::tests::list_flags ... ok
[INFO] [stdout] test builtin::feature_flags::tests::percentage_flag ... ok
[INFO] [stdout] test builtin::csrf::tests::origin_from_referer_extraction ... ok
[INFO] [stdout] test builtin::email::tests::send_magic_code_formats_correctly ... ok
[INFO] [stdout] test builtin::feature_flags::tests::remove_flag ... ok
[INFO] [stdout] test builtin::feature_flags::tests::percentage_zero_always_off ... ok
[INFO] [stdout] test builtin::email::tests::sent_history_tracks_multiple ... ok
[INFO] [stdout] test builtin::email::tests::smtp_blocks_10_network ... ok
[INFO] [stdout] test builtin::feature_flags::tests::unknown_flag_returns_false ... ok
[INFO] [stdout] test builtin::feature_flags::tests::user_list_flag ... ok
[INFO] [stdout] test builtin::file_storage::tests::list_files ... ok
[INFO] [stdout] test builtin::file_storage::tests::local_backend_rejects_traversal_on_delete ... ok
[INFO] [stdout] test builtin::email::tests::smtp_transport_blocks_private_ip ... ok
[INFO] [stdout] test builtin::file_storage::tests::accepts_valid_file_id ... ok
[INFO] [stdout] test builtin::feature_flags::tests::boolean_flag ... ok
[INFO] [stdout] test builtin::feature_flags::tests::percentage_100_always_on ... ok
[INFO] [stdout] test builtin::file_storage::tests::delete_file ... ok
[INFO] [stdout] test builtin::file_storage::tests::exists_check ... ok
[INFO] [stdout] test builtin::file_storage::tests::rejects_empty_id ... ok
[INFO] [stdout] test builtin::file_storage::tests::not_found ... ok
[INFO] [stdout] test builtin::file_storage::tests::plugin_name ... ok
[INFO] [stdout] test builtin::file_storage::tests::rejects_path_traversal_backslash ... ok
[INFO] [stdout] test builtin::file_storage::tests::local_backend_rejects_traversal_on_exists ... ok
[INFO] [stdout] test builtin::file_storage::tests::rejects_hidden_files ... ok
[INFO] [stdout] test builtin::file_storage::tests::rejects_path_traversal_dotdot ... ok
[INFO] [stdout] test builtin::file_storage::tests::rejects_path_traversal_slash ... ok
[INFO] [stdout] test builtin::file_storage::tests::local_backend_rejects_traversal_on_metadata ... ok
[INFO] [stdout] test builtin::file_storage::tests::local_backend_rejects_traversal_on_retrieve ... ok
[INFO] [stdout] test builtin::cache::tests::hincrby_non_integer_errors ... ok
[INFO] [stdout] test builtin::cache::tests::incr_non_integer_errors ... ok
[INFO] [stdout] test builtin::cache::tests::keys_all_pattern ... ok
[INFO] [stdout] test builtin::cache::tests::llen_empty_and_missing ... ok
[INFO] [stdout] test builtin::cache::tests::lpop_empty_list ... ok
[INFO] [stdout] test builtin::cache::tests::smembers_returns_all ... ok
[INFO] [stdout] test builtin::cache::tests::sunion_two_sets ... ok
[INFO] [stdout] test builtin::csrf::tests::safe_methods_pass_without_origin ... ok
[INFO] [stdout] test builtin::file_storage::tests::metadata_returned ... ok
[INFO] [stdout] test builtin::jwt::tests::access_token_cannot_be_used_as_refresh ... ok
[INFO] [stdout] test builtin::file_storage::tests::upload_and_download ... ok
[INFO] [stdout] test builtin::jwt::tests::different_users_different_tokens ... ok
[INFO] [stdout] test builtin::jwt::tests::hmac_sha256_different_keys_different_output ... ok
[INFO] [stdout] test builtin::jwt::tests::invalid_format_rejected ... ok
[INFO] [stdout] test builtin::jwt::tests::issue_and_verify ... ok
[INFO] [stdout] test builtin::jwt::tests::expired_token_rejected ... ok
[INFO] [stdout] test builtin::jwt::tests::hmac_sha256_produces_32_bytes ... ok
[INFO] [stdout] test builtin::jwt::tests::issue_pair_creates_two_distinct_tokens ... ok
[INFO] [stdout] test builtin::jwt::tests::hmac_sha256_different_data_different_output ... ok
[INFO] [stdout] test builtin::jwt::tests::issue_with_kind_sets_kind_field ... ok
[INFO] [stdout] test builtin::mcp::tests::generates_resources ... ok
[INFO] [stdout] test builtin::jwt::tests::refresh_returns_new_pair ... ok
[INFO] [stdout] test builtin::mcp::tests::entity_names_in_tool_description ... ok
[INFO] [stdout] test builtin::jwt::tests::resolve_user ... ok
[INFO] [stdout] test builtin::jwt::tests::wrong_secret_fails ... ok
[INFO] [stdout] test builtin::mcp::tests::empty_plugin ... ok
[INFO] [stdout] test builtin::mcp::tests::tool_schemas_have_required_fields ... ok
[INFO] [stdout] test builtin::jwt::tests::used_refresh_token_rejected ... ok
[INFO] [stdout] test builtin::mcp::tests::generates_tools ... ok
[INFO] [stdout] test builtin::net_guard::tests::allows_public_hostnames ... ok
[INFO] [stdout] test builtin::net_guard::tests::allows_172_outside_range ... ok
[INFO] [stdout] test builtin::net_guard::tests::allows_ipv4_mapped_ipv6_public ... ok
[INFO] [stdout] test builtin::net_guard::tests::allows_public_ipv6 ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_172_16_network ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_bracketed_ipv6_with_port ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_ipv4_mapped_ipv6 ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_ipv6_loopback ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_ipv6_link_local ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_10_network ... ok
[INFO] [stdout] test builtin::mcp::tests::server_info_is_valid_json ... ok
[INFO] [stdout] test builtin::net_guard::tests::allows_public_ips ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_192_168_network ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_ipv6_unspecified ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_ipv6_unique_local ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_loopback_127 ... ok
[INFO] [stdout] test builtin::organizations::tests::add_to_nonexistent_org ... ok
[INFO] [stdout] test builtin::organizations::tests::creator_is_owner ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_link_local ... ok
[INFO] [stdout] test builtin::organizations::tests::add_and_list_members ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_localhost ... ok
[INFO] [stdout] test builtin::organizations::tests::create_org ... ok
[INFO] [stdout] test builtin::organizations::tests::delete_org ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_zero_network ... ok
[INFO] [stdout] test builtin::organizations::tests::list_user_orgs ... ok
[INFO] [stdout] test builtin::organizations::tests::duplicate_member_rejected ... ok
[INFO] [stdout] test builtin::net_guard::tests::blocks_unspecified ... ok
[INFO] [stdout] test builtin::rate_limit::tests::different_ips_use_different_buckets ... ok
[INFO] [stdout] test builtin::rate_limit::tests::separate_users_separate_limits ... ok
[INFO] [stdout] test builtin::rate_limit::tests::allows_under_limit ... ok
[INFO] [stdout] test builtin::rate_limit::tests::blocks_over_limit ... ok
[INFO] [stdout] test builtin::organizations::tests::remove_member ... ok
[INFO] [stdout] test builtin::organizations::tests::role_permissions ... ok
[INFO] [stdout] test builtin::rate_limit::tests::user_id_preferred_over_ip ... ok
[INFO] [stdout] test builtin::search::tests::search_case_insensitive ... ok
[INFO] [stdout] test builtin::search::tests::search_finds_matching_text ... ok
[INFO] [stdout] test builtin::search::tests::search_empty_query ... ok
[INFO] [stdout] test builtin::search::tests::search_multiple_terms ... ok
[INFO] [stdout] test builtin::search::tests::search_no_config_no_index ... ok
[INFO] [stdout] test builtin::search::tests::search_multiple_fields ... ok
[INFO] [stdout] test builtin::session_expiry::tests::expire_session ... ok
[INFO] [stdout] test builtin::session_expiry::tests::refresh_extends_lifetime ... ok
[INFO] [stdout] test builtin::session_expiry::tests::refresh_unknown_returns_false ... ok
[INFO] [stdout] test builtin::session_expiry::tests::track_and_check ... ok
[INFO] [stdout] test builtin::search::tests::search_updates_index_on_update ... ok
[INFO] [stdout] test builtin::session_expiry::tests::unknown_token_fails ... ok
[INFO] [stdout] test builtin::slugify::tests::does_not_overwrite_existing_slug ... ok
[INFO] [stdout] test builtin::slugify::tests::basic_slugify ... ok
[INFO] [stdout] test builtin::session_expiry::tests::custom_timeouts ... ok
[INFO] [stdout] test builtin::session_expiry::tests::active_count ... ok
[INFO] [stdout] test builtin::slugify::tests::plugin_generates_slug_on_insert ... ok
[INFO] [stdout] test builtin::slugify::tests::unicode_slugify ... ok
[INFO] [stdout] test builtin::slugify::tests::missing_source_field_no_error ... ok
[INFO] [stdout] test builtin::slugify::tests::no_config_for_entity_passes ... ok
[INFO] [stdout] test builtin::search::tests::search_removes_on_delete ... ok
[INFO] [stdout] test builtin::session_expiry::tests::cleanup_removes_expired ... ok
[INFO] [stdout] test builtin::soft_delete::tests::allows_delete_for_non_matching ... ok
[INFO] [stdout] test builtin::soft_delete::tests::blocks_delete_for_all_entities ... ok
[INFO] [stdout] test builtin::soft_delete::tests::blocks_delete_for_specific_entities ... ok
[INFO] [stdout] test builtin::stripe::tests::customer_store_round_trip ... ok
[INFO] [stdout] test builtin::stripe::tests::accepts_one_of_multiple_v1_signatures ... ok
[INFO] [stdout] test builtin::stripe::tests::parses_event_payload ... ok
[INFO] [stdout] test builtin::stripe::tests::rejects_missing_signature ... ok
[INFO] [stdout] test builtin::stripe::tests::rejects_missing_timestamp ... ok
[INFO] [stdout] test builtin::stripe::tests::verifies_valid_signature ... ok
[INFO] [stdout] test builtin::stripe::tests::rejects_replay_outside_tolerance ... ok
[INFO] [stdout] test builtin::stripe::tests::plugin_verify_webhook_end_to_end ... ok
[INFO] [stdout] test builtin::stripe::tests::rejects_tampered_payload ... ok
[INFO] [stdout] test builtin::tenant_scope::tests::rejects_write_to_legacy_unscoped_row ... ok
[INFO] [stdout] test builtin::tenant_scope::tests::rejects_write_to_other_tenant_row ... ok
[INFO] [stdout] test builtin::tenant_scope::tests::stamps_tenant_on_scoped_insert ... ok
[INFO] [stdout] test builtin::tenant_scope::tests::unscoped_entity_passes_through ... ok
[INFO] [stdout] test builtin::stripe::tests::rejects_wrong_secret ... ok
[INFO] [stdout] test builtin::tenant_scope::tests::custom_field_name_used ... ok
[INFO] [stdout] test builtin::tenant_scope::tests::allows_write_to_own_tenant_row ... ok
[INFO] [stdout] test builtin::tenant_scope::tests::does_not_overwrite_provided_tenant ... ok
[INFO] [stdout] test builtin::tenant_scope::tests::rejects_insert_without_tenant ... ok
[INFO] [stdout] test builtin::timestamps::tests::sets_created_at_on_insert ... ok
[INFO] [stdout] test builtin::timestamps::tests::does_not_overwrite_existing_created_at ... ok
[INFO] [stdout] test builtin::totp::tests::code_cannot_be_replayed_in_same_window ... ok
[INFO] [stdout] test builtin::totp::tests::different_users_different_secrets ... ok
[INFO] [stdout] test builtin::timestamps::tests::sets_updated_at_on_update ... ok
[INFO] [stdout] test builtin::totp::tests::enroll_and_verify ... ok
[INFO] [stdout] test builtin::totp::tests::generate_totp_at_different_secrets_differ ... ok
[INFO] [stdout] test builtin::totp::tests::generate_totp_at_same_window_equal ... ok
[INFO] [stdout] test builtin::totp::tests::code_is_six_digits ... ok
[INFO] [stdout] test builtin::totp::tests::generate_totp_at_is_deterministic ... ok
[INFO] [stdout] test builtin::totp::tests::not_enrolled_returns_none ... ok
[INFO] [stdout] test builtin::timestamps::tests::custom_field_names ... ok
[INFO] [stdout] test builtin::totp::tests::unenroll ... ok
[INFO] [stdout] test builtin::totp::tests::generate_secret_is_16_chars_base32 ... ok
[INFO] [stdout] test builtin::totp::tests::generate_totp_at_different_times_differ ... ok
[INFO] [stdout] test builtin::validation::tests::no_rules_for_entity_passes ... ok
[INFO] [stdout] test builtin::validation::tests::min_length ... ok
[INFO] [stdout] test builtin::validation::tests::multiple_rules_on_same_field ... ok
[INFO] [stdout] test builtin::validation::tests::numeric_min_max ... ok
[INFO] [stdout] test builtin::validation::tests::email_validation ... ok
[INFO] [stdout] test builtin::vector_search::tests::delete_via_plugin_hook_removes_row ... ok
[INFO] [stdout] test builtin::vector_search::tests::dimension_mismatch_excluded ... ok
[INFO] [stdout] test builtin::vector_search::tests::empty_query_returns_nothing ... ok
[INFO] [stdout] test builtin::validation::tests::max_length ... ok
[INFO] [stdout] test builtin::validation::tests::pattern_match ... ok
[INFO] [stdout] test builtin::vector_search::tests::entity_filter_restricts_results ... ok
[INFO] [stdout] test builtin::validation::tests::validates_on_update_too ... ok
[INFO] [stdout] test builtin::totp::tests::wrong_code_rejected ... ok
[INFO] [stdout] test builtin::vector_search::tests::persist_round_trip ... ok
[INFO] [stdout] test builtin::vector_search::tests::upsert_replaces_previous_vector ... ok
[INFO] [stdout] test builtin::versioning::tests::get_specific_version ... ok
[INFO] [stdout] test builtin::versioning::tests::latest_version ... ok
[INFO] [stdout] test builtin::versioning::tests::records_updates ... ok
[INFO] [stdout] test builtin::versioning::tests::separate_rows_separate_history ... ok
[INFO] [stdout] test builtin::webhooks::tests::deliver_blocks_private_ip_addresses ... ok
[INFO] [stdout] test builtin::versioning::tests::max_versions_trims ... ok
[INFO] [stdout] test builtin::webhooks::tests::deliver_mode_blocks_private_ip ... ok
[INFO] [stdout] test builtin::webhooks::tests::deliver_rejects_non_http ... ok
[INFO] [stdout] test builtin::webhooks::tests::delivery_attempt_tracks_url ... ok
[INFO] [stdout] test builtin::vector_search::tests::search_returns_most_similar ... ok
[INFO] [stdout] test builtin::webhooks::tests::deliver_parses_url_without_path ... ok
[INFO] [stdout] test builtin::validation::tests::not_empty ... ok
[INFO] [stdout] test builtin::webhooks::tests::filters_by_entity ... ok
[INFO] [stdout] test builtin::webhooks::tests::both_mode_populates_log_and_delivery_history ... ok
[INFO] [stdout] test builtin::webhooks::tests::filters_by_event ... ok
[INFO] [stdout] test builtin::webhooks::tests::delivery_history_trimmed_to_max_log ... ok
[INFO] [stdout] test builtin::webhooks::tests::delivery_mode_enum_values ... ok
[INFO] [stdout] test builtin::webhooks::tests::trims_log ... ok
[INFO] [stdout] test builtin::webhooks::tests::fires_on_insert ... ok
[INFO] [stdout] test builtin::webhooks::tests::log_mode_does_not_populate_delivery_history ... ok
[INFO] [stdout] test registry::tests::category_as_str ... ok
[INFO] [stdout] test registry::tests::duplicate_rejected ... ok
[INFO] [stdout] test builtin::webhooks::tests::with_mode_sets_mode ... ok
[INFO] [stdout] test registry::tests::empty_name_rejected ... ok
[INFO] [stdout] test registry::tests::publish_and_get ... ok
[INFO] [stdout] test registry::tests::search_by_description ... ok
[INFO] [stdout] test registry::tests::search_by_name ... ok
[INFO] [stdout] test registry::tests::by_category ... ok
[INFO] [stdout] test registry::tests::empty_version_rejected ... ok
[INFO] [stdout] test registry::tests::list_all ... ok
[INFO] [stdout] test registry::tests::search_by_tag ... ok
[INFO] [stdout] test registry::tests::search_case_insensitive ... ok
[INFO] [stdout] test registry::tests::unpublish_nonexistent_returns_false ... ok
[INFO] [stdout] test registry::tests::seed_builtins_populates_all ... ok
[INFO] [stdout] test registry::tests::unpublish ... ok
[INFO] [stdout] test tests::before_insert_hook_allows ... ok
[INFO] [stdout] test tests::after_insert_hook_fires ... ok
[INFO] [stdout] test registry::tests::plugin_metadata_serializes ... ok
[INFO] [stdout] test registry::tests::seed_builtins_categories_correct ... ok
[INFO] [stdout] test tests::on_request_middleware ... ok
[INFO] [stdout] test builtin::versioning::tests::records_insert ... ok
[INFO] [stdout] test tests::plugin_context_data ... ok
[INFO] [stdout] test tests::plugin_error_display ... ok
[INFO] [stdout] test tests::before_insert_hook_rejects ... ok
[INFO] [stdout] test tests::register_plugin ... ok
[INFO] [stdout] test builtin::password_auth::tests::duplicate_email_rejected ... ok
[INFO] [stdout] test builtin::password_auth::tests::is_registered ... ok
[INFO] [stdout] test builtin::password_auth::tests::register_and_verify ... ok
[INFO] [stdout] test builtin::password_auth::tests::hash_is_phc_format ... ok
[INFO] [stdout] test builtin::password_auth::tests::change_password_wrong_old ... ok
[INFO] [stdout] test builtin::password_auth::tests::unknown_email_rejected ... ok
[INFO] [stdout] test builtin::password_auth::tests::wrong_password_rejected ... ok
[INFO] [stdout] test builtin::password_auth::tests::reset_password ... ok
[INFO] [stdout] test builtin::password_auth::tests::same_password_different_hashes ... ok
[INFO] [stdout] test builtin::password_auth::tests::change_password ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 331 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.56s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests pylon_plugin
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/builtin/cache_client.rs - builtin::cache_client (line 10) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55", kill_on_drop: false }`
[INFO] [stdout] ee2ab0e090f9fac0c9b03d2994016fe5b486459ed5e74702721a39387558fc55
