[INFO] cloning repository https://github.com/abdulwahed-sweden/rustio-admin
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/abdulwahed-sweden/rustio-admin" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio-admin", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio-admin'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f0ba53c165af694e3c6b1cb3f88de55e93537478
[INFO] testing abdulwahed-sweden/rustio-admin against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio-admin" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/abdulwahed-sweden/rustio-admin
[INFO] finished tweaking git repo https://github.com/abdulwahed-sweden/rustio-admin
[INFO] tweaked toml for git repo https://github.com/abdulwahed-sweden/rustio-admin written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/abdulwahed-sweden/rustio-admin on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/abdulwahed-sweden/rustio-admin 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.125
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.125
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.125
[INFO] [stderr]   Downloaded hashlink v0.11.1
[INFO] [stderr]   Downloaded block-buffer v0.12.1
[INFO] [stderr]   Downloaded js-sys v0.3.102
[INFO] [stderr]   Downloaded borsh-derive v1.7.0
[INFO] [stderr]   Downloaded arrayvec v0.7.7
[INFO] [stderr]   Downloaded time-core v0.1.9
[INFO] [stderr]   Downloaded parse-display v0.9.1
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.125
[INFO] [stderr]   Downloaded borsh v1.7.0
[INFO] [stderr]   Downloaded structmeta v0.3.0
[INFO] [stderr]   Downloaded structmeta-derive v0.3.0
[INFO] [stderr]   Downloaded time-macros v0.2.30
[INFO] [stderr]   Downloaded serde_with_macros v3.21.0
[INFO] [stderr]   Downloaded parse-display-derive v0.9.1
[INFO] [stderr]   Downloaded docker_credential v1.4.0
[INFO] [stderr]   Downloaded ferroid v2.0.0
[INFO] [stderr]   Downloaded rustls-native-certs v0.8.4
[INFO] [stderr]   Downloaded tonic-prost v0.14.6
[INFO] [stderr]   Downloaded prost-derive v0.14.4
[INFO] [stderr]   Downloaded prost v0.14.4
[INFO] [stderr]   Downloaded wasip2 v1.0.4+wasi-0.2.12
[INFO] [stderr]   Downloaded rust_decimal v1.42.1
[INFO] [stderr]   Downloaded testcontainers v0.27.3
[INFO] [stderr]   Downloaded prost-types v0.14.4
[INFO] [stderr]   Downloaded tonic v0.14.6
[INFO] [stderr]   Downloaded bollard v0.20.2
[INFO] [stderr]   Downloaded bollard-buildkit-proto v0.7.0
[INFO] [stderr]   Downloaded astral-tokio-tar v0.6.2
[INFO] [stderr]   Downloaded testcontainers-modules v0.15.0
[INFO] [stderr]   Downloaded bollard-stubs v1.52.1-rc.29.1.3
[INFO] [stderr]   Downloaded rtoolbox v0.0.5
[INFO] [stderr]   Downloaded hostname v0.4.2
[INFO] [stderr]   Downloaded rpassword v7.5.4
[INFO] [stderr]   Downloaded quoted_printable v0.5.2
[INFO] [stderr]   Downloaded bitvec v1.1.1
[INFO] [stderr]   Downloaded serde_with v3.21.0
[INFO] [stderr]   Downloaded time v0.3.51
[INFO] [stderr]   Downloaded pulldown-cmark v0.13.4
[INFO] [stderr]   Downloaded minijinja v2.21.0
[INFO] [stderr]   Downloaded lettre v0.11.22
[INFO] [stderr]   Downloaded webpki-roots v1.0.8
[INFO] [stderr]   Downloaded rustls v0.23.41
[INFO] [stderr]   Downloaded defmt-macros v1.1.0
[INFO] [stderr]   Downloaded defmt v1.1.0
[INFO] [stderr]   Downloaded jiff-static v0.2.29
[INFO] [stderr]   Downloaded jiff v0.2.29
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5
[INFO] running `Command { std: "docker" "start" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", 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" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", 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" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling bytes v1.12.0
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling cmov v0.5.4
[INFO] [stderr]    Compiling rand_core v0.10.1
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling ctutils v0.4.2
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling arrayvec v0.7.7
[INFO] [stderr]    Compiling tinyvec v1.11.0
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling crc-catalog v2.5.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling unicode-normalization v0.1.25
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling rust_decimal v1.42.1
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling unicode-properties v0.1.4
[INFO] [stderr]    Compiling hashlink v0.11.1
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling uuid v1.23.3
[INFO] [stderr]    Compiling whoami v2.1.2
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling hybrid-array v0.4.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling universal-hash v0.5.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]    Compiling polyval v0.6.2
[INFO] [stderr]    Compiling pulldown-cmark v0.13.4
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling ghash v0.5.1
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling ctr v0.9.2
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling hmac v0.13.0
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling md-5 v0.11.0
[INFO] [stderr]    Compiling hkdf v0.13.0
[INFO] [stderr]    Compiling blake2 v0.10.6
[INFO] [stderr]    Compiling aead v0.5.2
[INFO] [stderr]    Compiling rustio-admin-assets v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-assets)
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling unit-prefix v0.5.2
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling memo-map v0.3.3
[INFO] [stderr]    Compiling jiff v0.2.29
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling aes-gcm v0.10.3
[INFO] [stderr]    Compiling indicatif v0.18.4
[INFO] [stderr]    Compiling argon2 v0.5.3
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling rio-theme v0.33.0 (/opt/rustwide/workdir/crates/rio-theme)
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling toml_edit v0.25.12+spec-1.1.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling rustio-admin-macros v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-macros)
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling env_filter v1.0.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling ulid v1.2.1
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling env_logger v0.11.10
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling minijinja v2.21.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling dashmap v6.2.1
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling rustio-admin-cli v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-cli)
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling sqlx-core v0.9.0
[INFO] [stderr]    Compiling sqlx-postgres v0.9.0
[INFO] [stderr]    Compiling sqlx-macros-core v0.9.0
[INFO] [stderr]    Compiling sqlx-macros v0.9.0
[INFO] [stderr]    Compiling sqlx v0.9.0
[INFO] [stderr]    Compiling rustio-admin v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 49s
[INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", 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" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustio-admin-macros v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-macros)
[INFO] [stderr]    Compiling rio-theme v0.33.0 (/opt/rustwide/workdir/crates/rio-theme)
[INFO] [stderr]    Compiling rustio-admin-assets v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-assets)
[INFO] [stderr]    Compiling rustio-admin-cli v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin-cli)
[INFO] [stderr]    Compiling rustio-admin v0.33.0 (/opt/rustwide/workdir/crates/rustio-admin)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 31.37s
[INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", 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" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.67s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rio_theme-7a411924ebdf363d)
[INFO] [stdout] 
[INFO] [stdout] running 49 tests
[INFO] [stdout] test adaptive::tests::adjustment_flag_separates_attempted_from_succeeded ... ok
[INFO] [stdout] test color::tests::hue_distance_wraps_correctly ... ok
[INFO] [stdout] test color::tests::bad_input_returns_error_no_panic ... ok
[INFO] [stdout] test adaptive::tests::very_dark_navy_lightens_for_dark_mode_only ... ok
[INFO] [stdout] test color::tests::mix_halfway_is_perceptually_centered ... ok
[INFO] [stdout] test color::tests::parse_three_digit_hex_expands ... ok
[INFO] [stdout] test color::tests::out_of_gamut_clamps_not_wraps ... ok
[INFO] [stdout] test color::tests::parse_six_digit_hex ... ok
[INFO] [stdout] test color::tests::mix_self_is_self ... ok
[INFO] [stdout] test color::tests::round_trip_hex_to_hex ... ok
[INFO] [stdout] test contrast::tests::ratio_is_symmetric ... ok
[INFO] [stdout] test contrast::tests::identical_colors_yield_one ... ok
[INFO] [stdout] test derive::tests::bg_is_almost_white_and_border_is_lighter_than_brand ... ok
[INFO] [stdout] test derive::tests::hover_is_darker_than_brand_and_active_darker_still ... ok
[INFO] [stdout] test derive::tests::muted_has_brand_temperature_not_pure_gray ... ok
[INFO] [stdout] test derive::tests::tint_is_lighter_than_brand ... ok
[INFO] [stdout] test emit::tests::dark_explicit_uses_supplied_accent ... ok
[INFO] [stdout] test emit::tests::soft_bg_always_clears_aa_non_text_against_its_foreground ... ok
[INFO] [stdout] test engine::tests::neon_input_trips_vivid_taming_and_guards_accent ... ok
[INFO] [stdout] test emit::tests::emit_contains_every_canonical_brand_token ... ok
[INFO] [stdout] test adaptive::tests::mid_tone_passes_both_modes_unchanged ... ok
[INFO] [stdout] test emit::tests::accent_rgb_triple_agrees_with_accent_hex ... ok
[INFO] [stdout] test emit::tests::dark_block_is_always_emitted ... ok
[INFO] [stdout] test emit::tests::chart_tokens_index_from_one ... ok
[INFO] [stdout] test emit::tests::emit_contains_every_live_template_token ... ok
[INFO] [stdout] test emit::tests::dark_emits_both_explicit_and_auto_blocks ... ok
[INFO] [stdout] test contrast::tests::black_on_white_is_twenty_one ... ok
[INFO] [stdout] test emit::tests::dark_never_leaks_light_background ... ok
[INFO] [stdout] test emit::tests::dark_auto_accent_clears_aa_on_dark_surface ... ok
[INFO] [stdout] test engine::tests::two_color_input_populates_brand_secondary_distinctly ... ok
[INFO] [stdout] test guard::tests::near_black_surface_with_dark_gray_text_falls_back_to_light ... ok
[INFO] [stdout] test guard::tests::white_surface_with_dark_text_passes_through ... ok
[INFO] [stdout] test engine::tests::report_contrast_fields_are_populated ... ok
[INFO] [stdout] test semantic::tests::brand_at_gap_boundary_does_get_capped_rotation ... ok
[INFO] [stdout] test semantic::tests::grey_brand_leaves_all_three_unshifted ... ok
[INFO] [stdout] test semantic::tests::purple_brand_leaves_all_three_unshifted ... ok
[INFO] [stdout] test semantic::tests::red_brand_keeps_danger_at_anchor_for_family_coexistence ... ok
[INFO] [stdout] test guard::tests::readable_text_picks_higher_ratio ... ok
[INFO] [stdout] test semantic::tests::rotation_direction_actually_moves_anchor_away ... ok
[INFO] [stdout] test hierarchy::tests::five_inputs_yield_one_primary_one_secondary_three_chart ... ok
[INFO] [stdout] test engine::tests::brand_text_always_clears_aa_on_bg ... ok
[INFO] [stdout] test emit::tests::dark_light_only_pins_framework_accent ... ok
[INFO] [stdout] test hierarchy::tests::one_input_uses_sentinel_secondary_equal_to_primary ... ok
[INFO] [stdout] test engine::tests::empty_input_uses_default_brand ... ok
[INFO] [stdout] test hierarchy::tests::two_inputs_yield_empty_chart ... ok
[INFO] [stdout] test semantic::tests::neon_green_brand_keeps_success_in_green_family ... ok
[INFO] [stdout] test semantic::tests::signed_hue_diff_handles_wraparound ... ok
[INFO] [stdout] test vivid::tests::calm_blue_passes_through_untamed ... ok
[INFO] [stdout] test vivid::tests::neon_lime_is_tamed_and_hue_is_preserved ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 49 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/engine.rs (/opt/rustwide/target/debug/deps/engine-7af62b327b3dbeda)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test dark_auto_derived ... ok
[INFO] [stdout] test dark_explicit ... ok
[INFO] [stdout] test dark_light_only ... ok
[INFO] [stdout] test pipeline_is_deterministic ... ok
[INFO] [stdout] test five_color_palette ... ok
[INFO] [stdout] test empty_input_uses_default_brand ... ok
[INFO] [stdout] test single_calm_brand ... ok
[INFO] [stdout] test single_neon_brand_is_split_and_tamed ... ok
[INFO] [stdout] test two_near_identical_darks ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rustio_admin-f95adcd29fdb0807)
[INFO] [stdout] 
[INFO] [stdout] running 486 tests
[INFO] [stdout] test admin::admin_recovery_handlers::tests::malformed_inputs_are_rejected ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_accepts_locked_presets ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::external_urls_are_rejected ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_freeform_accepts_positive_minutes ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_freeform_rejects_zero_negative_garbage ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_rejects_unknown_preset ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::path_traversal_is_rejected ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::redirect_collapses_invalid_to_admin_dashboard ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::paths_outside_admin_surface_are_rejected ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::redirect_passes_valid_internal_paths ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::valid_internal_admin_paths_are_accepted ... ok
[INFO] [stdout] test admin::audit::tests::action_type_and_audit_event_vocabularies_dont_collide ... ok
[INFO] [stdout] test admin::audit::tests::audit_event_existing_variants_have_stable_strings ... ok
[INFO] [stdout] test admin::audit::tests::audit_event_strings_are_snake_case ... ok
[INFO] [stdout] test admin::audit::tests::audit_event_password_changed_self_maps_correctly ... ok
[INFO] [stdout] test admin::audit::tests::audit_event_strings_are_unique ... ok
[INFO] [stdout] test admin::audit::tests::legacy_action_type_parser_returns_none_on_unknown_strings ... ok
[INFO] [stdout] test admin::audit::tests::log_entry_default_actor_user_id_is_none ... ok
[INFO] [stdout] test admin::audit::tests::log_entry_with_actor_sets_field ... ok
[INFO] [stdout] test admin::audit::tests::log_entry_default_event_is_none ... ok
[INFO] [stdout] test admin::audit::tests::log_entry_with_event_overrides_action_type_persistence ... ok
[INFO] [stdout] test admin::audit::tests::merge_inserts_into_existing_object ... ok
[INFO] [stdout] test admin::audit::tests::merge_passes_through_non_object_metadata_with_warning ... ok
[INFO] [stdout] test admin::audit::tests::merge_returns_metadata_unchanged_when_no_actor ... ok
[INFO] [stdout] test admin::audit::tests::merge_synthesizes_object_when_metadata_is_none ... ok
[INFO] [stdout] test admin::audit::tests::merge_typed_actor_wins_over_existing_metadata_key ... ok
[INFO] [stdout] test admin::builtin::tests::html_escape_handles_each_entity ... ok
[INFO] [stdout] test admin::builtin::tests::humanize_email_capitalises_local_part ... ok
[INFO] [stdout] test admin::builtin::tests::humanize_email_falls_back_to_full_string ... ok
[INFO] [stdout] test admin::builtin::tests::looks_like_email_accepts_simple ... ok
[INFO] [stdout] test admin::builtin::tests::looks_like_email_rejects_malformed ... ok
[INFO] [stdout] test admin::bulk::tests::default_is_zero_result ... ok
[INFO] [stdout] test admin::bulk::tests::failure_new_owns_reason ... ok
[INFO] [stdout] test admin::bulk::tests::ok_constructs_clean_result ... ok
[INFO] [stdout] test admin::bulk::tests::partial_carries_failures_into_total ... ok
[INFO] [stdout] test admin::csv_export::tests::cells_with_comma_are_quoted ... ok
[INFO] [stdout] test admin::csv_export::tests::cells_with_newlines_are_quoted ... ok
[INFO] [stdout] test admin::csv_export::tests::row_quotes_only_offending_cells ... ok
[INFO] [stdout] test admin::csv_export::tests::row_uses_crlf_and_comma ... ok
[INFO] [stdout] test admin::csv_export::tests::simple_cells_are_unquoted ... ok
[INFO] [stdout] test admin::csv_import::tests::empty_header_column_errors ... ok
[INFO] [stdout] test admin::csv_import::tests::handles_crlf_line_endings ... ok
[INFO] [stdout] test admin::csv_import::tests::parses_simple_header_and_two_rows ... ok
[INFO] [stdout] test admin::docs::tests::embedded_doc_slugs_are_unique ... ok
[INFO] [stdout] test admin::docs::tests::render_markdown_escapes_html_in_source ... ok
[INFO] [stdout] test admin::docs::tests::render_markdown_strips_non_navigable_links_to_text ... ok
[INFO] [stdout] test admin::docs::tests::render_markdown_keeps_external_and_anchor_links ... ok
[INFO] [stdout] test admin::csv_export::tests::wants_csv_accept_header_precedence ... ok
[INFO] [stdout] test admin::bulk::tests::with_message_attaches_summary ... ok
[INFO] [stdout] test admin::docs::tests::find_returns_none_for_unknown_slug ... ok
[INFO] [stdout] test admin::feature_flags::tests::flag_cache_ttl_is_60_seconds ... ok
[INFO] [stdout] test admin::filters::tests::classify_id_email_status_bool_timestamp ... ok
[INFO] [stdout] test admin::filters::tests::empty_choices_slice_falls_back_to_role_based_kind ... ok
[INFO] [stdout] test admin::filters::tests::declared_choices_promote_field_to_multi_select ... ok
[INFO] [stdout] test admin::filters::tests::fk_only_for_integer_id_columns ... ok
[INFO] [stdout] test admin::feature_flags::tests::invalidate_cache_clears_every_entry ... ok
[INFO] [stdout] test admin::csv_export::tests::cells_with_double_quote_double_the_quote ... ok
[INFO] [stdout] test admin::csv_import::tests::trailing_blank_line_is_dropped ... ok
[INFO] [stdout] test admin::filters::tests::infer_with_registry_choices_still_win_over_fk_promotion ... ok
[INFO] [stdout] test admin::filters::tests::format_relation_cell_with_and_without_target ... ok
[INFO] [stdout] test admin::docs::tests::render_markdown_emits_html_for_headings_and_code ... ok
[INFO] [stdout] test admin::csv_import::tests::empty_body_errors ... ok
[INFO] [stdout] test admin::filters::tests::infer_with_registry_falls_back_to_numeric_when_no_relation_resolved ... ok
[INFO] [stdout] test admin::csv_import::tests::handles_quoted_fields_with_commas_and_doubled_quotes ... ok
[INFO] [stdout] test admin::filters::tests::relation_label_overrides_role ... ok
[INFO] [stdout] test admin::docs::tests::embedded_docs_have_non_empty_sources ... ok
[INFO] [stdout] test admin::handlers::csv_escape_tests::no_quote_added_when_only_safe_punctuation ... ok
[INFO] [stdout] test admin::handlers::csv_escape_tests::plain_text_passes_through_unquoted ... ok
[INFO] [stdout] test admin::filters::tests::mask_pii_keeps_prefix_and_replaces_with_bullets ... ok
[INFO] [stdout] test admin::filters::tests::infer_filters_skips_id_and_picks_kinds ... ok
[INFO] [stdout] test admin::handlers::login_flash_tests::logout_flag_produces_signed_out_flash ... ok
[INFO] [stdout] test admin::handlers::compute_row_diff_tests::diff_handles_unset_to_set_transition ... ok
[INFO] [stdout] test admin::handlers::compute_row_diff_tests::diff_empty_when_nothing_changed ... ok
[INFO] [stdout] test admin::handlers::login_flash_tests::logout_takes_precedence_over_password_reset_when_both_present ... ok
[INFO] [stdout] test admin::handlers::compute_row_diff_tests::diff_skips_non_editable_fields ... ok
[INFO] [stdout] test admin::handlers::csv_escape_tests::comma_triggers_quoting ... ok
[INFO] [stdout] test admin::handlers::csv_escape_tests::embedded_quote_is_doubled_inside_quoted_field ... ok
[INFO] [stdout] test admin::handlers::csv_escape_tests::newline_triggers_quoting ... ok
[INFO] [stdout] test admin::handlers::csv_escape_tests::unicode_passes_through_unchanged_when_no_special_chars ... ok
[INFO] [stdout] test admin::handlers::login_flash_tests::no_query_params_produces_no_flash ... ok
[INFO] [stdout] test admin::handlers::login_flash_tests::unknown_password_reset_value_falls_through_silently ... ok
[INFO] [stdout] test admin::handlers::login_flash_tests::password_reset_success_produces_locked_flash_copy ... ok
[INFO] [stdout] test admin::handlers::parse_date_yyyy_mm_dd_tests::rejects_empty_and_garbage ... ok
[INFO] [stdout] test admin::handlers::compute_row_diff_tests::diff_reports_changed_fields_only ... ok
[INFO] [stdout] test admin::handlers::revoke_session_verdict_tests::blocks_revoking_current_session ... ok
[INFO] [stdout] test admin::handlers::revoke_session_verdict_tests::error_message_directs_user_to_revoke_all ... ok
[INFO] [stdout] test admin::admin_recovery_handlers::tests::parse_lock_duration_freeform_overflow_rejected ... ok
[INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::caps_length ... ok
[INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::empty_or_pathological_falls_back_to_file ... ok
[INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::plain_ascii_name_passes_through ... ok
[INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::strips_unix_and_windows_path_components ... ok
[INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::trims_leading_dots ... ok
[INFO] [stdout] test admin::handlers::view_designer_tests::default_mode_always_allowed_even_when_unchecked ... ok
[INFO] [stdout] test admin::handlers::view_designer_tests::parses_a_composition_slot_and_ignores_empty_ones ... ok
[INFO] [stdout] test admin::handlers::view_designer_tests::parses_roles_priority_filter_and_mode ... ok
[INFO] [stdout] test admin::handlers::view_designer_tests::unknown_role_and_mode_fall_back_to_defaults ... ok
[INFO] [stdout] test admin::handlers::view_designer_tests::parses_allowed_modes_only_checked_plus_default ... ok
[INFO] [stdout] test admin::health_dashboard::tests::status_as_str_is_snake_case_and_stable ... ok
[INFO] [stdout] test admin::handlers::parse_date_yyyy_mm_dd_tests::trims_whitespace ... ok
[INFO] [stdout] test admin::healthz::tests::down_response_is_503_with_db_down ... ok
[INFO] [stdout] test admin::handlers::revoke_session_verdict_tests::allows_revoking_different_session ... ok
[INFO] [stdout] test admin::handlers::view_designer_tests::composition_with_unknown_primary_is_dropped ... ok
[INFO] [stdout] test admin::handlers::parse_date_yyyy_mm_dd_tests::accepts_canonical_form ... ok
[INFO] [stdout] test admin::healthz::tests::ok_response_is_200_with_db_up ... ok
[INFO] [stdout] test admin::handlers::revoke_session_verdict_tests::allows_when_no_current_session_resolved ... ok
[INFO] [stdout] test admin::handlers::parse_date_yyyy_mm_dd_tests::normalises_unpadded_input_to_canonical_form ... ok
[INFO] [stdout] test admin::icons::tests::directional_icon_appends_marker_class ... ok
[INFO] [stdout] test admin::icons::tests::directional_icon_with_empty_class_still_marked ... ok
[INFO] [stdout] test admin::icons::tests::symbol_icon_does_not_get_directional_marker ... ok
[INFO] [stdout] test admin::icons::tests::known_icons_render ... ok
[INFO] [stdout] test admin::healthz::tests::response_headers_carry_json_and_no_store ... ok
[INFO] [stdout] test admin::icons::tests::unknown_icon_returns_empty_not_panic ... ok
[INFO] [stdout] test admin::json_api::tests::json_error_redacts_internal_message ... ok
[INFO] [stdout] test admin::json_api::tests::mutation_ok_envelope_supports_ok_status_for_update_delete ... ok
[INFO] [stdout] test admin::json_api::tests::typed_cell_bool_round_trips ... ok
[INFO] [stdout] test admin::icons::tests::vertical_chevron_is_not_directional ... ok
[INFO] [stdout] test admin::json_api::tests::json_error_carries_status_code_and_content_type ... ok
[INFO] [stdout] test admin::json_api::tests::json_error_envelope_shape_is_error_plus_status ... ok
[INFO] [stdout] test admin::json_api::tests::mutation_ok_envelope_carries_admin_name_id_and_status ... ok
[INFO] [stdout] test admin::json_api::tests::json_error_maps_each_status_variant ... ok
[INFO] [stdout] test admin::csv_import::tests::oversized_body_errors ... ok
[INFO] [stdout] test admin::json_api::tests::typed_cell_filepath_returns_string_or_null ... ok
[INFO] [stdout] test admin::json_api::tests::typed_cell_garbage_in_int_column_surfaces_as_string ... ok
[INFO] [stdout] test admin::json_api::tests::typed_cell_integers_parse ... ok
[INFO] [stdout] test admin::json_api::tests::typed_cell_optional_strings_null_on_empty ... ok
[INFO] [stdout] test admin::json_api::tests::typed_cell_required_strings_stay_string ... ok
[INFO] [stdout] test admin::json_api::tests::validation_errors_envelope_shape_and_status ... ok
[INFO] [stdout] test admin::modeladmin::tests::parse_order_spec_handles_leading_minus ... ok
[INFO] [stdout] test admin::modeladmin::tests::search_index_column_default_is_none ... ok
[INFO] [stdout] test admin::modeladmin::tests::sort_dir_sql_is_stable ... ok
[INFO] [stdout] test admin::openapi::tests::schema_for_field_maps_field_types ... ok
[INFO] [stdout] test admin::openapi::tests::empty_admin_has_no_project_paths ... ok
[INFO] [stdout] test admin::notifications::tests::create_table_sql_is_idempotent_shape ... ok
[INFO] [stdout] test admin::openapi::tests::spec_carries_openapi_version_and_info ... ok
[INFO] [stdout] test admin::openapi::tests::schemas_section_is_object ... ok
[INFO] [stdout] test admin::ops::flatten_validation_tests::field_attached_error_prefixes_with_field_label ... ok
[INFO] [stdout] test admin::ops::flatten_validation_tests::global_error_passes_through_unchanged ... ok
[INFO] [stdout] test admin::ops::flatten_validation_tests::unknown_field_name_falls_through_to_banner ... ok
[INFO] [stdout] test admin::ops::flatten_validation_tests::mixed_errors_preserve_order ... ok
[INFO] [stdout] test admin::ops::select_projection_tests::drops_the_fts_column_from_the_projection ... ok
[INFO] [stdout] test admin::ops::select_projection_tests::no_op_when_fts_column_is_not_a_real_column ... ok
[INFO] [stdout] test admin::ops::select_projection_tests::keeps_all_columns_when_no_fts_column ... ok
[INFO] [stdout] test admin::recovery_handlers::tests::recovery_state_constructs_from_default_admin ... ok
[INFO] [stdout] test admin::recovery_handlers::tests::reset_password_form_routes_field_errors_to_named_field ... ok
[INFO] [stdout] test admin::redact::tests::redact_backup_code_is_constant ... ok
[INFO] [stdout] test admin::recovery_handlers::tests::render_contexts_tolerate_absent_correlation_id ... ok
[INFO] [stdout] test admin::recovery_handlers::tests::render_password_policy_error_does_not_leak_plaintext ... ok
[INFO] [stdout] test admin::recovery_handlers::tests::reset_password_form_renders_live_policy_minimum ... ok
[INFO] [stdout] test admin::redact::tests::redact_mfa_secret_is_constant ... ok
[INFO] [stdout] test admin::redact::tests::redact_password_returns_fixed_placeholder ... ok
[INFO] [stdout] test admin::redact::tests::redact_token_format_is_recognizable ... ok
[INFO] [stdout] test admin::redact::tests::redact_token_changes_per_token ... ok
[INFO] [stdout] test admin::recovery_handlers::tests::forgot_password_form_has_only_email_field ... ok
[INFO] [stdout] test admin::redact::tests::redact_token_is_deterministic ... ok
[INFO] [stdout] test admin::redact::tests::redact_token_reveals_no_substring_of_input ... ok
[INFO] [stdout] test admin::handlers::view_designer_tests::editor_template_renders_with_real_context ... ok
[INFO] [stdout] test admin::render::acronym_lockstep_tests::macro_crate_mirror_is_identical ... ok
[INFO] [stdout] test admin::render::tests::action_label_covers_every_audit_event_string ... ok
[INFO] [stdout] test admin::render::adaptive_list_tests::cards_mode_builds_adaptive_with_ids_and_hides_secret ... ok
[INFO] [stdout] test admin::render::adaptive_list_tests::adaptive_partial_renders_clickable_rows_without_hidden ... ok
[INFO] [stdout] test admin::render::tests::extract_changes_round_trips_full_entry ... ok
[INFO] [stdout] test admin::render::tests::extract_changes_skips_malformed_entries ... ok
[INFO] [stdout] test admin::render::tests::fieldsets_drive_section_order_and_titles ... ok
[INFO] [stdout] test admin::render::adaptive_list_tests::table_mode_keeps_legacy_table_but_offers_switcher ... ok
[INFO] [stdout] test admin::render::tests::extract_changes_returns_empty_when_changes_key_missing ... ok
[INFO] [stdout] test admin::render::tests::extract_changes_returns_empty_when_changes_not_array ... ok
[INFO] [stdout] test admin::render::tests::action_pill_class_returns_known_classes ... ok
[INFO] [stdout] test admin::render::tests::extract_changes_falls_back_to_field_when_label_missing ... ok
[INFO] [stdout] test admin::render::tests::extract_changes_returns_empty_when_metadata_is_none ... ok
[INFO] [stdout] test admin::render::tests::highlight_escapes_inside_mark_when_term_contains_specials ... ok
[INFO] [stdout] test admin::render::tests::fieldsets_with_unknown_field_names_skip_silently ... ok
[INFO] [stdout] test admin::render::tests::highlight_escapes_html_around_marks ... ok
[INFO] [stdout] test admin::render::tests::highlight_handles_adjacent_matches ... ok
[INFO] [stdout] test admin::render::tests::highlight_returns_none_when_no_match ... ok
[INFO] [stdout] test admin::render::tests::highlight_wraps_ascii_case_insensitive ... ok
[INFO] [stdout] test admin::render::tests::highlight_wraps_every_occurrence ... ok
[INFO] [stdout] test admin::render::tests::humanise_field_acronym_substrings_left_alone ... ok
[INFO] [stdout] test admin::render::tests::humanise_field_edge_cases ... ok
[INFO] [stdout] test admin::render::tests::humanise_field_plain_snake_case ... ok
[INFO] [stdout] test admin::render::tests::humanise_field_compound_acronyms ... ok
[INFO] [stdout] test admin::render::tests::humanise_field_standalone_acronyms ... ok
[INFO] [stdout] test admin::render::tests::sort_direction_label_numerics_read_highest_lowest ... ok
[INFO] [stdout] test admin::render::tests::password_change_form_sections_only_new_password_carries_hint ... ok
[INFO] [stdout] test admin::render::tests::trust_label_strings ... ok
[INFO] [stdout] test admin::render::tests::highlight_preserves_non_ascii_bytes_around_match ... ok
[INFO] [stdout] test admin::render::tests::sort_direction_label_bools_read_off_on ... ok
[INFO] [stdout] test admin::render::tests::sort_direction_label_datetimes_read_chronological ... ok
[INFO] [stdout] test admin::render::tests::ua_summary_android_chrome ... ok
[INFO] [stdout] test admin::render::tests::sort_direction_label_strings_read_alphabetical ... ok
[INFO] [stdout] test admin::render::tests::password_change_form_sections_renders_live_min_length ... ok
[INFO] [stdout] test admin::render::tests::ua_summary_curl_falls_through_to_unknown_os ... ok
[INFO] [stdout] test admin::render::adaptive_list_tests::list_html_adaptive_branch_swaps_table_for_cards ... ok
[INFO] [stdout] test admin::render::tests::sort_direction_label_filepaths_read_alphabetical ... ok
[INFO] [stdout] test admin::render::tests::ua_summary_ios_safari ... ok
[INFO] [stdout] test admin::render::tests::ua_summary_linux_firefox ... ok
[INFO] [stdout] test admin::render::tests::ua_summary_unknown_returns_truncated ... ok
[INFO] [stdout] test admin::render::tests::ua_summary_none_returns_dash ... ok
[INFO] [stdout] test admin::render::tests::ua_summary_windows_chrome ... ok
[INFO] [stdout] test admin::render::tests::ua_summary_macos_safari ... ok
[INFO] [stdout] test admin::routes::css_lockstep_tests::import_manifest_matches_concat_bundle ... ok
[INFO] [stdout] test admin::routes::tests::admin_css_payload_appends_override_after_baked_bundle ... ok
[INFO] [stdout] test admin::routes::tests::dark_leak_detector_clears_media_block_alone ... ok
[INFO] [stdout] test admin::routes::tests::dark_leak_detector_clears_explicit_dark_block_alone ... ok
[INFO] [stdout] test admin::render::tests::highlight_returns_none_for_empty_term ... ok
[INFO] [stdout] test admin::routes::tests::dark_leak_detector_warns_on_shop_light_only_override ... ok
[INFO] [stdout] test admin::routes::tests::extract_admin_name_parses_slug_segment ... ok
[INFO] [stdout] test admin::routes::tests::extract_admin_name_rejects_root_reserved_and_non_admin ... ok
[INFO] [stdout] test admin::routes::tests::is_mutating_method_recognises_write_verbs ... ok
[INFO] [stdout] test admin::routes::tests::admin_css_payload_none_is_the_baked_bundle_verbatim ... ok
[INFO] [stdout] test admin::routes::tests::dark_leak_detector_ignores_override_with_no_color_tokens ... ok
[INFO] [stdout] test admin::routes::tests::font_routes_serve_shipped_and_404_retired ... ok
[INFO] [stdout] test admin::routes::tests::dark_leak_detector_clears_rio_theme_dual_block_output ... ok
[INFO] [stdout] test admin::routes::tests::perm_guard_admin_short_circuits_without_perm ... ok
[INFO] [stdout] test admin::routes::tests::perm_guard_developer_short_circuits_without_perm ... ok
[INFO] [stdout] test admin::routes::tests::perm_guard_inactive_admin_denies_even_with_bypass ... ok
[INFO] [stdout] test admin::routes::tests::perm_guard_staff_without_perm_denies ... ok
[INFO] [stdout] test admin::routes::tests::perm_guard_staff_with_perm_passes ... ok
[INFO] [stdout] test admin::routes::tests::perm_guard_supervisor_without_perm_denies ... ok
[INFO] [stdout] test admin::routes::tests::read_only_allows_prefix_paths ... ok
[INFO] [stdout] test admin::routes::tests::read_only_blocks_project_data_mutations ... ok
[INFO] [stdout] test admin::routes::tests::read_only_allows_auth_flow_exact_paths ... ok
[INFO] [stdout] test admin::render::adaptive_list_tests::list_html_legacy_branch_unchanged_when_no_spec ... ok
[INFO] [stdout] test admin::routes::tests::read_only_model_builder_and_accessor_round_trip ... ok
[INFO] [stdout] test admin::routes::tests::read_only_blocks_random_paths_outside_admin_surface ... ok
[INFO] [stdout] test admin::handlers::sanitise_upload_filename_tests::replaces_unsafe_chars_with_underscore ... ok
[INFO] [stdout] test admin::audit::tests::emergency_recovery_is_cli_only ... ok
[INFO] [stdout] test admin::routes::tests::role_guard_decision_admin_meets_staff_floor ... ok
[INFO] [stdout] test admin::routes::tests::role_guard_decision_administrator_does_not_meet_developer ... ok
[INFO] [stdout] test admin::routes::tests::role_guard_decision_developer_meets_everything ... ok
[INFO] [stdout] test admin::routes::tests::role_guard_decision_user_does_not_meet_staff ... ok
[INFO] [stdout] test admin::routes::tests::strict_mailer_guard_fails_when_required_but_default_mailer ... ok
[INFO] [stdout] test admin::routes::tests::strict_mailer_guard_passes_for_default_admin ... ok
[INFO] [stdout] test admin::routes::tests::strict_mailer_guard_passes_when_mailer_was_explicitly_overridden ... ok
[INFO] [stdout] test admin::routes::tests::strict_mailer_guard_passes_when_strict_mode_disabled ... ok
[INFO] [stdout] test admin::routes::tests::whitelist_accepts_the_three_locked_paths ... ok
[INFO] [stdout] test admin::routes::tests::whitelist_rejects_paths_outside_admin_surface ... ok
[INFO] [stdout] test admin::routes::tests::whitelist_rejects_subpaths_of_account_sessions ... ok
[INFO] [stdout] test admin::saved_filters::tests::sanitise_name_handles_unicode_chars_correctly ... ok
[INFO] [stdout] test admin::saved_filters::tests::sanitise_name_trims_surrounding_whitespace ... ok
[INFO] [stdout] test admin::saved_filters::tests::sanitise_name_truncates_at_cap ... ok
[INFO] [stdout] test admin::saved_filters::tests::sanitise_query_allows_empty_for_default_view ... ok
[INFO] [stdout] test admin::saved_filters::tests::sanitise_name_rejects_empty_and_whitespace ... ok
[INFO] [stdout] test admin::sdk_gen::tests::empty_admin_emits_header_and_no_interfaces ... ok
[INFO] [stdout] test admin::sdk_gen::tests::header_carries_branded_app_name ... ok
[INFO] [stdout] test admin::sdk_gen::tests::ts_type_for_maps_each_field_type ... ok
[INFO] [stdout] test admin::types::scalar_field_type_tests::choice_field_populates_adminfield_choices ... ok
[INFO] [stdout] test admin::types::scalar_field_type_tests::classify_maps_each_rust_type_to_its_field_type ... ok
[INFO] [stdout] test admin::saved_filters::tests::sanitise_query_caps_long_input ... ok
[INFO] [stdout] test admin::types::scalar_field_type_tests::display_values_use_html_roundtrip_formats ... ok
[INFO] [stdout] test admin::types::scalar_field_type_tests::choice_from_form_accepts_in_set_rejects_out_of_set ... ok
[INFO] [stdout] test admin::types::scalar_field_type_tests::from_form_rejects_invalid_scalars ... ok
[INFO] [stdout] test admin::types::scalar_field_type_tests::from_form_parses_valid_scalars ... ok
[INFO] [stdout] test admin::types::scalar_field_type_tests::widgets_follow_html_input_types ... ok
[INFO] [stdout] test admin::routes::tests::whitelist_rejects_other_admin_paths ... ok
[INFO] [stdout] test admin::types::tests::admin_mailer_builder_flips_override_flag ... ok
[INFO] [stdout] test admin::types::tests::admin_new_has_no_custom_mailer ... ok
[INFO] [stdout] test admin::types::tests::admin_password_policy_overrides_default ... ok
[INFO] [stdout] test admin::types::tests::admin_recovery_policy_overrides_default ... ok
[INFO] [stdout] test admin::validation::tests::email_accepts_typical_addresses ... ok
[INFO] [stdout] test admin::validation::tests::phone_accepts_common_shapes ... ok
[INFO] [stdout] test admin::validation::tests::email_rejects_obvious_typos ... ok
[INFO] [stdout] test auth::guards::tests::ceiling_allows_assigning_equal_or_below ... ok
[INFO] [stdout] test admin::validation::tests::phone_rejects_letters_and_bad_lengths ... ok
[INFO] [stdout] test auth::guards::tests::ceiling_supervisor_cannot_create_administrator ... ok
[INFO] [stdout] test admin::types::tests::admin_new_installs_default_password_policy ... ok
[INFO] [stdout] test auth::guards::tests::ceiling_developer_can_assign_anything_inclusive ... ok
[INFO] [stdout] test admin::types::tests::admin_new_installs_default_recovery_policy ... ok
[INFO] [stdout] test auth::guards::tests::cross_rank_blocks_editing_equal ... ok
[INFO] [stdout] test auth::guards::tests::ceiling_blocks_promote_above_self ... ok
[INFO] [stdout] test auth::guards::tests::cross_rank_allows_editing_lower ... ok
[INFO] [stdout] test auth::guards::tests::cross_rank_allows_editing_self ... ok
[INFO] [stdout] test auth::guards::tests::cross_rank_blocks_editing_higher ... ok
[INFO] [stdout] test auth::guards::tests::cross_rank_developer_can_edit_administrator ... ok
[INFO] [stdout] test auth::guards::tests::self_demote_allows_self_keep_rank ... ok
[INFO] [stdout] test auth::guards::tests::self_demote_blocks_self_deactivate ... ok
[INFO] [stdout] test auth::guards::tests::self_demote_blocks_role_drop ... ok
[INFO] [stdout] test auth::guards::tests::self_demote_ignores_other_targets ... ok
[INFO] [stdout] test auth::mfa::tests::alphabet_is_31_chars_no_ambiguous ... ok
[INFO] [stdout] test auth::mfa::tests::base32_decode_rejects_non_alphabet_chars ... ok
[INFO] [stdout] test auth::mfa::tests::base32_decode_tolerates_hyphens_spaces_padding_and_lowercase ... ok
[INFO] [stdout] test auth::mfa::tests::base32_decode_rfc4648_round_trips_progressive_vectors ... ok
[INFO] [stdout] test auth::mfa::tests::base32_rfc4648_progressive_test_vectors ... ok
[INFO] [stdout] test auth::mfa::tests::build_otpauth_url_matches_google_authenticator_format ... ok
[INFO] [stdout] test auth::mfa::tests::default_is_optional ... ok
[INFO] [stdout] test auth::mfa::tests::current_step_at_canonical_30s_interval ... ok
[INFO] [stdout] test auth::mfa::tests::each_code_is_xxxx_dash_xxxx_shape ... ok
[INFO] [stdout] test auth::mfa::tests::normalise_strips_hyphens_and_uppercases ... ok
[INFO] [stdout] test auth::mfa::tests::policy_is_copy ... ok
[INFO] [stdout] test auth::mfa::tests::truncated_input_rejects_explicitly ... ok
[INFO] [stdout] test auth::mfa::tests::rfc6238_appendix_b_test_vectors_truncated_to_6_digits ... ok
[INFO] [stdout] test auth::mfa::tests::provision_secret_returns_20_bytes ... ok
[INFO] [stdout] test auth::mfa::tests::generate_totp_returns_six_digit_range ... ok
[INFO] [stdout] test auth::mfa::tests::generated_codes_are_unique_within_batch ... ok
[INFO] [stdout] test auth::mfa::tests::tampered_ciphertext_fails_aead_verification ... ok
[INFO] [stdout] test auth::mfa::tests::totp_verify_rejects_wrong_code ... ok
[INFO] [stdout] test auth::mfa::tests::provision_secret_base32_length_matches_secret ... ok
[INFO] [stdout] test auth::mfa::tests::provision_secret_each_call_yields_different_secret ... ok
[INFO] [stdout] test auth::mfa::tests::generate_returns_count_codes ... ok
[INFO] [stdout] test auth::mfa::tests::verify_accepts_one_step_skew ... ok
[INFO] [stdout] test auth::mfa::tests::normalise_is_idempotent ... ok
[INFO] [stdout] test auth::mfa::tests::verify_accepts_current_step ... ok
[INFO] [stdout] test auth::permissions::tests::cache_ttl_is_one_minute ... ok
[INFO] [stdout] test auth::mfa::tests::verify_rejects_invalid_phc_string ... ok
[INFO] [stdout] test auth::mfa::tests::verify_does_not_underflow_at_t_zero ... ok
[INFO] [stdout] test auth::permissions::tests::administrator_and_developer_bypass_group_checks ... ok
[INFO] [stdout] test auth::mfa::tests::verify_rejects_two_step_skew_when_window_is_one ... ok
[INFO] [stdout] test auth::mfa::tests::wrap_unwrap_round_trip_recovers_plaintext ... ok
[INFO] [stdout] test auth::mfa::tests::wrap_uses_fresh_nonce_per_call ... ok
[INFO] [stdout] test auth::mfa::tests::wrong_key_fails_decryption ... ok
[INFO] [stdout] test auth::recovery::tests::consume_outcome_debug_never_carries_plaintext_token ... ok
[INFO] [stdout] test auth::recovery::tests::default_policy_accepts_password_at_floor ... ok
[INFO] [stdout] test auth::recovery::tests::default_policy_counts_chars_not_bytes ... ok
[INFO] [stdout] test auth::recovery::tests::default_policy_floor_is_ten ... ok
[INFO] [stdout] test auth::recovery::tests::default_policy_with_min_len_overrides_floor ... ok
[INFO] [stdout] test auth::recovery::tests::default_policy_rejects_empty_password ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_consume_rate_limit_is_ten_per_five_min ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_login_throttle_is_default ... ok
[INFO] [stdout] test auth::recovery::tests::default_policy_rejects_short_password ... ok
[INFO] [stdout] test auth::recovery::tests::custom_error_renders_message_verbatim ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_mfa_step_seconds_is_thirty ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_reauth_window_is_fifteen_minutes ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_strict_mailer_required_is_false ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_mfa_skew_steps_is_one ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_ttl_is_one_hour ... ok
[INFO] [stdout] test auth::recovery::tests::error_renderings_do_not_leak_plaintext ... ok
[INFO] [stdout] test auth::recovery::tests::humanize_ttl_one_hour_default ... ok
[INFO] [stdout] test auth::recovery::tests::humanize_ttl_minutes ... ok
[INFO] [stdout] test auth::recovery::tests::humanize_ttl_seconds_for_short_windows ... ok
[INFO] [stdout] test auth::mfa::tests::base32_rfc4648_test_vector_foobar ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_request_rate_limit_is_five_per_fifteen_min ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_scope_for_returns_none ... ok
[INFO] [stdout] test auth::recovery::tests::humanize_ttl_two_hours_pluralises ... ok
[INFO] [stdout] test auth::recovery::tests::humanize_ttl_zero_or_negative_returns_safe_string ... ok
[INFO] [stdout] test auth::recovery::tests::issue_outcome_debug_never_carries_plaintext_token ... ok
[INFO] [stdout] test auth::recovery::tests::login_throttle_default_is_five_ten_fifteen ... ok
[INFO] [stdout] test auth::recovery::tests::login_throttle_is_send_sync_copy ... ok
[INFO] [stdout] test auth::recovery::tests::mailer_email_status_round_trip_strings ... ok
[INFO] [stdout] test auth::recovery::tests::malformed_forwarded_inputs_never_panic ... ok
[INFO] [stdout] test auth::recovery::tests::reset_token_retention_window_is_seven_days ... ok
[INFO] [stdout] test auth::recovery::tests::shared_password_policy_is_send_sync ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_handles_ipv6_bracketed_host ... ok
[INFO] [stdout] test auth::recovery::tests::shared_recovery_policy_is_send_sync ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_prefers_rfc7239_forwarded_first_hop ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_handles_quoted_forwarded_values ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_returns_none_when_no_headers_resolve ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_x_forwarded_takes_first_csv_entry ... ok
[INFO] [stdout] test auth::recovery_admin::tests::actor_email_fingerprint_differs_for_different_emails ... ok
[INFO] [stdout] test auth::recovery_admin::tests::actor_email_fingerprint_is_eight_chars ... ok
[INFO] [stdout] test auth::recovery_admin::tests::actor_email_fingerprint_does_not_leak_plaintext ... ok
[INFO] [stdout] test auth::recovery_admin::tests::admin_outcome_types_are_send ... ok
[INFO] [stdout] test auth::recovery_admin::tests::lock_duration_minutes_zero_is_a_past_no_op ... ok
[INFO] [stdout] test auth::recovery_admin::tests::lock_duration_presets_are_relative_to_now ... ok
[INFO] [stdout] test auth::recovery_admin::tests::lock_duration_indefinite_is_year_9999 ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_falls_through_to_x_forwarded_pair ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_falls_back_to_host_header_with_http ... ok
[INFO] [stdout] test auth::recovery_admin::tests::actor_email_fingerprint_is_deterministic ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_rejects_non_http_proto ... ok
[INFO] [stdout] test auth::recovery::tests::site_url_rejects_host_with_whitespace_or_control ... ok
[INFO] [stdout] test auth::recovery_admin::tests::random_temp_password_distinct_across_calls ... ok
[INFO] [stdout] test auth::recovery_admin::tests::lock_state_variants_round_trip ... ok
[INFO] [stdout] test auth::recovery_admin::tests::random_temp_password_is_sixteen_chars ... ok
[INFO] [stdout] test auth::role::tests::bypasses_group_checks_only_admin_and_dev ... ok
[INFO] [stdout] test auth::recovery_admin::tests::random_temp_password_is_url_safe_base64 ... ok
[INFO] [stdout] test auth::role::tests::can_access_panel_gates_at_staff ... ok
[INFO] [stdout] test auth::role::tests::parse_rejects_unknown ... ok
[INFO] [stdout] test auth::role::tests::parse_round_trips_for_every_variant ... ok
[INFO] [stdout] test auth::sessions::tests::extracts_token_from_cookie_header ... ok
[INFO] [stdout] test auth::sessions::tests::hash_token_output_is_url_safe_base64 ... ok
[INFO] [stdout] test auth::sessions::tests::hash_token_is_deterministic ... ok
[INFO] [stdout] test auth::sessions::tests::hash_token_does_not_leak_plaintext ... ok
[INFO] [stdout] test auth::sessions::tests::invalidation_reason_strings_are_distinct ... ok
[INFO] [stdout] test auth::sessions::tests::returns_none_when_cookie_missing ... ok
[INFO] [stdout] test auth::sessions::tests::session_trust_parse_defaults_safely_on_unknown ... ok
[INFO] [stdout] test auth::sessions::tests::session_trust_round_trips_through_sql ... ok
[INFO] [stdout] test auth::sessions::tests::random_token_has_reasonable_entropy ... ok
[INFO] [stdout] test auth::users::tests::verdict_blocks_when_last_member_deactivating ... ok
[INFO] [stdout] test auth::users::tests::user_profile_derives_debug_and_clone ... ok
[INFO] [stdout] test auth::users::tests::verdict_blocks_when_last_member_deleting ... ok
[INFO] [stdout] test auth::users::tests::verdict_blocks_when_last_member_demoting ... ok
[INFO] [stdout] test auth::users::tests::verdict_safe_when_more_than_one_member ... ok
[INFO] [stdout] test auth::users::tests::verdict_safe_when_target_not_in_protected_pool ... ok
[INFO] [stdout] test auth::recovery::tests::default_recovery_policy_with_overrides_apply_field_by_field ... ok
[INFO] [stdout] test auth::users::tests::verdict_safe_when_last_member_keeps_role ... ok
[INFO] [stdout] test email::tests::framework_envelope_appends_security_footer ... ok
[INFO] [stdout] test auth::role::tests::includes_matrix_is_strict_ladder ... ok
[INFO] [stdout] test email::tests::framework_envelope_omits_missing_fields ... ok
[INFO] [stdout] test email::tests::mailer_error_display ... ok
[INFO] [stdout] test email::tests::recovery_html_escapes_html_in_inputs ... ok
[INFO] [stdout] test email::tests::log_mailer_send_is_ok ... ok
[INFO] [stdout] test email::tests::recovery_html_contains_required_markers_and_escapes ... ok
[INFO] [stdout] test auth::sessions::tests::hash_token_differs_per_token ... ok
[INFO] [stdout] test email::tests::redact_likely_tokens_keeps_short_words ... ok
[INFO] [stdout] test email::tests::with_html_attaches_alternative_body ... ok
[INFO] [stdout] test http::formdata_tests::duplicate_keys_collapse_for_get_but_preserved_in_get_all ... ok
[INFO] [stdout] test http::formdata_tests::get_all_returns_empty_slice_for_missing_key ... ok
[INFO] [stdout] test email::tests::recovery_html_powered_by_appears_only_when_opted_in ... ok
[INFO] [stdout] test email::tests::redact_likely_tokens_redacts_long_alnum_strings ... ok
[INFO] [stdout] test auth::role::tests::label_is_capitalized_human_form ... ok
[INFO] [stdout] test http::formdata_tests::set_resets_multi_view_to_single_entry ... ok
[INFO] [stdout] test auth::recovery::tests::purge_query_includes_retention_window_and_table ... ok
[INFO] [stdout] test auth::recovery_admin::tests::throttle_outcome_variants_are_distinct ... ok
[INFO] [stdout] test auth::sessions::tests::session_trust_orders_correctly ... ok
[INFO] [stdout] test http::formdata_tests::single_submission_is_visible_via_both_views ... ok
[INFO] [stdout] test middleware::correlation_id::tests::fresh_id_is_uuid_v7_shape ... ok
[INFO] [stdout] test middleware::correlation_id::tests::fresh_ids_are_unique ... ok
[INFO] [stdout] test middleware::correlation_id::tests::inbound_too_long_is_replaced ... ok
[INFO] [stdout] test middleware::correlation_id::tests::inbound_too_short_is_replaced ... ok
[INFO] [stdout] test middleware::correlation_id::tests::inbound_with_control_chars_is_replaced ... ok
[INFO] [stdout] test middleware::csrf::tests::is_safe_recognises_read_methods ... ok
[INFO] [stdout] test middleware::correlation_id::tests::inbound_safe_value_is_kept ... ok
[INFO] [stdout] test middleware::correlation_id::tests::inbound_with_whitespace_is_trimmed ... ok
[INFO] [stdout] test middleware::locale::tests::first_tag_wins_in_comma_separated_list ... ok
[INFO] [stdout] test middleware::locale::tests::header_with_only_invalid_tags_returns_none ... ok
[INFO] [stdout] test middleware::locale::tests::arabic_and_cjk_tags_are_accepted ... ok
[INFO] [stdout] test middleware::locale::tests::invalid_first_tag_falls_through_to_next ... ok
[INFO] [stdout] test middleware::locale::tests::missing_header_returns_none ... ok
[INFO] [stdout] test middleware::locale::tests::locale_as_str_round_trips ... ok
[INFO] [stdout] test middleware::locale::tests::oversized_tag_is_rejected ... ok
[INFO] [stdout] test middleware::locale::tests::q_value_is_stripped_from_the_tag ... ok
[INFO] [stdout] test migrations::tests::slugify_lowercases_and_replaces ... ok
[INFO] [stdout] test middleware::rate_limit::tests::different_keys_tracked_separately ... ok
[INFO] [stdout] test middleware::locale::tests::single_tag_returned_as_is ... ok
[INFO] [stdout] test migrations::tests::split_ignores_line_comments ... ok
[INFO] [stdout] test migrations::tests::split_ignores_semicolon_in_string ... ok
[INFO] [stdout] test middleware::csrf::tests::constant_time_eq_basic ... ok
[INFO] [stdout] test middleware::locale::tests::whitespace_between_tags_is_tolerated ... ok
[INFO] [stdout] test multipart::tests::boundary_case_insensitive_prefix ... ok
[INFO] [stdout] test multipart::tests::parse_rejects_no_opening_boundary ... ok
[INFO] [stdout] test multipart::tests::boundary_extracts_quoted ... ok
[INFO] [stdout] test multipart::tests::boundary_extracts_simple ... ok
[INFO] [stdout] test multipart::tests::boundary_rejects_non_multipart ... ok
[INFO] [stdout] test multipart::tests::extract_param_handles_quotes_and_unquoted ... ok
[INFO] [stdout] test multipart::tests::parse_file_part ... ok
[INFO] [stdout] test multipart::tests::parse_mixed_text_and_file ... ok
[INFO] [stdout] test orm::value_conversion_tests::scalar_from_impls_map_to_their_variants ... ok
[INFO] [stdout] test multipart::tests::parse_rejects_unterminated_headers ... ok
[INFO] [stdout] test multipart::tests::parse_simple_text_field ... ok
[INFO] [stdout] test router::tests::root_path_still_matches_after_trailing_slash_normalisation ... ok
[INFO] [stdout] test router::tests::captures_param ... ok
[INFO] [stdout] test router::tests::distinguishes_404_from_405 ... ok
[INFO] [stdout] test router::tests::matches_static_path ... ok
[INFO] [stdout] test middleware::rate_limit::tests::bucket_allows_burst_then_blocks ... ok
[INFO] [stdout] test router::tests::trailing_slash_is_normalised_for_static_and_param_routes ... ok
[INFO] [stdout] test view_layer::compose::tests::style_slug_roundtrips_and_matches_serde ... ok
[INFO] [stdout] test admin::audit::tests::model_name_uses_admin_slug_not_struct_name ... ok
[INFO] [stdout] test templates::tests::render_for_model_prefers_per_model_override ... ok
[INFO] [stdout] test templates::tests::missing_template_errors_cleanly ... ok
[INFO] [stdout] test templates::tests::sidebar_marks_active_nav_item ... ok
[INFO] [stdout] test templates::tests::disk_loader_finds_project_template ... ok
[INFO] [stdout] test view_layer::infer::tests::audit_timestamps_are_detail_only ... ok
[INFO] [stdout] test view_layer::infer::tests::enums_become_filterable_badges ... ok
[INFO] [stdout] test view_layer::infer::tests::bookings_example_spec ... ok
[INFO] [stdout] test view_layer::infer::tests::first_text_becomes_primary ... ok
[INFO] [stdout] test view_layer::infer::tests::from_admin_field_maps_relation_and_choices ... ok
[INFO] [stdout] test view_layer::infer::tests::id_is_detail_only ... ok
[INFO] [stdout] test view_layer::infer::tests::inference_is_deterministic ... ok
[INFO] [stdout] test view_layer::infer::tests::nullable_secondary_text_is_demoted ... ok
[INFO] [stdout] test view_layer::render::tests::badge_carries_semantic_class ... ok
[INFO] [stdout] test view_layer::render::tests::cell_serializes_with_kind_tag ... ok
[INFO] [stdout] test view_layer::render::tests::composed_field_not_rendered_twice ... ok
[INFO] [stdout] test view_layer::render::tests::detail_only_excluded_from_list ... ok
[INFO] [stdout] test view_layer::render::tests::humanize_handles_snake_case ... ok
[INFO] [stdout] test view_layer::render::tests::render_view_with_ids_sets_row_ids_and_still_drops_hidden ... ok
[INFO] [stdout] test view_layer::render::tests::hidden_field_value_never_rendered ... ok
[INFO] [stdout] test view_layer::render::tests::shipped_partials_switch_on_kind_and_drop_hidden ... ok
[INFO] [stdout] test view_layer::roles::tests::role_slug_matches_serde_repr ... ok
[INFO] [stdout] test view_layer::roles::tests::role_slug_roundtrips_for_every_variant ... ok
[INFO] [stdout] test view_layer::roles::tests::unknown_role_slug_is_none ... ok
[INFO] [stdout] test view_layer::safety_tests::tests::sensitive_values_never_reach_rendered_cells ... ok
[INFO] [stdout] test view_layer::safety_tests::tests::all_sensitive_names_infer_as_hidden ... ok
[INFO] [stdout] test view_layer::safety_tests::tests::redacted_fields_lists_every_sensitive_column ... ok
[INFO] [stdout] test view_layer::spec::tests::enums_serialize_as_snake_case ... ok
[INFO] [stdout] test view_layer::spec::tests::list_fields_skip_hidden_and_sort_by_priority ... ok
[INFO] [stdout] test view_layer::spec::tests::resolve_mode_rejects_disallowed ... ok
[INFO] [stdout] test view_layer::infer::tests::customers_example_spec ... ok
[INFO] [stdout] test view_layer::spec::tests::version_defaults_when_missing ... ok
[INFO] [stdout] test view_layer::spec::tests::roundtrips_through_json ... ok
[INFO] [stdout] test middleware::locale::tests::empty_header_returns_none ... ok
[INFO] [stdout] test templates::tests::render_for_model_falls_through_to_framework_default ... ok
[INFO] [stdout] test templates::tests::every_embedded_template_loads ... ok
[INFO] [stdout] test templates::tests::every_handler_rendered_template_resolves ... ok
[INFO] [stdout] test auth::mfa::tests::hash_uses_argon2id_low_memory_params ... ok
[INFO] [stdout] test auth::mfa::tests::verify_rejects_wrong_code ... ok
[INFO] [stdout] test auth::mfa::tests::hash_verify_round_trip ... ok
[INFO] [stdout] test auth::users::tests::password_round_trip ... ok
[INFO] [stdout] test auth::mfa::tests::separate_hash_calls_yield_different_phc_strings ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 486 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cascade_lockstep.rs (/opt/rustwide/target/debug/deps/cascade_lockstep-d766e46940e79817)
[INFO] [stdout] running 1 test
[INFO] [stderr]      Running tests/integration_emergency.rs (/opt/rustwide/target/debug/deps/integration_emergency-00c1bb82d5cfdbb4)
[INFO] [stdout] test admin_css_import_order_matches_routes_concat_order ... 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/integration_mfa.rs (/opt/rustwide/target/debug/deps/integration_mfa-2894ca982e4564bb)
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_recovery.rs (/opt/rustwide/target/debug/deps/integration_recovery-7f1d2f8feb263dbd)
[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] [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]      Running tests/integration_view_specs.rs (/opt/rustwide/target/debug/deps/integration_view_specs-aff0931dce3c0b88)
[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]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rustio_admin_assets-6cafe59471c63f6b)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test tests::every_embedded_template_has_bytes ... ok
[INFO] [stdout] test tests::accessors_round_trip ... 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 unittests src/main.rs (/opt/rustwide/target/debug/deps/rustio_admin-42a94b9d5f6f8265)
[INFO] [stdout] 
[INFO] [stdout] running 204 tests
[INFO] [stdout] test app_fields::tests::parse_rejects_empty_field_name ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_field_name_starting_with_digit ... ok
[INFO] [stdout] test app_fields::tests::parse_choice_with_values ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_choice_empty_value ... ok
[INFO] [stdout] test app_fields::tests::parse_choice_single_value_ok ... ok
[INFO] [stdout] test app_fields::tests::parse_fk_target_can_have_digits ... ok
[INFO] [stdout] test app_fields::tests::parse_fk_with_camelcase_target ... ok
[INFO] [stdout] test app_fields::tests::parse_each_simple_type ... ok
[INFO] [stdout] test app_fields::tests::parse_choice_allows_underscore_and_dash ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_bare_choice ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_bare_fk ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_choice_bad_chars ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_choice_duplicate ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_field_name_with_dash ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_fk_with_empty_target ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_fk_with_extra_segment ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_fk_with_lowercase_target ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_missing_colon ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_rust_keyword ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_underscore_only_name ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_unknown_type ... ok
[INFO] [stdout] test app_fields::tests::pluralise_snake_ch_sh_take_es ... ok
[INFO] [stdout] test app_fields::tests::pluralise_snake_default_adds_s ... ok
[INFO] [stdout] test app_fields::tests::pluralise_snake_empty_returns_empty ... ok
[INFO] [stdout] test app_fields::tests::pluralise_snake_sxz_take_es ... ok
[INFO] [stdout] test app_fields::tests::pluralise_handles_common_shapes ... ok
[INFO] [stdout] test app_fields::tests::render_email_and_phone_carry_format_attribute ... ok
[INFO] [stdout] test app_fields::tests::render_decimal_and_uuid_types ... ok
[INFO] [stdout] test app_fields::tests::render_quotes_reserved_keyword_columns ... ok
[INFO] [stdout] test app_fields::tests::render_sql_decls_for_every_kind ... ok
[INFO] [stdout] test app_fields::tests::parse_rejects_field_name_with_uppercase ... ok
[INFO] [stdout] test app_fields::tests::render_new_scalar_types_float_date_time ... ok
[INFO] [stdout] test app_fields::tests::render_search_fields_empty_when_no_text_kinds ... ok
[INFO] [stdout] test app_fields::tests::render_choice_emits_check_and_attribute ... ok
[INFO] [stdout] test app_fields::tests::pluralise_snake_vowel_y_keeps_y ... ok
[INFO] [stdout] test app_fields::tests::render_imports_include_chrono_only_when_timestamp_present ... ok
[INFO] [stdout] test app_fields::tests::render_search_fields_only_text_kinds ... ok
[INFO] [stdout] test app_fields::tests::pluralise_snake_consonant_y_becomes_ies ... ok
[INFO] [stdout] test app_fields::tests::render_from_row_uses_correct_getter_per_type ... ok
[INFO] [stdout] test app_fields::tests::render_insert_values_clones_string_and_json_only ... ok
[INFO] [stdout] test app_fields::tests::validate_unique_passes_for_distinct ... ok
[INFO] [stdout] test app_fields::tests::render_columns_literal_includes_id_first ... ok
[INFO] [stdout] test builder::canonical::tests::final_newline_enforced ... ok
[INFO] [stdout] test builder::canonical::tests::empty_input_stays_empty ... ok
[INFO] [stdout] test app_fields::tests::validate_unique_catches_duplicates ... ok
[INFO] [stdout] test builder::canonical::tests::nfc_normalizes_combining_marks ... ok
[INFO] [stdout] test builder::canonical::tests::trailing_blank_lines_collapsed ... ok
[INFO] [stdout] test builder::canonical::tests::lone_cr_becomes_lf ... ok
[INFO] [stdout] test builder::canonical::tests::crlf_collapses_to_lf ... ok
[INFO] [stdout] test builder::canonical::tests::idempotent ... ok
[INFO] [stdout] test app_fields::tests::render_struct_fields_in_declared_order ... ok
[INFO] [stdout] test builder::canonical::tests::trailing_whitespace_stripped_per_line ... ok
[INFO] [stdout] test builder::cmd::tests::field_name_validator_refuses_reserved_names ... ok
[INFO] [stdout] test builder::cmd::tests::add_field_refuses_unknown_model ... ok
[INFO] [stdout] test builder::cmd::tests::plural_snake_handles_common_cases ... ok
[INFO] [stdout] test builder::codegen::tests::snake_helper_matches_macro_convention ... ok
[INFO] [stdout] test builder::codegen::tests::output_is_canonical_text ... ok
[INFO] [stdout] test builder::cmd::tests::import_rejects_bad_type_and_records_nothing ... ok
[INFO] [stdout] test builder::cmd::tests::model_name_validator_requires_camel_case ... ok
[INFO] [stdout] test builder::codegen::tests::initial_migration_creates_each_table ... ok
[INFO] [stdout] test builder::draft::tests::duplicate_table_names_refused ... ok
[INFO] [stdout] test builder::draft::tests::empty_draft_round_trips ... ok
[INFO] [stdout] test builder::draft::tests::keys_sorted_in_output ... ok
[INFO] [stdout] test builder::codegen::tests::long_field_names_keep_separator_from_type_column ... ok
[INFO] [stdout] test builder::codegen::tests::model_file_includes_field_columns ... ok
[INFO] [stdout] test builder::codegen::tests::unique_modifier_emits_sql_constraint ... ok
[INFO] [stdout] test builder::cmd::tests::project_name_validator_refuses_garbage ... ok
[INFO] [stdout] test builder::draft::tests::duplicate_model_names_refused ... ok
[INFO] [stdout] test builder::codegen::tests::admin_file_registers_each_model ... ok
[INFO] [stdout] test builder::codegen::tests::generation_is_deterministic ... ok
[INFO] [stdout] test builder::codegen::tests::every_emitted_file_carries_doctrine_header ... ok
[INFO] [stdout] test builder::draft::tests::unknown_schema_version_refused ... ok
[INFO] [stdout] test builder::hash::tests::admin_hash_ignores_unrelated_model_fields ... ok
[INFO] [stdout] test builder::draft::tests::unknown_field_type_refused ... ok
[INFO] [stdout] test builder::draft::tests::serialized_output_is_byte_stable ... ok
[INFO] [stdout] test builder::draft::tests::round_trip_via_canonical_toml ... ok
[INFO] [stdout] test builder::hash::tests::hashes_differ_across_projections ... ok
[INFO] [stdout] test builder::hash::tests::model_hash_changes_when_field_added ... ok
[INFO] [stdout] test builder::history::tests::append_emits_required_fields_in_order ... ok
[INFO] [stdout] test builder::hash::tests::model_hash_returns_none_for_absent_model ... ok
[INFO] [stdout] test builder::history::tests::append_is_append_only ... ok
[INFO] [stdout] test builder::history::tests::append_writes_one_line_per_call ... ok
[INFO] [stdout] test builder::history::tests::op_enum_matches_serialized ... ok
[INFO] [stdout] test builder::history::tests::append_refuses_oversized_lines ... ok
[INFO] [stdout] test builder::hash::tests::hashes_share_sha256_prefix ... ok
[INFO] [stdout] test builder::history::tests::append_uses_second_precision_timestamps ... ok
[INFO] [stdout] test builder::hash::tests::hashes_are_deterministic ... ok
[INFO] [stdout] test builder::lifecycle::tests::find_project_root_refuses_symlinked_rustio ... ok
[INFO] [stdout] test builder::lifecycle::tests::find_project_root_walks_up ... ok
[INFO] [stdout] test builder::lifecycle::tests::parse_header_hash_only_first_20_lines ... ok
[INFO] [stdout] test builder::lifecycle::tests::parse_header_hash_refuses_malformed_hash ... ok
[INFO] [stdout] test builder::lifecycle::tests::parse_header_hash_refuses_nested_prefix ... ok
[INFO] [stdout] test builder::lifecycle::tests::lockfile_version_mismatch_refused ... ok
[INFO] [stdout] test builder::lockfile::tests::current_pins_running_version ... ok
[INFO] [stdout] test builder::lifecycle::tests::parse_header_hash_accepts_canonical_only ... ok
[INFO] [stdout] test builder::lockfile::tests::round_trip ... ok
[INFO] [stdout] test builder::lockfile::tests::verify_passes_on_match ... ok
[INFO] [stdout] test builder::lockfile::tests::unknown_schema_version_refused ... ok
[INFO] [stdout] test builder::lockfile::tests::verify_refuses_on_mismatch ... ok
[INFO] [stdout] test builder::redact::tests::is_secret_field_type_detects_category ... ok
[INFO] [stdout] test builder::redact::tests::no_4char_input_substring_leaks ... ok
[INFO] [stdout] test builder::redact::tests::redact_changes_with_input ... ok
[INFO] [stdout] test builder::redact::tests::redact_format_matches_design ... ok
[INFO] [stdout] test builder::redact::tests::secret_field_categories_are_closed ... ok
[INFO] [stdout] test builder::replay::tests::add_field_on_unknown_model_refused ... ok
[INFO] [stdout] test builder::redact::tests::redact_is_deterministic ... ok
[INFO] [stdout] test builder::lifecycle::tests::plan_on_fresh_project_lists_all_creates ... ok
[INFO] [stdout] test builder::replay::tests::empty_history_produces_empty_draft ... ok
[INFO] [stdout] test builder::replay::tests::duplicate_add_model_refused ... ok
[INFO] [stdout] test builder::replay::tests::replay_rebuilds_draft ... ok
[INFO] [stdout] test builder::replay::tests::unknown_op_refused ... ok
[INFO] [stdout] test builder::toml_canon::tests::array_of_tables_preserves_insertion_order ... ok
[INFO] [stdout] test builder::toml_canon::tests::empty_document_round_trips ... ok
[INFO] [stdout] test builder::toml_canon::tests::canonical_round_trip ... ok
[INFO] [stdout] test builder::toml_canon::tests::keys_sorted_within_table ... ok
[INFO] [stdout] test builder::lifecycle::tests::commit_is_idempotent ... ok
[INFO] [stdout] test builder::toml_canon::tests::output_ends_with_single_lf ... ok
[INFO] [stdout] test builder::ulid_gen::tests::new_ulid_is_26_chars_crockford_base32 ... ok
[INFO] [stdout] test builder::ulid_gen::tests::parse_round_trip ... ok
[INFO] [stdout] test builder::ulid_gen::tests::ulids_are_distinct_within_process ... ok
[INFO] [stdout] test docs::tests::health_probe_classifies_500_as_not_running ... ok
[INFO] [stdout] test docs::tests::health_probe_recognises_rustio_200_with_correlation_id ... ok
[INFO] [stdout] test docs::tests::health_probe_recognises_303_with_correlation_id ... ok
[INFO] [stdout] test docs::tests::health_probe_rejects_foreign_server_without_correlation_id ... ok
[INFO] [stdout] test builder::toml_canon::tests::output_uses_lf_line_endings_only ... ok
[INFO] [stdout] test docs::tests::health_probe_returns_false_when_nothing_listening ... ok
[INFO] [stdout] test builder::lifecycle::tests::commit_refuses_mismatched_generated_file_without_force ... ok
[INFO] [stdout] test docs::tests::health_probe_rejects_non_http_response ... ok
[INFO] [stdout] test progress::tests::configure_short_circuits_animation ... ok
[INFO] [stdout] test builder::lifecycle::tests::force_overwrite_quarantines_prior_content ... ok
[INFO] [stdout] test progress::tests::start_then_clear_is_safe_in_non_tty_mode ... ok
[INFO] [stdout] test scaffold::tests::blog_preset_templates_are_non_empty ... ok
[INFO] [stdout] test progress::tests::start_then_done_with_in_non_tty_does_not_panic ... ok
[INFO] [stdout] test scaffold::tests::camel_case_handles_single_word_and_snake ... ok
[INFO] [stdout] test builder::replay::tests::missing_history_file_produces_empty_draft ... ok
[INFO] [stdout] test scaffold::tests::clinic_preset_templates_are_non_empty ... ok
[INFO] [stdout] test scaffold::tests::ecommerce_preset_templates_are_non_empty ... ok
[INFO] [stdout] test progress::tests::start_then_failed_with_in_non_tty_does_not_panic ... ok
[INFO] [stdout] test scaffold::tests::invalid_names_rejected ... ok
[INFO] [stdout] test scaffold::tests::humanise_name_capitalises_words_and_splits_on_separators ... ok
[INFO] [stdout] test scaffold::tests::every_template_carries_at_least_one_placeholder_or_fixed_content ... ok
[INFO] [stdout] test builder::history::tests::no_other_writer_to_history_jsonl_in_cli_crate ... ok
[INFO] [stdout] test builder::lifecycle::tests::find_project_root_refuses_outside ... ok
[INFO] [stdout] test scaffold::tests::project_rejects_unknown_preset_with_valid_list_in_message ... ok
[INFO] [stdout] test builder::lifecycle::tests::commit_then_replan_is_no_op ... ok
[INFO] [stdout] test scaffold::tests::project_translation_agency_wires_models_and_seeded_migrations ... ok
[INFO] [stdout] test scaffold::tests::project_and_project_with_db_share_the_same_file_set ... ok
[INFO] [stdout] test scaffold::tests::translation_agency_preset_templates_are_non_empty ... ok
[INFO] [stdout] test scaffold::tests::project_blog_ships_post_comment_and_both_migrations ... ok
[INFO] [stdout] test builder::lifecycle::tests::commit_writes_every_generated_file ... ok
[INFO] [stdout] test scaffold::tests::project_ecommerce_wires_models_and_seeded_migrations ... ok
[INFO] [stdout] test scaffold::tests::validate_app_name_accepts_typical_names ... ok
[INFO] [stdout] test scaffold::tests::validate_app_name_rejects_capitals_and_dashes ... ok
[INFO] [stdout] test template_override::tests::refuses_path_traversal ... ok
[INFO] [stdout] test template_override::tests::unknown_template_returns_clear_error ... ok
[INFO] [stdout] test template_override::tests::copies_known_template_and_writes_correct_bytes ... ok
[INFO] [stdout] test scaffold::tests::valid_names_accepted ... ok
[INFO] [stdout] test test_init::tests::run_refuses_to_clobber_without_force ... ok
[INFO] [stdout] test test_init::tests::run_writes_smoke_rs_to_default_out_under_force ... ok
[INFO] [stdout] test theme::tests::every_preset_has_six_normalised_hex_fields ... ok
[INFO] [stdout] test test_init::tests::smoke_template_is_a_valid_rust_test_skeleton ... ok
[INFO] [stdout] test theme::tests::four_named_presets_ship ... ok
[INFO] [stdout] test scaffold::tests::project_clinic_wires_models_and_seeded_migrations ... ok
[INFO] [stdout] test theme::tests::show_is_case_insensitive ... ok
[INFO] [stdout] test theme::tests::show_unknown_preset_returns_helpful_error ... ok
[INFO] [stdout] test theme::tests::snippet_compiles_against_admintheme_builder_surface ... ok
[INFO] [stdout] test ui::tests::classify_connect_db_missing_wins_over_pool_timeout_phrasing ... ok
[INFO] [stdout] test scaffold::tests::project_minimal_is_neutral_with_no_domain_models ... ok
[INFO] [stdout] test ui::tests::classify_connect_falls_through_to_generic ... ok
[INFO] [stdout] test ui::tests::classify_connect_recognises_bad_credentials ... ok
[INFO] [stdout] test ui::tests::classify_connect_recognises_missing_database ... ok
[INFO] [stdout] test scaffold::tests::project_with_db_writes_env_with_chosen_db_name ... ok
[INFO] [stdout] test ui::tests::classify_connect_recognises_pool_timeout_as_service_unreachable ... ok
[INFO] [stdout] test ui::tests::classify_connect_recognises_refused ... ok
[INFO] [stdout] test ui::tests::classify_migration_extracts_stem_and_body ... ok
[INFO] [stdout] test ui::tests::classify_migration_falls_through_when_shape_unknown ... ok
[INFO] [stdout] test ui::tests::classify_migration_handles_500_internal_wrap_layer ... ok
[INFO] [stdout] test ui::tests::details_block_indents_and_separates ... ok
[INFO] [stdout] test ui::tests::format_carries_four_parts_in_order ... ok
[INFO] [stdout] test ui::tests::details_omitted_when_none ... ok
[INFO] [stdout] test ui::tests::parse_migration_rejects_multi_word_stem ... ok
[INFO] [stdout] test ui::tests::invalid_value_for_non_role_uses_generic_phrasing ... ok
[INFO] [stdout] test ui::tests::invalid_value_for_role_includes_known_list ... ok
[INFO] [stdout] test ui::tests::parse_missing_database_handles_typical_shape ... ok
[INFO] [stdout] test ui::tests::sentinel_matches_format_prefix ... ok
[INFO] [stdout] test scaffold::tests::project_minimal_writes_homepage_and_migrations_placeholder ... ok
[INFO] [stdout] test wizard::tests::default_db_name_is_always_valid_including_hyphens ... ok
[INFO] [stdout] test wizard::tests::project_types_list_starts_with_custom ... ok
[INFO] [stdout] test wizard::tests::should_run_respects_no_interactive_flag ... ok
[INFO] [stdout] test wizard::tests::validate_db_name_enforces_63_byte_limit ... ok
[INFO] [stdout] test scaffold::tests::project_with_db_also_writes_env_example_for_team_sharing ... ok
[INFO] [stdout] test wizard::tests::validate_db_name_rejects_bad_names ... ok
[INFO] [stdout] test wizard::tests::validate_project_name_mirrors_scaffold_semantics ... ok
[INFO] [stdout] test wizard::tests::validate_db_name_accepts_typical_names ... ok
[INFO] [stdout] test template_override::tests::refuses_to_clobber_without_force ... ok
[INFO] [stdout] test wizard::tests::default_db_name_respects_63_byte_limit ... ok
[INFO] [stdout] test ui::tests::parse_missing_database_returns_none_when_no_match ... ok
[INFO] [stdout] test scaffold::tests::homepage_substitutes_type_phrase_per_project_type ... ok
[INFO] [stdout] test builder::lifecycle::tests::incremental_migration_refused ... ok
[INFO] [stdout] test builder::cmd::tests::add_field_refuses_unknown_type ... ok
[INFO] [stdout] test builder::cmd::tests::new_refuses_existing_directory ... ok
[INFO] [stdout] test builder::cmd::tests::add_field_refuses_secret_category_types ... ok
[INFO] [stdout] test builder::cmd::tests::end_to_end_lifecycle ... ok
[INFO] [stdout] test builder::cmd::tests::import_loads_models_and_fields ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 204 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rustio_admin_macros-9da10394b9455b0b)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test humanise_field_tests::acronym_substrings_are_not_uppercased ... ok
[INFO] [stdout] test humanise_field_tests::datetime_suffixes_preserved ... ok
[INFO] [stdout] test humanise_field_tests::empty_and_trivial_inputs_are_safe ... ok
[INFO] [stdout] test humanise_field_tests::snake_case_to_title_case ... ok
[INFO] [stdout] test plural_snake_tests::trailing_s_left_alone ... ok
[INFO] [stdout] test humanise_field_tests::acronyms_inside_compound_names_are_uppercased ... ok
[INFO] [stdout] test plural_snake_tests::regular_plurals ... ok
[INFO] [stdout] test plural_snake_tests::consonant_y_becomes_ies_vowel_y_keeps_s ... ok
[INFO] [stderr]    Doc-tests rio_theme
[INFO] [stdout] test humanise_field_tests::standalone_acronyms_are_uppercased ... ok
[INFO] [stdout] test plural_snake_tests::ch_sh_x_z_suffixes_take_es ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stderr]    Doc-tests rustio_admin
[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 21 tests
[INFO] [stdout] test crates/rustio-admin/src/admin/audit.rs - admin::audit::LogEntry<'a>::with_actor (line 262) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/audit.rs - admin::audit::LogEntry<'a>::with_event (line 284) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/bulk.rs - admin::bulk::BulkActionResult::with_message (line 139) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin (line 17) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin (line 8) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin::Inline (line 67) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin::ModelAdmin::execute_bulk_action (line 333) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin::ModelAdmin::search_index_column (line 186) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/modeladmin.rs - admin::modeladmin::ModelAdmin::validate (line 272) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/types.rs - admin::types::Admin::mailer (line 867) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/types.rs - admin::types::Admin::password_policy (line 921) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/types.rs - admin::types::Admin::recovery_policy (line 952) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/admin/types.rs - admin::types::Admin::require_mfa (line 997) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/auth/mfa.rs - auth::mfa::MfaPolicy (line 1821) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/auth/mfa.rs - auth::mfa::generate_backup_codes (line 412) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/auth/recovery.rs - auth::recovery::PasswordPolicy (line 163) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/auth/recovery.rs - auth::recovery::RecoveryPolicy::scope_for (line 526) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/email/mod.rs - email (line 25) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/middleware/correlation_id.rs - middleware::correlation_id (line 23) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/middleware/correlation_id.rs - middleware::correlation_id (line 33) ... ignored
[INFO] [stdout] test crates/rustio-admin/src/middleware/locale.rs - middleware::locale (line 47) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 21 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rustio_admin_assets
[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 rustio_admin_macros
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test crates/rustio-admin-macros/src/lib.rs - StructOverrides (line 872) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5", kill_on_drop: false }`
[INFO] [stdout] 08cf08946ccde85e360f5bb6ca9b44119e5c93809c46f615441bcf678e4121e5
