[INFO] cloning repository https://github.com/Xiechengqi/portr-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Xiechengqi/portr-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FXiechengqi%2Fportr-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FXiechengqi%2Fportr-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 8eabe157099d4bd711fda8a9bd9df3b2b77accd9 [INFO] testing Xiechengqi/portr-rs against 1.98.0-beta.1 for beta-1.98-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FXiechengqi%2Fportr-rs" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Xiechengqi/portr-rs [INFO] finished tweaking git repo https://github.com/Xiechengqi/portr-rs [INFO] tweaked toml for git repo https://github.com/Xiechengqi/portr-rs written to /workspace/builds/worker-5-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Xiechengqi/portr-rs on toolchain 1.98.0-beta.1 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Xiechengqi/portr-rs 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.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6 [INFO] running `Command { std: "docker" "start" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6", 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" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6", 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" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling cc v1.2.60 [INFO] [stderr] Compiling der v0.7.10 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling crunchy v0.2.4 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling base16ct v0.2.0 [INFO] [stderr] Compiling semver v1.0.28 [INFO] [stderr] Compiling openssl v0.10.78 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling portable-atomic v1.13.1 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling raw-cpuid v11.6.0 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling block-padding v0.3.3 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling const-random-macro v0.1.16 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling ff v0.13.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling openssl-sys v0.9.114 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling cbc v0.1.2 [INFO] [stderr] Compiling salsa20 v0.10.2 [INFO] [stderr] Compiling const-random v0.1.18 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling group v0.13.0 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling tokio v1.51.1 [INFO] [stderr] Compiling spki v0.7.3 [INFO] [stderr] Compiling signature v2.2.0 [INFO] [stderr] Compiling pbkdf2 v0.12.2 [INFO] [stderr] Compiling hkdf v0.12.4 [INFO] [stderr] Compiling crypto-bigint v0.5.5 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling rfc6979 v0.4.0 [INFO] [stderr] Compiling polyval v0.6.2 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling ctr v0.9.2 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling num-iter v0.1.45 [INFO] [stderr] Compiling scrypt v0.11.0 [INFO] [stderr] Compiling ghash v0.5.1 [INFO] [stderr] Compiling aes-gcm v0.10.3 [INFO] [stderr] Compiling ssh-encoding v0.2.0 [INFO] [stderr] Compiling poly1305 v0.8.0 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling pkcs5 v0.7.1 [INFO] [stderr] Compiling blowfish v0.9.1 [INFO] [stderr] Compiling chacha20 v0.9.1 [INFO] [stderr] Compiling bcrypt-pbkdf v0.10.0 [INFO] [stderr] Compiling libsqlite3-sys v0.28.0 [INFO] [stderr] Compiling ssh-cipher v0.2.0 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling seize v0.3.3 [INFO] [stderr] Compiling iri-string v0.7.12 [INFO] [stderr] Compiling pkcs8 v0.10.2 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling quanta v0.12.6 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling sec1 v0.7.3 [INFO] [stderr] Compiling pkcs1 v0.7.5 [INFO] [stderr] Compiling ed25519 v2.2.3 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling elliptic-curve v0.13.8 [INFO] [stderr] Compiling ed25519-dalek v2.2.0 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling russh-cryptovec v0.7.3 [INFO] [stderr] Compiling spinning_top v0.3.0 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling nonzero_ext v0.3.0 [INFO] [stderr] Compiling web-time v1.1.0 [INFO] [stderr] Compiling futures-timer v3.0.3 [INFO] [stderr] Compiling home v0.5.12 [INFO] [stderr] Compiling md5 v0.7.0 [INFO] [stderr] Compiling axum-core v0.4.5 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling des v0.8.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling rtoolbox v0.0.5 [INFO] [stderr] Compiling ecow v0.2.6 [INFO] [stderr] Compiling ecdsa v0.16.9 [INFO] [stderr] Compiling primeorder v0.13.6 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling maybe-async v0.2.10 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling cc-switch-router v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling p256 v0.13.2 [INFO] [stderr] Compiling p521 v0.13.3 [INFO] [stderr] Compiling p384 v0.13.1 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling flurry v0.5.2 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling hex-literal v0.4.1 [INFO] [stderr] Compiling matchit v0.7.3 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling sha3 v0.10.9 [INFO] [stderr] Compiling async-stream v0.3.6 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling rpassword v7.5.2 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling dashmap v6.1.0 [INFO] [stderr] Compiling rand v0.9.3 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling uuid v1.23.0 [INFO] [stderr] Compiling rustls-webpki v0.103.11 [INFO] [stderr] Compiling num-bigint-dig v0.8.6 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling governor v0.10.4 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling russh-util v0.46.0 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling russh-sftp v2.1.1 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling rsa v0.9.10 [INFO] [stderr] Compiling ssh-key v0.6.7 [INFO] [stderr] Compiling russh-keys v0.46.0 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling axum v0.7.9 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling russh v0.46.0 [INFO] [stderr] Compiling hyper-rustls v0.27.8 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling resend-rs v0.15.0 [INFO] [stdout] warning: function `default_data_dir` is never used [INFO] [stdout] --> src/config.rs:244:8 [INFO] [stdout] | [INFO] [stdout] 244 | pub fn default_data_dir() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 11s [INFO] running `Command { std: "docker" "inspect" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6", 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" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling cc-switch-router v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 36.38s [INFO] running `Command { std: "docker" "inspect" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6", 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" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Compiling cc-switch-router v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 38.72s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/cc_switch_router-0cbf90e778aac98d) [INFO] [stdout] [INFO] [stdout] running 222 tests [INFO] [stdout] test admin::restart::tests::systemd_script_references_unit ... ok [INFO] [stdout] test admin::restart::tests::nohup_script_kills_and_reexecs ... ok [INFO] [stdout] test admin::settings::tests::clearing_admin_emails_revokes_extras_immediately ... ok [INFO] [stdout] test abuse::tests::bans_on_tenth_invalid_auth ... ok [INFO] [stdout] test admin::settings::tests::clearing_telegram_bot_token_disables_in_place ... ok [INFO] [stdout] test admin::settings::tests::normalize_bool_canonicalizes ... ok [INFO] [stdout] test admin::settings::tests::clearing_board_int_resets_to_canonical_default ... ok [INFO] [stdout] test admin::settings::tests::normalize_int_rejects_garbage ... ok [INFO] [stdout] test admin::settings::tests::unrelated_patch_preserves_boot_values ... ok [INFO] [stdout] test admin::settings::tests::validate_required_field_rejects_clear ... ok [INFO] [stdout] test abuse::tests::tracks_ips_independently ... ok [INFO] [stdout] test admin::settings::tests::validate_returns_diff_and_dynamic_groups ... ok [INFO] [stdout] test admin::settings::tests::write_and_read_env_roundtrip ... ok [INFO] [stdout] test admin::upgrade::tests::progress_pct_monotonic ... ok [INFO] [stdout] test api::tests::claude_tools_probe_enabled_for_cursor_binding ... ok [INFO] [stdout] test api::tests::claude_tools_probe_exists_for_cursor_shares ... ok [INFO] [stdout] test api::tests::codex_image_test_rejects_unbound_provider_capability ... ok [INFO] [stdout] test api::tests::clear_session_cookie_covers_host_and_domain_cookie ... ok [INFO] [stdout] test api::tests::codex_image_test_requires_enabled_bound_provider ... ok [INFO] [stdout] test api::tests::clear_session_cookie_omits_domain_for_localhost ... ok [INFO] [stdout] test api::tests::codex_text_probe_includes_store_false_for_oauth ... ok [INFO] [stdout] test api::tests::confirmed_request_events_prefers_live_event_over_persisted_copy ... ok [INFO] [stdout] test api::tests::confirmed_request_events_accepts_market_request_logs ... ok [INFO] [stdout] test api::tests::confirmed_request_events_restores_country_from_persisted_logs ... ok [INFO] [stdout] test api::tests::emit_done_if_finished_returns_none_while_running ... ok [INFO] [stdout] test api::tests::confirmed_request_events_backfills_country_from_live_snapshot ... ok [INFO] [stdout] test api::tests::confirmed_request_events_restores_last_five_from_persisted_share_logs ... ok [INFO] [stdout] test api::tests::emit_done_if_finished_succeeds_for_post_completion_subscribers ... ok [INFO] [stdout] test api::tests::image_generation_prompt_redaction_keeps_owner_prompt_only ... ok [INFO] [stdout] test api::tests::gemini_app_probe_uses_canonical_model_name ... ok [INFO] [stdout] test api::tests::router_api_token_extraction_accepts_share_client_headers ... ok [INFO] [stdout] test cf::tests::dev_friendly_ranges_pass ... ok [INFO] [stdout] test admin::settings::tests::normalize_email_list_cleans_spaces_and_validates ... ok [INFO] [stdout] test client_meta::tests::trusted_cloudflare_peer_uses_forwarded_headers ... ok [INFO] [stdout] test client_meta::tests::untrusted_peer_ignores_spoofable_headers ... ok [INFO] [stdout] test api::tests::share_ui_static_paths_do_not_capture_api_requests ... ok [INFO] [stdout] test board_telegram::tests::excerpt_truncates_long_text ... ok [INFO] [stdout] test cf::tests::arbitrary_v4_outside ... ok [INFO] [stdout] test board_telegram::tests::format_message_escapes_markdown_specials ... ok [INFO] [stdout] test cf::tests::cloudflare_v4_inside ... ok [INFO] [stdout] test config::tests::default_data_dir_uses_home_dot_prefix ... ok [INFO] [stdout] test config::tests::default_admin_email_is_always_in_admin_set ... ok [INFO] [stdout] test config::tests::env_bool_falls_back_to_default_for_garbage ... ok [INFO] [stdout] test config::tests::free_share_limit_obeys_parallel_limit_setting ... ok [INFO] [stdout] test config::tests::parse_admin_emails_normalizes_and_dedupes ... ok [INFO] [stdout] test config::tests::resend_from_defaults_to_tunnel_domain_host ... ok [INFO] [stdout] test config::tests::derive_default_admin_email_strips_port_and_lowercases ... ok [INFO] [stdout] test ip_blacklist_stats::tests::empty_flush_produces_no_summary ... ok [INFO] [stdout] test ip_blacklist_stats::tests::formats_top_counts_for_logs ... ok [INFO] [stdout] test ctl_client::tests::signature_is_stable_and_key_sensitive ... ok [INFO] [stdout] test models::payout_profile_tests::payout_update_canonical_json_matches_client_signing_contract ... ok [INFO] [stdout] test models::payout_profile_tests::evm_address_normalization_enforces_eip55_for_mixed_case ... ok [INFO] [stdout] test dynamic_settings::tests::ip_blacklist_supports_exact_ipv4_and_cidr ... ok [INFO] [stdout] test proxy::tests::backend_lookup_handles_tunnel_domain_with_port ... ok [INFO] [stdout] test ctl_client::tests::transport_errors_fall_back_others_do_not ... ok [INFO] [stdout] test proxy::tests::direct_share_proxy_path_allows_gemini_native_api ... ok [INFO] [stdout] test models::payout_profile_tests::payout_profile_sorts_and_deduplicates_networks ... ok [INFO] [stdout] test proxy::tests::client_web_path_exposes_only_static_and_web_api_namespaces ... ok [INFO] [stdout] test dynamic_settings::tests::ip_blacklist_supports_ipv6_cidr ... ok [INFO] [stdout] test proxy::tests::backend_lookup_returns_share_metadata ... ok [INFO] [stdout] test proxy::tests::client_web_rejects_query_string_tokens ... ok [INFO] [stdout] test proxy::tests::direct_share_proxy_path_still_rejects_unknown_paths ... ok [INFO] [stdout] test proxy::tests::client_web_auth_policy_defaults_web_api_to_private ... ok [INFO] [stdout] test dynamic_settings::tests::normalize_ip_blacklist_rejects_invalid_entries ... ok [INFO] [stdout] test proxy::tests::direct_share_proxy_path_allows_web_shell_paths ... ok [INFO] [stdout] test proxy::tests::event_stream_content_type_allows_parameters_and_mixed_case ... ok [INFO] [stdout] test proxy::tests::event_stream_chunk_errors_become_clean_eof_only_for_sse ... ok [INFO] [stdout] test ip_blacklist_stats::tests::one_second_minimum_window_avoids_zero_length_summary ... ok [INFO] [stdout] test proxy::tests::debug_api_public_paths_are_explicit ... ok [INFO] [stdout] test ip_blacklist_stats::tests::records_and_flushes_blacklist_summary ... ok [INFO] [stdout] test proxy::tests::health_probe_failure_cache_is_scoped_by_subdomain ... ok [INFO] [stdout] test proxy::tests::host_matching_ignores_request_port_when_tunnel_has_no_port ... ok [INFO] [stdout] test proxy::tests::image_generation_completed_event_keeps_result_bytes_for_preview_storage ... ok [INFO] [stdout] test proxy::tests::image_generation_paths_infer_codex_app ... ok [INFO] [stdout] test proxy::tests::image_generation_stream_detection_is_strict ... ok [INFO] [stdout] test metrics::store::tests::host_series_reads_avg_rss_as_real ... ok [INFO] [stdout] test proxy::tests::replacing_or_removing_route_signals_forward_shutdown ... ok [INFO] [stdout] test proxy::tests::share_concurrency_limiter_enforces_limit_and_releases_on_drop ... ok [INFO] [stdout] test proxy::tests::share_concurrency_limiter_tracks_unlimited_shares_in_snapshot ... ok [INFO] [stdout] test proxy::tests::stale_connection_cannot_remove_replaced_route ... ok [INFO] [stdout] test recent_traffic::tests::complete_then_window_evicts_event ... ok [INFO] [stdout] test recent_traffic::tests::complete_unknown_id_is_noop ... ok [INFO] [stdout] test scheduling_signals::tests::compute_share_signals_applies_owner_penalty ... ok [INFO] [stdout] test scheduling_signals::tests::headroom_partial_is_proportional ... ok [INFO] [stdout] test scheduling_signals::tests::headroom_unlimited_returns_one ... ok [INFO] [stdout] test scheduling_signals::tests::headroom_saturated_clamps_to_floor ... ok [INFO] [stdout] test scheduling_signals::tests::override_set_lowest_penalty_wins ... ok [INFO] [stdout] test scheduling_signals::tests::quota_health_skips_short_windows ... ok [INFO] [stdout] test scheduling_signals::tests::stability_zero_samples_collapses_to_24h ... ok [INFO] [stdout] test scheduling_signals::tests::stability_full_samples_blends_with_max_weight ... ok [INFO] [stdout] test scheduling_signals::tests::quota_health_softmin_picks_worst_tier ... ok [INFO] [stdout] test scheduling_signals::tests::quota_health_missing_quota_is_neutral ... ok [INFO] [stdout] test ssh::tests::lease_username_must_be_uuid ... ok [INFO] [stdout] test startup_config::tests::default_resend_from_strips_tunnel_port ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::dispatch_limited_runtime_is_filtered_until_reset ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::market_share_quota_health_without_app_uses_worst_runtime_quota ... ok [INFO] [stdout] test recent_traffic::tests::inflight_event_survives_ticker_window ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::ollama_display_only_quota_is_not_used_for_filtering_or_health ... ok [INFO] [stdout] test recent_traffic::tests::record_then_snapshot_aggregates_iso3 ... ok [INFO] [stdout] test startup_config::tests::default_resend_from_rejects_empty_domain ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::expired_quota_block_runtime_is_kept ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::zero_dispatch_limit_runtime_is_kept ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::expired_dispatch_limit_runtime_is_kept ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::quota_blocked_runtime_is_filtered_until_reset ... ok [INFO] [stdout] test recent_traffic::tests::ring_caps_at_max_events ... ok [INFO] [stdout] test scheduling_signals::tests::override_cleanup_removes_expired ... ok [INFO] [stdout] test scheduling_signals::tests::override_expires_after_ttl ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::market_share_quota_health_uses_requested_app_runtime_quota ... ok [INFO] [stdout] test store::quota_runtime_filter_tests::runtime_below_dispatch_limit_is_kept ... ok [INFO] [stdout] test cf::tests::cloudflare_v6_inside ... ok [INFO] [stdout] test store::tests::claim_share_subdomain_rejects_claim_share_mismatch ... ok [INFO] [stdout] test store::tests::claim_share_subdomain_rejects_registered_market_subdomain ... ok [INFO] [stdout] test store::tests::claim_share_subdomain_allows_same_installation_to_replace_deleted_share_claim ... ok [INFO] [stdout] test store::tests::cleanup_removes_stale_active_offline_share_even_when_installation_is_fresh ... ok [INFO] [stdout] test store::tests::batch_sync_shares_accepts_multiple_upserts_for_one_installation ... ok [INFO] [stdout] test store::tests::cleanup_deletes_installation_after_retention ... ok [INFO] [stdout] test store::tests::change_installation_owner_email_uses_new_owner_session ... ok [INFO] [stdout] test store::tests::bind_installation_owner_email_accepts_authenticated_session ... ok [INFO] [stdout] test store::tests::claim_share_subdomain_rejects_same_owner_reclaim_from_different_installation ... ok [INFO] [stdout] test store::tests::claim_share_subdomain_heals_stale_owner_for_same_installation ... ok [INFO] [stdout] test store::tests::cleanup_removes_paused_shares_even_when_installation_is_fresh ... ok [INFO] [stdout] test store::tests::batch_sync_shares_accepts_model_health_checked_at_wire_format ... ok [INFO] [stdout] test store::tests::claim_share_subdomain_accepts_minimal_claim_signature ... ok [INFO] [stdout] test store::tests::claim_share_subdomain_accepts_valid_signature_and_rejects_replay_and_tamper ... ok [INFO] [stdout] test store::tests::batch_sync_share_request_logs_requires_valid_signature ... ok [INFO] [stdout] test store::tests::batch_sync_shares_requires_valid_signature ... ok [INFO] [stdout] test store::tests::cleanup_removes_stale_clients_even_with_active_routes ... ok [INFO] [stdout] test store::tests::dashboard_snapshot_counts_tunnel_only_installations_on_map ... ok [INFO] [stdout] test store::tests::cleanup_removes_stale_clients_without_active_routes ... ok [INFO] [stdout] test store::tests::email_layout_sections_carry_their_own_width ... ok [INFO] [stdout] test store::tests::existing_share_market_settings_patch_keeps_owner_email_as_market_delegate ... ok [INFO] [stdout] test store::tests::dashboard_snapshot_does_not_count_paused_share_as_active ... ok [INFO] [stdout] test store::tests::dashboard_operational_summary_keeps_client_online_when_only_share_route_missing ... ok [INFO] [stdout] test store::tests::client_tunnel_cannot_change_installation_owner ... ok [INFO] [stdout] test store::tests::dashboard_market_linked_share_includes_runtime_states ... ok [INFO] [stdout] test store::tests::dashboard_includes_client_with_only_a_payout_profile ... ok [INFO] [stdout] test store::tests::dashboard_operational_summary_marks_client_tunnel_offline_independently_of_shares ... ok [INFO] [stdout] test store::tests::dashboard_snapshot_exposes_market_links_without_acl_emails ... ok [INFO] [stdout] test store::tests::dashboard_snapshot_excludes_offline_clients_from_map_counts ... ok [INFO] [stdout] test store::tests::dashboard_share_market_sale_links_only_explicit_share_market ... ok [INFO] [stdout] test store::tests::dashboard_snapshot_aggregates_inflight_requests_across_installation_shares ... ok [INFO] [stdout] test store::tests::dashboard_uses_cached_share_market_listing_status ... ok [INFO] [stdout] test store::tests::dashboard_snapshot_includes_recent_model_health_checks ... ok [INFO] [stdout] test store::tests::dashboard_snapshot_uses_client_tunnel_health_when_installation_has_no_shares ... ok [INFO] [stdout] test store::tests::issue_lease_bad_signature_does_not_delete_existing_lease ... ok [INFO] [stdout] test store::tests::default_user_api_token_is_unique_resolvable_and_resettable ... ok [INFO] [stdout] test store::tests::is_market_subdomain_matches_registered_markets_only ... ok [INFO] [stdout] test store::tests::guest_rate_limit_keys_on_ip_not_guest_id ... ok [INFO] [stdout] test store::tests::issue_lease_rejects_replayed_nonce_without_replacing_lease ... ok [INFO] [stdout] test store::tests::list_market_shares_excludes_share_market_sales ... ok [INFO] [stdout] test store::tests::market_runtime_filter_blocks_app_when_quota_block_not_expired_in_availability ... ok [INFO] [stdout] test store::tests::market_runtime_filter_ignores_stale_failed_models ... ok [INFO] [stdout] test store::tests::market_runtime_filter_keeps_app_when_any_current_model_is_healthy ... ok [INFO] [stdout] test store::tests::market_runtime_filter_keeps_app_when_quota_block_expired ... ok [INFO] [stdout] test store::tests::market_runtime_filter_keeps_app_when_quota_block_expired_in_availability ... ok [INFO] [stdout] test store::tests::market_runtime_filter_keeps_provider_without_model_keys ... ok [INFO] [stdout] test store::tests::market_runtime_filter_removes_app_for_quota_blocked_health ... ok [INFO] [stdout] test store::tests::market_runtime_filter_removes_current_model_after_three_failures ... ok [INFO] [stdout] test store::tests::list_market_shares_all_access_allows_future_market_email ... ok [INFO] [stdout] test store::tests::merge_market_logs_deduplicates_semantic_duplicate_with_different_request_id ... ok [INFO] [stdout] test store::tests::issue_market_lease_replaces_stale_market_lease_and_route ... ok [INFO] [stdout] test store::tests::issue_market_lease_uses_registered_market_subdomain ... ok [INFO] [stdout] test store::tests::list_market_shares_marks_online_by_subdomain ... ok [INFO] [stdout] test store::tests::issue_lease_allows_same_share_to_renew_existing_route ... ok [INFO] [stdout] test store::tests::image_generation_request_log_prune_keeps_recent_ten ... ok [INFO] [stdout] test store::tests::list_share_route_targets_only_returns_active_shares ... ok [INFO] [stdout] test store::tests::local_ux_telemetry_records_only_minimized_fields ... ok [INFO] [stdout] test store::tests::health_timeline_24h_groups_share_probe_minutes ... ok [INFO] [stdout] test store::tests::market_claude_alias_success_softens_prior_failures ... ok [INFO] [stdout] test store::tests::market_prompt_too_long_does_not_mark_claude_unavailable ... ok [INFO] [stdout] test store::tests::market_rate_limit_marks_claude_degraded_not_unavailable ... ok [INFO] [stdout] test store::tests::market_request_failure_is_market_local_and_not_global_health ... ok [INFO] [stdout] test store::tests::market_share_quota_block_overrides_stale_success_availability ... ok [INFO] [stdout] test store::tests::resend_from_address_adds_default_display_name_for_plain_email ... ok [INFO] [stdout] test store::tests::resend_from_address_preserves_formatted_sender ... ok [INFO] [stdout] test store::tests::resend_from_address_strips_newlines ... ok [INFO] [stdout] test store::tests::resend_from_address_uses_configured_display_name ... ok [INFO] [stdout] test store::tests::older_model_health_check_does_not_roll_back_state ... ok [INFO] [stdout] test store::tests::owner_cannot_patch_share_owner_even_when_target_is_shared ... ok [INFO] [stdout] test store::tests::market_dashboard_marks_only_market_unavailable_app_red ... ok [INFO] [stdout] test store::tests::older_runtime_snapshot_does_not_delete_newer_model_health_state ... ok [INFO] [stdout] test store::tests::self_reported_share_owner_must_match_installation_owner ... ok [INFO] [stdout] test store::tests::payout_profile_rejects_tampered_signature_and_replayed_nonce ... ok [INFO] [stdout] test store::tests::share_logs_need_recovery_for_empty_or_stale_logs ... ok [INFO] [stdout] test store::tests::share_market_dashboard_health_uses_market_online_fallback ... ok [INFO] [stdout] test store::tests::share_market_dashboard_status_aggregates_hosted_share_runtime ... ok [INFO] [stdout] test store::tests::online_minutes_24h_only_counts_successful_probe_minutes ... ok [INFO] [stdout] test store::tests::payout_profile_revision_and_tombstone_prevent_stale_restore ... ok [INFO] [stdout] test store::tests::share_market_settings_patch_keeps_owner_email_as_market_delegate ... ok [INFO] [stdout] test store::tests::owner_cannot_patch_share_owner_to_unshared_email ... ok [INFO] [stdout] test store::tests::market_dashboard_health_dots_or_merge_linked_share_minutes ... ok [INFO] [stdout] test store::tests::public_map_points_returns_total_client_count_alongside_deduplicated_points ... ok [INFO] [stdout] test store::tests::register_installation_does_not_return_existing_control_secret_without_signature ... ok [INFO] [stdout] test store::tests::register_installation_signed_recovery_returns_existing_control_secret ... ok [INFO] [stdout] test store::tests::register_market_upserts_same_email_and_rejects_subdomain_conflict ... ok [INFO] [stdout] test store::tests::runtime_snapshot_drops_model_health_for_unbound_apps ... ok [INFO] [stdout] test store::tests::runtime_snapshot_refreshes_share_usage_counters ... ok [INFO] [stdout] test store::tests::runtime_snapshot_removes_stale_model_health_state ... ok [INFO] [stdout] test store::tests::runtime_snapshot_purges_history_for_unbound_apps ... ok [INFO] [stdout] test store::tests::share_edit_pending_state_tracks_ack ... ok [INFO] [stdout] test store::tests::share_market_grant_rejects_token_market_sale ... ok [INFO] [stdout] test store::tests::renew_lease_extends_active_connection_without_replacing_route ... ok [INFO] [stdout] test store::tests::share_market_grant_requires_explicit_delegation_not_all_access ... ok [INFO] [stdout] test store::tests::share_runtime_refresh_accepts_signed_owner_request ... ok [INFO] [stdout] test store::tests::share_runtime_refresh_rejects_subdomain_mismatch ... ok [INFO] [stdout] test store::tests::verification_code_email_block_is_translation_resistant ... ok [INFO] [stdout] test tests::filter_registered_route_targets_only_keeps_active_subdomains ... ok [INFO] [stdout] test store::tests::share_usage_by_app_merges_market_and_share_logs_by_request ... ok [INFO] [stdout] test store::tests::share_usage_by_email_defaults_to_rolling_24h ... ok [INFO] [stdout] test store::tests::share_usage_by_email_is_public_app_scoped_and_limited_to_acl_emails ... ok [INFO] [stdout] test store::tests::share_usage_by_email_uses_market_request_logs_for_market_usage ... ok [INFO] [stdout] test store::tests::shared_email_can_view_share_read_only_in_dashboard ... ok [INFO] [stdout] test store::tests::upsert_share_requires_one_matching_provider_binding ... ok [INFO] [stdout] test store::tests::stale_market_failures_do_not_keep_claude_red ... ok [INFO] [stdout] test store::tests::shared_email_cannot_create_share_settings_edit ... ok [INFO] [stdout] test store::tests::unshared_email_cannot_create_share_settings_edit ... ok [INFO] [stdout] test store::tests::user_api_token_share_invoke_acl_allows_any_user_for_free_share ... ok [INFO] [stdout] test store::tests::upsert_share_preserves_other_installation_shares_and_logs ... ok [INFO] [stdout] test store::tests::upsert_share_rejects_stale_config_revision_and_preserves_settings ... ok [INFO] [stdout] test store::tests::user_api_token_share_invoke_acl_is_app_scoped_when_available ... ok [INFO] [stdout] test store::tests::user_api_token_share_invoke_acl_allows_owner_and_shared_email ... ok [INFO] [stdout] test store::tests::online_minutes_24h_is_capped_to_one_day ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 222 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 45.05s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6", kill_on_drop: false }` [INFO] [stdout] 6e50b1524eee8b96f56b7fe13412cb2feb93d8ba69d7fe06a67da3471e087aa6