[INFO] cloning repository https://github.com/wiseyoungbuck/supervillain-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wiseyoungbuck/supervillain-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiseyoungbuck%2Fsupervillain-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiseyoungbuck%2Fsupervillain-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e893f7fbb56cab89da924454eb82d6859de514c4
[INFO] testing wiseyoungbuck/supervillain-rs against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiseyoungbuck%2Fsupervillain-rs" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/wiseyoungbuck/supervillain-rs
[INFO] finished tweaking git repo https://github.com/wiseyoungbuck/supervillain-rs
[INFO] tweaked toml for git repo https://github.com/wiseyoungbuck/supervillain-rs written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/wiseyoungbuck/supervillain-rs on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/wiseyoungbuck/supervillain-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c
[INFO] running `Command { std: "docker" "start" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c", 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" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c", 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" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling precomputed-hash v0.1.1
[INFO] [stderr]    Compiling zerocopy v0.8.47
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling mac v0.1.1
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling futf v0.1.5
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling tendril v0.4.3
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling dtoa v1.0.11
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling dtoa-short v0.3.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling maplit v1.0.2
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling web_atoms v0.1.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling mail-builder v0.4.4
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling parse-zoneinfo v0.3.1
[INFO] [stderr]    Compiling chrono-tz-build v0.3.0
[INFO] [stderr]    Compiling chrono-tz v0.9.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling match_token v0.35.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling cssparser v0.35.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling markup5ever v0.35.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling html5ever v0.35.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling ammonia v4.1.2
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling supervillain v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 15s
[INFO] running `Command { std: "docker" "inspect" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c", 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" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling mail-builder v0.4.4
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling supervillain v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 47.93s
[INFO] running `Command { std: "docker" "inspect" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c", 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" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/supervillain-beff1fe7d5fa6f11)
[INFO] [stdout] 
[INFO] [stdout] running 944 tests
[INFO] [stdout] test accounts::tests::authorize_acquires_global_lock_then_releases ... ok
[INFO] [stdout] test accounts::tests::authorize_returns_409_when_already_in_progress ... ok
[INFO] [stdout] test accounts::tests::credential_shape_flags_fastmail_token_pasted_as_outlook_client_id ... ok
[INFO] [stdout] test accounts::tests::credential_shape_ignores_fastmail_accounts ... ok
[INFO] [stdout] test accounts::tests::credential_shape_requires_googleusercontent_suffix_for_gmail ... ok
[INFO] [stdout] test accounts::tests::authorize_releases_lock_on_oauth_error ... ok
[INFO] [stdout] test accounts::tests::credential_shape_requires_guid_for_outlook ... ok
[INFO] [stdout] test accounts::tests::delete_last_account_clears_default ... ok
[INFO] [stdout] test accounts::tests::delete_non_default_account_leaves_default_alone ... ok
[INFO] [stdout] test accounts::tests::atomic_write_creates_file_with_mode_600 ... ok
[INFO] [stdout] test accounts::tests::delete_promotes_first_remaining_account_to_default ... ok
[INFO] [stdout] test accounts::tests::parse_hostile_provider_string_does_not_reach_ui ... ok
[INFO] [stdout] test accounts::tests::parse_rejects_path_traversal_section_names ... ok
[INFO] [stdout] test accounts::tests::parse_reports_typoed_key_as_missing_field ... ok
[INFO] [stdout] test accounts::tests::atomic_write_does_not_leave_tmp_on_success ... ok
[INFO] [stdout] test accounts::tests::parse_skips_account_with_missing_required_fields ... ok
[INFO] [stdout] test accounts::tests::parse_then_serialize_idempotent ... ok
[INFO] [stdout] test accounts::tests::registry_promote_default_when_empty_helper_idempotent ... ok
[INFO] [stdout] test accounts::tests::reset_config_error_baseline_clears_seeded_errors ... ok
[INFO] [stdout] test accounts::tests::parse_unknown_provider_is_reported_with_placeholder ... ok
[INFO] [stdout] test accounts::tests::every_app_config_write_site_resets_the_baseline ... ok
[INFO] [stdout] test accounts::tests::serialize_emits_default_account_before_sections ... ok
[INFO] [stdout] test accounts::tests::serialize_round_trips_all_three_providers ... ok
[INFO] [stdout] test accounts::tests::atomic_write_replaces_existing_atomically ... ok
[INFO] [stdout] test accounts::tests::parse_missing_provider_key_is_reported_distinctly ... ok
[INFO] [stdout] test accounts::tests::registry_delete_then_snapshot_promotes_first_remaining ... ok
[INFO] [stdout] test accounts::tests::registry_snapshot_roundtrips_through_disk ... ok
[INFO] [stdout] test accounts::tests::serde_rejects_unknown_provider_and_missing_required_fields ... ok
[INFO] [stdout] test accounts::tests::serialize_sorts_sections_and_keys_for_diff_stability ... ok
[INFO] [stdout] test accounts::tests::set_default_idempotent_returns_ok ... ok
[INFO] [stdout] test accounts::tests::set_default_rejects_unknown_account ... ok
[INFO] [stdout] test accounts::tests::stale_banner_fires_when_disk_has_hand_edits ... ok
[INFO] [stdout] test accounts::tests::stale_banner_fires_when_startup_parse_error_fixed_on_disk ... ok
[INFO] [stdout] test accounts::tests::stale_banner_none_when_disk_matches_registry ... ok
[INFO] [stdout] test accounts::tests::stale_banner_quiet_when_parse_errors_unchanged_since_startup ... ok
[INFO] [stdout] test accounts::tests::startup_errors_mixed_sources_preserve_order ... ok
[INFO] [stdout] test accounts::tests::upsert_update_path_rejects_provider_change_via_id ... ok
[INFO] [stdout] test accounts::tests::upsert_update_preserves_secrets_when_field_absent ... ok
[INFO] [stdout] test accounts::tests::validate_account_aggregates_field_errors_in_dom_order ... ok
[INFO] [stdout] test accounts::tests::stale_banner_fires_when_hand_edit_adds_malformed_section ... ok
[INFO] [stdout] test accounts::tests::startup_errors_empty_when_everything_is_clean ... ok
[INFO] [stdout] test accounts::tests::atomic_write_seq_disambiguates_concurrent_tmpfiles ... ok
[INFO] [stdout] test accounts::tests::stale_banner_ignores_default_account_divergence ... ok
[INFO] [stdout] test accounts::tests::validate_account_rejects_malformed_client_id_shape ... ok
[INFO] [stdout] test accounts::tests::validate_email_accepts_simple_rejects_missing_at_and_whitespace ... ok
[INFO] [stdout] test accounts::tests::wire_list_exposes_client_id_for_oauth_only ... ok
[INFO] [stdout] test accounts::tests::wire_list_includes_pending_accounts_with_config_email ... ok
[INFO] [stdout] test calendar::tests::cancel_method_parsed_correctly ... ok
[INFO] [stdout] test accounts::tests::validate_section_name_rejects_brackets_newlines_and_empty ... ok
[INFO] [stdout] test calendar::tests::decline_rsvp_still_contains_event_metadata ... ok
[INFO] [stdout] test calendar::tests::invite_quotes_cn_containing_param_terminators ... ok
[INFO] [stdout] test calendar::tests::invite_roundtrips_through_parser ... ok
[INFO] [stdout] test accounts::tests::stale_banner_fires_when_field_edited_in_place ... ok
[INFO] [stdout] test accounts::tests::startup_errors_combine_all_three_sources_with_resolved_paths ... ok
[INFO] [stdout] test calendar::tests::invite_emits_tzid_dtstart_and_vtimezone ... ok
[INFO] [stdout] test calendar::tests::lifecycle_cancel_method_not_request ... ok
[INFO] [stdout] test calendar::tests::invite_with_crlf_in_attendee_name_does_not_inject_property ... ok
[INFO] [stdout] test calendar::tests::datetime_property_prefix_not_confused ... ok
[INFO] [stdout] test accounts::tests::wire_list_uses_session_email_and_marks_ok ... ok
[INFO] [stdout] test calendar::tests::lifecycle_rsvp_reply_never_triggers_auto_add ... ok
[INFO] [stdout] test calendar::tests::parse_all_day_event ... ok
[INFO] [stdout] test calendar::tests::no_status_preserves_method ... ok
[INFO] [stdout] test calendar::tests::parse_attendees ... ok
[INFO] [stdout] test calendar::tests::parse_dtstart_value ... ok
[INFO] [stdout] test calendar::tests::parse_missing_dtend ... ok
[INFO] [stdout] test calendar::tests::parse_floating_time_uses_local_tz ... ok
[INFO] [stdout] test calendar::tests::parse_no_uid_returns_none ... ok
[INFO] [stdout] test calendar::tests::parse_missing_location ... ok
[INFO] [stdout] test calendar::tests::parse_no_vevent_returns_none ... ok
[INFO] [stdout] test calendar::tests::parse_method ... ok
[INFO] [stdout] test calendar::tests::parse_organizer_email ... ok
[INFO] [stdout] test calendar::tests::parse_invalid_ics_returns_none ... ok
[INFO] [stdout] test calendar::tests::parse_organizer_name ... ok
[INFO] [stdout] test calendar::tests::parse_preserves_raw_ics ... ok
[INFO] [stdout] test calendar::tests::parse_tzid_converts_to_utc ... ok
[INFO] [stdout] test calendar::tests::parse_tzid_uses_dst_when_event_in_summer ... ok
[INFO] [stdout] test calendar::tests::parse_tzid_positive_offset ... ok
[INFO] [stdout] test calendar::tests::parse_utc_offset_various_formats ... ok
[INFO] [stdout] test calendar::tests::parse_tzid_uses_standard_when_event_in_winter ... ok
[INFO] [stdout] test calendar::tests::parse_utc_z_suffix_unchanged ... ok
[INFO] [stdout] test calendar::tests::parse_user_rsvp_status_is_none ... ok
[INFO] [stdout] test calendar::tests::parse_vtimezone_offsets_extracts_multiple ... ok
[INFO] [stdout] test calendar::tests::reply_method_not_request ... ok
[INFO] [stdout] test calendar::tests::property_prefix_not_confused_with_longer_name ... ok
[INFO] [stdout] test calendar::tests::rsvp_declined ... ok
[INFO] [stdout] test calendar::tests::rsvp_always_produces_reply_method ... ok
[INFO] [stdout] test calendar::tests::rsvp_includes_organizer ... ok
[INFO] [stdout] test calendar::tests::rsvp_attendee_accepted ... ok
[INFO] [stdout] test calendar::tests::rsvp_includes_uid ... ok
[INFO] [stdout] test calendar::tests::rsvp_no_dtend ... ok
[INFO] [stdout] test calendar::tests::rsvp_method_reply ... ok
[INFO] [stdout] test calendar::tests::rsvp_is_parseable ... ok
[INFO] [stdout] test calendar::tests::rsvp_tentative ... ok
[INFO] [stdout] test calendar::tests::rsvp_preserves_cn ... ok
[INFO] [stdout] test calendar::tests::rsvp_with_tz_emits_tzid_not_z ... ok
[INFO] [stdout] test calendar::tests::rsvp_with_crlf_in_organizer_does_not_inject_property ... ok
[INFO] [stdout] test calendar::tests::rsvp_unknown_attendee ... ok
[INFO] [stdout] test calendar::tests::rsvp_with_tz_roundtrip_preserves_instant ... ok
[INFO] [stdout] test calendar::tests::status_cancelled_normalizes_method_to_cancel ... ok
[INFO] [stdout] test calendar::tests::status_confirmed_preserves_method ... ok
[INFO] [stdout] test calendar::tests::strip_method_crlf_line_endings ... ok
[INFO] [stdout] test calendar::tests::strip_method_no_method_unchanged ... ok
[INFO] [stdout] test calendar::tests::strip_method_removes_method_request ... ok
[INFO] [stdout] test calendar::tests::uid_stable_through_full_rsvp_lifecycle ... ok
[INFO] [stdout] test calendar::tests::uid_with_special_chars_survives_rsvp ... ok
[INFO] [stdout] test calendar::tests::lifecycle_rsvp_does_not_clobber_other_attendees ... ok
[INFO] [stdout] test calendar::tests::update_partstat_preserves_full_ics ... ok
[INFO] [stdout] test calendar::tests::update_partstat_no_match_returns_unchanged ... ok
[INFO] [stdout] test calendar::tests::vtimezone_includes_x_lic_location ... ok
[INFO] [stdout] test error::tests::auth_error_does_not_leak_token ... ok
[INFO] [stdout] test error::tests::bad_request_returns_400 ... ok
[INFO] [stdout] test error::tests::internal_error_does_not_leak_details ... ok
[INFO] [stdout] test calendar::tests::no_method_defaults_not_request ... ok
[INFO] [stdout] test calendar::tests::parse_attendee_without_cn ... ok
[INFO] [stdout] test calendar::tests::parse_basic_event ... ok
[INFO] [stdout] test calendar::tests::update_partstat_case_insensitive_email ... ok
[INFO] [stdout] test calendar::tests::update_partstat_changes_matching_attendee ... ok
[INFO] [stdout] test error::tests::network_error_returns_500 ... ok
[INFO] [stdout] test error::tests::not_connected_returns_503 ... ok
[INFO] [stdout] test error::tests::rate_limited_echoes_retry_after_header ... ok
[INFO] [stdout] test error::tests::rate_limited_no_retry_after_omits_header ... ok
[INFO] [stdout] test calendar::tests::lifecycle_parse_never_sets_user_rsvp_status ... ok
[INFO] [stdout] test error::tests::internal_error_returns_500 ... ok
[INFO] [stdout] test error::tests::network_error_does_not_leak_details ... ok
[INFO] [stdout] test error::tests::rate_limited_returns_429 ... ok
[INFO] [stdout] test glob::tests::case_insensitive ... ok
[INFO] [stdout] test calendar::tests::lifecycle_accept_persists_and_reads_back ... ok
[INFO] [stdout] test error::tests::not_found_returns_404 ... ok
[INFO] [stdout] test calendar::tests::lifecycle_re_rsvp_decline_then_accept ... ok
[INFO] [stdout] test calendar::tests::lifecycle_rsvp_response_matches_persisted_status ... ok
[INFO] [stdout] test calendar::tests::lifecycle_change_accept_to_decline ... ok
[INFO] [stdout] test glob::tests::empty_pattern_matches_empty_string ... ok
[INFO] [stdout] test glob::tests::nested_star_wildcard ... ok
[INFO] [stdout] test glob::tests::no_match ... ok
[INFO] [stdout] test glob::tests::exact_match ... ok
[INFO] [stdout] test glob::tests::question_mark_matches_single_char ... ok
[INFO] [stdout] test glob::tests::star_matches_anything ... ok
[INFO] [stdout] test gmail::tests::auth_url_lists_exactly_three_scopes ... ok
[INFO] [stdout] test gmail::tests::build_mailboxes_nested_orphan_no_parent ... ok
[INFO] [stdout] test glob::tests::star_at_domain_does_not_match_other ... ok
[INFO] [stdout] test glob::tests::star_at_domain_matches ... ok
[INFO] [stdout] test gmail::tests::batch_modify_body_includes_ids ... ok
[INFO] [stdout] test gmail::tests::build_mailboxes_excludes_starred_and_important ... ok
[INFO] [stdout] test calendar::tests::lifecycle_uid_stable_through_rsvp_changes ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_bcc_included_in_headers ... ok
[INFO] [stdout] test gmail::tests::build_mailboxes_nested_user_label_gets_parent_id ... ok
[INFO] [stdout] test glob::tests::prefix_star_matches ... ok
[INFO] [stdout] test gmail::tests::auth_url_contains_required_params ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_multiple_recipients ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_reply_includes_in_reply_to_and_references ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_text_only_has_required_headers ... ok
[INFO] [stdout] test calendar::tests::update_partstat_handles_folded_attendee ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_text_and_html_uses_alternative ... ok
[INFO] [stdout] test gmail::tests::classify_includes_operation_status_and_body ... ok
[INFO] [stdout] test gmail::tests::classify_rate_limit_returns_rate_limited_variant ... ok
[INFO] [stdout] test gmail::tests::extract_message_id_bracketed ... ok
[INFO] [stdout] test gmail::tests::classify_401_returns_bad_request ... ok
[INFO] [stdout] test gmail::tests::extract_message_id_empty ... ok
[INFO] [stdout] test gmail::tests::classify_403_returns_bad_request ... ok
[INFO] [stdout] test gmail::tests::classify_4xx_returns_bad_request ... ok
[INFO] [stdout] test gmail::tests::build_rfc822_with_attachment_becomes_multipart_mixed ... ok
[INFO] [stdout] test gmail::tests::classify_503_returns_internal ... ok
[INFO] [stdout] test gmail::tests::exclude_system_keyword_labels ... ok
[INFO] [stdout] test gmail::tests::classify_5xx_returns_internal ... ok
[INFO] [stdout] test gmail::tests::extract_message_id_with_whitespace_and_comment ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_nested_in_multipart ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_at_root ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_handles_deep_nesting_without_stack_overflow ... ok
[INFO] [stdout] test gmail::tests::google_json_defaults_end_to_one_hour_when_missing ... ok
[INFO] [stdout] test gmail::tests::extract_message_id_unbracketed_passes_through ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_pre_order_returns_first_when_siblings_match ... ok
[INFO] [stdout] test gmail::tests::clear_stored_tokens_removes_from_store ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_returns_none_when_absent ... ok
[INFO] [stdout] test gmail::tests::drain_consumed_synthetic_blobs_removes_only_synthetic_entries ... ok
[INFO] [stdout] test gmail::tests::gmail_limiter_is_configured_for_per_user_throttling ... ok
[INFO] [stdout] test gmail::tests::google_json_includes_location_when_set ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_attendees_when_empty ... ok
[INFO] [stdout] test gmail::tests::google_json_attendee_status_translated ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_empty_description ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_empty_location ... ok
[INFO] [stdout] test gmail::tests::download_blob_rejects_synthetic_blob_ref ... ok
[INFO] [stdout] test calendar::tests::update_partstat_preserves_other_attendees ... ok
[INFO] [stdout] test glob::tests::empty_pattern_does_not_match_nonempty ... ok
[INFO] [stdout] test gmail::tests::find_calendar_ics_case_insensitive_mime ... ok
[INFO] [stdout] test gmail::tests::google_json_has_required_fields ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_organizer_display_name_when_absent ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_sent ... ok
[INFO] [stdout] test gmail::tests::google_json_omits_organizer_display_name_when_empty_string ... ok
[INFO] [stdout] test gmail::tests::ics_to_google_status_mapping ... ok
[INFO] [stdout] test gmail::tests::google_to_ics_status_mapping ... ok
[INFO] [stdout] test gmail::tests::include_system_folder_labels ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_draft ... ok
[INFO] [stdout] test gmail::tests::include_user_labels_always ... ok
[INFO] [stdout] test gmail::tests::is_displayable_label_id_predicate ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_inbox ... ok
[INFO] [stdout] test error::tests::auth_error_returns_401 ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_spam ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_starred_no_role ... ok
[INFO] [stdout] test gmail::tests::label_to_role_user_label_no_role ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_canonical_form ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_handles_leading_whitespace ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_empty_rejected ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_gmail_id_rejected ... ok
[INFO] [stdout] test gmail::tests::looks_like_message_id_unbracketed_rejected ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_excludes_category_labels ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_excludes_starred_pseudo_label ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_excludes_unread_pseudo_label ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_excludes_important_and_chat ... ok
[INFO] [stdout] test gmail::tests::label_to_role_system_trash ... ok
[INFO] [stdout] test gmail::tests::mime_path_renders_flat_leaf ... ok
[INFO] [stdout] test gmail::tests::mutate_attendee_status_case_insensitive_match ... ok
[INFO] [stdout] test gmail::tests::mutate_attendee_status_preserves_other_fields ... ok
[INFO] [stdout] test gmail::tests::mutate_attendee_status_returns_false_when_email_absent ... ok
[INFO] [stdout] test gmail::tests::next_page_start_none_yields_end ... ok
[INFO] [stdout] test gmail::tests::mutate_attendee_status_updates_match ... ok
[INFO] [stdout] test gmail::tests::parse_address_bare_email ... ok
[INFO] [stdout] test gmail::tests::mailbox_ids_includes_user_labels ... ok
[INFO] [stdout] test gmail::tests::mime_path_renders_nested_tree_with_siblings ... ok
[INFO] [stdout] test gmail::tests::modify_body_with_empty_add_or_remove_keeps_empty_array ... ok
[INFO] [stdout] test gmail::tests::move_plan_inbox_restores_by_removing_trash_and_spam ... ok
[INFO] [stdout] test gmail::tests::move_plan_rejects_draft_and_sent ... ok
[INFO] [stdout] test gmail::tests::move_plan_trash_routes_to_trash_endpoint ... ok
[INFO] [stdout] test gmail::tests::next_page_start_some_token_yields_with ... ok
[INFO] [stdout] test gmail::tests::parse_address_list_multiple ... ok
[INFO] [stdout] test gmail::tests::parse_address_with_name ... ok
[INFO] [stdout] test gmail::tests::parse_address_quoted_comma_is_currently_mis_parsed ... ok
[INFO] [stdout] test gmail::tests::modify_body_includes_both_label_arrays ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_attendee_missing_email_skipped ... ok
[INFO] [stdout] test gmail::tests::move_plan_user_label_adds_target_removes_inbox ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_missing_start_returns_none ... ok
[INFO] [stdout] test gmail::tests::parse_message_inline_image_in_related_skipped ... ok
[INFO] [stdout] test gmail::tests::parse_message_internal_date_parses_to_received_at ... ok
[INFO] [stdout] test gmail::tests::parse_message_starred_label_sets_flagged ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_handles_all_day_date ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_empty_optional_fields_treated_as_none ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_full ... ok
[INFO] [stdout] test gmail::tests::parse_message_attachment_in_mixed_not_skipped_even_if_inline ... ok
[INFO] [stdout] test gmail::tests::parse_message_text_and_html_alternative ... ok
[INFO] [stdout] test gmail::tests::parse_google_event_maps_all_attendee_statuses ... ok
[INFO] [stdout] test gmail::tests::parse_message_nested_related_alternative_extracts_both_bodies ... ok
[INFO] [stdout] test gmail::tests::parse_message_text_only ... ok
[INFO] [stdout] test gmail::tests::parse_message_with_attachment ... ok
[INFO] [stdout] test gmail::tests::move_plan_rejects_spam ... ok
[INFO] [stdout] test gmail::tests::parse_message_with_calendar_invite ... ok
[INFO] [stdout] test gmail::tests::q_translator_escapes_inner_quote ... ok
[INFO] [stdout] test gmail::tests::q_translator_combined_query_space_joined ... ok
[INFO] [stdout] test gmail::tests::q_translator_empty ... ok
[INFO] [stdout] test gmail::tests::q_translator_multiple_from_ands ... ok
[INFO] [stdout] test gmail::tests::q_translator_single_from ... ok
[INFO] [stdout] test gmail::tests::rate_limited_detects_403_quota_body ... ok
[INFO] [stdout] test gmail::tests::record_page_fetched_grows_cache_with_end_padding ... ok
[INFO] [stdout] test gmail::tests::parse_address_with_quoted_name ... ok
[INFO] [stdout] test gmail::tests::rate_limited_detects_429 ... ok
[INFO] [stdout] test gmail::tests::q_translator_is_unread ... ok
[INFO] [stdout] test gmail::tests::q_translator_has_attachment ... ok
[INFO] [stdout] test gmail::tests::q_translator_quotes_subject_with_colon ... ok
[INFO] [stdout] test gmail::tests::record_page_fetched_overwrites_existing_slot ... ok
[INFO] [stdout] test gmail::tests::q_translator_quotes_whitespace_value ... ok
[INFO] [stdout] test gmail::tests::rate_limited_ignores_plain_403 ... ok
[INFO] [stdout] test gmail::tests::rate_limited_ignores_other_4xx ... ok
[INFO] [stdout] test gmail::tests::status_mapping_round_trips_for_known_values ... ok
[INFO] [stdout] test gmail::tests::peek_blob_bytes_does_not_consume_synthetic ... ok
[INFO] [stdout] test gmail::tests::q_translator_free_text_passthrough ... ok
[INFO] [stdout] test gmail::tests::record_page_fetched_seeds_next_slot_with_token ... ok
[INFO] [stdout] test gmail::tests::record_page_fetched_none_yields_end_sentinel_not_first ... ok
[INFO] [stdout] test jmap::tests::attendee_status_finds_accepted ... ok
[INFO] [stdout] test jmap::tests::attendee_status_case_insensitive_email ... ok
[INFO] [stdout] test gmail::tests::upload_blob_roundtrips_through_blob_ref ... ok
[INFO] [stdout] test jmap::tests::attendee_status_invalid_ics_returns_none ... ok
[INFO] [stdout] test jmap::tests::attendee_status_finds_tentative ... ok
[INFO] [stdout] test jmap::tests::body_structure_part_handles_null_size_and_sub_parts ... ok
[INFO] [stdout] test jmap::tests::body_structure_part_from_jmap ... ok
[INFO] [stdout] test jmap::tests::case_insensitive_filename ... ok
[INFO] [stdout] test jmap::tests::collect_inline_cids_defaults_name_to_inline ... ok
[INFO] [stdout] test jmap::tests::collect_inline_cids_finds_cid_parts ... ok
[INFO] [stdout] test jmap::tests::collect_inline_cids_null_returns_empty ... ok
[INFO] [stdout] test jmap::tests::case_insensitive_mime ... ok
[INFO] [stdout] test jmap::tests::attendee_status_finds_needs_action ... ok
[INFO] [stdout] test jmap::tests::attendee_status_unknown_email_returns_none ... ok
[INFO] [stdout] test jmap::tests::body_structure_part_defaults_on_missing_fields ... ok
[INFO] [stdout] test gmail::tests::upload_blob_cap_rejects_after_32_entries ... ok
[INFO] [stdout] test gmail::tests::q_translator_email_with_plus_unquoted ... ok
[INFO] [stdout] test gmail::tests::upload_blob_rejects_oversized_per_blob ... ok
[INFO] [stdout] test gmail::tests::q_translator_dates_use_slashes_not_dashes ... ok
[INFO] [stdout] test jmap::tests::collect_inline_cids_skips_parts_without_cid ... ok
[INFO] [stdout] test jmap::tests::draft_calendar_body_value_contains_ics ... ok
[INFO] [stdout] test jmap::tests::draft_forward_includes_mailbox_ids ... ok
[INFO] [stdout] test jmap::tests::draft_calendar_with_attachment_appends ... ok
[INFO] [stdout] test jmap::tests::detect_ics_filename ... ok
[INFO] [stdout] test jmap::tests::draft_html_with_attachment_wraps_in_mixed ... ok
[INFO] [stdout] test jmap::tests::draft_multipart_when_html_body_present ... ok
[INFO] [stdout] test jmap::tests::detect_text_calendar_mime ... ok
[INFO] [stdout] test jmap::tests::detect_nested_calendar ... ok
[INFO] [stdout] test jmap::tests::draft_includes_cc_and_bcc_when_present ... ok
[INFO] [stdout] test jmap::tests::draft_no_attachments_unchanged ... ok
[INFO] [stdout] test jmap::tests::draft_reply_includes_mailbox_ids ... ok
[INFO] [stdout] test jmap::tests::draft_omits_empty_cc_and_bcc ... ok
[INFO] [stdout] test jmap::tests::draft_includes_mailbox_ids ... ok
[INFO] [stdout] test jmap::tests::draft_without_calendar_ics_unchanged ... ok
[INFO] [stdout] test jmap::tests::drafts_mailbox_lookup_fails_when_missing ... ok
[INFO] [stdout] test jmap::tests::empty_object_returns_none ... ok
[INFO] [stdout] test jmap::tests::drafts_mailbox_lookup_succeeds ... ok
[INFO] [stdout] test jmap::tests::draft_multiple_attachments ... ok
[INFO] [stdout] test jmap::tests::draft_text_only_when_no_html_body ... ok
[INFO] [stdout] test jmap::tests::draft_text_with_attachment_wraps_in_mixed ... ok
[INFO] [stdout] test jmap::tests::draft_with_calendar_ics_has_multipart_mixed ... ok
[INFO] [stdout] test jmap::tests::draft_sets_from_to_subject_body ... ok
[INFO] [stdout] test jmap::tests::find_attachments_by_filename_without_disposition ... ok
[INFO] [stdout] test jmap::tests::find_attachments_deeply_nested ... ok
[INFO] [stdout] test jmap::tests::find_attachments_inline_in_mixed_included ... ok
[INFO] [stdout] test jmap::tests::find_attachments_leaf_with_empty_subparts ... ok
[INFO] [stdout] test jmap::tests::find_attachments_text_plain_skipped ... ok
[INFO] [stdout] test jmap::tests::find_attachments_mixed_inside_related_not_suppressed ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_attachment ... ok
[INFO] [stdout] test jmap::tests::jmap_email_raw_handles_explicit_null_fields ... ok
[INFO] [stdout] test jmap::tests::find_attachments_inline_skipped_in_related ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_date_before ... ok
[INFO] [stdout] test jmap::tests::find_attachments_nested_multipart ... ok
[INFO] [stdout] test jmap::tests::jmap_email_raw_deserializes_with_only_split_count_properties ... ok
[INFO] [stdout] test jmap::tests::find_attachments_no_blob_id_skipped ... ok
[INFO] [stdout] test jmap::tests::find_attachments_null_returns_empty ... ok
[INFO] [stdout] test jmap::tests::find_attachments_pdf_with_disposition ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_date_after ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_text ... ok
[INFO] [stdout] test jmap::tests::parse_email_no_cid_unchanged ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_unread ... ok
[INFO] [stdout] test jmap::tests::parse_email_resolves_cid_urls ... ok
[INFO] [stdout] test jmap::tests::no_calendar_returns_none ... ok
[INFO] [stdout] test jmap::tests::parse_multiple_html_body_parts_concatenated ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_mailbox_only ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_from ... ok
[INFO] [stdout] test jmap::tests::null_body_returns_none ... ok
[INFO] [stdout] test jmap::tests::parse_both_text_and_html_single_parts ... ok
[INFO] [stdout] test jmap::tests::parse_multiple_text_body_parts_concatenated ... ok
[INFO] [stdout] test jmap::tests::parse_no_body_when_fetch_body_false ... ok
[INFO] [stdout] test jmap::tests::parse_email_cid_with_special_filename ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_empty ... ok
[INFO] [stdout] test jmap::tests::percent_encode_path_encodes_spaces_and_special ... ok
[INFO] [stdout] test jmap::tests::percent_encode_path_passes_safe_chars ... ok
[INFO] [stdout] test jmap::tests::replace_case_insensitive_basic ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_flagged ... ok
[INFO] [stdout] test jmap::tests::parse_single_text_body_part ... ok
[INFO] [stdout] test jmap::tests::jmap_filter_multiple_conditions_uses_and ... ok
[INFO] [stdout] test jmap::tests::replace_case_insensitive_no_match ... ok
[INFO] [stdout] test jmap::tests::parse_single_html_body_part ... ok
[INFO] [stdout] test jmap::tests::uuid_v4_format ... ok
[INFO] [stdout] test jmap::tests::uuid_v4_unique ... ok
[INFO] [stdout] test oauth::tests::code_challenge_is_base64url ... ok
[INFO] [stdout] test oauth::tests::code_challenge_rfc7636_appendix_b ... ok
[INFO] [stdout] test jmap::tests::top_level_calendar ... ok
[INFO] [stdout] test jmap::tests::replace_case_insensitive_mixed_case ... ok
[INFO] [stdout] test jmap::tests::replace_case_insensitive_multiple_occurrences ... ok
[INFO] [stdout] test oauth::tests::code_verifier_length_and_charset ... ok
[INFO] [stdout] test jmap::tests::uuid_v4_variant_bits ... ok
[INFO] [stdout] test jmap::tests::uuid_v4_version_bits ... ok
[INFO] [stdout] test oauth::tests::sha256_empty ... ok
[INFO] [stdout] test oauth::tests::sha256_multiblock ... ok
[INFO] [stdout] test oauth::tests::state_is_hex_and_correct_length ... ok
[INFO] [stdout] test outlook::tests::alias_success_is_not_a_failure ... ok
[INFO] [stdout] test outlook::tests::auth_url_contains_required_params ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_no_description_empty_body ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_no_end_defaults_to_one_hour ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_with_attendees ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_empty_returns_no_chunks ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_no_location_omits_field ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_50_spans_three_chunks ... ok
[INFO] [stdout] test outlook::tests::build_graph_event_basic ... ok
[INFO] [stdout] test outlook::tests::alias_404_is_a_permanent_miss ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_21_spans_two_chunks ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_exactly_20_returns_one_chunk ... ok
[INFO] [stdout] test outlook::tests::chunk_batch_one_message_returns_one_chunk ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_429_returns_rate_limited ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_4xx_returns_bad_request ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_503_returns_rate_limited ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_5xx_returns_internal ... ok
[INFO] [stdout] test oauth::tests::sha256_hello ... ok
[INFO] [stdout] test outlook::tests::alias_throttle_and_server_errors_are_transient ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_includes_operation_and_status_in_message ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_401_returns_bad_request ... ok
[INFO] [stdout] test outlook::tests::graph_message_html_body_uses_html_contenttype ... ok
[INFO] [stdout] test outlook::tests::flag_body_not_flagged ... ok
[INFO] [stdout] test outlook::tests::cleanup_failed_message_names_the_orphan_draft ... ok
[INFO] [stdout] test outlook::tests::classify_outlook_404_returns_bad_request ... ok
[INFO] [stdout] test outlook::tests::cleanup_already_gone_message_warns_about_sent_items ... ok
[INFO] [stdout] test outlook::tests::complete_resolution_is_cached ... ok
[INFO] [stdout] test outlook::tests::empty_transient_resolution_leaves_cache_none ... ok
[INFO] [stdout] test outlook::tests::drain_consumed_synthetic_blobs_removes_only_synthetic_entries ... ok
[INFO] [stdout] test outlook::tests::cleanup_deleted_returns_original_send_error_unchanged ... ok
[INFO] [stdout] test outlook::tests::clear_stored_tokens_deletes_token_file ... ok
[INFO] [stdout] test accounts::tests::authorize_slot_released_on_panic ... ok
[INFO] [stdout] test jmap::tests::draft_rejects_calendar_ics_with_html_body - should panic ... ok
[INFO] [stdout] test outlook::tests::graph_message_includes_bcc_recipients_when_set ... ok
[INFO] [stdout] test outlook::tests::flag_body_flagged ... ok
[INFO] [stdout] test outlook::tests::graph_message_includes_cc_recipients ... ok
[INFO] [stdout] test outlook::tests::graph_message_includes_from_name_when_provided ... ok
[INFO] [stdout] test outlook::tests::graph_message_inlines_attachments_as_file_attachment ... ok
[INFO] [stdout] test outlook::tests::graph_message_includes_from_when_provided ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_from_when_empty_string ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_from_when_none ... ok
[INFO] [stdout] test outlook::tests::graph_message_text_only_has_required_fields ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_attachments_when_resolved_empty ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_bcc_when_none ... ok
[INFO] [stdout] test outlook::tests::graph_message_omits_from_name_when_none ... ok
[INFO] [stdout] test outlook::tests::load_tokens_corrupted_json_returns_none ... ok
[INFO] [stdout] test outlook::tests::load_tokens_missing_file_returns_none ... ok
[INFO] [stdout] test outlook::tests::me_response_falls_back_to_upn_when_mail_null ... ok
[INFO] [stdout] test outlook::tests::me_response_falls_back_to_other_mails_when_mail_and_upn_null ... ok
[INFO] [stdout] test outlook::tests::me_response_prefers_mail_when_populated ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_trash_routes_to_deleteditems ... ok
[INFO] [stdout] test outlook::tests::clear_stored_tokens_is_idempotent_if_file_missing ... ok
[INFO] [stdout] test outlook::tests::incomplete_resolution_is_returned_but_not_cached ... ok
[INFO] [stdout] test outlook::tests::mark_read_body_shape ... ok
[INFO] [stdout] test outlook::tests::graph_message_multiple_to_recipients ... ok
[INFO] [stdout] test outlook::tests::me_response_skips_empty_other_mails_entries ... ok
[INFO] [stdout] test outlook::tests::me_response_skips_empty_string_mail ... ok
[INFO] [stdout] test outlook::tests::me_response_returns_none_when_all_absent ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_archive_routes_to_archive_folder ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_inbox_restores_from_trash_and_junk ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_rejects_drafts ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_rejects_junkemail ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_rejects_sentitems ... ok
[INFO] [stdout] test outlook::tests::move_plan_outlook_user_folder_passes_through ... ok
[INFO] [stdout] test outlook::tests::odata_translator_after_routes_to_filter_with_rfc3339 ... ok
[INFO] [stdout] test outlook::tests::odata_translator_before_routes_to_filter_with_rfc3339 ... ok
[INFO] [stdout] test outlook::tests::odata_translator_combined_filter_uses_and ... ok
[INFO] [stdout] test outlook::tests::odata_translator_escapes_single_quote_in_filter_value ... ok
[INFO] [stdout] test outlook::tests::odata_translator_empty_query_is_empty ... ok
[INFO] [stdout] test outlook::tests::odata_translator_is_starred_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_search_escapes_backslash ... ok
[INFO] [stdout] test outlook::tests::odata_translator_search_escapes_inner_double_quote ... ok
[INFO] [stdout] test outlook::tests::odata_translator_subject_routes_to_search_not_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_subject_with_spaces_wraps_value_in_kql_quotes ... ok
[INFO] [stdout] test outlook::tests::odata_translator_subject_single_word_no_quoting ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_archive ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_drafts ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_junk ... ok
[INFO] [stdout] test outlook::tests::odata_translator_has_attachment_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_combined_filter_plus_search ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_trash ... ok
[INFO] [stdout] test outlook::tests::odata_translator_free_text_routes_to_search ... ok
[INFO] [stdout] test outlook::tests::odata_translator_is_read_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_sent ... ok
[INFO] [stdout] test outlook::tests::odata_translator_is_unread_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_multi_from_uses_and ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_204_no_content_counts_as_success ... ok
[INFO] [stdout] test outlook::tests::odata_translator_single_from_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::odata_translator_subject_and_free_text_concatenate_in_search ... ok
[INFO] [stdout] test outlook::tests::odata_translator_to_routes_to_filter ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_case_sensitive_well_known ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_user_folder ... ok
[INFO] [stdout] test outlook::tests::outlook_folder_role_inbox ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_404_is_archive_friendly_flag ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_all_succeed ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_missing_responses_array_is_error ... ok
[INFO] [stdout] test outlook::tests::parse_graph_attachments_accepts_normal_graph_ids ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_partial_failure_collects_all_errors ... ok
[INFO] [stdout] test outlook::tests::parse_graph_attachments_skips_att_id_with_colon ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_attendee_missing_email_skipped ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_empty_body_treated_as_none ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_missing_optional_fields ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_maps_response_statuses ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_missing_start_returns_none ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_empty_location_treated_as_none ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_fractional_seconds ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_full ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_missing_response_field_maps_to_needs_action ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_no_attendees ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_preserves_attendee_names ... ok
[INFO] [stdout] test outlook::tests::parse_batch_response_count_mismatch_is_error ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_basic_fields ... ok
[INFO] [stdout] test outlook::tests::parse_graph_event_unknown_response_maps_to_needs_action ... ok
[INFO] [stdout] test outlook::tests::parse_graph_attachments_skips_msg_id_with_colon ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_no_body_when_fetch_body_false ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_attachments_expanded ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_calendar_invite_sets_has_calendar ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_received_datetime_parses_to_utc ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_text_body_from_contenttype_text ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_read_state_via_isread ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_unread_state ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_skips_picker_on_reply_one_shot ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_flagged_state ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_not_flagged_state ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_invokes_picker_on_new_mail_with_from_addr ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_honors_override_on_new_mail ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_parent_folder_id_into_mailbox_ids ... ok
[INFO] [stdout] test outlook::tests::peek_blob_bytes_does_not_consume_synthetic ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_html_body_from_contenttype_html ... ok
[INFO] [stdout] test outlook::tests::peek_blob_bytes_rejects_gmail_blob_ref ... ok
[INFO] [stdout] test outlook::tests::parse_graph_message_no_attachments_no_calendar ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_skips_picker_when_from_addr_is_none ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_no_reply_no_attachments_is_new_mail ... ok
[INFO] [stdout] test outlook::tests::pick_from_name_skips_picker_on_reply_with_attachments ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_no_reply_with_attachments_is_new_mail ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_reply_html_only_no_attachments_is_one_call ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_reply_plain_text_no_attachments_uses_three_call ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_reply_with_attachments_is_three_call_create_reply ... ok
[INFO] [stdout] test outlook::tests::pick_send_path_reply_with_empty_attachments_vec_but_html_is_one_shot ... ok
[INFO] [stdout] test outlook::tests::picker_override_email_match_is_case_insensitive ... ok
[INFO] [stdout] test outlook::tests::picker_returns_name_when_override_matches_identity_id ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_for_empty_identities ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_when_from_addr_does_not_match_and_no_override ... ok
[INFO] [stdout] test outlook::tests::picker_match_is_case_insensitive_on_from_addr ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_when_identity_has_empty_name ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_when_override_id_matches_but_from_addr_differs ... ok
[INFO] [stdout] test outlook::tests::picker_returns_none_when_override_id_unknown ... ok
[INFO] [stdout] test outlook::tests::picker_uses_identity_name_when_from_addr_matches ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_includes_added_cc_bcc ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_omits_subject_and_to ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_uses_text_contenttype_for_plain_text ... ok
[INFO] [stdout] test outlook::tests::resolution_complete_despite_permanent_misses ... ok
[INFO] [stdout] test outlook::tests::resolution_incomplete_when_all_lookups_fail_transiently ... ok
[INFO] [stdout] test outlook::tests::resolution_incomplete_on_any_transient_failure ... ok
[INFO] [stdout] test outlook::tests::role_rejects_drafts ... ok
[INFO] [stdout] test outlook::tests::role_rejects_junk ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_includes_html_body_when_set ... ok
[INFO] [stdout] test outlook::tests::role_does_not_reject_inbox_archive_trash_user ... ok
[INFO] [stdout] test outlook::tests::role_rejects_sent ... ok
[INFO] [stdout] test outlook::tests::resolution_complete_when_all_aliases_resolve ... ok
[INFO] [stdout] test outlook::tests::reply_patch_body_includes_attachments ... ok
[INFO] [stdout] test outlook::tests::roles_by_folder_id_empty_when_no_aliases_resolved ... ok
[INFO] [stdout] test outlook::tests::preseeded_role_cache_short_circuits_resolution ... ok
[INFO] [stdout] test outlook::tests::truncate_error_body_respects_utf8_char_boundaries ... ok
[INFO] [stdout] test outlook::tests::roles_by_folder_id_maps_resolved_aliases ... ok
[INFO] [stdout] test outlook::tests::roles_by_folder_id_skips_unknown_alias ... ok
[INFO] [stdout] test outlook::tests::url_builder_includes_orderby_when_no_search ... ok
[INFO] [stdout] test outlook::tests::upload_blob_rejects_oversized_per_blob ... ok
[INFO] [stdout] test outlook::tests::upload_blob_rejects_after_count_cap ... ok
[INFO] [stdout] test outlook::tests::truncate_error_body_truncates_long_input ... ok
[INFO] [stdout] test outlook::tests::url_builder_includes_top_and_skip ... ok
[INFO] [stdout] test outlook::tests::url_builder_uses_folder_path_when_id_given ... ok
[INFO] [stdout] test outlook::tests::url_builder_omits_orderby_when_search_present ... ok
[INFO] [stdout] test outlook::tests::url_builder_omits_orderby_when_filter_and_search_both_present ... ok
[INFO] [stdout] test outlook::tests::url_builder_uses_me_messages_when_folder_none ... ok
[INFO] [stdout] test outlook::tests::url_builder_omits_skip_when_position_zero ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_error_redirect_returns_auth_error ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_error_takes_precedence_over_state_mismatch ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_missing_code_and_error_returns_auth_error ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_roundtrip ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_delete ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_load_corrupted_returns_none ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_dir_is_chmod_0700 ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_creates_tokens_dir ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_file_is_chmod_0600 ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_delete_missing_is_ok ... ok
[INFO] [stdout] test platform::desktop::tests::fs_token_store_load_missing_returns_none ... ok
[INFO] [stdout] test outlook::tests::move_body_shape ... ok
[INFO] [stdout] test outlook::tests::token_save_load_roundtrip ... ok
[INFO] [stdout] test outlook::tests::truncate_error_body_passthrough_when_small ... ok
[INFO] [stdout] test gmail::tests::upload_blob_rejects_aggregate_overflow ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_state_mismatch_returns_auth_error ... ok
[INFO] [stdout] test prefetch::tests::body_cache_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::account_a_lock_does_not_block_account_b_read ... ok
[INFO] [stdout] test prefetch::tests::body_or_fetch_skips_fallback_on_hit ... ok
[INFO] [stdout] test prefetch::tests::get_mailboxes_returns_none_on_empty_cache ... ok
[INFO] [stdout] test prefetch::tests::invalidate_clears_all_fields_and_bumps_version ... ok
[INFO] [stdout] test prefetch::tests::invalidate_forces_next_or_fetch_call_to_refetch ... ok
[INFO] [stdout] test prefetch::tests::invalidate_clears_lists_and_counts_but_not_bodies ... ok
[INFO] [stdout] test prefetch::tests::invalidate_full_clears_everything_including_bodies ... ok
[INFO] [stdout] test prefetch::tests::inbox_list_keyed_by_mailbox_and_limit ... ok
[INFO] [stdout] test prefetch::tests::body_or_fetch_populates_on_miss ... ok
[INFO] [stdout] test prefetch::tests::inbox_list_or_fetch_keyed_miss_and_hit ... ok
[INFO] [stdout] test prefetch::tests::set_then_get_split_counts_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::try_set_mailboxes_skips_when_version_changed ... ok
[INFO] [stdout] test prefetch::tests::set_then_get_inbox_list_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::try_set_inbox_list_skips_when_version_changed ... ok
[INFO] [stdout] test prefetch::tests::split_counts_or_fetch_hit_and_miss ... ok
[INFO] [stdout] test prefetch::tests::try_set_mailboxes_succeeds_when_version_matches ... ok
[INFO] [stdout] test platform::desktop::tests::validate_callback_success_returns_code ... ok
[INFO] [stdout] test prefetch::tests::invalidate_split_counts_clears_only_counts_and_bumps_version ... ok
[INFO] [stdout] test prefetch::tests::warm_loop_runs_initial_pass_then_repeats_each_interval ... ok
[INFO] [stdout] test prefetch::tests::account_a_does_not_leak_into_account_b ... ok
[INFO] [stdout] test prefetch::tests::mailboxes_or_fetch_populates_cache_on_miss ... ok
[INFO] [stdout] test prefetch::tests::mailboxes_or_fetch_returns_cached_without_calling_fetch ... ok
[INFO] [stdout] test provider::tests::sends_rsvp_automatically_false_for_fastmail ... ok
[INFO] [stdout] test provider::tests::provider_name_gmail ... ok
[INFO] [stdout] test provider::tests::sends_rsvp_automatically_true_for_outlook ... ok
[INFO] [stdout] test provider::tests::sends_rsvp_automatically_true_for_gmail ... ok
[INFO] [stdout] test provider::tests::username_returns_fastmail_username ... ok
[INFO] [stdout] test provider::tests::username_returns_gmail_email ... ok
[INFO] [stdout] test prefetch::tests::identities_or_fetch_hit_and_miss ... ok
[INFO] [stdout] test provider::tests::username_returns_outlook_email ... ok
[INFO] [stdout] test prefetch::tests::inbox_lists_holds_two_mailbox_entries_simultaneously ... ok
[INFO] [stdout] test prefetch::tests::set_then_get_identities_roundtrip ... ok
[INFO] [stdout] test prefetch::tests::warmer_inbox_key_matches_route_handler_key ... ok
[INFO] [stdout] test prefetch::tests::set_then_get_mailboxes_roundtrip ... ok
[INFO] [stdout] test provider_utils::tests::encode_path_segment_encodes_path_traversal_separators ... ok
[INFO] [stdout] test provider_utils::tests::encode_path_segment_encodes_query_and_fragment_chars ... ok
[INFO] [stdout] test prefetch::tests::warm_loop_warms_every_account_each_pass_even_when_one_logs_an_error ... ok
[INFO] [stdout] test provider_utils::tests::encode_path_segment_encodes_slash ... ok
[INFO] [stdout] test provider_utils::tests::encode_path_segment_passes_alphanumeric_through ... ok
[INFO] [stdout] test provider_utils::tests::mime_common_text_and_data_extensions ... ok
[INFO] [stdout] test provider_utils::tests::mime_case_insensitive_extension ... ok
[INFO] [stdout] test provider_utils::tests::mime_double_extension_uses_last ... ok
[INFO] [stdout] test provider_utils::tests::mime_no_extension_falls_back_to_octet_stream ... ok
[INFO] [stdout] test provider_utils::tests::mime_office_docx ... ok
[INFO] [stdout] test provider_utils::tests::should_not_clear_on_empty_body ... ok
[INFO] [stdout] test provider_utils::tests::mime_pdf ... ok
[INFO] [stdout] test provider_utils::tests::mime_unknown_extension_falls_back_to_octet_stream ... ok
[INFO] [stdout] test provider_utils::tests::should_clear_tokens_on_invalid_grant ... ok
[INFO] [stdout] test provider_utils::tests::should_not_clear_on_4xx_without_invalid_grant ... ok
[INFO] [stdout] test provider_utils::tests::mime_common_image_and_av_extensions ... ok
[INFO] [stdout] test provider_utils::tests::mime_dot_at_start_treated_as_extension ... ok
[INFO] [stdout] test provider_utils::tests::should_clear_tokens_on_invalid_grant_401 ... ok
[INFO] [stdout] test provider_utils::tests::mime_jpeg_both_extensions ... ok
[INFO] [stdout] test provider_utils::tests::should_not_clear_on_transient_5xx ... ok
[INFO] [stdout] test rate_limit::tests::backoff_with_jitter_handles_arbitrary_attempt_without_panic ... ok
[INFO] [stdout] test rate_limit::tests::backoff_with_jitter_respects_bounds ... ok
[INFO] [stdout] test rate_limit::tests::gmail_body_detector_matches_known_strings ... ok
[INFO] [stdout] test rate_limit::tests::jmap_response_detector_ignores_normal_responses ... ok
[INFO] [stdout] test rate_limit::tests::jmap_response_detector_matches_limit_error ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_http_date ... ok
[INFO] [stdout] test routes::tests::api_helper_excludes_settings_from_account_param ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_delta_seconds ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_garbage_returns_none ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_missing_returns_none ... ok
[INFO] [stdout] test routes::tests::app_js_auto_selects_only_connected_accounts ... ok
[INFO] [stdout] test routes::tests::app_js_blocks_send_during_upload ... ok
[INFO] [stdout] test routes::tests::app_js_banner_heading_not_connection_specific_for_config_notices ... ok
[INFO] [stdout] test routes::tests::app_js_clears_attachments_on_cancel ... ok
[INFO] [stdout] test routes::tests::app_js_has_abort_controller ... ok
[INFO] [stdout] test routes::tests::app_js_contains_javascript ... ok
[INFO] [stdout] test routes::tests::app_js_has_attach_keyboard_shortcut ... ok
[INFO] [stdout] test routes::tests::app_js_has_attachment_list_rendering ... ok
[INFO] [stdout] test routes::tests::app_js_has_attachment_size_validation ... ok
[INFO] [stdout] test routes::tests::app_js_has_attachment_upload ... ok
[INFO] [stdout] test rate_limit::tests::limiter_exposes_configuration ... ok
[INFO] [stdout] test rate_limit::tests::execute_returns_2xx_immediately ... ok
[INFO] [stdout] test routes::tests::app_js_has_clipboard_paste ... ok
[INFO] [stdout] test rate_limit::tests::execute_returns_non_throttle_4xx_to_caller ... ok
[INFO] [stdout] test routes::tests::app_js_has_rsvp_button_enter_passthrough ... ok
[INFO] [stdout] test routes::tests::app_js_has_drag_and_drop ... ok
[INFO] [stdout] test routes::tests::app_js_has_upload_progress ... ok
[INFO] [stdout] test routes::tests::app_js_has_rsvp_status_label ... ok
[INFO] [stdout] test routes::tests::app_js_has_segment_urls_helper ... ok
[INFO] [stdout] test routes::tests::app_js_has_same_status_guard ... ok
[INFO] [stdout] test routes::tests::app_js_has_rsvp_keyboard_shortcuts ... ok
[INFO] [stdout] test routes::tests::app_js_hides_rsvp_actions_for_cancelled_events ... ok
[INFO] [stdout] test routes::tests::app_js_has_user_rsvp_status_preference ... ok
[INFO] [stdout] test routes::tests::app_js_hides_status_label_for_needs_action ... ok
[INFO] [stdout] test rate_limit::tests::parse_retry_after_past_http_date_returns_none ... ok
[INFO] [stdout] test routes::tests::app_js_keyboard_y_only_in_detail_view_with_calendar ... ok
[INFO] [stdout] test routes::tests::app_js_keyboard_n_only_in_detail_view_with_calendar ... ok
[INFO] [stdout] test routes::tests::app_js_linkify_text_escapes_non_url_text ... ok
[INFO] [stdout] test routes::tests::app_js_has_optimistic_user_rsvp_status ... ok
[INFO] [stdout] test routes::tests::app_js_iframe_sandbox_never_allows_scripts ... ok
[INFO] [stdout] test routes::tests::app_js_never_fires_oauth_authorize_for_fastmail ... ok
[INFO] [stdout] test routes::tests::app_js_linkify_text_no_bulk_escape ... ok
[INFO] [stdout] test routes::tests::app_js_loads_accounts_from_envelope ... ok
[INFO] [stdout] test routes::tests::app_js_renders_email_body_in_sandboxed_iframe ... ok
[INFO] [stdout] test routes::tests::app_js_renders_pending_accounts_in_selector ... ok
[INFO] [stdout] test routes::tests::app_js_optimistic_update_reverts_on_error ... ok
[INFO] [stdout] test routes::tests::app_js_segment_urls_trims_trailing_punctuation ... ok
[INFO] [stdout] test routes::tests::app_js_linkify_text_uses_segment_urls ... ok
[INFO] [stdout] test routes::tests::calendar_event_serializes_user_rsvp_status_as_null_when_none ... ok
[INFO] [stdout] test routes::tests::app_js_rsvp_buttons_toggle_active_class ... ok
[INFO] [stdout] test routes::tests::app_js_routes_pending_account_clicks_to_authorize ... ok
[INFO] [stdout] test routes::tests::app_js_user_status_not_block_scoped ... ok
[INFO] [stdout] test routes::tests::calendar_event_serializes_user_rsvp_status_when_some ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_case_insensitive ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_empty_recipients ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_falls_back_to_username ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_matches_to ... ok
[INFO] [stdout] test routes::tests::app_js_show_account_errors_escapes_html ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_matches_cc ... ok
[INFO] [stdout] test routes::tests::compose_defaults_to_first_identity ... ok
[INFO] [stdout] test routes::tests::dismiss_timezone_body_accepts_missing_seen_system ... ok
[INFO] [stdout] test routes::tests::dismiss_timezone_body_accepts_seen_system ... ok
[INFO] [stdout] test routes::tests::create_split_rejects_unknown_account ... ok
[INFO] [stdout] test routes::tests::favicon_32_serves_png ... ok
[INFO] [stdout] test routes::tests::app_js_renders_you_responded_for_each_status ... ok
[INFO] [stdout] test routes::tests::frontend_renders_multi_tz_event_card ... ok
[INFO] [stdout] test routes::tests::help_overlay_documents_new_shortcuts ... ok
[INFO] [stdout] test routes::tests::get_email_response_includes_calendar_event_key ... ok
[INFO] [stdout] test routes::tests::email_caches_are_account_scoped ... ok
[INFO] [stdout] test routes::tests::frontend_sends_seen_system_on_dismiss ... ok
[INFO] [stdout] test routes::tests::identity_serialization_preserves_email_field ... ok
[INFO] [stdout] test routes::tests::icon_180_serves_png ... ok
[INFO] [stdout] test routes::tests::index_html_has_account_error_banner ... ok
[INFO] [stdout] test routes::tests::index_html_has_rsvp_status_label ... ok
[INFO] [stdout] test routes::tests::index_html_has_rsvp_keyboard_help ... ok
[INFO] [stdout] test routes::tests::index_html_contains_html ... ok
[INFO] [stdout] test routes::tests::index_html_sets_restrictive_csp ... ok
[INFO] [stdout] test routes::tests::icon_192_serves_png ... ok
[INFO] [stdout] test routes::tests::list_splits_without_account_param_is_unaffected ... ok
[INFO] [stdout] test routes::tests::list_splits_rejects_unknown_account_param ... ok
[INFO] [stdout] test routes::tests::icon_512_serves_png ... ok
[INFO] [stdout] test routes::tests::init_does_not_call_load_splits_directly ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_has_email_list_rendering ... ok
[INFO] [stdout] test routes::tests::load_splits_guards_against_stale_account_switch ... ok
[INFO] [stdout] test routes::tests::load_emails_renders_cached_snapshot_before_network_refresh ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_has_infinite_scroll ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_renders_email_body_in_sandboxed_iframe ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_has_pull_to_refresh ... ok
[INFO] [stdout] test routes::tests::mobile_html_has_email_list_structure ... ok
[INFO] [stdout] test routes::tests::load_splits_goes_through_account_scoped_api_helper ... ok
[INFO] [stdout] test routes::tests::mobile_app_js_serves_es_module ... ok
[INFO] [stdout] test routes::tests::mobile_html_has_touch_optimized_styles ... ok
[INFO] [stdout] test routes::tests::mobile_html_serves_pwa_shell ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_handles_auth_errors ... ok
[INFO] [stdout] test routes::tests::mobile_html_sets_restrictive_csp ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_has_error_types ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_has_data_functions ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_parses_email_keywords ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_has_blob_url_builder ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_uses_jmap_capabilities ... ok
[INFO] [stdout] test routes::tests::app_js_updates_cache_after_rsvp ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_module_handles_offline_errors ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_module_has_session_discovery ... ok
[INFO] [stdout] test routes::tests::mobile_jmap_js_serves_es_module ... ok
[INFO] [stdout] test routes::tests::mobile_sw_caches_app_shell ... ok
[INFO] [stdout] test routes::tests::mobile_sw_serves_javascript_with_scope_header ... ok
[INFO] [stdout] test routes::tests::mobile_manifest_serves_json ... ok
[INFO] [stdout] test routes::tests::outgoing_html_bypass_via_whitespace_prefix_is_blocked ... ok
[INFO] [stdout] test routes::tests::resolve_account_id_accepts_known_account ... ok
[INFO] [stdout] test routes::tests::rsvp_response_includes_updated_attendee_status ... ok
[INFO] [stdout] test routes::tests::outgoing_html_strips_scripts_and_javascript_urls ... ok
[INFO] [stdout] test routes::tests::resolve_account_id_rejects_unknown_account ... ok
[INFO] [stdout] test routes::tests::resolve_account_id_default_none_still_works ... ok
[INFO] [stdout] test routes::tests::rsvp_response_wraps_in_calendar_event_key ... ok
[INFO] [stdout] test routes::tests::safe_path_segment_rejects_traversal ... ok
[INFO] [stdout] test routes::tests::sanitize_filename_empty ... ok
[INFO] [stdout] test routes::tests::sanitize_filename_strips_dangerous_chars ... ok
[INFO] [stdout] test routes::tests::sanitize_filename_unicode ... ok
[INFO] [stdout] test routes::tests::sanitize_filename_null_bytes ... ok
[INFO] [stdout] test routes::tests::rsvp_response_user_rsvp_status_set_for_all_statuses ... ok
[INFO] [stdout] test routes::tests::send_email_body_deserializes_with_attachments ... ok
[INFO] [stdout] test routes::tests::select_account_resets_stale_split_state ... ok
[INFO] [stdout] test routes::tests::send_email_body_deserializes_without_attachments ... ok
[INFO] [stdout] test routes::tests::send_invite_body_minimal ... ok
[INFO] [stdout] test routes::tests::select_account_reloads_splits ... ok
[INFO] [stdout] test routes::tests::save_split_tags_current_account ... ok
[INFO] [stdout] test routes::tests::send_invite_passes_attachments_through ... ok
[INFO] [stdout] test routes::tests::settings_form_uses_data_provider_attribute ... ok
[INFO] [stdout] test routes::tests::send_invite_rejects_end_at_or_before_start ... ok
[INFO] [stdout] test routes::tests::settings_styles_present ... ok
[INFO] [stdout] test routes::tests::settings_first_run_auto_routes ... ok
[INFO] [stdout] test routes::tests::style_css_email_links_no_underline_by_default ... ok
[INFO] [stdout] test routes::tests::settings_view_present_in_html ... ok
[INFO] [stdout] test routes::tests::style_css_has_drag_over_style ... ok
[INFO] [stdout] test routes::tests::settings_authorize_uses_long_poll_not_polling ... ok
[INFO] [stdout] test routes::tests::style_css_contains_css ... ok
[INFO] [stdout] test routes::tests::style_css_email_links_underline_on_hover ... ok
[INFO] [stdout] test routes::tests::style_css_has_error_banner_styles ... ok
[INFO] [stdout] test routes::tests::style_css_has_rsvp_status_label ... ok
[INFO] [stdout] test routes::tests::supervillain_jpg_serves_jpeg ... ok
[INFO] [stdout] test routes::tests::theme_endpoint_returns_css_content_type ... ok
[INFO] [stdout] test routes::tests::style_css_no_undefined_variables ... ok
[INFO] [stdout] test provider_utils::tests::mime_calendar ... ok
[INFO] [stdout] test routes::tests::theme_light_mode_detected_from_file ... ok
[INFO] [stdout] test routes::tests::theme_fallback_generates_css_from_alacritty ... ok
[INFO] [stdout] test routes::tests::determine_attendee_email_prefers_to_over_cc ... ok
[INFO] [stdout] test routes::tests::theme_fallback_generates_css_from_ghostty ... ok
[INFO] [stdout] test routes::tests::timezone_routes_are_registered ... ok
[INFO] [stdout] test routes::tests::timezone_body_deserializes_with_defaults ... ok
[INFO] [stdout] test routes::tests::update_split_rejects_changed_id ... ok
[INFO] [stdout] test routes::tests::safe_path_segment_accepts_valid ... ok
[INFO] [stdout] test routes::tests::upload_max_size_constant ... ok
[INFO] [stdout] test search::tests::parse_after_date ... ok
[INFO] [stdout] test search::tests::parse_before_date ... ok
[INFO] [stdout] test search::tests::parse_combined_operators_and_freetext ... ok
[INFO] [stdout] test search::tests::parse_free_text_only ... ok
[INFO] [stdout] test search::tests::parse_empty_string ... ok
[INFO] [stdout] test search::tests::parse_from_operator ... ok
[INFO] [stdout] test routes::tests::update_split_rejects_unknown_account ... ok
[INFO] [stdout] test search::tests::parse_has_attachment ... ok
[INFO] [stdout] test search::tests::parse_is_flagged ... ok
[INFO] [stdout] test search::tests::parse_is_unread ... ok
[INFO] [stdout] test search::tests::parse_multiple_from_values ... ok
[INFO] [stdout] test search::tests::parse_newer_than_absolute_mm_dd_yy ... ok
[INFO] [stdout] test search::tests::parse_newer_than_days ... ok
[INFO] [stdout] test search::tests::parse_newer_than_invalid_absolute_date ... ok
[INFO] [stdout] test search::tests::parse_newer_than_invalid_unit ... ok
[INFO] [stdout] test search::tests::parse_newer_than_relative_still_works ... ok
[INFO] [stdout] test search::tests::parse_newer_than_weeks ... ok
[INFO] [stdout] test search::tests::parse_newer_than_zero_ignored ... ok
[INFO] [stdout] test search::tests::parse_newer_than_zero_weeks_ignored ... ok
[INFO] [stdout] test search::tests::parse_older_than_absolute_mm_dd_yy ... ok
[INFO] [stdout] test search::tests::parse_older_than_absolute_mm_dd_yyyy ... ok
[INFO] [stdout] test search::tests::parse_older_than_months ... ok
[INFO] [stdout] test search::tests::parse_older_than_negative_ignored ... ok
[INFO] [stdout] test search::tests::parse_subject_operator ... ok
[INFO] [stdout] test search::tests::parse_subject_quoted ... ok
[INFO] [stdout] test search::tests::parse_to_operator ... ok
[INFO] [stdout] test splits::tests::calendar_filter_no_match_without_calendar ... ok
[INFO] [stdout] test splits::tests::calendar_filter_matches_has_calendar ... ok
[INFO] [stdout] test splits::tests::filter_by_split_primary_returns_non_matching ... ok
[INFO] [stdout] test splits::tests::filter_by_split_returns_matching ... ok
[INFO] [stdout] test splits::tests::forwarded_o365_mail_matches_split_by_to ... ok
[INFO] [stdout] test splits::tests::forwarded_o365_mail_rewritten_to_does_not_match ... ok
[INFO] [stdout] test splits::tests::from_filter_case_insensitive ... ok
[INFO] [stdout] test splits::tests::from_filter_glob_match ... ok
[INFO] [stdout] test splits::tests::from_filter_no_match ... ok
[INFO] [stdout] test splits::tests::from_filter_wildcard_domain ... ok
[INFO] [stdout] test splits::tests::from_filter_wildcard_user ... ok
[INFO] [stdout] test routes::tests::timezone_body_deserializes_full ... ok
[INFO] [stdout] test splits::tests::generate_splits_case_insensitive_domains ... ok
[INFO] [stdout] test splits::tests::generate_splits_conflicting_short_names_uses_full_domain ... ok
[INFO] [stdout] test splits::tests::generate_splits_deduplicates_domains ... ok
[INFO] [stdout] test splits::tests::generate_splits_empty_identities_returns_empty ... ok
[INFO] [stdout] test splits::tests::generate_splits_fastmail_plus_o365 ... ok
[INFO] [stdout] test splits::tests::generate_splits_multiple_domains ... ok
[INFO] [stdout] test splits::tests::header_filter_matches_has_calendar ... ok
[INFO] [stdout] test splits::tests::generate_splits_single_domain_returns_empty ... ok
[INFO] [stdout] test splits::tests::generated_splits_are_tagged_with_seeding_account ... ok
[INFO] [stdout] test splits::tests::generate_splits_skips_malformed_email ... ok
[INFO] [stdout] test search::tests::parse_is_read ... ok
[INFO] [stdout] test splits::tests::load_complex_config ... ok
[INFO] [stdout] test splits::tests::load_nonexistent_returns_empty ... ok
[INFO] [stdout] test splits::tests::load_from_file ... ok
[INFO] [stdout] test search::tests::parse_is_starred ... ok
[INFO] [stdout] test splits::tests::matches_any_split_false_with_no_splits ... ok
[INFO] [stdout] test routes::tests::update_split_without_account_untags ... ok
[INFO] [stdout] test splits::tests::matches_any_split_true_when_matching ... ok
[INFO] [stdout] test splits::tests::matches_split_any_mode ... ok
[INFO] [stdout] test splits::tests::load_env_takes_precedence ... ok
[INFO] [stdout] test splits::tests::primary_with_scoped_config_ignores_other_accounts_splits ... ok
[INFO] [stdout] test splits::tests::primary_split_excludes_o365_mail ... ok
[INFO] [stdout] test splits::tests::save_creates_directory ... ok
[INFO] [stdout] test splits::tests::save_load_roundtrip ... ok
[INFO] [stdout] test splits::tests::save_preserves_filter_details ... ok
[INFO] [stdout] test splits::tests::scoped_to_keeps_own_and_untagged_drops_others ... ok
[INFO] [stdout] test splits::tests::scoped_to_unknown_account_keeps_only_untagged ... ok
[INFO] [stdout] test splits::tests::seed_skips_when_splits_exist ... ok
[INFO] [stdout] test splits::tests::seed_creates_splits_when_no_config ... ok
[INFO] [stdout] test splits::tests::subject_filter_invalid_regex_falls_back_to_substring ... ok
[INFO] [stdout] test splits::tests::scoped_to_none_returns_all ... ok
[INFO] [stdout] test splits::tests::seed_skips_single_domain ... ok
[INFO] [stdout] test search::tests::parse_newer_than_absolute_mm_dd_yyyy ... ok
[INFO] [stdout] test splits::tests::to_filter_exact_match ... ok
[INFO] [stdout] test splits::tests::to_filter_glob_wildcard ... ok
[INFO] [stdout] test splits::tests::save_overwrites_existing ... ok
[INFO] [stdout] test splits::tests::to_filter_case_insensitive ... ok
[INFO] [stdout] test splits::tests::to_filter_matches_cc ... ok
[INFO] [stdout] test splits::tests::try_load_missing_file_is_ok_none ... ok
[INFO] [stdout] test splits::tests::try_load_invalid_json_returns_err ... ok
[INFO] [stdout] test theme::tests::alacritty_handles_extra_whitespace ... ok
[INFO] [stdout] test splits::tests::try_load_valid_file_returns_config ... ok
[INFO] [stdout] test theme::tests::alacritty_parse_hash_prefix ... ok
[INFO] [stdout] test theme::tests::alacritty_returns_none_for_garbage ... ok
[INFO] [stdout] test theme::tests::alacritty_parse_0x_prefix ... ok
[INFO] [stdout] test theme::tests::alacritty_returns_none_when_bright_missing ... ok
[INFO] [stdout] test theme::tests::alacritty_returns_none_when_color_missing ... ok
[INFO] [stdout] test theme::tests::generate_css_contains_all_variables ... ok
[INFO] [stdout] test theme::tests::alacritty_returns_none_for_empty ... ok
[INFO] [stdout] test theme::tests::generate_css_falls_back_to_bright_black_for_selection ... ok
[INFO] [stdout] test theme::tests::generate_css_dark_mode_no_marker ... ok
[INFO] [stdout] test theme::tests::generate_css_light_mode_has_marker ... ok
[INFO] [stdout] test theme::tests::generate_css_overlay_uses_bg_rgba ... ok
[INFO] [stdout] test theme::tests::generate_css_uses_selection_bg_when_present ... ok
[INFO] [stdout] test theme::tests::ghostty_parse_full_palette ... ok
[INFO] [stdout] test theme::tests::ghostty_returns_none_for_empty ... ok
[INFO] [stdout] test theme::tests::ghostty_ignores_comments ... ok
[INFO] [stdout] test theme::tests::ghostty_returns_none_for_missing_palette ... ok
[INFO] [stdout] test theme::tests::hex_to_rgb_converts_correctly ... ok
[INFO] [stdout] test theme::tests::is_light_theme_detects_light_mode_file ... ok
[INFO] [stdout] test theme::tests::normalize_hex_0x_prefix ... ok
[INFO] [stdout] test theme::tests::load_from_theme_dir_returns_none_when_empty ... ok
[INFO] [stdout] test theme::tests::normalize_hex_bare_hash ... ok
[INFO] [stdout] test theme::tests::load_from_theme_dir_falls_back_to_alacritty ... ok
[INFO] [stdout] test theme::tests::load_from_theme_dir_prefers_ghostty ... ok
[INFO] [stdout] test theme::tests::normalize_hex_hash_prefix ... ok
[INFO] [stdout] test theme::tests::normalize_hex_rejects_invalid ... ok
[INFO] [stdout] test theme::tests::normalize_hex_strips_inline_comments ... ok
[INFO] [stdout] test timezone::tests::detect_system_tz_returns_something ... ok
[INFO] [stdout] test timezone::tests::resolve_dedups_additional ... ok
[INFO] [stdout] test timezone::tests::load_default_when_missing ... ok
[INFO] [stdout] test timezone::tests::resolve_manual_overrides_when_use_system_false ... ok
[INFO] [stdout] test splits::tests::subject_filter_regex_match ... ok
[INFO] [stdout] test timezone::tests::resolve_invalid_manual_falls_back_to_system ... ok
[INFO] [stdout] test timezone::tests::resolve_use_system_uses_detected ... ok
[INFO] [stdout] test timezone::tests::system_changed_false_when_dismissed ... ok
[INFO] [stdout] test timezone::tests::system_changed_false_when_no_last_known ... ok
[INFO] [stdout] test timezone::tests::resolve_skips_invalid_additional ... ok
[INFO] [stdout] test timezone::tests::system_changed_true_when_last_differs ... ok
[INFO] [stdout] test rate_limit::tests::spacer_first_call_is_immediate ... ok
[INFO] [stdout] test routes::tests::mobile_html_imports_app_module ... ok
[INFO] [stdout] test timezone::tests::load_env_override_wins ... ok
[INFO] [stdout] test timezone::tests::try_load_invalid_json_returns_err ... ok
[INFO] [stdout] test timezone::tests::validate_iana_accepts_known_names ... ok
[INFO] [stdout] test timezone::tests::try_load_missing_file_is_ok_none ... ok
[INFO] [stdout] test timezone::tests::validate_iana_rejects_garbage ... ok
[INFO] [stdout] test types::tests::account_error_json_has_expected_keys ... ok
[INFO] [stdout] test types::tests::account_error_serde_roundtrip ... ok
[INFO] [stdout] test types::tests::blob_ref_gmail_roundtrip ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_accepts_graph_id_chars ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_attachment_roundtrip ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_parse_rejects_empty_components ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_parse_rejects_path_traversal ... ok
[INFO] [stdout] test types::tests::blob_ref_outlook_prefix_disambiguates_from_gmail ... ok
[INFO] [stdout] test timezone::tests::load_save_roundtrip ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_bad_synth_uuid ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_empty_components ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_empty ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_accepts_base64url_components ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_no_separator ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_url_special_chars ... ok
[INFO] [stdout] test types::tests::blob_ref_synth_prefix_takes_precedence ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_path_traversal ... ok
[INFO] [stdout] test types::tests::blob_ref_parse_rejects_slash ... ok
[INFO] [stdout] test timezone::tests::try_load_valid_file_returns_config ... ok
[INFO] [stdout] test splits::tests::matches_split_all_mode_requires_all ... ok
[INFO] [stdout] test types::tests::blob_ref_synthetic_roundtrip ... ok
[INFO] [stdout] test types::tests::calendar_event_user_rsvp_status_none_serializes_as_null ... ok
[INFO] [stdout] test types::tests::email_is_flagged_when_flagged_keyword_present ... ok
[INFO] [stdout] test types::tests::calendar_event_user_rsvp_status_skip_deserializing ... ok
[INFO] [stdout] test types::tests::email_address_serde_roundtrip ... ok
[INFO] [stdout] test types::tests::email_not_flagged_by_default ... ok
[INFO] [stdout] test types::tests::email_serde_roundtrip ... ok
[INFO] [stdout] test types::tests::email_submission_with_none_optional_fields ... ok
[INFO] [stdout] test types::tests::mailbox_from_jmap_camel_case ... ok
[INFO] [stdout] test types::tests::filter_type_serializes_to_lowercase ... ok
[INFO] [stdout] test types::tests::mailbox_serde_roundtrip ... ok
[INFO] [stdout] test types::tests::calendar_event_user_rsvp_status_serializes ... ok
[INFO] [stdout] test types::tests::email_submission_with_all_optional_fields ... ok
[INFO] [stdout] test types::tests::rsvp_status_as_ics_roundtrip ... ok
[INFO] [stdout] test types::tests::rsvp_status_deserializes_accepted ... ok
[INFO] [stdout] test types::tests::rsvp_status_deserializes_declined ... ok
[INFO] [stdout] test types::tests::match_mode_serializes_to_lowercase ... ok
[INFO] [stdout] test types::tests::rsvp_status_rejects_invalid ... ok
[INFO] [stdout] test types::tests::rsvp_status_deserializes_tentative ... ok
[INFO] [stdout] test types::tests::split_filter_from_json_all_fields ... ok
[INFO] [stdout] test types::tests::email_is_read_when_seen_keyword_present ... ok
[INFO] [stdout] test types::tests::email_is_unread_when_no_seen_keyword ... ok
[INFO] [stdout] test types::tests::split_inbox_account_none_omitted_from_json ... ok
[INFO] [stdout] test splits::tests::subject_filter_no_match ... ok
[INFO] [stdout] test types::tests::split_inbox_account_absent_parses_as_none ... ok
[INFO] [stdout] test types::tests::split_inbox_default_match_mode ... ok
[INFO] [stdout] test types::tests::split_inbox_account_roundtrip ... ok
[INFO] [stdout] test splits::tests::subject_filter_case_insensitive ... ok
[INFO] [stdout] test types::tests::mailbox_from_snake_case_still_works ... ok
[INFO] [stdout] test types::tests::split_filter_from_json_no_name ... ok
[INFO] [stdout] test types::tests::split_inbox_default_filters_empty ... ok
[INFO] [stdout] test types::tests::split_inbox_icon_defaults_to_none ... ok
[INFO] [stdout] test types::tests::split_inbox_icon_none_omitted_from_json ... ok
[INFO] [stdout] test types::tests::split_inbox_icon_present_in_json ... ok
[INFO] [stdout] test types::tests::splits_config_empty_default ... ok
[INFO] [stdout] test types::tests::split_inbox_icon_from_json ... ok
[INFO] [stdout] test types::tests::splits_config_serde_roundtrip ... ok
[INFO] [stdout] test outlook::tests::upload_blob_rejects_aggregate_overflow ... ok
[INFO] [stdout] test rate_limit::tests::spacer_enforces_interval_under_contention ... FAILED
[INFO] [stdout] test rate_limit::tests::execute_gives_up_after_max_attempts_with_rate_limited_error ... ok
[INFO] [stdout] test rate_limit::tests::execute_honors_retry_after_seconds ... ok
[INFO] [stdout] test rate_limit::tests::execute_releases_permit_during_backoff ... ok
[INFO] [stdout] test rate_limit::tests::execute_surfaces_most_recent_retry_after_after_exhaustion ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- rate_limit::tests::spacer_enforces_interval_under_contention stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'rate_limit::tests::spacer_enforces_interval_under_contention' (2940) panicked at src/rate_limit.rs:340:13:
[INFO] [stdout] pairwise gap 16.138739ms too small — thundering herd
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x603c41e60a51 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x603c41e60a51 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x603c41e60a51 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x603c41e60a51 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x603c41e798ba - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x603c41e798ba - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x603c41e65c5c - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x603c41e65c5c - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x603c41e3b3e6 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x603c41e3b3e6 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x603c41e56cc9 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x603c4186c5c0 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x603c4186c5c0 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x603c41e56ff2 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x603c41e56ff2 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x603c41e3b492 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x603c41e32969 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x603c41e3c42d - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x603c41e7a16c - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x603c412e6337 - supervillain[1ee5bb81c37b6e23]::rate_limit::tests::spacer_enforces_interval_under_contention::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/rate_limit.rs:340:13
[INFO] [stdout]   20:     0x603c4127cbb2 - <core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>> as core[6883ba1bc0fe4ed1]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/future/future.rs:133:9
[INFO] [stdout]   21:     0x603c4127cc2d - <core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>> as core[6883ba1bc0fe4ed1]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x603c410861dd - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   23:     0x603c410860db - tokio[1eb97573698168c1]::task::coop::with_budget::<core[6883ba1bc0fe4ed1]::task::poll::Poll<()>, <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   24:     0x603c410860db - tokio[1eb97573698168c1]::task::coop::budget::<core[6883ba1bc0fe4ed1]::task::poll::Poll<()>, <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   25:     0x603c410860db - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   26:     0x603c41052430 - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::Context>::enter::<core[6883ba1bc0fe4ed1]::task::poll::Poll<()>, <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   27:     0x603c41084d0d - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   28:     0x603c41084004 - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}, core[6883ba1bc0fe4ed1]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   29:     0x603c4120caab - <tokio[1eb97573698168c1]::runtime::context::scoped::Scoped<tokio[1eb97573698168c1]::runtime::scheduler::Context>>::set::<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}, core[6883ba1bc0fe4ed1]::option::Option<()>>::{closure#0}, (alloc[55a36b64bcbf2c0d]::boxed::Box<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::Core>, core[6883ba1bc0fe4ed1]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   30:     0x603c413d7859 - tokio[1eb97573698168c1]::runtime::context::set_scheduler::<(alloc[55a36b64bcbf2c0d]::boxed::Box<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::Core>, core[6883ba1bc0fe4ed1]::option::Option<()>), <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}, core[6883ba1bc0fe4ed1]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   31:     0x603c4111e5a2 - <std[73adb7dc35730857]::thread::local::LocalKey<tokio[1eb97573698168c1]::runtime::context::Context>>::try_with::<tokio[1eb97573698168c1]::runtime::context::set_scheduler<(alloc[55a36b64bcbf2c0d]::boxed::Box<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::Core>, core[6883ba1bc0fe4ed1]::option::Option<()>), <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}, core[6883ba1bc0fe4ed1]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[55a36b64bcbf2c0d]::boxed::Box<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::Core>, core[6883ba1bc0fe4ed1]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/local.rs:463:12
[INFO] [stdout]   32:     0x603c4111e12e - <std[73adb7dc35730857]::thread::local::LocalKey<tokio[1eb97573698168c1]::runtime::context::Context>>::with::<tokio[1eb97573698168c1]::runtime::context::set_scheduler<(alloc[55a36b64bcbf2c0d]::boxed::Box<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::Core>, core[6883ba1bc0fe4ed1]::option::Option<()>), <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}, core[6883ba1bc0fe4ed1]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[55a36b64bcbf2c0d]::boxed::Box<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::Core>, core[6883ba1bc0fe4ed1]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/local.rs:427:20
[INFO] [stdout]   33:     0x603c413cc99d - tokio[1eb97573698168c1]::runtime::context::set_scheduler::<(alloc[55a36b64bcbf2c0d]::boxed::Box<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::Core>, core[6883ba1bc0fe4ed1]::option::Option<()>), <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}, core[6883ba1bc0fe4ed1]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   34:     0x603c410578e0 - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>::{closure#0}, core[6883ba1bc0fe4ed1]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   35:     0x603c41057bd6 - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[6883ba1bc0fe4ed1]::pin::Pin<&mut core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   36:     0x603c41083c10 - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   37:     0x603c40fe8ee3 - tokio[1eb97573698168c1]::runtime::context::runtime::enter_runtime::<<tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   38:     0x603c410517d1 - <tokio[1eb97573698168c1]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   39:     0x603c4120c484 - <tokio[1eb97573698168c1]::runtime::runtime::Runtime>::block_on_inner::<core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   40:     0x603c4120c64f - <tokio[1eb97573698168c1]::runtime::runtime::Runtime>::block_on::<core[6883ba1bc0fe4ed1]::pin::Pin<&mut dyn core[6883ba1bc0fe4ed1]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   41:     0x603c412eda83 - supervillain[1ee5bb81c37b6e23]::rate_limit::tests::spacer_enforces_interval_under_contention
[INFO] [stdout]                                at /opt/rustwide/workdir/src/rate_limit.rs:338:35
[INFO] [stdout]   42:     0x603c412e3437 - supervillain[1ee5bb81c37b6e23]::rate_limit::tests::spacer_enforces_interval_under_contention::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/rate_limit.rs:311:57
[INFO] [stdout]   43:     0x603c40fa4c96 - <supervillain[1ee5bb81c37b6e23]::rate_limit::tests::spacer_enforces_interval_under_contention::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x603c4185f8fb - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x603c4185f8fb - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   46:     0x603c4186cf45 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   47:     0x603c4186cf45 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   48:     0x603c4186cf45 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   49:     0x603c4186cf45 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   50:     0x603c4186cf45 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   51:     0x603c4186cf45 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   52:     0x603c4186cf45 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   53:     0x603c418679f4 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   54:     0x603c418679f4 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   55:     0x603c41870092 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   56:     0x603c41870092 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   57:     0x603c41870092 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   58:     0x603c41870092 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   59:     0x603c41870092 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   60:     0x603c41870092 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   61:     0x603c41870092 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   62:     0x603c41e5f68f - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   63:     0x603c41e5f68f - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   64:     0x781ad5c70aa4 - <unknown>
[INFO] [stdout]   65:     0x781ad5cfda64 - clone
[INFO] [stdout]   66:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     rate_limit::tests::spacer_enforces_interval_under_contention
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 943 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.36s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c", kill_on_drop: false }`
[INFO] [stdout] cb58ecad8d748b3c1f1d4d157f2349aaf6799bbfd7a69c7ed218b437a307aa6c
