[INFO] cloning repository https://github.com/David610/singbox-vpn [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/David610/singbox-vpn" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDavid610%2Fsingbox-vpn", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDavid610%2Fsingbox-vpn'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 644fb89d3472dbb2d9d0043745093309cc9f5e77 [INFO] testing David610/singbox-vpn against 1.99.0-beta.8 for beta-1.100-4 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDavid610%2Fsingbox-vpn" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/David610/singbox-vpn [INFO] finished tweaking git repo https://github.com/David610/singbox-vpn [INFO] tweaked toml for git repo https://github.com/David610/singbox-vpn written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/David610/singbox-vpn 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 git repo https://github.com/David610/singbox-vpn 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] warning: apps/admin/Cargo.toml: file `/workspace/builds/worker-4-tc1/source/apps/admin/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `bin` target `vpn` [INFO] [stderr] * `bin` target `vpn-admin` [INFO] [stderr] warning: `admin` (manifest) generated 1 warning [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded toml v1.1.6+spec-1.1.0 [INFO] [stderr] Downloaded wiremock v0.6.5 [INFO] [stderr] Downloaded yoke-derive v0.8.3 [INFO] [stderr] Downloaded hyper-rustls v0.27.10 [INFO] [stderr] Downloaded predicates v3.1.4 [INFO] [stderr] Downloaded predicates-core v1.0.10 [INFO] [stderr] Downloaded qrcode v0.14.1 [INFO] [stderr] Downloaded assert_cmd v2.2.2 [INFO] [stderr] Downloaded predicates-tree v1.0.13 [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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32 [INFO] running `Command { std: "docker" "start" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32", 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" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32" "/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" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32", 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" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] warning: apps/admin/Cargo.toml: file `/opt/rustwide/workdir/apps/admin/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `bin` target `vpn` [INFO] [stderr] * `bin` target `vpn-admin` [INFO] [stderr] warning: `admin` (manifest) generated 1 warning [INFO] [stderr] Compiling proc-macro2 v1.0.107 [INFO] [stderr] Compiling smallvec v1.15.2 [INFO] [stderr] Compiling serde_core v1.0.229 [INFO] [stderr] Compiling log v0.4.33 [INFO] [stderr] Compiling quote v1.0.47 [INFO] [stderr] Compiling http v1.5.0 [INFO] [stderr] Compiling typenum v1.20.1 [INFO] [stderr] Compiling serde_json v1.0.151 [INFO] [stderr] Compiling find-msvc-tools v0.1.13 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling futures-task v0.3.34 [INFO] [stderr] Compiling socket2 v0.6.5 [INFO] [stderr] Compiling mio v1.2.2 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling zerocopy v0.8.56 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling winnow v1.0.4 [INFO] [stderr] Compiling cc v1.4.7 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling futures-util v0.3.34 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling const-oid v0.10.2 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling toml_parser v1.1.3+spec-1.1.0 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling ipnet v2.12.2 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling toml_writer v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling clap_builder v4.6.7 [INFO] [stderr] Compiling rustversion v1.0.23 [INFO] [stderr] Compiling rustls v0.23.45 [INFO] [stderr] Compiling regex-syntax v0.8.11 [INFO] [stderr] Compiling syn v3.0.3 [INFO] [stderr] Compiling syn v2.0.119 [INFO] [stderr] Compiling http-body v1.1.0 [INFO] [stderr] Compiling http-body-util v0.1.4 [INFO] [stderr] Compiling getrandom v0.4.3 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling hybrid-array v0.4.14 [INFO] [stderr] Compiling thread_local v1.1.10 [INFO] [stderr] Compiling filetime v0.2.29 [INFO] [stderr] Compiling qrcode v0.14.1 [INFO] [stderr] Compiling time v0.3.55 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling block-buffer v0.12.1 [INFO] [stderr] Compiling crypto-common v0.2.2 [INFO] [stderr] Compiling regex-automata v0.4.18 [INFO] [stderr] Compiling digest v0.11.3 [INFO] [stderr] Compiling sha2 v0.11.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling xattr v1.6.1 [INFO] [stderr] Compiling tar v0.4.46 [INFO] [stderr] Compiling toml_datetime v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling serde_spanned v1.1.1 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling toml v1.1.6+spec-1.1.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rustls-webpki v0.103.15 [INFO] [stderr] Compiling synstructure v0.14.0 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling rand v0.8.7 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling zerofrom-derive v0.1.8 [INFO] [stderr] Compiling yoke-derive v0.8.3 [INFO] [stderr] Compiling tokio-macros v2.7.2 [INFO] [stderr] Compiling zerovec-derive v0.11.6 [INFO] [stderr] Compiling displaydoc v0.2.7 [INFO] [stderr] Compiling serde_derive v1.0.229 [INFO] [stderr] Compiling thiserror-impl v2.0.20 [INFO] [stderr] Compiling clap_derive v4.6.7 [INFO] [stderr] Compiling async-trait v0.1.92 [INFO] [stderr] Compiling axum-core v0.4.5 [INFO] [stderr] Compiling tokio v1.53.1 [INFO] [stderr] Compiling zerofrom v0.1.8 [INFO] [stderr] Compiling yoke v0.8.3 [INFO] [stderr] Compiling thiserror v2.0.20 [INFO] [stderr] Compiling zerotrie v0.2.5 [INFO] [stderr] Compiling zerovec v0.11.8 [INFO] [stderr] Compiling clap v4.6.7 [INFO] [stderr] Compiling tinystr v0.8.4 [INFO] [stderr] Compiling potential_utf v0.1.6 [INFO] [stderr] Compiling icu_collections v2.3.0 [INFO] [stderr] Compiling icu_locale_core v2.3.0 [INFO] [stderr] Compiling icu_provider v2.3.1 [INFO] [stderr] Compiling icu_normalizer v2.3.0 [INFO] [stderr] Compiling icu_properties v2.3.0 [INFO] [stderr] Compiling serde v1.0.229 [INFO] [stderr] Compiling provisioning-contract v1.1.0 (/opt/rustwide/workdir/crates/provisioning-contract) [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling hyper v1.11.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling common v1.1.0 (/opt/rustwide/workdir/crates/common) [INFO] [stderr] Compiling tokio-rustls v0.26.5 [INFO] [stderr] Compiling compat-config v1.1.0 (/opt/rustwide/workdir/crates/compat-config) [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling axum v0.7.9 [INFO] [stderr] Compiling hyper-rustls v0.27.10 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling admin v1.1.0 (/opt/rustwide/workdir/apps/admin) [INFO] [stderr] Compiling provisioning-agent v1.1.0 (/opt/rustwide/workdir/apps/provisioning-agent) [INFO] [stderr] Compiling subscription v1.1.0 (/opt/rustwide/workdir/services/subscription) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 26s [INFO] running `Command { std: "docker" "inspect" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32", 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" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] warning: apps/admin/Cargo.toml: file `/opt/rustwide/workdir/apps/admin/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `bin` target `vpn` [INFO] [stderr] * `bin` target `vpn-admin` [INFO] [stderr] warning: `admin` (manifest) generated 1 warning [INFO] [stderr] Compiling futures-sink v0.3.34 [INFO] [stderr] Compiling regex-syntax v0.8.11 [INFO] [stderr] Compiling aho-corasick v1.1.5 [INFO] [stderr] Compiling futures-macro v0.3.34 [INFO] [stderr] Compiling futures-io v0.3.34 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling futures-channel v0.3.34 [INFO] [stderr] Compiling tokio-util v0.7.19 [INFO] [stderr] Compiling predicates-core v1.0.10 [INFO] [stderr] Compiling pin-project-internal v1.1.13 [INFO] [stderr] Compiling difflib v0.4.0 [INFO] [stderr] Compiling normalize-line-endings v0.3.0 [INFO] [stderr] Compiling assert_cmd v2.2.2 [INFO] [stderr] Compiling termtree v0.5.1 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling predicates-tree v1.0.13 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling deadpool-runtime v0.1.4 [INFO] [stderr] Compiling assert-json-diff v2.0.2 [INFO] [stderr] Compiling compat-config v1.1.0 (/opt/rustwide/workdir/crates/compat-config) [INFO] [stderr] Compiling deadpool v0.12.3 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling rand v0.9.5 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling h2 v0.4.19 [INFO] [stderr] Compiling futures-util v0.3.34 [INFO] [stderr] Compiling float-cmp v0.10.0 [INFO] [stderr] Compiling pin-project v1.1.13 [INFO] [stderr] Compiling provisioning-contract v1.1.0 (/opt/rustwide/workdir/crates/provisioning-contract) [INFO] [stderr] Compiling proptest v1.11.0 [INFO] [stderr] Compiling regex-automata v0.4.18 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling axum-core v0.4.5 [INFO] [stderr] Compiling tower v0.4.13 [INFO] [stderr] Compiling futures-executor v0.3.34 [INFO] [stderr] Compiling common v1.1.0 (/opt/rustwide/workdir/crates/common) [INFO] [stderr] Compiling futures v0.3.34 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling hyper v1.11.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling regex v1.13.1 [INFO] [stderr] Compiling bstr v1.13.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling predicates v3.1.4 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling admin v1.1.0 (/opt/rustwide/workdir/apps/admin) [INFO] [stderr] Compiling axum v0.7.9 [INFO] [stderr] Compiling hyper-rustls v0.27.10 [INFO] [stderr] Compiling wiremock v0.6.5 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling provisioning-agent v1.1.0 (/opt/rustwide/workdir/apps/provisioning-agent) [INFO] [stderr] Compiling subscription v1.1.0 (/opt/rustwide/workdir/services/subscription) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 05s [INFO] running `Command { std: "docker" "inspect" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32", 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" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] warning: apps/admin/Cargo.toml: file `/opt/rustwide/workdir/apps/admin/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `bin` target `vpn` [INFO] [stderr] * `bin` target `vpn-admin` [INFO] [stderr] warning: `admin` (manifest) generated 1 warning [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/vpn-128bc2008cae886d) [INFO] [stdout] [INFO] [stdout] running 107 tests [INFO] [stdout] test doctor_coverage_tests::l1_l4_failed_l5_l6_inconclusive_still_reports_both_independently ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_passed_l5_l6_inconclusive_is_never_reported_as_passed_or_not_run ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_passed_l5_l6_passed_is_the_only_full_health_claim ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_passed_l5_l6_failed ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_passed_l5_l6_not_run ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_failed_l5_l6_not_run ... ok [INFO] [stdout] test hostname_resolution_tests::all_attempts_fail_is_unresolved_with_bounded_attempt_count ... ok [INFO] [stdout] test hostname_resolution_tests::persistent_failure_increments_failures_exactly_once ... ok [INFO] [stdout] test hostname_resolution_tests::retry_attempts_are_bounded_never_unbounded ... ok [INFO] [stdout] test hostname_resolution_tests::succeeds_on_first_attempt ... ok [INFO] [stdout] test hostname_resolution_tests::first_attempt_fails_second_succeeds_reports_transient_recovery ... ok [INFO] [stdout] test ipv6_posture_tests::aaaa_present_and_egress_confirmed_broken_is_fatal ... ok [INFO] [stdout] test hostname_resolution_tests::resolved_addresses_still_classify_v4_and_v6_families_correctly ... ok [INFO] [stdout] test hostname_resolution_tests::zero_addresses_after_retry_is_unresolved ... ok [INFO] [stdout] test ipv6_posture_tests::aaaa_present_and_egress_confirmed_working_is_ok_and_non_fatal ... ok [INFO] [stdout] test ipv6_posture_tests::aaaa_present_but_probe_unavailable_is_inconclusive_not_fatal ... ok [INFO] [stdout] test ipv6_posture_tests::ipv4_only_host_no_aaaa_is_never_fatal_regardless_of_probe_outcome ... ok [INFO] [stdout] test doctor_coverage_tests::protocol_check_result_label_is_exhaustively_defined ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_failed_l5_l6_passed_does_not_imply_l1_l4_ok ... ok [INFO] [stdout] test lease_pool::tests::rejects_malformed_duplicate_or_colliding_input ... ok [INFO] [stdout] test lease_pool::tests::rotation_replaces_secret_and_is_idempotent ... ok [INFO] [stdout] test peer_credential_cli_tests::a_malformed_uuid_is_refused_with_an_actionable_message ... ok [INFO] [stdout] test ipv6_posture_tests::reality_pass_is_not_undermined_by_ipv4_only_ipv6_diagnostic ... ok [INFO] [stdout] test external_authorization::tests::rejects_credential_id_and_uuid_collisions_across_owners ... ok [INFO] [stdout] test lease_pool::tests::shrinking_the_pool_removes_slot_users_only ... ok [INFO] [stdout] test lease_pool::tests::creates_pseudonymous_expiring_slot_users_and_keeps_others ... ok [INFO] [stdout] test external_authorization::tests::ab_removal_restart_and_revocation_cannot_resurrect_a ... ok [INFO] [stdout] test external_authorization::tests::omission_and_revocation_fail_closed_without_touching_native ... ok [INFO] [stdout] test lease_pool::tests::compatibility_overlap_and_revocation_project_fail_closed ... ok [INFO] [stdout] test peer_credential_cli_tests::a_password_for_a_vless_reality_peer_is_refused_not_coerced ... ok [INFO] [stdout] test peer_credential_cli_tests::a_new_operator_user_is_served_the_credentials_it_is_given ... ok [INFO] [stdout] test peer_credential_cli_tests::a_uuid_for_a_hysteria2_peer_is_refused ... ok [INFO] [stdout] test peer_credential_cli_tests::a_uuid_is_accepted_for_a_vless_reality_peer ... ok [INFO] [stdout] test lease_pool::tests::authorization_metadata_projects_into_the_authoritative_user_store ... ok [INFO] [stdout] test lock::tests::second_acquire_blocks_until_first_is_dropped ... ok [INFO] [stdout] test peer_credential_cli_tests::a_new_operator_user_is_not_locked_out_after_the_native_lease ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_failed_l5_l6_failed_both_shown ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_pct_handles_zero_max_without_dividing_by_zero ... ok [INFO] [stdout] test external_authorization::tests::replaces_only_external_ownership_and_supports_ab_rotation ... ok [INFO] [stdout] test pressure_diagnostics_tests::udp_memory_high_pressure_warns_never_fails ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_just_below_threshold_is_still_ok ... ok [INFO] [stdout] test pressure_diagnostics_tests::udp_memory_pct_handles_zero_pressure_threshold_without_dividing_by_zero ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_at_threshold_warns ... ok [INFO] [stdout] test pressure_diagnostics_tests::udp_memory_low_pressure_is_ok ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_high_utilization_warns_never_fails ... ok [INFO] [stdout] test peer_credential_cli_tests::an_empty_hysteria2_password_is_refused ... ok [INFO] [stdout] test peer_credential_cli_tests::rotating_a_new_operator_users_credentials_changes_what_the_server_renders ... ok [INFO] [stdout] test peer_credential_cli_tests::supplying_no_credential_names_the_flag_the_operator_needs ... ok [INFO] [stdout] test peer_credential_cli_tests::uuid_shape_check_accepts_a_real_uuid_and_rejects_pasted_junk ... ok [INFO] [stdout] test public_surface_tests::empty_and_malformed_lines_are_skipped_without_panicking ... ok [INFO] [stdout] test public_surface_tests::expected_singbox_vpn_listener_is_ok ... ok [INFO] [stdout] test public_surface_tests::expected_ssh_listener_is_ok ... ok [INFO] [stdout] test public_surface_tests::sshd_port_directive_parses_first_match_case_insensitively ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_low_utilization_is_ok ... ok [INFO] [stdout] test public_surface_tests::port_conflict_expected_port_served_by_wrong_process_is_fail ... ok [INFO] [stdout] test pressure_diagnostics_tests::format_thousands_groups_correctly ... ok [INFO] [stdout] test public_surface_tests::sshd_port_directive_none_when_absent ... ok [INFO] [stdout] test public_surface_tests::firewall_ownership_none_when_file_missing ... ok [INFO] [stdout] test public_surface_tests::is_singbox_vpn_process_matches_truncated_comm_names ... ok [INFO] [stdout] test public_surface_tests::loopback_only_unrelated_listener_is_not_reported_at_all ... ok [INFO] [stdout] test reality_selftest_classification_tests::a_real_key_mismatch_does_not_reliably_produce_either_client_side_string ... ok [INFO] [stdout] test public_surface_tests::parses_real_shaped_tcp_ss_output_including_process_name ... ok [INFO] [stdout] test reality_selftest_classification_tests::client_side_rejection_strings_are_still_detected ... ok [INFO] [stdout] test public_surface_tests::parses_udp_output_without_a_users_field_when_not_root ... ok [INFO] [stdout] test public_surface_tests::subscription_backend_on_loopback_is_ok ... ok [INFO] [stdout] test reality_selftest_classification_tests::fenced_loopback_rejection_is_still_detected ... ok [INFO] [stdout] test public_surface_tests::firewall_ownership_parses_key_value_env_file ... ok [INFO] [stdout] test public_surface_tests::unrelated_process_on_a_non_loopback_port_is_warn_not_fail ... ok [INFO] [stdout] test reality_selftest_classification_tests::empty_client_stderr_and_no_journal_hit_stays_inconclusive ... ok [INFO] [stdout] test public_surface_tests::subscription_backend_exposed_publicly_is_fail ... ok [INFO] [stdout] test public_surface_tests::never_closes_or_mutates_anything_by_construction ... ok [INFO] [stdout] test public_surface_tests::unidentified_process_on_a_non_loopback_port_is_warn_never_fail ... ok [INFO] [stdout] test public_surface_tests::expected_listener_with_unknown_process_is_still_ok ... ok [INFO] [stdout] test reality_selftest_classification_tests::unrelated_public_scanner_rejection_is_not_attributed_to_selftest ... ok [INFO] [stdout] test public_surface_tests::internal_singbox_vpn_process_on_an_unexpected_public_port_is_fail ... ok [INFO] [stdout] test public_surface_tests::parses_bracketed_ipv6_addresses_and_strips_brackets ... ok [INFO] [stdout] test service::tests::is_failed_false_when_systemctl_reports_not_failed ... ok [INFO] [stdout] test service::tests::unit_tests_never_default_to_the_host_systemctl ... ok [INFO] [stdout] test service::tests::is_failed_true_when_systemctl_reports_failed ... ok [INFO] [stdout] test udp_probe_tests::build_dns_query_contains_labels ... ok [INFO] [stdout] test service::tests::is_unit_installed_true_when_systemctl_reports_loaded ... ok [INFO] [stdout] test service::tests::reload_and_verify_fails_when_reload_command_fails ... ok [INFO] [stdout] test udp_probe_tests::cert_expiry_days_returns_none_for_missing_file ... ok [INFO] [stdout] test service::tests::last_result_returns_the_raw_systemd_result_keyword ... ok [INFO] [stdout] test service::tests::last_result_is_none_when_the_value_is_empty ... ok [INFO] [stdout] test udp_probe_tests::probe_singbox_binary_versions_skips_nonexistent_paths_and_dedupes ... ok [INFO] [stdout] test service::tests::is_unit_installed_still_appends_service_for_a_bare_name ... ok [INFO] [stdout] test service::tests::is_unit_installed_uses_a_dotted_unit_name_verbatim_for_a_timer ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_hides_a_long_hex_key_or_hash ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_hides_a_base64url_style_token ... ok [INFO] [stdout] test service::tests::restart_count_parses_nrestarts ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_hides_a_vless_uuid ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_leaves_ordinary_log_text_and_short_words_untouched ... ok [INFO] [stdout] test udp_probe_tests::singbox_version_consistency_ok_when_versions_match ... ok [INFO] [stdout] test udp_probe_tests::singbox_version_consistency_silent_on_single_binary ... ok [INFO] [stdout] test udp_probe_tests::singbox_version_consistency_warns_and_names_configured_binary_when_versions_differ ... ok [INFO] [stdout] test udp_probe_tests::run_udp_probe_candidates_with_probe_logic ... ok [INFO] [stdout] test service::tests::is_unit_installed_false_when_systemctl_binary_missing ... ok [INFO] [stdout] test service::tests::is_available_is_false_for_nonexistent_binary ... ok [INFO] [stdout] test service::tests::reload_and_verify_fails_when_service_not_active_after_reload ... ok [INFO] [stdout] test service::tests::restart_count_is_none_when_systemctl_is_unavailable ... ok [INFO] [stdout] test service::tests::timer_next_elapse_returns_systemds_own_formatted_timestamp ... ok [INFO] [stdout] test service::tests::override_names_the_exact_service_manager_and_never_falls_back_to_path ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_preserves_non_ascii_text_around_a_redacted_token ... ok [INFO] [stdout] test udp_probe_tests::cert_expiry_days_reports_negative_days_for_an_already_expired_cert ... ok [INFO] [stdout] test service::tests::reload_and_verify_succeeds_when_service_comes_up_healthy ... ok [INFO] [stderr] ........+..+.+++++++++++++++++++++++++++++++++++++++*...+.+..+...+.........+.+..+++++++++++++++++++++++++++++++++++++++*...............+.........+......+....+......+..+...+.......+..+.+..+...............+.............+............+...+......+......+..+...+.........+.+............+......+..+.......+..+......+.......+........+...+............+....+...+............+.....+......+...+....+..+.+.....+....+......+...+............+...+......+.....+................+.........+.....+...+......+......+......+...+.........+......+.+...+...+............+......+...........+...+.......+...+...+...+....................+..........+............+..+...+..........++++++ [INFO] [stderr] ..+..........+...+..+...+.......+..............+.+...+...+++++++++++++++++++++++++++++++++++++++*.+......+...+..+...+.+..............+.+..+....+++++++++++++++++++++++++++++++++++++++*....+....+............+..+.......+.....+...+.+..+....+...............+.....+.+..+.+............+........+....++++++ [INFO] [stderr] ----- [INFO] [stdout] test udp_probe_tests::cert_expiry_days_reports_positive_days_for_a_freshly_issued_cert ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 107 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/vpn_admin-c823fcee6bc86226) [INFO] [stdout] [INFO] [stdout] running 107 tests [INFO] [stdout] test doctor_coverage_tests::l1_l4_passed_l5_l6_passed_is_the_only_full_health_claim ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_failed_l5_l6_failed_both_shown ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_failed_l5_l6_not_run ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_failed_l5_l6_passed_does_not_imply_l1_l4_ok ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_passed_l5_l6_failed ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_passed_l5_l6_not_run ... ok [INFO] [stdout] test hostname_resolution_tests::all_attempts_fail_is_unresolved_with_bounded_attempt_count ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_passed_l5_l6_inconclusive_is_never_reported_as_passed_or_not_run ... ok [INFO] [stdout] test doctor_coverage_tests::protocol_check_result_label_is_exhaustively_defined ... ok [INFO] [stdout] test hostname_resolution_tests::persistent_failure_increments_failures_exactly_once ... ok [INFO] [stdout] test doctor_coverage_tests::l1_l4_failed_l5_l6_inconclusive_still_reports_both_independently ... ok [INFO] [stdout] test ipv6_posture_tests::aaaa_present_and_egress_confirmed_broken_is_fatal ... ok [INFO] [stdout] test hostname_resolution_tests::first_attempt_fails_second_succeeds_reports_transient_recovery ... ok [INFO] [stdout] test ipv6_posture_tests::aaaa_present_and_egress_confirmed_working_is_ok_and_non_fatal ... ok [INFO] [stdout] test ipv6_posture_tests::aaaa_present_but_probe_unavailable_is_inconclusive_not_fatal ... ok [INFO] [stdout] test ipv6_posture_tests::ipv4_only_host_no_aaaa_is_never_fatal_regardless_of_probe_outcome ... ok [INFO] [stdout] test ipv6_posture_tests::reality_pass_is_not_undermined_by_ipv4_only_ipv6_diagnostic ... ok [INFO] [stdout] test external_authorization::tests::omission_and_revocation_fail_closed_without_touching_native ... ok [INFO] [stdout] test hostname_resolution_tests::resolved_addresses_still_classify_v4_and_v6_families_correctly ... ok [INFO] [stdout] test lease_pool::tests::compatibility_overlap_and_revocation_project_fail_closed ... ok [INFO] [stdout] test lease_pool::tests::creates_pseudonymous_expiring_slot_users_and_keeps_others ... ok [INFO] [stdout] test external_authorization::tests::ab_removal_restart_and_revocation_cannot_resurrect_a ... ok [INFO] [stdout] test lease_pool::tests::rotation_replaces_secret_and_is_idempotent ... ok [INFO] [stdout] test lease_pool::tests::shrinking_the_pool_removes_slot_users_only ... ok [INFO] [stdout] test peer_credential_cli_tests::a_new_operator_user_is_served_the_credentials_it_is_given ... ok [INFO] [stdout] test lock::tests::second_acquire_blocks_until_first_is_dropped ... ok [INFO] [stdout] test peer_credential_cli_tests::a_new_operator_user_is_not_locked_out_after_the_native_lease ... ok [INFO] [stdout] test peer_credential_cli_tests::a_uuid_is_accepted_for_a_vless_reality_peer ... ok [INFO] [stdout] test peer_credential_cli_tests::uuid_shape_check_accepts_a_real_uuid_and_rejects_pasted_junk ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_at_threshold_warns ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_high_utilization_warns_never_fails ... ok [INFO] [stdout] test hostname_resolution_tests::retry_attempts_are_bounded_never_unbounded ... ok [INFO] [stdout] test hostname_resolution_tests::succeeds_on_first_attempt ... ok [INFO] [stdout] test hostname_resolution_tests::zero_addresses_after_retry_is_unresolved ... ok [INFO] [stdout] test external_authorization::tests::replaces_only_external_ownership_and_supports_ab_rotation ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_just_below_threshold_is_still_ok ... ok [INFO] [stdout] test lease_pool::tests::authorization_metadata_projects_into_the_authoritative_user_store ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_low_utilization_is_ok ... ok [INFO] [stdout] test pressure_diagnostics_tests::conntrack_pct_handles_zero_max_without_dividing_by_zero ... ok [INFO] [stdout] test external_authorization::tests::rejects_credential_id_and_uuid_collisions_across_owners ... ok [INFO] [stdout] test lease_pool::tests::rejects_malformed_duplicate_or_colliding_input ... ok [INFO] [stdout] test peer_credential_cli_tests::rotating_a_new_operator_users_credentials_changes_what_the_server_renders ... ok [INFO] [stdout] test peer_credential_cli_tests::a_malformed_uuid_is_refused_with_an_actionable_message ... ok [INFO] [stdout] test peer_credential_cli_tests::supplying_no_credential_names_the_flag_the_operator_needs ... ok [INFO] [stdout] test peer_credential_cli_tests::a_password_for_a_vless_reality_peer_is_refused_not_coerced ... ok [INFO] [stdout] test peer_credential_cli_tests::a_uuid_for_a_hysteria2_peer_is_refused ... ok [INFO] [stdout] test peer_credential_cli_tests::an_empty_hysteria2_password_is_refused ... ok [INFO] [stdout] test pressure_diagnostics_tests::udp_memory_pct_handles_zero_pressure_threshold_without_dividing_by_zero ... ok [INFO] [stdout] test public_surface_tests::empty_and_malformed_lines_are_skipped_without_panicking ... ok [INFO] [stdout] test public_surface_tests::firewall_ownership_none_when_file_missing ... ok [INFO] [stdout] test pressure_diagnostics_tests::udp_memory_low_pressure_is_ok ... ok [INFO] [stdout] test pressure_diagnostics_tests::format_thousands_groups_correctly ... ok [INFO] [stdout] test pressure_diagnostics_tests::udp_memory_high_pressure_warns_never_fails ... ok [INFO] [stdout] test public_surface_tests::expected_listener_with_unknown_process_is_still_ok ... ok [INFO] [stdout] test public_surface_tests::expected_singbox_vpn_listener_is_ok ... ok [INFO] [stdout] test public_surface_tests::expected_ssh_listener_is_ok ... ok [INFO] [stdout] test public_surface_tests::firewall_ownership_parses_key_value_env_file ... ok [INFO] [stdout] test public_surface_tests::internal_singbox_vpn_process_on_an_unexpected_public_port_is_fail ... ok [INFO] [stdout] test public_surface_tests::is_singbox_vpn_process_matches_truncated_comm_names ... ok [INFO] [stdout] test public_surface_tests::loopback_only_unrelated_listener_is_not_reported_at_all ... ok [INFO] [stdout] test public_surface_tests::parses_bracketed_ipv6_addresses_and_strips_brackets ... ok [INFO] [stdout] test public_surface_tests::port_conflict_expected_port_served_by_wrong_process_is_fail ... ok [INFO] [stdout] test public_surface_tests::sshd_port_directive_none_when_absent ... ok [INFO] [stdout] test public_surface_tests::sshd_port_directive_parses_first_match_case_insensitively ... ok [INFO] [stdout] test public_surface_tests::subscription_backend_exposed_publicly_is_fail ... ok [INFO] [stdout] test public_surface_tests::unidentified_process_on_a_non_loopback_port_is_warn_never_fail ... ok [INFO] [stdout] test reality_selftest_classification_tests::a_real_key_mismatch_does_not_reliably_produce_either_client_side_string ... ok [INFO] [stdout] test reality_selftest_classification_tests::empty_client_stderr_and_no_journal_hit_stays_inconclusive ... ok [INFO] [stdout] test reality_selftest_classification_tests::unrelated_public_scanner_rejection_is_not_attributed_to_selftest ... ok [INFO] [stdout] test public_surface_tests::never_closes_or_mutates_anything_by_construction ... ok [INFO] [stdout] test public_surface_tests::subscription_backend_on_loopback_is_ok ... ok [INFO] [stdout] test public_surface_tests::unrelated_process_on_a_non_loopback_port_is_warn_not_fail ... ok [INFO] [stdout] test public_surface_tests::parses_real_shaped_tcp_ss_output_including_process_name ... ok [INFO] [stdout] test reality_selftest_classification_tests::client_side_rejection_strings_are_still_detected ... ok [INFO] [stdout] test public_surface_tests::parses_udp_output_without_a_users_field_when_not_root ... ok [INFO] [stdout] test reality_selftest_classification_tests::fenced_loopback_rejection_is_still_detected ... ok [INFO] [stdout] test service::tests::is_failed_true_when_systemctl_reports_failed ... ok [INFO] [stdout] test service::tests::is_failed_false_when_systemctl_reports_not_failed ... ok [INFO] [stdout] test service::tests::unit_tests_never_default_to_the_host_systemctl ... ok [INFO] [stdout] test udp_probe_tests::build_dns_query_contains_labels ... ok [INFO] [stdout] test service::tests::restart_count_parses_nrestarts ... ok [INFO] [stdout] test service::tests::timer_next_elapse_returns_systemds_own_formatted_timestamp ... ok [INFO] [stdout] test udp_probe_tests::cert_expiry_days_returns_none_for_missing_file ... ok [INFO] [stdout] test udp_probe_tests::probe_singbox_binary_versions_skips_nonexistent_paths_and_dedupes ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_hides_a_base64url_style_token ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_hides_a_long_hex_key_or_hash ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_leaves_ordinary_log_text_and_short_words_untouched ... ok [INFO] [stdout] test service::tests::is_unit_installed_true_when_systemctl_reports_loaded ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_preserves_non_ascii_text_around_a_redacted_token ... ok [INFO] [stdout] test udp_probe_tests::redact_secrets_hides_a_vless_uuid ... ok [INFO] [stdout] test udp_probe_tests::run_udp_probe_candidates_with_probe_logic ... ok [INFO] [stdout] test service::tests::is_unit_installed_uses_a_dotted_unit_name_verbatim_for_a_timer ... ok [INFO] [stdout] test service::tests::is_unit_installed_still_appends_service_for_a_bare_name ... ok [INFO] [stdout] test service::tests::last_result_is_none_when_the_value_is_empty ... ok [INFO] [stdout] test udp_probe_tests::singbox_version_consistency_warns_and_names_configured_binary_when_versions_differ ... ok [INFO] [stdout] test service::tests::reload_and_verify_fails_when_reload_command_fails ... ok [INFO] [stdout] test udp_probe_tests::singbox_version_consistency_ok_when_versions_match ... ok [INFO] [stdout] test udp_probe_tests::singbox_version_consistency_silent_on_single_binary ... ok [INFO] [stdout] test service::tests::last_result_returns_the_raw_systemd_result_keyword ... ok [INFO] [stdout] test service::tests::is_unit_installed_false_when_systemctl_binary_missing ... ok [INFO] [stdout] test service::tests::is_available_is_false_for_nonexistent_binary ... ok [INFO] [stdout] test service::tests::restart_count_is_none_when_systemctl_is_unavailable ... ok [INFO] [stdout] test service::tests::reload_and_verify_fails_when_service_not_active_after_reload ... ok [INFO] [stdout] test udp_probe_tests::cert_expiry_days_reports_negative_days_for_an_already_expired_cert ... ok [INFO] [stderr] ....+...+...+.....+..........+.....+.......+.....+.+..+.......+..+....+.........+.....+......+.......+.........+.....+.+..+.+.....+....+..+...+...+.........+.........+....+.....+.......+...+........+++++++++++++++++++++++++++++++++++++++*.+....+........+++++++++++++++++++++++++++++++++++++++*....+....+...+..+.+......+........+......+....+..+.+.....+...+..........+..+...+..........+......+.....+....+..+..........+.....+.......+..+.+..+.+.....+......+....+..+...............+..........+.....+..........+..+...+.......+..+...+...+...++++++ [INFO] [stdout] test service::tests::override_names_the_exact_service_manager_and_never_falls_back_to_path ... ok [INFO] [stderr] .......+..+.+......+.....+...+......+.+......+..+.......+...+...+++++++++++++++++++++++++++++++++++++++*.+++++++++++++++++++++++++++++++++++++++*....+..+.+......+.....+.........+.+......+........+......+.........+.........+..........+..+...+.+......+......+..............+...++++++ [INFO] [stderr] ----- [INFO] [stdout] test service::tests::reload_and_verify_succeeds_when_service_comes_up_healthy ... ok [INFO] [stdout] test udp_probe_tests::cert_expiry_days_reports_positive_days_for_a_freshly_issued_cert ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 107 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s [INFO] [stdout] [INFO] [stderr] Running tests/cli.rs (/opt/rustwide/target/debug/deps/cli-5eb3b9b620bb5740) [INFO] [stdout] [INFO] [stdout] running 91 tests [INFO] [stdout] test command_mutates_state_check_does_not_block_config_validate_concurrently ... ok [INFO] [stdout] test concurrent_user_creates_do_not_lose_an_update ... ok [INFO] [stdout] test backup_refuses_to_clobber_a_preexisting_destination ... ok [INFO] [stdout] test authorization_mutation_is_fail_closed_without_live_singbox ... ok [INFO] [stdout] test apply_revision_rejects_a_malformed_document ... ok [INFO] [stdout] test config_validate_reports_invalid_on_corrupted_users_json ... ok [INFO] [stdout] test config_validate_reports_invalid_on_future_deployment_toml_schema ... ok [INFO] [stdout] test config_validate_reports_invalid_on_future_users_schema ... ok [INFO] [stdout] test config_validate_reports_migration_required_on_fresh_legacy_deployment_toml ... ok [INFO] [stdout] test apply_revision_end_to_end_applies_config_and_stamps_revision ... ok [INFO] [stdout] test doctor_always_prints_urltest_scope_disclaimer ... ok [INFO] [stdout] test doctor_client_and_telegram_never_claim_server_is_healthy_when_checks_failed ... ok [INFO] [stdout] test apply_revision_preserves_all_dynamic_state_types_simultaneously_static_config_untouched ... ok [INFO] [stdout] test a_missing_fake_systemctl_fails_closed_instead_of_using_path ... ok [INFO] [stdout] test config_migrate_refuses_corrupted_users_json_and_leaves_it_untouched ... ok [INFO] [stdout] test doctor_fails_on_unresolvable_public_hostname ... ok [INFO] [stdout] test doctor_json_emits_one_valid_json_object_with_stable_fields ... ok [INFO] [stdout] test doctor_json_rejects_combination_with_prose_only_output_modes ... ok [INFO] [stdout] test config_migrate_is_idempotent_and_validate_reports_ok_afterward ... ok [INFO] [stdout] test apply_revision_reload_failure_rolls_back_config_users_and_stamp ... ok [INFO] [stdout] test backup_then_restore_round_trips_the_current_versioned_users_envelope ... ok [INFO] [stdout] test config_migrate_preserves_existing_users_and_backs_up_users_json ... ok [INFO] [stdout] test authorization_backed_native_lease_renewal_uses_live_path_without_restart ... ok [INFO] [stdout] test cli_tests_cannot_reach_the_hosts_systemctl ... ok [INFO] [stdout] test apply_revision_reload_failure_rolls_back_full_dynamic_state_mix ... ok [INFO] [stdout] test credential_mutation_does_not_claim_blast_radius_when_not_reloaded_live ... ok [INFO] [stdout] test doctor_reports_ipv4_only_hostname_as_info_not_a_failure ... ok [INFO] [stdout] test doctor_reports_missing_singbox_binary_as_failure ... ok [INFO] [stdout] test every_binary_invocation_is_guarded ... ok [INFO] [stdout] test apply_revision_preserves_reserved_probe_confinement_and_c16_policy_across_reapply ... ok [INFO] [stdout] test backup_then_restore_round_trips_users ... ok [INFO] [stdout] test backup_then_restore_round_trips_hysteria2_obfuscation_password ... ok [INFO] [stdout] test doctor_report_output_writes_mode_0600_file ... ok [INFO] [stdout] test apply_revision_skips_a_stale_or_duplicate_revision_number ... ok [INFO] [stdout] test init_without_singbox_binary_fails_clearly ... ok [INFO] [stdout] test doctor_client_prints_interactive_checklist_and_never_claims_to_probe_the_device ... ok [INFO] [stdout] test doctor_report_redacts_secrets_and_includes_expected_sections ... ok [INFO] [stdout] test release_binary_exposes_package_version ... ok [INFO] [stdout] test doctor_rejects_wrong_reality_public_key_install_policy ... ok [INFO] [stdout] test doctor_coverage_line_distinguishes_not_run_from_failed_from_passed ... ok [INFO] [stdout] test doctor_l4_coherence_passes_after_init_and_render ... ok [INFO] [stdout] test doctor_l4_detects_on_disk_config_drift_from_current_key_files ... ok [INFO] [stdout] test doctor_l4_live_check_fails_when_running_subscription_process_is_stale ... ok [INFO] [stdout] test doctor_l4_live_check_passes_when_subscription_process_is_freshly_started ... ok [INFO] [stdout] test repair_fails_clearly_when_no_persistent_install_exists ... ok [INFO] [stdout] test repair_propagates_a_nonzero_exit_from_update_sh ... ok [INFO] [stdout] test repair_runs_the_located_update_script_with_repair_flag_and_propagates_success ... ok [INFO] [stdout] test doctor_telegram_prints_disclaimer_and_never_claims_russian_verification ... ok [INFO] [stdout] test reality_rotate_reports_not_run_when_no_active_user_exists ... ok [INFO] [stdout] test reality_rotate_replaces_public_key_and_succeeds ... ok [INFO] [stdout] test restore_never_widens_permissions_on_restored_secrets ... ok [INFO] [stdout] test init_rerun_without_rotate_preserves_existing_reality_key ... ok [INFO] [stdout] test restore_rejects_a_fifo_entry_without_hanging ... ok [INFO] [stdout] test reality_rotate_rolls_back_key_material_on_validation_failure ... ok [INFO] [stdout] test restore_rejects_a_partial_reality_keyset ... ok [INFO] [stdout] test reality_rotate_scopes_blast_radius_to_reality_only ... ok [INFO] [stdout] test render_config_never_claims_handshake_passed_when_selftest_could_not_run ... ok [INFO] [stdout] test render_config_require_applied_fails_when_reconciliation_could_not_be_applied ... ok [INFO] [stdout] test restore_rejects_archive_containing_a_symlink ... ok [INFO] [stdout] test restore_rejects_cryptographically_mismatched_reality_keys ... ok [INFO] [stdout] test render_config_applies_and_restarts_when_a_user_actually_changed ... ok [INFO] [stdout] test render_config_noop_reconcile_does_not_restart_singbox ... ok [INFO] [stdout] test render_config_require_applied_succeeds_on_true_noop ... ok [INFO] [stdout] test restore_of_differing_reality_key_restarts_subscription_service_too ... ok [INFO] [stdout] test rotate_token_does_not_claim_already_imported_profile_stops_connecting ... ok [INFO] [stdout] test static_revision_recovers_an_interrupted_apply_first ... ok [INFO] [stdout] test status_reports_user_counts_without_secrets ... ok [INFO] [stdout] test user_create_json_output_carries_the_experimental_vision_off_link_additively ... ok [INFO] [stdout] test user_create_json_output_has_no_server_secrets ... ok [INFO] [stdout] test each_credential_mutation_states_its_own_blast_radius has been running for over 60 seconds [INFO] [stdout] test full_user_lifecycle has been running for over 60 seconds [INFO] [stdout] test future_expiry_extension_does_not_restart_but_expiry_revocation_does has been running for over 60 seconds [INFO] [stdout] test render_config_repeated_timer_execution_is_idempotent has been running for over 60 seconds [INFO] [stdout] test user_create_json_output_is_unaffected_by_suppression ... ok [INFO] [stdout] test user_create_qr_prints_a_qr_code ... ok [INFO] [stdout] test static_revision_forbidden_role_change_is_rejected_fail_closed has been running for over 60 seconds [INFO] [stdout] test static_revision_is_idempotent has been running for over 60 seconds [INFO] [stdout] test static_revision_preserves_all_dynamic_state_and_applies_new_static_values has been running for over 60 seconds [INFO] [stdout] test render_config_repeated_timer_execution_is_idempotent ... ok [INFO] [stdout] test user_create_qr_shows_the_real_credential_when_not_suppressed ... ok [INFO] [stdout] test user_create_qr_suppresses_the_credential_when_env_var_set ... ok [INFO] [stdout] test static_revision_rejected_by_singbox_check_leaves_everything_unchanged has been running for over 60 seconds [INFO] [stdout] test static_revision_service_failure_rolls_back_static_and_runtime_config has been running for over 60 seconds [INFO] [stdout] test static_revision_stale_revision_is_not_applied has been running for over 60 seconds [INFO] [stdout] test static_revision_stale_revision_is_not_applied ... ok [INFO] [stdout] test version_prints_own_version ... ok [INFO] [stdout] test static_revision_unknown_field_or_invalid_value_rejects_entire_revision has been running for over 60 seconds [INFO] [stdout] test static_revision_preserves_all_dynamic_state_and_applies_new_static_values ... ok [INFO] [stdout] test user_create_json_stdout_is_one_document_and_progress_goes_to_stderr ... ok [INFO] [stdout] test static_revision_rejected_by_singbox_check_leaves_everything_unchanged ... ok [INFO] [stdout] test static_revision_service_failure_rolls_back_static_and_runtime_config ... ok [INFO] [stdout] test user_rotate_token_qr_suppresses_the_credential_when_env_var_set ... ok [INFO] [stdout] test user_qr_rotates_token_and_warns_it_is_new ... ok [INFO] [stdout] test static_revision_forbidden_role_change_is_rejected_fail_closed ... ok [INFO] [stdout] test user_create_reload_failure_restores_previous_working_config has been running for over 60 seconds [INFO] [stdout] test full_user_lifecycle ... ok [INFO] [stdout] test user_links_prints_raw_uris_independent_of_subscription_host ... ok [INFO] [stdout] test static_revision_is_idempotent ... ok [INFO] [stdout] test user_create_reload_failure_restores_previous_working_config ... ok [INFO] [stdout] test user_vision_off_experiment_toggles_only_that_users_flow ... ok [INFO] [stdout] test each_credential_mutation_states_its_own_blast_radius ... ok [INFO] [stdout] test static_revision_unknown_field_or_invalid_value_rejects_entire_revision ... ok [INFO] [stdout] test future_expiry_extension_does_not_restart_but_expiry_revocation_does ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 91 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 183.17s [INFO] [stdout] [INFO] [stderr] Running tests/relay_cli.rs (/opt/rustwide/target/debug/deps/relay_cli-07fc47c546b89611) [INFO] [stdout] [INFO] [stdout] running 15 tests [INFO] [stdout] test production_code_never_bypasses_the_role_aware_renderer ... ok [INFO] [stdout] test schema_v1_is_migration_required_and_migration_keeps_the_relay_role ... ok [INFO] [stdout] test peer_credential_from_stdin_never_appears_in_the_process_arguments ... ok [INFO] [stdout] test exit_user_links_are_unchanged_by_relay_support ... ok [INFO] [stdout] test user_links_on_a_relay_never_emit_the_first_hop_or_downgrade_a_relay_route ... ok [INFO] [stdout] test legacy_uuid_argument_still_works_and_warns_about_exposure ... ok [INFO] [stdout] test status_reports_identity_role_and_pairing_without_secrets ... ok [INFO] [stdout] test relay_render_config_applies_a_fail_closed_document ... ok [INFO] [stdout] test invalid_role_fails_every_command_clearly ... ok [INFO] [stdout] test peer_credential_rotation_accepts_stdin_and_refuses_empty_or_invalid_input_without_echo ... ok [INFO] [stdout] test exit_render_is_unchanged_across_migration_to_explicit_identity ... ok [INFO] [stdout] test relay_backup_restores_onto_the_same_relay_and_keeps_its_restrictions ... ok [INFO] [stdout] test restore_refuses_a_backup_from_another_role_or_node_and_changes_nothing ... ok [INFO] [stdout] test unpaired_relay_renders_reject_all_and_doctor_says_so ... ok [INFO] [stdout] test read_only_commands_never_print_either_credential_scope ... ok [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/common-0ac0b7c9f6dca2cd) [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.35s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test tests::duration_bucket_boundaries ... ok [INFO] [stdout] test framing::tests::decode_truncated_buffer_returns_none_not_panic ... ok [INFO] [stdout] test framing::tests::decode_rejects_oversized_host_len ... ok [INFO] [stdout] test framing::tests::encode_decode_roundtrip ... ok [INFO] [stdout] test tests::unix_seconds_monotonic_add ... ok [INFO] [stdout] test framing::tests::decode_rejects_unsupported_version ... ok [INFO] [stdout] test framing::tests::async_write_read_roundtrip ... ok [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/compat_config-cc2e91befa703579) [INFO] [stdout] test framing::tests::decode_never_panics_on_arbitrary_bytes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 181 tests [INFO] [stdout] test authorization::tests::duplicate_and_unbounded_overlap_are_rejected ... ok [INFO] [stdout] test authorization::tests::identifiers_are_typed_and_class_compatible ... ok [INFO] [stdout] test authorization::tests::sweep_line_accepts_sequential_rotation_and_rejects_true_triple_overlap ... ok [INFO] [stdout] test contract::tests::vision_off_endpoint_has_no_flow_and_production_endpoint_has_vision ... ok [INFO] [stdout] test credential_policy::tests::a_clock_behind_the_authority_still_honours_a_just_opened_window ... ok [INFO] [stdout] test contract::tests::document_advertises_exactly_the_configured_transports ... ok [INFO] [stdout] test credential_policy::tests::a_grant_whose_window_closed_before_revocation_stays_revoked ... ok [INFO] [stdout] test contract::tests::vision_off_is_only_advertised_when_the_per_user_opt_in_is_on ... ok [INFO] [stdout] test credential_policy::tests::an_already_expired_grant_cannot_contribute_to_a_new_overlap ... ok [INFO] [stdout] test credential_policy::tests::a_rotation_overlapping_by_exactly_the_bound_is_accepted ... ok [INFO] [stdout] test credential_policy::tests::a_rotation_overlapping_by_more_than_the_bound_is_refused ... ok [INFO] [stdout] test credential_policy::tests::classes_do_not_interfere_with_each_others_overlap_budget ... ok [INFO] [stdout] test credential_policy::tests::compat_lifetime_is_clamped_to_the_documented_policy ... ok [INFO] [stdout] test credential_policy::tests::overlap_of_disjoint_windows_is_zero ... ok [INFO] [stdout] test credential_policy::tests::principals_are_class_prefixed_and_opaque ... ok [INFO] [stdout] test credential_policy::tests::overlap_counts_the_shared_window_exactly ... ok [INFO] [stdout] test credential_policy::tests::revocation_is_unconditional_inside_the_window ... ok [INFO] [stdout] test credential_policy::tests::secrets_are_never_rendered_by_the_debug_representation_of_a_grant ... ok [INFO] [stdout] test credential_policy::tests::the_legacy_secret_helper_is_unused_but_kept_for_the_secret_type ... ok [INFO] [stdout] test credential_policy::tests::the_skew_tolerance_never_extends_a_credential_past_valid_until ... ok [INFO] [stdout] test credential_policy::tests::three_simultaneously_live_grants_are_refused ... ok [INFO] [stdout] test credentials::tests::generated_values_are_not_trivially_repeated ... ok [INFO] [stdout] test credential_policy::tests::validity_window_is_half_open_at_valid_until ... ok [INFO] [stdout] test credentials::tests::public_key_shape_validation_accepts_a_real_key_and_rejects_bad_ones ... ok [INFO] [stdout] test authorization::tests::rotation_boundaries_and_revocation_are_fail_closed ... ok [INFO] [stdout] test authorization::tests::clock_edges_use_closed_open_intervals ... ok [INFO] [stdout] test contract::tests::a_zero_peer_document_embeds_a_config_whose_selector_matches_its_catalog ... ok [INFO] [stdout] test authorization::tests::native_renewal_rejects_expiry_revocation_boundary_and_overflow ... ok [INFO] [stdout] test contract::tests::generated_document_never_carries_server_private_material ... ok [INFO] [stdout] test contract::tests::embedded_core_config_is_audited_structurally_not_by_substring ... ok [INFO] [stdout] test contract::tests::a_transport_with_no_endpoint_is_not_advertised ... ok [INFO] [stdout] test contract::tests::obfs_password_is_carried_only_when_configured ... ok [INFO] [stdout] test contract::tests::experimental_capabilities_never_leak_into_production_capabilities ... ok [INFO] [stdout] test credentials::tests::reality_keypair_validation_rejects_mismatch_and_malformed_keys ... ok [INFO] [stdout] test credentials::tests::subscription_token_has_adequate_entropy_and_charset ... ok [INFO] [stdout] test authorization::tests::native_renewal_preserves_secret_and_extends_only_expiry ... ok [INFO] [stdout] test credentials::tests::reality_public_key_is_derived_from_the_private_key ... ok [INFO] [stdout] test credentials::tests::token_hash_verifies_correct_token_only ... ok [INFO] [stdout] test credentials::tests::user_id_has_expected_shape_and_128_bits_of_entropy_source ... ok [INFO] [stdout] test credential_policy::tests::a_grant_that_ends_before_it_starts_is_refused ... ok [INFO] [stdout] test deployment::tests::clear_google_egress_hairpin_toml_text_is_a_noop_when_absent ... ok [INFO] [stdout] test credentials::tests::uuid_v4_has_expected_shape ... ok [INFO] [stdout] test credentials::tests::verify_token_rejects_mismatched_length_hash ... ok [INFO] [stdout] test credentials::tests::short_id_is_never_an_obvious_pattern ... ok [INFO] [stdout] test deployment::tests::apply_google_egress_hairpin_toml_refuses_corrupted_input_and_leaves_it_untouched ... ok [INFO] [stdout] test deployment::tests::hysteria2_bandwidth_set_alone_fails_validation ... ok [INFO] [stdout] test deployment::tests::explicit_current_schema_version_loads ... ok [INFO] [stdout] test deployment::tests::migrate_deployment_toml_missing_file_is_not_an_error ... ok [INFO] [stdout] test deployment::tests::future_schema_version_is_refused ... ok [INFO] [stdout] test deployment::tests::hysteria2_bandwidth_set_together_is_valid ... ok [INFO] [stdout] test deployment::tests::hysteria2_bandwidth_defaults_to_unset ... ok [INFO] [stdout] test deployment::tests::clear_google_egress_hairpin_toml_text_removes_an_existing_section ... ok [INFO] [stdout] test deployment::tests::migrate_text_inserts_marker_once_and_is_idempotent ... ok [INFO] [stdout] test deployment::tests::set_google_egress_hairpin_toml_text_appends_when_absent ... ok [INFO] [stdout] test deployment::tests::migrate_deployment_toml_refuses_corrupted_input_and_leaves_it_untouched ... ok [INFO] [stdout] test deployment::tests::minimal_toml_parses_with_defaults ... ok [INFO] [stdout] test deployment::tests::migrate_deployment_toml_refuses_future_schema_and_leaves_it_untouched ... ok [INFO] [stdout] test deployment::tests::missing_schema_version_defaults_to_zero_and_still_loads ... ok [INFO] [stdout] test deployment::tests::set_google_egress_hairpin_toml_text_replaces_existing_section_in_place ... ok [INFO] [stdout] test deployment::tests::udp_probe_section_parses_and_defaults_apply ... ok [INFO] [stdout] test render::tests::auto_profile_defaults_selector_to_urltest_group ... ok [INFO] [stdout] test authorization::tests::native_can_renew_for_days_without_extending_the_horizon ... ok [INFO] [stdout] test render::tests::client_subscription_has_no_dns_block_and_no_inbounds ... ok [INFO] [stdout] test render::tests::compatibility_mode_parse_rejects_unknown_values ... ok [INFO] [stdout] test render::tests::client_subscription_profile_shape_is_explicit_and_minimal ... ok [INFO] [stdout] test render::tests::endpoints_fingerprint_is_deterministic_and_sensitive_to_key_material ... ok [INFO] [stdout] test credentials::tests::short_id_validation_accepts_generated_ids_and_rejects_bad_ones ... ok [INFO] [stdout] test render::tests::client_subscription_never_emits_route_rules ... ok [INFO] [stdout] test deployment::tests::apply_google_egress_hairpin_toml_refuses_an_invalid_section ... ok [INFO] [stdout] test ownership::tests::no_prior_target_falls_back_to_parent_group_without_error ... ok [INFO] [stdout] test render::tests::label_with_spaces_is_percent_encoded ... ok [INFO] [stdout] test render::tests::hysteria2_unavailable_reality_only_profile_remains_fully_usable ... ok [INFO] [stdout] test render::tests::normal_mode_keeps_vless_and_hysteria2_and_no_network_field ... ok [INFO] [stdout] test render::tests::hysteria2_uri_contains_password_and_sni ... ok [INFO] [stdout] test render::tests::normal_mode_via_with_options_is_identical_to_existing_renderer ... ok [INFO] [stdout] test render::tests::only_quic_reject_and_youtube_direct_emit_route_rules ... ok [INFO] [stdout] test migrate::tests::backup_is_mode_0600_regardless_of_source_mode ... ok [INFO] [stdout] test render::tests::normal_uri_list_is_unchanged_and_still_requests_vision ... ok [INFO] [stdout] test render::tests::performance_profile_defaults_selector_to_hysteria2 ... ok [INFO] [stdout] test render::tests::every_subscription_mode_omits_client_owned_policy ... ok [INFO] [stdout] test render::tests::quic_reject_emits_exactly_one_udp_443_reject_rule_with_every_required_field ... ok [INFO] [stdout] test render::tests::quic_reject_parses_and_normal_mode_is_still_the_default ... ok [INFO] [stdout] test render::tests::quic_reject_keeps_hysteria2_and_vision ... ok [INFO] [stdout] test render::tests::quic_reject_rule_does_not_target_the_server_or_leak_credentials ... ok [INFO] [stdout] test render::tests::rendering_wrong_transport_for_endpoint_errors ... ok [INFO] [stdout] test render::tests::quic_reject_leaves_every_credential_and_endpoint_identical_to_normal ... ok [INFO] [stdout] test render::tests::route_final_points_at_manual_selector_not_urltest ... ok [INFO] [stdout] test ownership::tests::existing_target_ownership_is_reapplied_to_tmp_file ... ok [INFO] [stdout] test render::tests::selector_default_is_reality_and_lists_hysteria2_and_auto ... ok [INFO] [stdout] test render::tests::selection_profile_parse_rejects_unknown_values ... ok [INFO] [stdout] test render::tests::selector_default_falls_back_to_first_endpoint_when_no_reality_endpoint_present ... ok [INFO] [stdout] test render::tests::singbox_subscription_has_both_outbounds_and_urltest_selector ... ok [INFO] [stdout] test render::tests::standard_endpoints_produces_reality_and_hysteria2 ... ok [INFO] [stdout] test render::tests::standard_endpoints_threads_hysteria2_obfs_password_into_uri_and_native_json ... ok [INFO] [stdout] test migrate::tests::atomic_write_leaves_no_tmp_file_behind ... ok [INFO] [stdout] test deployment::tests::apply_google_egress_hairpin_toml_clear_backs_up_and_commits ... ok [INFO] [stdout] test render::tests::tcp_only_mode_leaks_no_private_reality_material ... ok [INFO] [stdout] test render::tests::tcp_only_mode_sets_vless_network_tcp_and_drops_hysteria2 ... ok [INFO] [stdout] test render::tests::to_base64_subscription_of_empty_string_is_empty ... ok [INFO] [stdout] test render::tests::uri_list_contains_both_transports ... ok [INFO] [stdout] test render::tests::tcp_only_mode_does_not_add_packet_encoding_xudp ... ok [INFO] [stdout] test render::tests::tcp_only_mode_reality_only_deployment_still_produces_valid_profile ... ok [INFO] [stdout] test render::tests::tcp_only_mode_emits_no_dns_block_or_tun_inbound ... ok [INFO] [stdout] test render::tests::tcp_only_mode_route_final_is_valid_and_emits_no_route_rules ... ok [INFO] [stdout] test render::tests::compatibility_mode_parse_accepts_vision_off_and_still_rejects_unknown_values ... ok [INFO] [stdout] test render::tests::to_base64_subscription_round_trips_and_matches_known_vector ... ok [INFO] [stdout] test deployment::tests::migrate_deployment_toml_backup_is_mode_0600 ... ok [INFO] [stdout] test render::tests::vision_off_mode_keeps_hysteria2_and_udp_capability_unlike_tcp_only ... ok [INFO] [stdout] test render::tests::reliability_profile_matches_default_profile_behavior ... ok [INFO] [stdout] test render::tests::vision_off_mode_adds_no_route_rules_dns_inbounds_or_client_owned_fields ... ok [INFO] [stdout] test deployment::tests::apply_google_egress_hairpin_toml_set_backs_up_and_commits ... ok [INFO] [stdout] test render::tests::vision_off_mode_selector_and_urltest_reference_the_labeled_reality_tag ... ok [INFO] [stdout] test render::tests::vision_off_uri_list_labels_only_reality_endpoints_and_leaves_hysteria2_unchanged ... ok [INFO] [stdout] test deployment::tests::migrate_deployment_toml_end_to_end_backs_up_migrates_preserves_values ... ok [INFO] [stdout] test render::tests::vision_off_mode_omits_flow_and_changes_nothing_else_about_the_reality_outbound ... ok [INFO] [stdout] test render::tests::vision_off_mode_leaks_no_private_reality_material ... ok [INFO] [stdout] test render::tests::vision_off_uri_omits_flow_and_keeps_every_other_parameter_identical ... ok [INFO] [stdout] test render::tests::vision_off_uri_rejects_wrong_transport ... ok [INFO] [stdout] test render::tests::vless_uri_contains_required_reality_fields_and_no_private_key ... ok [INFO] [stdout] test secret::tests::debug_never_prints_value ... ok [INFO] [stdout] test render::tests::youtube_direct_emits_exactly_one_domain_direct_rule_with_the_full_domain_set ... ok [INFO] [stdout] test render::tests::youtube_direct_keeps_every_credential_endpoint_and_selector_identical_to_normal ... ok [INFO] [stdout] test server::tests::disabled_and_expired_users_are_excluded_from_rendered_config ... ok [INFO] [stdout] test render::tests::youtube_direct_survives_a_reality_only_deployment_and_vice_versa ... ok [INFO] [stdout] test server::tests::hysteria_bandwidth_omitted_by_default ... ok [INFO] [stdout] test server::tests::every_user_keeps_the_vision_flow_by_default ... ok [INFO] [stdout] test server::tests::hysteria_masquerade_is_set_when_configured ... ok [INFO] [stdout] test server::tests::hysteria_masquerade_omitted_when_not_configured ... ok [INFO] [stdout] test server::tests::rendered_config_never_contains_private_key_string ... ok [INFO] [stdout] test render::tests::youtube_direct_parses_and_stays_opt_in ... ok [INFO] [stdout] test render::tests::youtube_direct_rule_is_not_a_credential_state_or_dns_claim ... ok [INFO] [stdout] test secret::tests::serialize_round_trips_plain_value ... ok [INFO] [stdout] test server::tests::vision_off_experiment_empties_only_that_users_flow ... ok [INFO] [stdout] test static_revision::tests::accepts_every_allowlisted_field ... ok [INFO] [stdout] test server::tests::both_inbounds_bind_the_dual_stack_wildcard_address ... ok [INFO] [stdout] test server::tests::hysteria_bandwidth_set_together_forces_ignore_client_bandwidth ... ok [INFO] [stdout] test static_revision::tests::plan_changes_only_allowlisted_fields_and_preserves_role_and_identity ... ok [INFO] [stdout] test server::tests::server_documents_emit_no_per_connection_core_log_lines ... ok [INFO] [stdout] test authorization::tests::restart_view_never_restores_expired_state ... ok [INFO] [stdout] test server::tests::apply_atomically_rejects_invalid_config_and_leaves_existing_file_untouched ... ok [INFO] [stdout] test render::tests::normal_mode_output_is_byte_for_byte_unchanged_by_the_vision_off_mode_existing ... ok [INFO] [stdout] test static_revision::tests::rejects_deferred_port_fields ... ok [INFO] [stdout] test static_revision::tests::reality_answers_reject_any_unsafe_or_mixed_resolution ... ok [INFO] [stdout] test static_revision::tests::plan_refuses_an_invalid_current_file ... ok [INFO] [stdout] test static_revision::tests::rejects_every_forbidden_field ... ok [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test server::tests::secret_file_modes_do_not_depend_on_the_process_umask ... test static_revision::tests::unknown_field_rejects_the_whole_document_not_just_the_field ... ok [INFO] [stdout] test static_revision::tests::rejects_invalid_values ... ok [INFO] [stdout] test static_revision::tests::users_document_is_not_routed_as_static ... ok [INFO] [stdout] test static_revision::tests::rejects_unknown_or_missing_schema_and_oversized_documents ... ok [INFO] [stdout] test store::tests::detect_schema_corrupted ... ok [INFO] [stdout] test static_revision::tests::plan_clears_hysteria2_bandwidth_with_nulls ... ok [INFO] [stdout] test static_revision::tests::plan_is_unchanged_when_values_already_match ... ok [INFO] [stdout] test server::tests::apply_atomically_backs_up_and_swaps_on_valid_config ... ok [INFO] [stdout] test server::tests::apply_atomically_succeeds_with_no_prior_config ... ok [INFO] [stdout] test render::tests::quic_reject_survives_a_reality_only_deployment ... ok [INFO] [stdout] test render::tests::tcp_only_mode_selector_lists_only_remaining_tags_and_defaults_to_reality ... ok [INFO] [stdout] test server::tests::renders_five_hundred_active_users_without_truncation ... ok [INFO] [stdout] test store::tests::load_users_refuses_corrupted_json ... ok [INFO] [stdout] test store::tests::load_users_refuses_future_schema_version ... ok [INFO] [stdout] test store::tests::detect_schema_missing_file ... ok [INFO] [stdout] test store::tests::load_users_reads_legacy_bare_array_transparently ... ok [INFO] [stdout] test store::tests::migrate_refuses_corrupted_input_and_leaves_it_untouched ... ok [INFO] [stdout] test store::tests::detect_schema_future_version ... ok [INFO] [stdout] test store::tests::migrate_missing_file_is_not_an_error ... ok [INFO] [stdout] test server::tests::applied_config_and_backup_are_never_world_or_group_writable_and_are_0640 ... ok [INFO] [stdout] test store::tests::detect_schema_current_after_save ... ok [INFO] [stdout] test store::tests::missing_file_loads_as_empty ... ok [INFO] [stdout] test store::tests::migrate_refuses_future_schema_and_leaves_it_untouched ... ok [INFO] [stdout] test store::tests::detect_schema_legacy_bare_array ... ok [INFO] [stdout] test credentials::tests::user_ids_do_not_collide_across_ten_thousand_generations ... ok [INFO] [stdout] test store::tests::migrate_already_current_is_a_noop ... ok [INFO] [stdout] test store::tests::save_then_load_round_trips ... ok [INFO] [stdout] test store::tests::save_is_atomic_no_partial_file_left_on_success ... ok [INFO] [stdout] test store::tests::migrate_backup_is_mode_0600_at_least_as_strict_as_live_file ... ok [INFO] [stdout] test store::tests::migrate_legacy_bare_array_end_to_end_preserves_users_and_backs_up ... ok [INFO] [stdout] ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 180 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stdout] test store::tests::save_writes_the_versioned_envelope_shape ... ok [INFO] [stdout] test store::tests::saved_file_is_owner_read_write_group_read_only ... ok [INFO] [stdout] test server::tests::secret_file_modes_do_not_depend_on_the_process_umask ... ok [INFO] [stdout] test server::tests::repeated_applies_preserve_group_ownership_across_mutations ... ok [INFO] [stdout] test store::tests::vision_off_experiment_flag_is_absent_on_disk_unless_set_and_defaults_to_false ... ok [INFO] [stdout] test store::tests::repeated_saves_preserve_group_ownership_across_mutations ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 181 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s [INFO] [stdout] [INFO] [stderr] Running tests/access_paths.rs (/opt/rustwide/target/debug/deps/access_paths-2bd724bb6b69a438) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test absent_access_paths_keep_existing_deployment_compatible ... ok [INFO] [stdout] test credential_shaped_access_path_keys_fail_closed ... ok [INFO] [stdout] test duplicate_path_ids_are_rejected ... ok [INFO] [stdout] test legacy_opaque_peer_path_without_access_paths_still_loads ... ok [INFO] [stdout] test relay_metadata_maps_to_non_secret_contract_type ... ok [INFO] [stderr] Running tests/c16_host_policy_contract.rs (/opt/rustwide/target/debug/deps/c16_host_policy_contract-09c0b5890f95904a) [INFO] [stdout] test opted_in_path_set_rejects_unknown_peer_path ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test host_policy_matches_authoritative_c16_minus_only_loopback ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/contract_fixtures.rs (/opt/rustwide/target/debug/deps/contract_fixtures-5aa62c4f1ce37d18) [INFO] [stdout] [INFO] [stdout] running 16 tests [INFO] [stdout] test fixture_malformed_document_is_rejected_with_the_documented_error ... ok [INFO] [stdout] test fixture_unsupported_schema_version_error_matches_the_served_body ... ok [INFO] [stdout] test fixture_10_never_contains_a_private_key_despite_carrying_a_full_config ... ok [INFO] [stdout] test fixture_reality_only_matches_generated_document ... ok [INFO] [stdout] test fixture_both_transports_matches_generated_document ... ok [INFO] [stdout] test the_published_fixture_set_is_exactly_the_documented_one ... ok [INFO] [stdout] test two_independent_endpoints_share_no_credential_or_key_material ... ok [INFO] [stdout] test fixture_10_shows_the_complete_document_including_embedded_config ... ok [INFO] [stdout] test fixtures_use_the_documented_fake_credentials ... ok [INFO] [stdout] test fixture_hysteria2_salamander_obfs_matches_generated_document ... ok [INFO] [stdout] test fixture_diagnostic_vision_off_matches_generated_document ... ok [INFO] [stdout] test fixture_diagnostic_tcp_only_matches_generated_document ... ok [INFO] [stdout] test fixture_hysteria2_only_matches_generated_document ... ok [INFO] [stdout] test no_fixture_contains_anything_that_could_be_a_real_secret ... ok [INFO] [stdout] test fixture_two_independent_endpoints_matches_generated_document ... ok [INFO] [stdout] test every_generated_fixture_parses_and_validates ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/hiddify_relay_udp.rs (/opt/rustwide/target/debug/deps/hiddify_relay_udp-91137535f76bf31d) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test hiddify_pinned_relay_keeps_xudp_available_to_application_udp ... ok [INFO] [stderr] Running tests/hiddify_runtime_contract.rs (/opt/rustwide/target/debug/deps/hiddify_runtime_contract-5189c814931a683d) [INFO] [stdout] test normal_relay_profile_is_unchanged_by_the_hiddify_specific_fix ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test hiddify_pinned_direct_profile_gives_hiddify_exactly_one_route ... ok [INFO] [stdout] test normal_profile_is_round_robin_balanced_by_current_hiddify ... ok [INFO] [stdout] test hiddify_pinned_keeps_the_route_the_normal_profile_already_defaulted_to ... ok [INFO] [stdout] test quic_reject_route_rule_never_reaches_the_hiddify_runtime ... ok [INFO] [stdout] test hiddify_pinned_leaves_the_surviving_outbound_byte_identical_to_normal ... ok [INFO] [stdout] test hiddify_pinned_privacy_plus_keeps_only_the_relayed_exit ... ok [INFO] [stdout] test dump_pinned_profiles ... ok [INFO] [stdout] test privacy_plus_normal_profile_lets_hiddify_balance_onto_a_direct_exit ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/hysteria2_interop.rs (/opt/rustwide/target/debug/deps/hysteria2_interop-db28248d96e0166c) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test hysteria2_handshake_fails_with_wrong_password ... ok [INFO] [stdout] test hysteria2_handshake_succeeds_with_matched_password ... ok [INFO] [stdout] test hysteria2_obfuscated_handshake_succeeds_with_matched_obfs_password ... ok [INFO] [stdout] test hysteria2_brutal_bandwidth_config_passes_real_sing_box_check ... ok [INFO] [stdout] test hysteria2_handshake_fails_with_wrong_obfs_password ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [INFO] [stdout] [INFO] [stderr] Running tests/peer_document_assembly.rs (/opt/rustwide/target/debug/deps/peer_document_assembly-98fbea6a64e86e5f) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test the_peers_own_outbound_carries_the_peers_host_and_key_not_this_servers ... ok [INFO] [stdout] test diagnostic_modes_still_behave_with_a_peer_present ... ok [INFO] [stdout] test a_peer_is_omitted_for_a_user_with_no_credential_for_it ... ok [INFO] [stdout] test a_peer_appears_once_the_operator_sets_that_users_credential ... ok [INFO] [stdout] test a_local_only_document_is_unchanged_by_the_peer_feature_existing ... ok [INFO] [stdout] test a_peer_and_a_local_endpoint_share_no_credential_material ... ok [INFO] [stdout] test a_local_credential_is_never_used_as_a_fallback_on_a_peer ... ok [INFO] [stdout] test a_document_with_a_peer_embeds_a_config_that_can_actually_select_it ... ok [INFO] [stdout] test a_credential_is_never_coerced_across_transports ... ok [INFO] [stdout] test two_users_receive_independent_peer_credentials ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/peer_endpoints.rs (/opt/rustwide/target/debug/deps/peer_endpoints-6e1f4b7f7c0f017e) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test debug_of_a_peer_credential_never_prints_the_secret ... ok [INFO] [stdout] test a_deployment_with_no_peer_endpoints_loads_exactly_as_before ... ok [INFO] [stdout] test a_malformed_reality_public_key_is_rejected ... ok [INFO] [stdout] test a_peer_endpoint_becomes_a_compat_endpoint_marked_as_a_peer ... ok [INFO] [stdout] test two_peers_sharing_an_id_are_rejected ... ok [INFO] [stdout] test a_peer_private_key_is_refused_rather_than_silently_ignored ... ok [INFO] [stdout] test a_peer_id_colliding_with_a_local_endpoint_is_rejected ... ok [INFO] [stdout] test peer_credentials_round_trip_and_are_looked_up_by_endpoint_id ... ok [INFO] [stdout] test a_user_with_no_peer_credentials_round_trips_byte_identically ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/quic_reject_config.rs (/opt/rustwide/target/debug/deps/quic_reject_config-35cc117c6a1f51c1) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test quic_reject_rule_fields_survive_a_real_sing_box_parse ... ok [INFO] [stdout] test every_compatibility_mode_renders_a_config_real_sing_box_accepts ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/reality_decoy_budget.rs (/opt/rustwide/target/debug/deps/reality_decoy_budget-291b09e340f952e2) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stderr] Running tests/reality_interop.rs (/opt/rustwide/target/debug/deps/reality_interop-afb1bad57fd37325) [INFO] [stdout] test historically_oversized_decoy_certificate_remains_usable ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test reality_handshake_fails_with_mismatched_public_key ... ok [INFO] [stdout] test server_and_client_configs_agree_on_reality_key_material ... ok [INFO] [stdout] test reality_handshake_succeeds_with_matched_keypair ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/relay_detour.rs (/opt/rustwide/target/debug/deps/relay_detour-b8e7bcd8b2c8cdbc) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test relay_path_without_via_endpoint_fails_closed ... ok [INFO] [stdout] test relay_path_is_real_detour_and_first_hop_is_not_selectable ... ok [INFO] [stdout] test profiles_without_relay_routes_keep_the_single_exit_auto_group ... ok [INFO] [stdout] test d3_explicit_privacy_plus_has_no_path_that_avoids_the_relay ... ok [INFO] [stdout] test d3_automatic_choice_between_privacy_routes_exercises_complete_two_hop_routes ... ok [INFO] [stdout] test d3_direct_and_privacy_routes_never_share_an_automatic_group ... ok [INFO] [stdout] test d3_direct_stays_explicitly_selectable_and_independent_of_the_relay ... ok [INFO] [stdout] test d3_privacy_plus_is_the_default_and_the_selector_never_switches_by_itself ... ok [INFO] [stdout] test d3_no_health_probe_group_in_a_privacy_profile_dials_an_exit_directly ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/relay_role_policy.rs (/opt/rustwide/target/debug/deps/relay_role_policy-e729c122040ac9a2) [INFO] [stdout] [INFO] [stdout] running 72 tests [INFO] [stdout] test default_node_id_rule_matches_the_shared_installer_fixture_table ... ok [INFO] [stdout] test deployment_toml_without_public_ipv4_ipv6_fields_still_loads_and_validates ... ok [INFO] [stdout] test absent_role_means_exit_for_backward_compatibility ... ok [INFO] [stdout] test an_exit_has_no_relay_targets_even_with_peers ... ok [INFO] [stdout] test duplicate_endpoint_ids_and_tags_are_refused ... ok [INFO] [stdout] test dangling_credential_ref_is_refused ... ok [INFO] [stdout] test duplicate_access_path_ids_are_refused ... ok [INFO] [stdout] test credential_ref_transport_mismatch_is_refused ... ok [INFO] [stdout] test credential_ref_to_a_different_server_is_refused ... ok [INFO] [stdout] test every_rendered_relay_route_rule_is_accepted_by_real_sing_box ... ok [INFO] [stdout] test exit_must_never_declare_its_own_listener_as_relay_infrastructure ... ok [INFO] [stdout] test dangling_via_endpoint_is_refused_even_when_unused ... ok [INFO] [stdout] test disabled_probe_user_gets_no_probe_rules_but_keeps_mandatory_c16 ... ok [INFO] [stdout] test disabled_and_expired_users_are_absent_from_the_relay_document ... ok [INFO] [stdout] test exit_with_hairpin_config_but_no_credential_still_renders_unchanged ... ok [INFO] [stdout] test a_customer_literally_named_arcana_probe_gets_no_probe_confinement_on_exit ... ok [INFO] [stdout] test a_customer_literally_named_arcana_probe_gains_no_loopback_privilege ... ok [INFO] [stdout] test exit_denies_customer_tunnel_to_its_own_public_ipv4 ... ok [INFO] [stdout] test exit_without_hairpin_config_renders_exactly_as_before ... ok [INFO] [stdout] test exit_denies_customer_tunnel_to_its_own_public_ipv6 ... ok [INFO] [stdout] test exit_hairpin_outbound_never_carries_this_exits_own_private_key ... ok [INFO] [stdout] test exit_with_public_ipv4_and_public_ipv6_both_set_combines_into_one_rule ... ok [INFO] [stdout] test exit_confines_probe_user_and_leaves_customers_unrouted ... ok [INFO] [stdout] test hysteria2_first_hop_is_refused ... ok [INFO] [stdout] test exit_with_hostname_public_host_adds_no_extra_own_ip_rule ... ok [INFO] [stdout] test exit_with_hairpin_configured_adds_one_outbound_and_sniff_plus_route_rule ... ok [INFO] [stdout] test exit_rendering_keeps_inbounds_outbounds_identical_and_adds_mandatory_c16_route ... ok [INFO] [stdout] test invalid_role_in_deployment_toml_fails_to_load ... ok [INFO] [stdout] test future_schema_is_refused ... ok [INFO] [stdout] test ipv6_literal_in_public_ipv4_field_is_rejected ... ok [INFO] [stdout] test exit_with_hostname_public_host_and_public_ipv4_field_denies_customer_tunnel ... ok [INFO] [stdout] test legacy_exit_without_identity_renders_identically_to_current_exit ... ok [INFO] [stdout] test hysteria2_route_over_relay_is_refused ... ok [INFO] [stdout] test invalid_public_ipv4_literal_is_rejected_by_validate ... ok [INFO] [stdout] test exit_with_hostname_public_host_and_public_ipv6_field_denies_customer_tunnel ... ok [INFO] [stdout] test migration_of_a_v1_relay_keeps_the_relay_role ... ok [INFO] [stdout] test probe_urls_are_exactly_covered_by_the_probe_allowlist ... ok [INFO] [stdout] test migration_only_reads_top_level_keys ... ok [INFO] [stdout] test probe_rules_precede_exit_hairpin_rules ... ok [INFO] [stdout] test re_enabling_a_user_never_fabricates_a_missing_peer_credential ... ok [INFO] [stdout] test ip_literal_exit_targets_become_exact_host_cidrs ... ok [INFO] [stdout] test fresh_install_templates_render_a_current_loadable_deployment_for_both_roles ... ok [INFO] [stdout] test probe_rules_precede_relay_policy_which_is_otherwise_unchanged ... ok [INFO] [stdout] test relay_document_contains_no_exit_credential_and_no_peer_private_material ... ok [INFO] [stdout] test migration_preserves_an_existing_node_id ... ok [INFO] [stdout] test node_role_parser_is_strict ... ok [INFO] [stdout] test failed_migration_leaves_previous_state_intact ... ok [INFO] [stdout] test paired_relay_allows_only_declared_exits_and_ends_in_reject_for_every_inbound ... ok [INFO] [stdout] test invalid_relay_destinations_are_refused ... ok [INFO] [stdout] test relay_route_without_via_endpoint_is_refused ... ok [INFO] [stdout] test relay_role_requires_a_local_ingress_declaration ... ok [INFO] [stdout] test relay_hairpin_user_still_falls_through_to_reject_for_non_google_destinations ... ok [INFO] [stdout] test schema_v2_requires_a_valid_node_id ... ok [INFO] [stdout] test relay_renderer_refuses_a_malformed_in_memory_declaration ... ok [INFO] [stdout] test relay_hairpin_user_gets_exactly_two_extra_rules_scoped_to_google_domains ... ok [INFO] [stdout] test relay_destinations_cannot_name_internal_or_metadata_addresses ... ok [INFO] [stdout] test relay_targets_come_only_from_declared_relay_routes ... ok [INFO] [stdout] test share_links_never_express_a_relay_route_or_the_relay_first_hop ... ok [INFO] [stdout] test relay_hairpin_flag_off_leaves_relay_rendering_byte_identical ... ok [INFO] [stdout] test truncated_deployment_state_fails_to_load ... ok [INFO] [stdout] test share_links_omit_a_peer_the_user_has_no_credential_for ... ok [INFO] [stdout] test relay_serves_its_first_hop_but_never_its_hysteria2_listener ... ok [INFO] [stdout] test removing_the_exit_credential_removes_both_dependent_routes ... ok [INFO] [stdout] test provisioning_path_builds_a_real_detour_chain_with_distinct_credentials ... ok [INFO] [stdout] test rotating_the_first_hop_credential_does_not_touch_the_exit_credential ... ok [INFO] [stdout] test unpaired_relay_rejects_everything_when_no_probe_principal_exists ... ok [INFO] [stdout] test unpaired_relay_loopback_selftest_is_scoped_to_the_reserved_probe_principal ... ok [INFO] [stdout] test unpaired_relay_provisioning_is_an_explicit_no_route_error ... ok [INFO] [stdout] test unpaired_relay_loads_and_has_no_targets ... ok [INFO] [stdout] test udp_relay_capability_is_refused ... ok [INFO] [stdout] test rotating_the_exit_credential_does_not_touch_the_first_hop_credential ... ok [INFO] [stdout] test subscription_token_is_independent_of_both_proxy_credentials ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 72 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/state_integrity.rs (/opt/rustwide/target/debug/deps/state_integrity-d3ebdcdb03b45ce3) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test future_users_schema_fails_closed_in_the_public_parse_boundary ... ok [INFO] [stdout] test syntactically_valid_but_wrong_top_level_shape_is_not_treated_as_empty_state ... ok [INFO] [stdout] test failed_pre_rename_write_preserves_the_previous_live_state_byte_for_byte ... ok [INFO] [stderr] Running tests/static_revision_contract.rs (/opt/rustwide/target/debug/deps/static_revision_contract-e69d3f9ddc221d3c) [INFO] [stdout] test every_strict_prefix_of_users_file_is_rejected_as_truncated_state ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test every_valid_contract_document_is_accepted ... ok [INFO] [stdout] test every_invalid_contract_document_is_rejected ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/two_hop_system.rs (/opt/rustwide/target/debug/deps/two_hop_system-25ca0b1a70c97a53) [INFO] [stdout] [INFO] [stdout] running 22 tests [INFO] [stdout] test relay_and_exit_logs_carry_no_credentials_and_no_rejected_destinations ... ok [INFO] [stdout] test harness_readiness_is_owned_by_the_started_process ... ok [INFO] [stdout] test s05_wrong_exit_credential_fails_after_reaching_the_relay ... ok [INFO] [stdout] test s02_relay_route_client_relay_exit_target ... ok [INFO] [stdout] test s01_direct_route_client_exit_target ... ok [INFO] [stdout] test s06_exit_unavailable_fails_without_direct_fallback ... ok [INFO] [stdout] test s08_disabled_user_cannot_reconnect ... ok [INFO] [stdout] test s04_wrong_relay_credential_fails ... ok [INFO] [stdout] test core_start_failure_stays_visible_with_production_logging ... ok [INFO] [stdout] test s03_relay_is_not_an_internet_exit ... ok [INFO] [stdout] test s07_relay_unavailable_fails_while_direct_remains_usable ... ok [INFO] [stdout] test s11_malformed_or_dangling_declarations_fail_closed_and_apply_nothing ... ok [INFO] [stdout] test s10_credential_rotation_old_fails_new_works_scopes_independent ... ok [INFO] [stdout] test s09_expired_user_loses_authorization_after_reconciliation ... ok [INFO] [stdout] test rejected_and_revoked_credentials_never_reach_relay_or_exit_logs ... ok [INFO] [stdout] test s12_unpaired_relay_cannot_reach_anything_as_an_exit ... ok [INFO] [stdout] test s13_relay_reaches_only_the_declared_exit_target ... ok [INFO] [stdout] test s14_reload_and_repair_preserve_role_and_restrictions ... ok [INFO] [stdout] test s15_crash_restart_never_passes_through_an_unrestricted_state ... ok [INFO] [stdout] test harness_ports_are_unique_and_outside_the_ephemeral_range ... ok [INFO] [stdout] test s16_privacy_plus_client_never_connects_to_the_exit_directly ... ok [INFO] [stdout] test s17_relay_down_privacy_plus_fails_closed_while_direct_stays_explicit ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/vpn_provisioning_agent-6fd0c85498431df8) [INFO] [stdout] [INFO] [stdout] running 125 tests [INFO] [stdout] test dispatch::tests::payload_expires_at_unix_errors_on_malformed_timestamp ... ok [INFO] [stdout] test dispatch::tests::parse_json_output_errors_on_nonzero_exit ... ok [INFO] [stdout] test config::tests::load_respects_an_explicit_zero_lease_pool_size ... ok [INFO] [stdout] test config::tests::load_respects_an_explicit_nonzero_lease_pool_size ... ok [INFO] [stdout] test dispatch::tests::optional_expiry_allows_an_indefinite_create_user ... ok [INFO] [stdout] test config::tests::load_parses_a_minimal_config ... ok [INFO] [stdout] test dispatch::tests::optional_expiry_still_rejects_a_non_string_value ... ok [INFO] [stdout] test config::tests::load_rejects_a_non_numeric_lease_pool_size ... ok [INFO] [stdout] test config::tests::protocol_probe_section_parses_with_defaults ... ok [INFO] [stdout] test dispatch::tests::payload_str_reads_a_present_string_field ... ok [INFO] [stdout] test dispatch::tests::payload_u64_errors_on_missing_field ... ok [INFO] [stdout] test dispatch::tests::payload_u64_reads_a_present_non_negative_integer ... ok [INFO] [stdout] test external_authorization::tests::canonical_legacy_and_v2_fixtures_parse_exactly ... ok [INFO] [stdout] test config::tests::load_respects_an_explicit_poll_interval ... ok [INFO] [stdout] test external_authorization::tests::effective_fingerprint_ignores_order_but_detects_secret_and_expiry ... ok [INFO] [stdout] test external_authorization::tests::privacy_schema_rejects_identity_and_unknown_protocol_fields ... ok [INFO] [stdout] test dispatch::tests::payload_expires_at_unix_parses_rfc3339 ... ok [INFO] [stdout] test dispatch::tests::payload_str_errors_on_missing_field ... ok [INFO] [stdout] test dispatch::tests::payload_u64_errors_on_negative_value ... ok [INFO] [stdout] test external_authorization::tests::rejects_malformed_route_identity_class_dates_and_secrets ... ok [INFO] [stdout] test external_authorization::tests::revision_zero_advances_to_one_but_cannot_roll_back_or_equivocate ... ok [INFO] [stdout] test external_authorization::tests::versions_are_explicit_and_never_fall_back ... ok [INFO] [stdout] test external_authorization::tests::policy_rejects_lifetime_overlap_and_three_credentials ... ok [INFO] [stdout] test health_probe::tests::returns_false_when_the_server_is_unreachable ... ok [INFO] [stdout] test health_probe::tests::probing_a_nonexistent_outbound_returns_false_against_a_real_singbox ... ok [INFO] [stdout] test health_probe::tests::returns_none_when_clash_api_not_configured ... ok [INFO] [stdout] test lease_pool::tests::debug_never_prints_secrets ... ok [INFO] [stdout] test lease_pool::tests::expired_slots_rotate_without_any_control_plane ... ok [INFO] [stdout] test lease_pool::tests::expiry_is_never_deferred_even_right_after_a_rotation ... ok [INFO] [stdout] test lease_pool::tests::lifetime_clamp_keeps_a_leasable_window_and_native_30_minute_cap ... ok [INFO] [stdout] test lease_pool::tests::non_urgent_revocation_waits_for_the_next_batch_boundary ... ok [INFO] [stdout] test config::tests::load_fails_on_missing_file ... ok [INFO] [stdout] test lease_pool::tests::legacy_state_migrates_ids_without_rotating_protocol_secrets ... ok [INFO] [stdout] test external_authorization::tests::persisted_revision_bookkeeping_survives_restart_and_old_format_migrates ... ok [INFO] [stdout] test health_probe::tests::probes_a_real_singbox_direct_outbound_successfully ... ok [INFO] [stdout] test health_probe::tests::returns_false_on_a_non_success_status ... ok [INFO] [stdout] test health_probe::tests::honors_an_explicit_probe_outbound_override ... ok [INFO] [stdout] test health_probe::tests::returns_true_and_latency_on_a_successful_delay_test ... ok [INFO] [stdout] test lease_pool::tests::absorb_marks_reported_by_generation_and_reads_urgency_and_extensions ... ok [INFO] [stdout] test lease_pool::tests::unreported_slot_past_its_window_rotates ... ok [INFO] [stdout] test lease_pool::tests::sync_body_sends_secrets_only_for_unreported_generations_and_policy ... ok [INFO] [stdout] test lease_pool::tests::unleased_slot_rotates_only_once_confirmed_unleased_after_its_window ... ok [INFO] [stdout] test lease_pool::tests::rotation_bumps_generation_changes_secret_and_marks_unapplied ... ok [INFO] [stdout] test lease_pool::tests::urgent_revocation_rotates_now_and_takes_pending_rotations_along ... ok [INFO] [stdout] test lease_pool::tests::shrinking_to_zero_empties_the_pool ... ok [INFO] [stdout] test lease_pool::tests::renewal_extends_in_place_floored_capped_and_only_for_live_leased_slots ... ok [INFO] [stdout] test op_dedup::tests::lookup_on_a_missing_file_is_none_not_an_error ... ok [INFO] [stdout] test op_dedup::tests::record_then_lookup_round_trips ... ok [INFO] [stdout] test op_dedup::tests::entry_count_is_bounded_oldest_evicted_first ... ok [INFO] [stdout] test op_dedup::tests::expired_entries_are_pruned_on_the_next_record ... ok [INFO] [stdout] test op_dedup::tests::lookup_survives_reopening_the_log_at_the_same_path ... ok [INFO] [stdout] test op_dedup::tests::recording_again_for_the_same_job_id_replaces_not_duplicates ... ok [INFO] [stdout] test lease_pool::tests::state_persists_atomically_with_0600_and_survives_reload ... ok [INFO] [stdout] test protocol_probe::tests::client_config_routes_everything_through_the_probe_outbound ... ok [INFO] [stdout] test protocol_probe::tests::debug_never_prints_credentials ... ok [INFO] [stdout] test protocol_probe::tests::duplicate_observation_in_one_round_does_not_advance_failure_streak ... ok [INFO] [stdout] test protocol_probe::tests::finds_probe_user_in_vpn_admin_list ... ok [INFO] [stdout] test protocol_probe::tests::host_override_is_used_for_loopback_self_probe ... ok [INFO] [stdout] test protocol_probe::tests::one_transient_failure_is_degraded_not_failed ... ok [INFO] [stdout] test protocol_probe::tests::parses_hysteria2_share_link_with_obfs_and_encoded_password ... ok [INFO] [stdout] test protocol_probe::tests::failure_streaks_require_adjacent_observed_rounds_and_remain_bounded ... ok [INFO] [stdout] test protocol_probe::tests::parses_openssl_enddate_formats ... ok [INFO] [stdout] test protocol_probe::tests::parses_reality_share_link ... ok [INFO] [stdout] test protocol_probe::tests::rejects_non_reality_vless_and_unknown_schemes ... ok [INFO] [stdout] test protocol_probe::tests::target_dedup_is_global_ordered_and_static_first ... ok [INFO] [stdout] test protocol_probe::tests::sweeps_only_probe_prefixed_dirs ... ok [INFO] [stdout] test external_authorization::tests::failed_apply_is_never_acked_and_retry_acks_exact_persisted_revision ... ok [INFO] [stdout] test protocol_probe::tests::trace_ip_extracts_the_egress_address ... ok [INFO] [stdout] test protocol_probe::tests::unreachable_reality_endpoint_fails_fast_on_tcp_without_spawning ... ok [INFO] [stdout] test report_queue::tests::enqueue_never_blocks_regardless_of_endpoint_health ... ok [INFO] [stdout] test report_queue::tests::enqueue_persists_immediately_even_before_the_background_task_runs ... ok [INFO] [stdout] test external_authorization::tests::oversized_snapshot_cannot_replace_previously_accepted_state ... ok [INFO] [stdout] test report_queue::tests::load_on_a_missing_file_is_an_empty_queue_not_an_error ... ok [INFO] [stdout] test lease_pool::tests::plan_mints_a_bounded_pool_of_distinct_random_slots_on_the_grid ... ok [INFO] [stdout] test ssrf_guard::tests::allows_ipv4_mapped_public_addresses ... ok [INFO] [stdout] test ssrf_guard::tests::allows_ordinary_public_addresses ... ok [INFO] [stdout] test ssrf_guard::tests::denies_carrier_grade_nat ... ok [INFO] [stdout] test ssrf_guard::tests::denies_ipv4_mapped_private_addresses ... ok [INFO] [stdout] test ssrf_guard::tests::denies_ipv6_ula_and_link_local ... ok [INFO] [stdout] test ssrf_guard::tests::denies_link_local_v4_generally_too ... ok [INFO] [stdout] test ssrf_guard::tests::denies_loopback_v4 ... ok [INFO] [stdout] test ssrf_guard::tests::denies_loopback_v6 ... ok [INFO] [stdout] test ssrf_guard::tests::denies_metadata_service ... ok [INFO] [stdout] test ssrf_guard::tests::denies_rfc1918 ... ok [INFO] [stdout] test ssrf_guard::tests::resolve_and_validate_allows_public_ip_literal ... ok [INFO] [stdout] test ssrf_guard::tests::resolve_and_validate_rejects_empty_host ... ok [INFO] [stdout] test ssrf_guard::tests::resolve_and_validate_rejects_ip_literal_targets ... ok [INFO] [stdout] test stats::tests::counts_open_connections ... ok [INFO] [stdout] test stats::tests::handles_counters_beyond_u32 ... ok [INFO] [stdout] test stats::tests::parses_a_real_clash_api_payload ... ok [INFO] [stdout] test op_dedup_integration_tests::apply_node_revision_passes_a_static_revision_document_through_verbatim ... ok [INFO] [stdout] test stats::tests::reads_counters_from_a_real_singbox_clash_api ... ok [INFO] [stdout] test stats::tests::rejects_a_payload_missing_the_counters ... ok [INFO] [stdout] test stats::tests::rejects_a_wrong_clash_api_secret ... ok [INFO] [stdout] test telemetry::probe_user_count_tests::probe_user_is_not_counted_as_a_customer ... ok [INFO] [stdout] test report_queue::tests::save_then_load_round_trips_and_is_0600_on_unix ... ok [INFO] [stdout] test op_dedup_integration_tests::disable_user_twice_across_a_restart_applies_once ... ok [INFO] [stdout] test op_dedup_integration_tests::rotate_credentials_twice_across_a_restart_does_not_rotate_twice ... ok [INFO] [stdout] test op_dedup_integration_tests::create_user_twice_across_a_restart_does_not_mint_a_second_credential ... ok [INFO] [stdout] test telemetry::tests::legacy_heartbeat_is_distinguishable_by_absent_contract ... ok [INFO] [stdout] test stats::tests::tolerates_a_payload_with_no_connections_key ... ok [INFO] [stdout] test telemetry::tests::proc_readers_never_produce_out_of_range_percentages ... ok [INFO] [stdout] test telemetry::tests::uptime_is_nonzero_on_linux_ci ... ok [INFO] [stdout] test worker_client::claim_lease_tests::complete_and_fail_echo_the_claim_token ... ok [INFO] [stdout] test report_queue::tests::reboot_discards_terminal_stale_attempt_without_rewriting_its_token ... ok [INFO] [stdout] test report_queue::tests::reboot_replays_persisted_original_attempt_then_drains_queue ... ok [INFO] [stdout] test op_dedup_integration_tests::apply_node_revision_twice_across_a_restart_fetches_and_applies_once ... ok [INFO] [stdout] test worker_client::claim_lease_tests::reclaimed_attempt_cannot_complete_but_new_attempt_can ... ok [INFO] [stdout] test telemetry::tests::collect_includes_both_probe_fields_when_present ... ok [INFO] [stdout] test op_dedup_integration_tests::enable_user_twice_across_a_restart_applies_once ... ok [INFO] [stdout] test worker_client::claim_lease_tests::claim_requires_and_parses_attempt_capability ... ok [INFO] [stdout] test worker_client::external_authorization_tests::failed_ack_can_be_retried_with_the_same_exact_revision ... ok [INFO] [stdout] test worker_client::external_authorization_tests::fetch_requests_v2_and_ack_contains_only_the_exact_revision ... ok [INFO] [stdout] test telemetry::tests::heartbeat_capability_contract_has_stable_names_and_types ... ok [INFO] [stdout] test worker_client::claim_lease_tests::duplicate_terminal_reports_are_treated_as_accepted_when_server_is_idempotent ... ok [INFO] [stdout] test worker_client::claim_lease_tests::stale_gone_cancelled_and_unauthorized_are_terminal ... ok [INFO] [stdout] test telemetry::tests::collect_includes_probe_ok_false_without_latency ... ok [INFO] [stdout] test worker_client::claim_lease_tests::timeout_is_transient_and_expired_lease_is_rejected_locally ... ok [INFO] [stdout] test telemetry::tests::collect_omits_probe_fields_entirely_when_none ... ok [INFO] [stdout] test external_authorization::tests::revision_parser_rejects_non_integer_revision ... ok [INFO] [stdout] test lease_pool::tests::batching_bounds_non_urgent_rotations_to_one_per_window ... ok [INFO] [stdout] test external_authorization::tests::large_bounded_snapshot_validates_and_one_over_limit_fails_closed ... ok [INFO] [stdout] test external_authorization::tests::snapshot_parser_never_panics_on_arbitrary_input ... ok [INFO] [stdout] test dispatch::tests::timeout_kills_the_child_before_it_can_mutate_state ... ok [INFO] [stdout] test report_queue::tests::queued_completion_survives_repeated_500s_and_delivers_once_the_endpoint_recovers ... ok [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/provisioning_contract-cf71d94e0ce87020) [INFO] [stdout] [INFO] [stdout] test result: ok. 125 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.27s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 27 tests [INFO] [stdout] test tests::capability_advertised_without_an_endpoint_is_rejected ... ok [INFO] [stdout] test tests::experimental_capability_must_carry_the_diag_prefix ... ok [INFO] [stdout] test tests::empty_hysteria2_password_is_rejected ... ok [INFO] [stdout] test tests::empty_obfs_password_is_rejected ... ok [INFO] [stdout] test tests::malformed_uuid_is_rejected ... ok [INFO] [stdout] test tests::endpoint_without_its_capability_is_rejected ... ok [INFO] [stdout] test tests::duplicate_endpoint_ids_are_rejected ... ok [INFO] [stdout] test tests::missing_reality_public_key_is_rejected ... ok [INFO] [stdout] test tests::a_document_carrying_forbidden_content_fails_validation ... ok [INFO] [stdout] test tests::both_transports_document_is_valid ... ok [INFO] [stdout] test tests::reality_only_document_reports_hysteria2_unavailable ... ok [INFO] [stdout] test tests::schema_version_is_explicit_and_current ... ok [INFO] [stdout] test tests::experimental_capability_may_not_appear_in_production_capabilities ... ok [INFO] [stdout] test tests::serialized_document_contains_no_forbidden_key_or_value ... ok [INFO] [stdout] test tests::missing_reality_short_id_is_rejected ... ok [INFO] [stdout] test tests::from_json_rejects_an_unsupported_schema_version ... ok [INFO] [stdout] test tests::unknown_capability_and_transport_round_trip_for_forward_compatibility ... ok [INFO] [stdout] test tests::transport_is_an_internally_tagged_discriminator_on_the_endpoint ... ok [INFO] [stdout] test tests::unknown_obfuscator_is_rejected ... ok [INFO] [stdout] test tests::experimental_capabilities_are_a_separate_field_from_production_ones ... ok [INFO] [stdout] test tests::unexpected_flow_is_rejected ... ok [INFO] [stdout] test tests::unsupported_schema_version_error_body_is_machine_readable ... ok [INFO] [stdout] test tests::unsupported_schema_version_is_rejected_not_reinterpreted ... ok [INFO] [stdout] test tests::json_round_trip_preserves_every_field ... ok [INFO] [stdout] test tests::vision_off_endpoint_omits_flow_entirely_rather_than_emptying_it ... ok [INFO] [stdout] test tests::zero_port_and_malformed_host_are_rejected ... ok [INFO] [stderr] Running tests/access_paths.rs (/opt/rustwide/target/debug/deps/access_paths-e63e3259b9fc9a26) [INFO] [stdout] test tests::non_hex_short_id_is_rejected ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test declared_path_set_rejects_dangling_endpoint_reference ... ok [INFO] [stdout] test legacy_opaque_path_without_access_paths_remains_forward_compatible ... ok [INFO] [stdout] test duplicate_access_path_ids_are_rejected ... ok [INFO] [stdout] test empty_access_paths_are_absent_and_schema_stays_one ... ok [INFO] [stdout] test automatic_group_mixing_direct_and_relayed_routes_is_rejected ... ok [INFO] [stdout] test relayed_catalog_with_privacy_only_automatic_group_is_servable ... ok [INFO] [stdout] test empty_or_duplicate_capabilities_are_rejected ... ok [INFO] [stdout] test relayed_endpoint_rendered_without_detour_is_rejected ... ok [INFO] [stdout] test relay_metadata_round_trips_without_secrets ... ok [INFO] [stderr] Running tests/adversarial_contract.rs (/opt/rustwide/target/debug/deps/adversarial_contract-fb4e5af6cc60019f) [INFO] [stdout] test unknown_access_path_kind_round_trips ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test invalid_endpoint_host_and_zero_port_are_rejected_before_serialization ... ok [INFO] [stdout] test forbidden_server_private_or_client_policy_markers_fail_closed ... ok [INFO] [stdout] test a_future_schema_version_is_rejected_at_the_parse_boundary ... ok [INFO] [stdout] test every_strict_prefix_of_a_valid_document_is_rejected ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/metadata_and_embedded_config.rs (/opt/rustwide/target/debug/deps/metadata_and_embedded_config-d4c31acd3b644e46) [INFO] [stdout] [INFO] [stdout] running 15 tests [INFO] [stdout] test every_endpoint_tag_must_have_a_matching_core_outbound ... ok [INFO] [stdout] test a_selector_missing_an_endpoint_tag_is_rejected ... ok [INFO] [stdout] test insecure_true_is_rejected_anywhere_in_the_embedded_config ... ok [INFO] [stdout] test a_server_filesystem_path_in_the_embedded_config_is_rejected ... ok [INFO] [stdout] test route_final_must_name_the_selector_group ... ok [INFO] [stdout] test insecure_false_is_accepted_because_it_asserts_verification_is_on ... ok [INFO] [stdout] test a_well_formed_two_domain_document_validates ... ok [INFO] [stdout] test schema_version_stays_one_with_the_new_fields_populated ... ok [INFO] [stdout] test the_envelope_substring_audit_still_rejects_forbidden_content_outside_the_config ... ok [INFO] [stdout] test the_selector_must_list_exactly_the_endpoint_tags_plus_auto ... ok [INFO] [stdout] test a_private_key_anywhere_in_the_embedded_config_is_rejected ... ok [INFO] [stdout] test a_document_with_no_new_fields_serializes_without_any_of_their_keys ... ok [INFO] [stdout] test client_owned_policy_blocks_are_rejected_by_the_top_level_allowlist ... ok [INFO] [stdout] test metadata_round_trips_through_json ... ok [INFO] [stdout] test an_unknown_path_value_round_trips_rather_than_failing_the_parse ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/subscription-20268a885725ba9d) [INFO] [stdout] [INFO] [stdout] running 71 tests [INFO] [stdout] test tests::a_non_numeric_schema_version_is_an_explicit_error_not_a_guess ... ok [INFO] [stdout] test relay_subscription_tests::disabled_relay_user_is_a_generic_404_on_every_route ... ok [INFO] [stdout] test tests::absent_encoding_leaves_uri_format_byte_identical_to_before ... ok [INFO] [stdout] test relay_subscription_tests::provisioning_on_a_paired_relay_serves_direct_and_via_routes_only ... ok [INFO] [stdout] test tests::an_unsupported_version_path_reports_which_versions_exist ... ok [INFO] [stdout] test relay_subscription_tests::share_links_on_a_relay_contain_only_the_direct_exit_route ... ok [INFO] [stdout] test relay_subscription_tests::a_relay_user_without_an_exit_credential_gets_no_route_not_the_first_hop ... ok [INFO] [stdout] test tests::an_unknown_diagnostic_is_rejected_rather_than_silently_ignored ... ok [INFO] [stdout] test tests::adding_quic_reject_does_not_change_the_normal_subscription ... ok [INFO] [stdout] test relay_subscription_tests::native_singbox_format_on_a_relay_uses_the_detour_chain ... ok [INFO] [stdout] test tests::compat_quic_reject_with_hiddify_format_is_rejected_not_silently_degraded ... ok [INFO] [stdout] test tests::compat_hiddify_pinned_serves_exactly_one_selectable_outbound ... ok [INFO] [stdout] test relay_subscription_tests::every_format_answers_no_route_for_an_unpaired_relay ... ok [INFO] [stdout] test tests::adding_hiddify_pinned_does_not_change_the_normal_subscription ... ok [INFO] [stdout] test tests::compat_hiddify_pinned_with_uri_format_is_rejected_not_silently_degraded ... ok [INFO] [stdout] test tests::compat_quic_reject_with_uri_format_is_rejected_not_silently_degraded ... ok [INFO] [stdout] test tests::compat_quic_reject_with_singbox_format_emits_the_udp_443_reject_rule ... ok [INFO] [stdout] test relay_subscription_tests::live_fingerprint_matches_the_canonical_relay_endpoint_set ... ok [INFO] [stdout] test tests::compat_vision_off_with_hiddify_format_returns_share_links_without_flow ... ok [INFO] [stdout] test tests::compat_tcp_only_with_hiddify_format_is_rejected_not_silently_degraded ... ok [INFO] [stdout] test tests::compat_vision_off_uri_and_hiddify_formats_are_identical ... ok [INFO] [stdout] test tests::compat_youtube_direct_with_hiddify_format_is_rejected_not_silently_degraded ... ok [INFO] [stdout] test tests::compat_vision_off_with_singbox_format_omits_flow_and_keeps_hysteria2 ... ok [INFO] [stdout] test tests::compat_tcp_only_with_uri_format_is_rejected_not_silently_degraded ... ok [INFO] [stdout] test tests::compat_tcp_only_with_singbox_format_returns_200_and_tcp_only_json ... ok [INFO] [stdout] test tests::compat_youtube_direct_with_singbox_format_emits_the_domain_direct_rule ... ok [INFO] [stdout] test tests::disabled_user_token_returns_404_not_a_distinguishable_error ... ok [INFO] [stdout] test tests::compat_youtube_direct_with_uri_format_is_rejected_not_silently_degraded ... ok [INFO] [stdout] test tests::diagnostic_tcp_only_removes_hysteria2_entirely ... ok [INFO] [stdout] test tests::default_and_existing_format_outputs_are_byte_for_byte_unchanged ... ok [INFO] [stdout] test tests::diagnostic_vision_off_omits_the_flow_field ... ok [INFO] [stdout] test tests::compat_youtube_direct_only_differs_from_normal_by_the_route_block ... ok [INFO] [stdout] test tests::hiddify_format_is_identical_to_uri_format ... ok [INFO] [stdout] test tests::hiddify_format_with_encoding_base64_returns_decodable_body ... ok [INFO] [stdout] test tests::existing_outputs_are_byte_for_byte_unchanged_by_the_vision_off_mode_existing ... ok [INFO] [stdout] test tests::experimental_capabilities_are_never_production_capabilities ... ok [INFO] [stdout] test tests::healthz_responds_ok ... ok [INFO] [stdout] test tests::no_secret_material_appears_in_any_log_line_at_any_verbosity ... ok [INFO] [stdout] test tests::normal_subscription_unchanged_when_compat_param_absent ... ok [INFO] [stdout] test tests::removed_xray_format_is_rejected_as_an_unknown_format ... ok [INFO] [stdout] test tests::encoding_base64_with_singbox_format_is_rejected_not_silently_ignored ... ok [INFO] [stdout] test tests::state_fingerprint_matches_in_memory_endpoints_and_never_leaks_raw_values ... ok [INFO] [stdout] test tests::oversized_token_is_rejected_cheaply ... ok [INFO] [stdout] test tests::subscription_served_event_is_not_logged_at_the_production_default_level ... ok [INFO] [stdout] test tests::user_id_is_never_accepted_where_a_subscription_token_is_expected ... ok [INFO] [stdout] test tests::unknown_encoding_value_returns_400 ... ok [INFO] [stdout] test tests::uri_format_returns_plaintext_share_links ... ok [INFO] [stdout] test tests::subscription_served_event_is_still_available_when_an_operator_raises_the_log_level ... ok [INFO] [stdout] test tests::uri_format_with_encoding_base64_returns_decodable_body ... ok [INFO] [stdout] test tests::the_production_profile_is_what_a_client_gets_without_asking_for_a_diagnostic ... ok [INFO] [stdout] test tests::v1_provision_accepts_an_explicit_matching_schema_version ... ok [INFO] [stdout] test tests::unknown_compat_value_returns_400 ... ok [INFO] [stdout] test tests::unknown_token_returns_generic_404 ... ok [INFO] [stdout] test tests::subscription_responses_are_never_cacheable_success_or_error ... ok [INFO] [stdout] test tests::v1_provision_and_the_legacy_share_links_agree_on_credentials ... ok [INFO] [stdout] test tests::v1_provision_rejects_an_unsupported_schema_version_explicitly ... ok [INFO] [stdout] test tests::v1_provision_capabilities_follow_real_configuration ... ok [INFO] [stdout] test tests::v1_provision_responses_are_never_cacheable ... ok [INFO] [stdout] test tests::v1_provision_for_a_zero_peer_deployment_emits_no_new_endpoint_keys ... ok [INFO] [stdout] test tests::v1_provision_never_carries_server_private_or_client_owned_material ... ok [INFO] [stdout] test tests::v1_provision_embeds_a_config_whose_selector_can_reach_the_peer ... ok [INFO] [stdout] test tests::v1_provision_serves_a_peer_with_its_own_credential_and_metadata ... ok [INFO] [stdout] test tests::v1_provision_serves_a_valid_versioned_contract ... ok [INFO] [stdout] test tests::v1_provision_uses_the_same_token_and_404_semantics_as_sub ... ok [INFO] [stdout] test tests::v1_provision_carries_salamander_obfs_only_when_configured ... ok [INFO] [stdout] test tests::vision_off_with_encoding_base64_returns_decodable_body_without_flow ... ok [INFO] [stdout] test tests::valid_token_returns_singbox_subscription ... ok [INFO] [stdout] test tests::v1_provision_omits_a_peer_the_user_has_no_credential_for ... ok [INFO] [stdout] test rate_limit_regression::bucket_map_does_not_grow_without_bound ... ok [INFO] [stdout] test rate_limit_regression::a_single_source_burst_does_not_lock_out_the_deployment ... ok [INFO] [stdout] test tests::subscription_survives_a_poisoned_rate_limiter_lock ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 71 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/subscription-78839c966580a376) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test hysteria_obfs_password_tests::empty_file_is_treated_as_disabled ... ok [INFO] [stdout] test hysteria_obfs_password_tests::valid_password_is_trimmed_and_returned ... ok [INFO] [stdout] test hysteria_obfs_password_tests::missing_file_is_none_not_an_error ... ok [INFO] [stdout] test hysteria_obfs_password_tests::unreadable_present_file_fails_closed_rather_than_looking_disabled ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/startup_validation.rs (/opt/rustwide/target/debug/deps/startup_validation-31636ed537f1001e) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test refuses_to_start_when_hysteria_obfs_password_file_is_unreadable ... ok [INFO] [stdout] test release_binary_exposes_package_version ... ok [INFO] [stdout] test refuses_to_start_with_truncated_public_key ... ok [INFO] [stdout] test refuses_to_start_with_non_hex_short_id ... ok [INFO] [stdout] test refuses_to_start_with_empty_short_id ... ok [INFO] [stdout] test refuses_to_start_with_malformed_public_key ... ok [INFO] [stdout] test refuses_to_start_with_empty_public_key ... ok [INFO] [stderr] Doc-tests common [INFO] [stdout] test starts_successfully_with_valid_reality_material ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests compat_config [INFO] [stderr] Doc-tests provisioning_contract [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests subscription [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32", kill_on_drop: false }` [INFO] [stdout] 047a75d51e1ad2a471542309e5d6645d518cf68f500ec0355c023b23ca5e0d32