[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
