[INFO] cloning repository https://github.com/hiQianFan/openmux
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hiQianFan/openmux" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FhiQianFan%2Fopenmux", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FhiQianFan%2Fopenmux'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d7ff92b2eba06d22170b2c72c6d8d2776191ef20
[INFO] testing hiQianFan/openmux against 1.98.0-beta.1 for beta-1.98-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FhiQianFan%2Fopenmux" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-1-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/hiQianFan/openmux
[INFO] finished tweaking git repo https://github.com/hiQianFan/openmux
[INFO] tweaked toml for git repo https://github.com/hiQianFan/openmux written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hiQianFan/openmux 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/hiQianFan/openmux 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] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3
[INFO] running `Command { std: "docker" "start" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3", 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" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3" "/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" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3", 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" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3" "/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 unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling cc v1.2.65
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling inquire v0.9.4
[INFO] [stderr]    Compiling comfy-table v7.2.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling prismux-core v0.2.3 (/opt/rustwide/workdir/crates/prismux-core)
[INFO] [stderr]    Compiling prismux-plugin-claude v0.2.3 (/opt/rustwide/workdir/crates/prismux-plugin-claude)
[INFO] [stderr]    Compiling prismux-app v0.2.3 (/opt/rustwide/workdir/crates/prismux-app)
[INFO] [stderr]    Compiling prismux-plugin-codex v0.2.3 (/opt/rustwide/workdir/crates/prismux-plugin-codex)
[INFO] [stderr]    Compiling prismux-cli v0.2.3 (/opt/rustwide/workdir/crates/prismux-cli)
[INFO] [stderr]    Compiling prismux-menubar-ffi v0.2.3 (/opt/rustwide/workdir/crates/prismux-menubar-ffi)
[INFO] [stdout] warning: unused import: `process::Command as ProcessCommand`
[INFO] [stdout]  --> crates/prismux-cli/src/input.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     process::Command as ProcessCommand,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `process::Command as ProcessCommand`
[INFO] [stdout]  --> crates/prismux-cli/src/input.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     process::Command as ProcessCommand,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.16s
[INFO] running `Command { std: "docker" "inspect" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3", 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" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3" "/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 once_cell v1.21.4
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling prismux-core v0.2.3 (/opt/rustwide/workdir/crates/prismux-core)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling prismux-plugin-codex v0.2.3 (/opt/rustwide/workdir/crates/prismux-plugin-codex)
[INFO] [stderr]    Compiling prismux-plugin-claude v0.2.3 (/opt/rustwide/workdir/crates/prismux-plugin-claude)
[INFO] [stderr]    Compiling prismux-app v0.2.3 (/opt/rustwide/workdir/crates/prismux-app)
[INFO] [stderr]    Compiling comfy-table v7.2.2
[INFO] [stderr]    Compiling inquire v0.9.4
[INFO] [stderr]    Compiling prismux-menubar-ffi v0.2.3 (/opt/rustwide/workdir/crates/prismux-menubar-ffi)
[INFO] [stderr]    Compiling prismux-cli v0.2.3 (/opt/rustwide/workdir/crates/prismux-cli)
[INFO] [stdout] warning: unused import: `process::Command as ProcessCommand`
[INFO] [stdout]  --> crates/prismux-cli/src/input.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     process::Command as ProcessCommand,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `process::Command as ProcessCommand`
[INFO] [stdout]  --> crates/prismux-cli/src/input.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     process::Command as ProcessCommand,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 20.27s
[INFO] running `Command { std: "docker" "inspect" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3", 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" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `process::Command as ProcessCommand`
[INFO] [stderr]  --> crates/prismux-cli/src/input.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 |     process::Command as ProcessCommand,
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `prismux-cli` (bin "prismux" test) generated 1 warning (run `cargo fix --bin "prismux" -p prismux-cli --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `prismux-cli` (bin "pmx" test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/prismux_app-652a1f3975feeba5)
[INFO] [stdout] 
[INFO] [stdout] running 37 tests
[INFO] [stdout] test api::tests::accounts_marks_single_active_and_redacts_diagnostics ... ok
[INFO] [stdout] test api::tests::account_refresh_calls_single_account_refresh_once ... ok
[INFO] [stdout] test api::tests::accounts_report_keeps_one_active_target_per_provider ... ok
[INFO] [stdout] test api::tests::accounts_report_maps_reset_credit_metadata ... ok
[INFO] [stdout] test api::tests::background_refresh_respects_backend_floor ... ok
[INFO] [stdout] test api::tests::consume_reset_credit_reports_outcome_and_refreshes_provider ... ok
[INFO] [stdout] test api::tests::accounts_report_normalizes_to_one_active_target ... ok
[INFO] [stdout] test api::tests::dashboard_allows_no_active_account ... ok
[INFO] [stdout] test api::tests::consume_reset_credit_failure_returns_safe_operation_result ... ok
[INFO] [stdout] test api::tests::default_menubar_query_selects_all_providers ... ok
[INFO] [stdout] test api::tests::provider_refresh_calls_single_account_refresh_for_each_account ... ok
[INFO] [stdout] test api::tests::refresh_error_backoff_skips_followup_background_request ... ok
[INFO] [stdout] test api::tests::refresh_failure_preserves_account_listing_error ... ok
[INFO] [stdout] test api::tests::provider_view_requires_provider_scope ... ok
[INFO] [stdout] test api::tests::refresh_runs_while_an_operation_is_in_progress ... ok
[INFO] [stdout] test api::tests::stale_quota_keeps_last_known_quota ... ok
[INFO] [stdout] test compatibility::tests::compatibility_exposes_distribution_and_provider_matrix ... ok
[INFO] [stdout] test api::tests::stale_refresh_generation_is_skipped_without_provider_call ... ok
[INFO] [stdout] test query::tests::global_quota_average_folds_raw_reporting_accounts ... ok
[INFO] [stdout] test api::tests::switch_rejects_removed_target_before_plugin_write ... ok
[INFO] [stdout] test diagnostics::redaction::tests::redacts_common_secret_markers ... ok
[INFO] [stdout] test api::tests::switch_failure_does_not_mark_target_switched ... ok
[INFO] [stdout] test api::tests::switch_re_resolves_stable_local_id ... ok
[INFO] [stdout] test query::tests::quota_facts_return_none_when_nothing_reports_quota ... ok
[INFO] [stdout] test query::tests::quota_facts_skip_missing_quota_and_keep_reset_credit_separate ... ok
[INFO] [stdout] test query::tests::best_alternative_uses_action_eligibility_and_stable_tie_break ... ok
[INFO] [stdout] test compatibility::tests::future_state_schema_fails_closed ... ok
[INFO] [stdout] test compatibility::tests::unavailable_optional_modules_keep_contract_compatible_with_guidance ... ok
[INFO] [stdout] test runtime::tests::interactive_refresh_bypasses_freshness_and_backoff_gates ... ok
[INFO] [stdout] test runtime::tests::runtime_view_exposes_backoff_and_failure_gate ... ok
[INFO] [stdout] test settings::tests::future_settings_schema_fails_closed ... ok
[INFO] [stdout] test support::tests::support_report_redacts_recent_diagnostics ... ok
[INFO] [stdout] test settings::tests::proxy_toggle_off_preserves_url ... ok
[INFO] [stdout] test settings::tests::update_settings_persists_view ... ok
[INFO] [stdout] test settings::tests::proxy_toggle_on_survives_empty_url ... ok
[INFO] [stdout] test settings::tests::settings_are_typed_and_default_to_safe_values ... ok
[INFO] [stdout] test api::tests::accounts_report_keeps_safe_diagnostic_when_plugin_is_unavailable ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/pmx.rs (/opt/rustwide/target/debug/deps/pmx-0ee6238191abecbe)
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test app::tests::account_table_header_omits_auth_and_expires ... ok
[INFO] [stdout] test app::tests::refresh_selected_account_rejects_profile_target ... ok
[INFO] [stdout] test app::tests::account_choice_includes_usage_reset_time ... ok
[INFO] [stdout] test app::tests::refresh_selected_account_uses_resolved_account_target ... ok
[INFO] [stdout] test app::tests::target_choice_can_return_display_selector_for_aggregated_picker ... ok
[INFO] [stdout] test app::tests::reset_credit_cli_rejects_profile_target ... ok
[INFO] [stdout] test app::tests::reset_credit_cli_rejects_non_codex_provider_before_prompt ... ok
[INFO] [stdout] test app::tests::reset_credit_cli_consumes_confirmed_codex_account ... ok
[INFO] [stdout] test app::tests::help_includes_remove_command ... ok
[INFO] [stdout] test app::tests::usage_limit_display_includes_reset_without_year ... ok
[INFO] [stdout] test app::tests::login_use_hint_prefers_alias_and_falls_back_to_number ... ok
[INFO] [stdout] test app::tests::overview_overall_averages_all_usage_limits_not_tightest_summary ... ok
[INFO] [stdout] test app::tests::reset_credit_outcome_messages_are_clear ... ok
[INFO] [stdout] test app::tests::reset_credit_requires_yes_without_tty ... ok
[INFO] [stdout] test app::tests::selector_resolution_picks_unique_account_or_profile_and_rejects_ambiguity ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/prismux-add43af2cda759ac)
[INFO] [stdout] test app::tests::selector_resolution_uses_display_index_for_single_plugin_accounts_and_profiles ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test app::tests::account_table_header_omits_auth_and_expires ... ok
[INFO] [stdout] test app::tests::account_choice_includes_usage_reset_time ... ok
[INFO] [stdout] test app::tests::login_use_hint_prefers_alias_and_falls_back_to_number ... ok
[INFO] [stdout] test app::tests::overview_overall_averages_all_usage_limits_not_tightest_summary ... ok
[INFO] [stdout] test app::tests::reset_credit_cli_consumes_confirmed_codex_account ... ok
[INFO] [stdout] test app::tests::reset_credit_cli_rejects_non_codex_provider_before_prompt ... ok
[INFO] [stdout] test app::tests::reset_credit_cli_rejects_profile_target ... ok
[INFO] [stdout] test app::tests::reset_credit_outcome_messages_are_clear ... ok
[INFO] [stdout] test app::tests::help_includes_remove_command ... ok
[INFO] [stdout] test app::tests::reset_credit_requires_yes_without_tty ... ok
[INFO] [stdout] test app::tests::refresh_selected_account_rejects_profile_target ... ok
[INFO] [stdout] test app::tests::refresh_selected_account_uses_resolved_account_target ... ok
[INFO] [stdout] test app::tests::selector_resolution_picks_unique_account_or_profile_and_rejects_ambiguity ... ok
[INFO] [stdout] test app::tests::selector_resolution_uses_display_index_for_single_plugin_accounts_and_profiles ... ok
[INFO] [stdout] test app::tests::target_choice_can_return_display_selector_for_aggregated_picker ... ok
[INFO] [stdout] test app::tests::usage_limit_display_includes_reset_without_year ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 23 tests
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/prismux_core-96afe3d937fa4fd5)
[INFO] [stdout] test state_store::tests::merge_account_into_validates_accounts_and_provider ... ok
[INFO] [stdout] test state_store::tests::sequential_merges_keep_the_newest_credentials ... ok
[INFO] [stdout] test state_store::tests::merge_account_into_uses_active_removed_credentials_even_when_older ... ok
[INFO] [stdout] test state_store::tests::merge_account_into_uses_newer_removed_credentials ... ok
[INFO] [stdout] test storage::tests::atomic_private_write_replaces_file_without_leaving_temp_file ... ok
[INFO] [stdout] test state_store::tests::remove_profile_deletes_profile_and_active_target ... ok
[INFO] [stdout] test target::tests::rejects_ambiguous_alias_and_profile_name ... ok
[INFO] [stdout] test state_store::tests::merge_account_into_preserves_colliding_child_rows ... ok
[INFO] [stdout] test state_store::tests::merge_account_into_rolls_back_every_change_on_late_failure ... ok
[INFO] [stdout] test storage::tests::prune_backup_files_keeps_latest_matching_files ... ok
[INFO] [stdout] test state_store::tests::account_and_profile_are_single_active_target_per_provider ... ok
[INFO] [stdout] test state_store::tests::remove_account_compacts_display_numbers_before_next_import ... ok
[INFO] [stdout] test target::tests::rejects_ambiguous_display_index_and_numeric_name ... ok
[INFO] [stdout] test target::tests::resolves_profile_by_display_index_after_accounts ... ok
[INFO] [stdout] test state_store::tests::remove_account_deletes_account_scoped_state ... ok
[INFO] [stdout] test state_store::tests::migration_rebuilds_legacy_state_schema ... ok
[INFO] [stdout] test state_store::tests::subject_upsert_deletes_duplicate_auth_hash_account ... ok
[INFO] [stdout] test state_store::tests::update_account_auth_is_scoped_to_provider_and_local_id ... ok
[INFO] [stdout] test state_store::tests::empty_prismux_store_imports_legacy_openmux_targets ... ok
[INFO] [stdout] test login_control::tests::cancel_kills_a_long_running_child ... ok
[INFO] [stdout] test login_control::tests::natural_completion_returns_status ... ok
[INFO] [stdout] test state_store::tests::account_history_keeps_recent_rows_only ... ok
[INFO] [stdout] test login_control::tests::timeout_kills_a_long_running_child ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.69s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/prismux_menubar_ffi-b3699f4f19ce2270)
[INFO] [stdout] 
[INFO] [stdout] running 15 tests
[INFO] [stdout] test tests::bad_json_returns_error_envelope ... ok
[INFO] [stdout] test tests::bad_utf8_returns_error_envelope ... ok
[INFO] [stdout] test tests::null_pointer_returns_error_envelope ... ok
[INFO] [stdout] test tests::panic_returns_error_envelope ... ok
[INFO] [stdout] test tests::application_error_is_redacted ... ok
[INFO] [stdout] test tests::unknown_op_returns_safe_error ... ok
[INFO] [stdout] test tests::accounts_dashboard_switch_and_refresh_match_golden_fixtures ... ok
[INFO] [stdout] test tests::accounts_returns_versioned_envelope ... ok
[INFO] [stdout] test tests::unsupported_schema_returns_safe_error ... ok
[INFO] [stdout] test tests::dashboard_falls_back_to_last_good_snapshot ... ok
[INFO] [stdout] test tests::ffi_dashboard_matches_control_plane_for_same_state_root ... ok
[INFO] [stdout] test tests::dashboard_without_provider_returns_all_default_providers ... ok
[INFO] [stdout] test tests::ffi_success_response_can_be_freed_once ... ok
[INFO] [stdout] test tests::request_contract_ignores_additive_optional_fields ... ok
[INFO] [stdout] test tests::ffi_uses_temp_state_and_codex_home_for_accounts_dashboard_refresh_and_switch ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.87s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/prismux_plugin_claude-6706acacaf7fda58)
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test plugin::tests::claude_account_import_rejects_incomplete_oauth_payload ... ok
[INFO] [stdout] test plugin::tests::claude_profile_uses_explicit_prismux_profile_name_without_storing_it_as_env ... ok
[INFO] [stdout] test plugin::tests::use_claude_profile_reports_missing_selector ... ok
[INFO] [stdout] test plugin::tests::claude_account_switch_rolls_back_credential_when_oauth_metadata_write_fails ... ok
[INFO] [stdout] test plugin::tests::imports_and_switches_plaintext_claude_account_without_registry_token_leak ... ok
[INFO] [stdout] test plugin::tests::claude_account_switch_rejects_tampered_snapshot ... ok
[INFO] [stdout] test plugin::tests::imports_and_switches_fake_keychain_claude_account ... ok
[INFO] [stdout] test plugin::tests::login_runs_official_claude_cli_then_imports_account_snapshot ... ok
[INFO] [stdout] test plugin::tests::claude_account_switch_keeps_current_credential_when_backend_write_fails ... ok
[INFO] [stdout] test plugin::tests::login_with_activate_switches_to_the_new_account ... ok
[INFO] [stdout] test plugin::tests::duplicate_claude_profile_updates_existing_number ... ok
[INFO] [stdout] test plugin::tests::imports_lists_and_uses_claude_profile_without_leaking_registry_secret ... ok
[INFO] [stdout] test plugin::tests::duplicate_claude_account_import_preserves_existing_number ... ok
[INFO] [stdout] test plugin::tests::remove_claude_profile_deletes_snapshot_and_excludes_from_list ... ok
[INFO] [stdout] test plugin::tests::remove_claude_account_deletes_snapshots_and_excludes_from_list ... ok
[INFO] [stdout] test plugin::tests::claude_account_and_profile_active_states_are_mutually_exclusive ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/prismux_plugin_codex-df8ce6cfedd788b1)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.60s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 54 tests
[INFO] [stdout] test plugin::tests::codex_usage_proxy_reads_prismux_settings ... ok
[INFO] [stdout] test plugin::tests::extracts_account_and_plan_from_codex_id_token_like_official_codex ... ok
[INFO] [stdout] test plugin::tests::extracts_account_from_account_id_when_jwt_has_no_account_claims ... ok
[INFO] [stdout] test plugin::tests::omits_codex_usage_reset_credits_when_missing_or_invalid ... ok
[INFO] [stdout] test plugin::tests::parses_codex_reset_credit_detail_expiries ... ok
[INFO] [stdout] test plugin::tests::alias_set_rejects_all_digit_aliases ... ok
[INFO] [stdout] test plugin::tests::legacy_duplicate_codex_accounts_are_merged_when_subject_can_be_backfilled ... ok
[INFO] [stdout] test plugin::tests::list_accounts_uses_cached_usage_without_refreshing_remote_quota ... ok
[INFO] [stdout] test plugin::tests::parses_codex_usage_reset_credits_from_string_count ... ok
[INFO] [stdout] test plugin::tests::parses_codex_usage_windows_as_structured_limits ... ok
[INFO] [stdout] test plugin::tests::parses_curl_http_output_error_status ... ok
[INFO] [stdout] test plugin::tests::parses_codex_usage_auth_without_exposing_tokens ... ok
[INFO] [stdout] test plugin::tests::duplicate_save_updates_existing_account_instead_of_appending ... ok
[INFO] [stdout] test plugin::tests::parses_reset_credit_outcome_codes ... ok
[INFO] [stdout] test plugin::tests::imports_openai_compatible_kv_without_storing_raw_api_key ... ok
[INFO] [stdout] test plugin::tests::expired_runtime_adopts_fresher_snapshot_without_network_refresh ... ok
[INFO] [stdout] test plugin::tests::duplicate_codex_subject_updates_existing_account_even_when_auth_hash_changes ... ok
[INFO] [stdout] test plugin::tests::imports_codex_toml_gateway_config_as_profile_file ... ok
[INFO] [stdout] test plugin::tests::parses_curl_http_output_status_without_touching_body ... ok
[INFO] [stdout] test plugin::tests::clear_alias_removes_alias_without_removing_account ... ok
[INFO] [stdout] test plugin::tests::codex_account_switch_ignores_legacy_default_config_snapshot ... ok
[INFO] [stdout] test plugin::tests::refresh_keeps_usage_snapshot_when_reset_credit_detail_fails ... ok
[INFO] [stdout] test plugin::tests::login_cleans_up_temporary_codex_home_after_import ... ok
[INFO] [stdout] test plugin::tests::rejects_unknown_reset_credit_outcome_code ... ok
[INFO] [stdout] test plugin::tests::parses_codex_usage_auth_fedramp_claim ... ok
[INFO] [stdout] test plugin::tests::parses_codex_usage_reset_credits ... ok
[INFO] [stdout] test plugin::tests::reset_credit_detail_parser_handles_empty_or_missing_credits ... ok
[INFO] [stdout] test plugin::tests::reset_credit_detail_parser_ignores_unavailable_or_malformed_entries ... ok
[INFO] [stdout] test plugin::tests::provider_switch_preserves_external_live_config_changes ... ok
[INFO] [stdout] test plugin::tests::save_rejects_alias_used_by_another_account ... ok
[INFO] [stdout] test plugin::tests::sha256_matches_known_vector ... ok
[INFO] [stdout] test plugin::tests::provider_switch_rejects_concurrent_codex_config_change ... ok
[INFO] [stdout] test plugin::tests::refresh_accounts_refreshes_usage_for_every_saved_account ... ok
[INFO] [stdout] test plugin::tests::summarizes_known_account_availability_by_tightest_remaining_capacity ... ok
[INFO] [stdout] test plugin::tests::inactive_managed_token_refresh_stays_in_managed_scope ... ok
[INFO] [stdout] test plugin::tests::remove_profile_deletes_codex_profile_file ... ok
[INFO] [stdout] test plugin::tests::refresh_mints_new_token_when_access_token_expired ... ok
[INFO] [stdout] test plugin::tests::duplicate_login_updates_existing_account_instead_of_appending ... ok
[INFO] [stdout] test plugin::tests::remove_profile_refuses_externally_modified_provider_section ... ok
[INFO] [stdout] test plugin::tests::login_assigns_numbers_supports_alias_device_auth_and_use ... ok
[INFO] [stdout] test plugin::tests::same_email_with_different_codex_account_subjects_stays_separate ... ok
[INFO] [stdout] test plugin::tests::refresh_inactive_account_uses_managed_runtime_without_changing_active_auth ... ok
[INFO] [stdout] test plugin::tests::codex_account_switch_deactivates_managed_provider_config ... ok
[INFO] [stdout] test plugin::tests::switch_rejects_tampered_auth_snapshot ... ok
[INFO] [stdout] test plugin::tests::relogin_read_failure_rolls_back_active_snapshot_metadata ... ok
[INFO] [stdout] test plugin::tests::saves_lists_and_switches_codex_auth_snapshots_by_number_and_alias ... ok
[INFO] [stdout] test plugin::tests::remove_account_deletes_snapshot_and_excludes_from_list ... ok
[INFO] [stdout] test plugin::tests::use_target_rejects_account_profile_selector_ambiguity ... ok
[INFO] [stdout] test plugin::tests::switching_rejects_active_auth_from_a_different_account ... ok
[INFO] [stdout] test plugin::tests::snapshot_write_failure_keeps_active_auth_and_metadata_unchanged ... ok
[INFO] [stdout] test plugin::tests::switching_rejects_changed_auth_when_identity_cannot_be_verified ... ok
[INFO] [stdout] test plugin::tests::switching_rejects_auth_changed_after_snapshot_sync ... ok
[INFO] [stdout] test plugin::tests::switching_persists_rotated_active_auth_before_replacing_it ... ok
[INFO] [stdout] test plugin::tests::relogin_of_active_account_keeps_new_credentials_active_without_use_flag ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.24s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests prismux_app
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests prismux_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests prismux_menubar_ffi
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests prismux_plugin_claude
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests prismux_plugin_codex
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3", kill_on_drop: false }`
[INFO] [stdout] 85bc256f5f7d9909b923f7afb63a674d8d4c6e013de08ccde18daaeb62d9bcf3
