[INFO] cloning repository https://github.com/siropkin/budi
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/siropkin/budi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsiropkin%2Fbudi", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsiropkin%2Fbudi'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a5c61ae551a15ef3f083b81fefca6d1d821bb3e1
[INFO] testing siropkin/budi against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsiropkin%2Fbudi" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/siropkin/budi
[INFO] finished tweaking git repo https://github.com/siropkin/budi
[INFO] tweaked toml for git repo https://github.com/siropkin/budi written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/siropkin/budi on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/siropkin/budi 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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded utf8-zero v0.8.1
[INFO] [stderr]   Downloaded ureq v3.3.0
[INFO] [stderr]   Downloaded ureq-proto v0.6.0
[INFO] [stderr]   Downloaded cookie_store v0.22.1
[INFO] [stderr]   Downloaded rusqlite v0.33.0
[INFO] [stderr]   Downloaded notify-debouncer-mini v0.6.0
[INFO] [stderr]   Downloaded libsqlite3-sys v0.31.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 121549d0996d9e9c4f546919757f8d5b9d01a8c22fab199e1b3ec6cdfb8cbb36
[INFO] running `Command { std: "docker" "start" "-a" "121549d0996d9e9c4f546919757f8d5b9d01a8c22fab199e1b3ec6cdfb8cbb36", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "121549d0996d9e9c4f546919757f8d5b9d01a8c22fab199e1b3ec6cdfb8cbb36", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "121549d0996d9e9c4f546919757f8d5b9d01a8c22fab199e1b3ec6cdfb8cbb36", kill_on_drop: false }`
[INFO] [stdout] 121549d0996d9e9c4f546919757f8d5b9d01a8c22fab199e1b3ec6cdfb8cbb36
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 229a4b282f48e74c138d44afad67e38349182fdd485cd0a73a79eadf4fcec5b0
[INFO] running `Command { std: "docker" "start" "-a" "229a4b282f48e74c138d44afad67e38349182fdd485cd0a73a79eadf4fcec5b0", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling ureq-proto v0.6.0
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling notify-types v2.1.0
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling budi-cli v8.4.2 (/opt/rustwide/workdir/crates/budi-cli)
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.31.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tokio v1.51.1
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling inotify v0.11.1
[INFO] [stderr]    Compiling notify v8.2.0
[INFO] [stderr]    Compiling notify-debouncer-mini v0.6.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling rusqlite v0.33.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling ureq v3.3.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling budi-core v8.4.2 (/opt/rustwide/workdir/crates/budi-core)
[INFO] [stderr]    Compiling budi-daemon v8.4.2 (/opt/rustwide/workdir/crates/budi-daemon)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 05s
[INFO] running `Command { std: "docker" "inspect" "229a4b282f48e74c138d44afad67e38349182fdd485cd0a73a79eadf4fcec5b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "229a4b282f48e74c138d44afad67e38349182fdd485cd0a73a79eadf4fcec5b0", kill_on_drop: false }`
[INFO] [stdout] 229a4b282f48e74c138d44afad67e38349182fdd485cd0a73a79eadf4fcec5b0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7c0ca6f2f24d8ceab9b9ce030a92576b0842e12683dd42abc029c2331e0ace05
[INFO] running `Command { std: "docker" "start" "-a" "7c0ca6f2f24d8ceab9b9ce030a92576b0842e12683dd42abc029c2331e0ace05", kill_on_drop: false }`
[INFO] [stderr]    Compiling budi-core v8.4.2 (/opt/rustwide/workdir/crates/budi-core)
[INFO] [stderr]    Compiling budi-daemon v8.4.2 (/opt/rustwide/workdir/crates/budi-daemon)
[INFO] [stderr]    Compiling budi-cli v8.4.2 (/opt/rustwide/workdir/crates/budi-cli)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 31.46s
[INFO] running `Command { std: "docker" "inspect" "7c0ca6f2f24d8ceab9b9ce030a92576b0842e12683dd42abc029c2331e0ace05", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7c0ca6f2f24d8ceab9b9ce030a92576b0842e12683dd42abc029c2331e0ace05", kill_on_drop: false }`
[INFO] [stdout] 7c0ca6f2f24d8ceab9b9ce030a92576b0842e12683dd42abc029c2331e0ace05
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 724a042cc116f0766abe5ec1c86e98505a4efd112409d972b8966c21136a05dd
[INFO] running `Command { std: "docker" "start" "-a" "724a042cc116f0766abe5ec1c86e98505a4efd112409d972b8966c21136a05dd", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.40s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/budi-46cf4defca5548c2)
[INFO] [stdout] 
[INFO] [stdout] running 278 tests
[INFO] [stdout] test client::tests::parse_needs_migration_error_skips_non_json ... ok
[INFO] [stdout] test client::tests::ensure_daemon_ready_checks_running_daemon_too ... ok
[INFO] [stdout] test client::tests::ensure_daemon_ready_still_checks_when_daemon_is_down ... ok
[INFO] [stdout] test client::tests::parse_needs_migration_error_skips_unrelated_503 ... ok
[INFO] [stdout] test client::tests::parse_needs_migration_error_extracts_message ... ok
[INFO] [stdout] test commands::autostart::tests::autostart_platform_tag_is_keyword_only ... ok
[INFO] [stdout] test commands::cloud::tests::describe_existing_link_falls_back_when_org_id_missing ... ok
[INFO] [stdout] test commands::cloud::tests::describe_reset_target_falls_back_when_org_id_missing ... ok
[INFO] [stdout] test commands::cloud::tests::describe_existing_link_names_org_when_present ... ok
[INFO] [stdout] test commands::cloud::tests::describe_reset_target_names_org_when_present ... ok
[INFO] [stdout] test client::tests::ensure_daemon_ready_uses_mismatch_error_context_when_healthy ... ok
[INFO] [stdout] test commands::autostart::tests::autostart_status_json_emits_null_service_path_when_absent ... ok
[INFO] [stdout] test commands::cloud::tests::rotation_aware_error_names_org_and_points_at_force ... ok
[INFO] [stdout] test commands::cloud::tests::cloud_reset_json_serialises_missing_org_as_null ... ok
[INFO] [stdout] test commands::cloud::tests::rotation_aware_error_falls_back_when_org_id_missing ... ok
[INFO] [stdout] test commands::cloud::tests::seed_outcome_seeded_ids_mirrors_the_variant ... ok
[INFO] [stdout] test commands::autostart::tests::autostart_status_json_locks_schema ... ok
[INFO] [stdout] test commands::cloud::tests::cloud_reset_json_locks_schema_with_org ... ok
[INFO] [stdout] test commands::cloud::tests::template_stub_variant_is_disabled_and_carries_placeholder ... ok
[INFO] [stdout] test commands::cloud::tests::template_with_real_key_is_enabled ... ok
[INFO] [stdout] test commands::doctor::tests::daemon_already_running_is_pass_with_no_outage ... ok
[INFO] [stdout] test commands::cloud::tests::template_with_full_seed_writes_uncommented_identity_lines ... ok
[INFO] [stdout] test commands::cloud::tests::template_is_valid_toml_and_round_trips_through_cloud_config ... ok
[INFO] [stdout] test commands::cloud::tests::template_with_device_id_only_leaves_org_id_commented ... ok
[INFO] [stdout] test commands::cloud::tests::template_stub_round_trips_as_stub ... ok
[INFO] [stdout] test client::tests::ensure_daemon_ready_uses_startup_error_context_when_unhealthy ... ok
[INFO] [stdout] test commands::db::tests::remove_db_alias_nudge_marker_is_idempotent_when_file_is_absent ... ok
[INFO] [stdout] test commands::doctor::tests::daemon_json_omits_outage_fields_when_already_running ... ok
[INFO] [stdout] test commands::doctor::tests::daemon_json_includes_auto_recovered_and_previous_outage ... ok
[INFO] [stdout] test commands::doctor::tests::doctor_json_all_pass_true_when_all_checks_pass ... ok
[INFO] [stdout] test commands::doctor::tests::doctor_json_locks_schema_and_status_vocabulary ... ok
[INFO] [stdout] test commands::doctor::tests::format_bytes_rounds_units ... ok
[INFO] [stdout] test commands::doctor::tests::detected_providers_handles_zero_watch_roots_and_zero_sessions ... ok
[INFO] [stdout] test commands::doctor::tests::format_outage_display_without_log_shows_only_supervisor ... ok
[INFO] [stdout] test commands::doctor::tests::daemon_auto_recovered_is_warn_with_outage ... ok
[INFO] [stdout] test commands::doctor::tests::detected_providers_lists_each_available_provider ... ok
[INFO] [stdout] test commands::doctor::tests::integrity_check_uses_quick_check_by_default ... ok
[INFO] [stdout] test commands::doctor::tests::integrity_check_uses_full_check_in_deep_mode ... ok
[INFO] [stdout] test commands::doctor::tests::host_hint_picks_specific_vscode_variant_first ... ok
[INFO] [stdout] test commands::doctor::tests::host_hint_returns_none_for_non_host_scoped_paths ... ok
[INFO] [stdout] test commands::doctor::tests::host_hint_collapses_duplicate_hosts_and_orders_by_appearance ... ok
[INFO] [stdout] test commands::doctor::tests::legacy_proxy_history_warns_when_proxy_events_table_is_still_present ... ok
[INFO] [stdout] test commands::doctor::tests::legacy_proxy_history_passes_when_only_retained_messages_remain ... ok
[INFO] [stdout] test commands::doctor::tests::pre_boot_history_info_when_seeded_offsets_have_no_messages ... ok
[INFO] [stdout] test commands::doctor::tests::merge_hint_extensions_ignores_unknown_top_level_fields ... ok
[INFO] [stdout] test commands::doctor::tests::merge_hint_extensions_accepts_object_shape ... ok
[INFO] [stdout] test commands::doctor::tests::merge_hint_extensions_dedupes_repeated_ids ... ok
[INFO] [stdout] test commands::doctor::tests::merge_hint_extensions_accepts_flat_array_via_known_id_map ... ok
[INFO] [stdout] test commands::doctor::tests::pre_boot_history_passes_idempotently_once_messages_exist ... ok
[INFO] [stdout] test commands::doctor::tests::pre_boot_history_passes_silently_when_nothing_was_seeded ... ok
[INFO] [stdout] test commands::doctor::tests::provider_for_extension_id_recognises_copilot_ids_case_insensitively ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_health_fails_when_offsets_are_missing ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_health_warns_when_watch_root_is_missing ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_rows_amber_message_omits_adr_pointer_for_non_copilot_chat_providers ... ok
[INFO] [stdout] test commands::doctor::tests::read_session_hint_file_returns_none_for_missing_or_invalid ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_rows_ambers_when_bytes_flow_but_zero_rows_land_for_copilot_chat ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_rows_passes_when_bytes_flow_and_rows_land_in_window ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_rows_passes_when_idle_with_zero_advance_and_zero_rows ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_rows_passes_when_last_seen_is_outside_window ... ok
[INFO] [stdout] test commands::doctor::tests::transcript_visibility_fails_when_latest_file_is_untracked ... ok
[INFO] [stdout] test commands::doctor::tests::transcript_visibility_passes_on_small_gap_with_recent_tailer_activity ... ok
[INFO] [stdout] test commands::doctor::tests::transcript_visibility_passes_when_no_activity_today ... ok
[INFO] [stdout] test commands::doctor::tests::visibility_does_not_suggest_restart_with_budi_init ... ok
[INFO] [stdout] test commands::doctor::tests::visibility_fails_when_file_is_actively_written_but_tailer_is_idle ... ok
[INFO] [stdout] test commands::doctor::tests::visibility_fails_when_gap_exceeds_wedge_threshold ... ok
[INFO] [stdout] test commands::doctor::tests::visibility_passes_on_live_write_drift ... ok
[INFO] [stdout] test commands::doctor::tests::visibility_passes_when_caught_up ... ok
[INFO] [stdout] test commands::doctor::tests::visibility_warns_when_gap_exceeds_live_write_threshold ... ok
[INFO] [stdout] test commands::doctor::tests::visibility_warns_when_tailer_activity_is_stale_but_gap_is_small ... ok
[INFO] [stdout] test commands::import::tests::current_provider_line_handles_direct_sync_provider ... ok
[INFO] [stdout] test commands::import::tests::current_provider_line_renders_pct_with_discovery ... ok
[INFO] [stdout] test commands::import::tests::format_int_inserts_thousands_separators ... ok
[INFO] [stdout] test commands::import::tests::renderer_plain_prints_once_per_provider_on_transition ... ok
[INFO] [stdout] test commands::init::tests::detect_agents_only_includes_providers_with_existing_roots ... ok
[INFO] [stdout] test commands::init::tests::detect_agents_sorts_and_dedups_roots ... ok
[INFO] [stdout] test commands::init::tests::statusline_hint_prints_on_fresh_install ... ok
[INFO] [stdout] test commands::init::tests::statusline_hint_prints_when_marker_present_but_toml_missing ... ok
[INFO] [stdout] test commands::init::tests::statusline_hint_prints_when_toml_present_but_marker_missing ... ok
[INFO] [stdout] test commands::init::tests::statusline_hint_suppressed_when_already_onboarded ... ok
[INFO] [stdout] test commands::init::tests::statusline_hint_suppressed_when_statusline_not_in_selection ... ok
[INFO] [stdout] test commands::integrations::tests::apply_statusline_adds_new_statusline_when_missing ... ok
[INFO] [stdout] test commands::integrations::tests::apply_statusline_detects_existing_budi_statusline ... ok
[INFO] [stdout] test client::tests::branches_forwards_provider_filter ... ok
[INFO] [stdout] test client::tests::files_forwards_provider_filter ... ok
[INFO] [stdout] test client::tests::tickets_forwards_provider_filter ... ok
[INFO] [stdout] test client::tests::breakdown_omits_providers_when_filter_is_none ... ok
[INFO] [stdout] test commands::pricing::tests::classify_refresh_error_covers_every_validation_variant ... ok
[INFO] [stdout] test commands::integrations::tests::refresh_unions_user_prefs_with_default_recommended_components ... ok
[INFO] [stdout] test commands::pricing::tests::render_recompute_text_covers_all_statuses ... ok
[INFO] [stdout] test commands::integrations::tests::apply_statusline_preserves_user_command_on_merge ... ok
[INFO] [stdout] test commands::doctor::tests::detected_providers_warns_when_nothing_is_available ... ok
[INFO] [stdout] test commands::pricing::tests::team_pricing_inactive_shape_renders_cleanly ... ok
[INFO] [stdout] test commands::doctor::tests::detected_providers_appends_extension_hint_when_present ... ok
[INFO] [stdout] test client::tests::activities_forwards_provider_filter ... ok
[INFO] [stdout] test commands::doctor::tests::format_outage_display_includes_gap_and_supervisor ... ok
[INFO] [stdout] test commands::pricing::tests::team_pricing_json_shape_is_stable ... ok
[INFO] [stdout] test client::tests::models_forwards_provider_filter ... ok
[INFO] [stdout] test client::tests::projects_forwards_provider_filter ... ok
[INFO] [stdout] test commands::pricing::tests::shorten_error_strips_validation_rejected_prefix ... ok
[INFO] [stdout] test commands::sessions::tests::full_uuid_returns_unchanged_string ... ok
[INFO] [stdout] test commands::sessions::tests::short_uuid_is_utf8_boundary_safe_on_non_ascii_id ... ok
[INFO] [stdout] test commands::sessions::tests::truncate_on_char_boundary_handles_multibyte_codepoints ... ok
[INFO] [stdout] test commands::sessions::tests::truncate_on_char_boundary_preserves_short_strings ... ok
[INFO] [stdout] test commands::sessions::tests::truncate_on_char_boundary_zero_max_returns_empty ... ok
[INFO] [stdout] test commands::stats::tests::breakdown_header_has_cost_column_in_canonical_position ... ok
[INFO] [stdout] test commands::stats::tests::breakdown_row_layout_matches_tag_view_template ... ok
[INFO] [stdout] test commands::stats::tests::breakdown_row_snapshot_activities_view ... ok
[INFO] [stdout] test commands::sessions::tests::short_uuid_is_eight_chars_by_default ... ok
[INFO] [stdout] test commands::sessions::tests::sessions_envelope_serializes_truncation_metadata ... ok
[INFO] [stdout] test commands::sessions::tests::truncate_on_char_boundary_uses_ellipsis_on_overflow ... ok
[INFO] [stdout] test commands::stats::tests::breakdown_row_snapshot_tag_view ... ok
[INFO] [stdout] test commands::stats::tests::breakdown_row_snapshot_tickets_view ... ok
[INFO] [stdout] test commands::stats::tests::breakdown_view_untagged_label_is_view_specific ... ok
[INFO] [stdout] test commands::stats::tests::display_dimension_translates_untagged_but_leaves_other_values_alone ... ok
[INFO] [stdout] test commands::stats::tests::format_breakdown_footer_uses_fixed_currency ... ok
[INFO] [stdout] test commands::stats::tests::is_only_untagged_detects_lone_fallback_row ... ok
[INFO] [stdout] test commands::stats::tests::merge_and_partition_pending_suppresses_zero_cost_placeholder ... ok
[INFO] [stdout] test commands::stats::tests::merge_and_partition_pending_surfaces_cursor_auto_cost_by_default ... ok
[INFO] [stdout] test commands::stats::tests::format_cost_cents_fixed_is_always_two_decimals_with_thousands_sep ... ok
[INFO] [stdout] test commands::stats::tests::models_json_carries_display_name_and_provider_model_id ... ok
[INFO] [stdout] test commands::stats::tests::max_cost_for_rows_handles_empty_and_all_zero ... ok
[INFO] [stdout] test commands::stats::tests::month_resolves_to_rolling_thirty_days_on_every_day_of_month ... ok
[INFO] [stdout] test commands::stats::tests::period_date_range_all_has_no_since ... ok
[INFO] [stdout] test commands::stats::tests::period_key_returns_canonical_cli_form ... ok
[INFO] [stdout] test commands::stats::tests::period_date_range_relative_windows_go_backwards ... ok
[INFO] [stdout] test commands::stats::tests::render_bar_always_pads_to_fixed_width ... ok
[INFO] [stdout] test commands::stats::tests::period_date_range_months_uses_calendar_subtraction ... ok
[INFO] [stdout] test commands::stats::tests::period_date_range_today_pins_local_midnight ... ok
[INFO] [stdout] test commands::stats::tests::period_label_covers_relative_windows ... ok
[INFO] [stdout] test commands::stats::tests::render_bar_is_proportional_to_cost_not_message_count ... ok
[INFO] [stdout] test commands::stats::tests::render_bar_is_blank_for_zero_cost_rows ... ok
[INFO] [stdout] test commands::stats::tests::snapshot_activities_today_and_30d_layout_is_stable ... ok
[INFO] [stdout] test commands::stats::tests::render_bar_is_blank_when_every_row_is_zero ... ok
[INFO] [stdout] test commands::stats::tests::breakdown_row_snapshot_models_view ... ok
[INFO] [stdout] test commands::stats::tests::snapshot_branches_today_and_30d_layout_is_stable ... ok
[INFO] [stdout] test commands::stats::tests::snapshot_files_today_and_30d_layout_is_stable ... ok
[INFO] [stdout] test commands::stats::tests::summary_empty_window_renders_no_data_message_and_skips_blocks ... ok
[INFO] [stdout] test commands::stats::tests::summary_est_cost_precision_matches_component_sub_line ... ok
[INFO] [stdout] test commands::stats::tests::summary_keeps_agents_block_with_one_provider ... ok
[INFO] [stdout] test commands::stats::tests::summary_omits_other_cost_cell_when_zero ... ok
[INFO] [stdout] test commands::stats::tests::summary_provider_filter_renders_one_row_in_agents_block ... ok
[INFO] [stdout] test commands::stats::tests::snapshot_tickets_today_and_30d_layout_is_stable ... ok
[INFO] [stdout] test commands::stats::tests::summary_cache_savings_line_is_unconditional ... ok
[INFO] [stdout] test commands::stats::tests::truncate_label_is_utf8_boundary_safe ... ok
[INFO] [stdout] test commands::stats::tests::summary_cursor_lag_footnote_rides_on_displayed_providers ... ok
[INFO] [stdout] test commands::stats::tests::summary_tokens_row_reconciles_with_per_agent_totals ... ok
[INFO] [stdout] test commands::stats::tests::truncate_label_middle_keeps_head_and_tail ... ok
[INFO] [stdout] test commands::stats::tests::untagged_only_tip_nudges_short_windows_to_widen ... ok
[INFO] [stdout] test commands::stats::tests::summary_renders_other_cost_cell_when_nonzero ... ok
[INFO] [stdout] test commands::stats::tests::summary_agents_block_tokens_cell_always_has_unit_suffix ... ok
[INFO] [stdout] test commands::stats::tests::truncate_label_middle_falls_back_for_very_narrow_widths ... ok
[INFO] [stdout] test commands::stats::tests::summary_agents_block_count_matches_total_row_unit ... ok
[INFO] [stdout] test commands::stats::tests::week_resolves_to_rolling_seven_days_on_every_weekday ... ok
[INFO] [stdout] test commands::status::tests::status_json_locks_schema_with_today_present ... ok
[INFO] [stdout] test commands::stats::tests::summary_shape_is_identical_across_all_six_periods ... ok
[INFO] [stdout] test commands::statusline::tests::build_slot_values_includes_session_and_message ... ok
[INFO] [stdout] test commands::statusline::tests::build_slot_values_from_json ... ok
[INFO] [stdout] test commands::statusline::tests::build_slot_values_message_matches_session_cost_for_single_user_turn_with_fanout ... ok
[INFO] [stdout] test commands::status::tests::status_json_today_is_null_when_daemon_down ... ok
[INFO] [stdout] test commands::statusline::tests::build_slot_values_falls_back_to_legacy_field_names ... ok
[INFO] [stdout] test commands::statusline::tests::extract_model_name_prefers_display_falls_back_to_id ... ok
[INFO] [stdout] test commands::statusline::tests::fmt_cost_formats_correctly ... ok
[INFO] [stdout] test commands::statusline::tests::is_legacy_budi_hook_detection ... ok
[INFO] [stdout] test commands::statusline::tests::detect_legacy_statusline_tokens_finds_all ... ok
[INFO] [stdout] test commands::statusline::tests::nudge_legacy_statusline_tokens_silent_without_legacy ... ok
[INFO] [stdout] test commands::statusline::tests::parse_slots_arg_strips_whitespace_and_normalizes ... ok
[INFO] [stdout] test commands::statusline::tests::nudge_legacy_statusline_tokens_survives_missing_marker_dir ... ok
[INFO] [stdout] test commands::statusline::tests::remove_legacy_hooks_noop_without_hooks ... ok
[INFO] [stdout] test commands::statusline::tests::remove_legacy_hooks_preserves_new_style_budi_hook ... ok
[INFO] [stdout] test commands::statusline::tests::remove_legacy_hooks_preserves_non_budi ... ok
[INFO] [stdout] test commands::statusline::tests::remove_legacy_hooks_removes_budi_entries ... ok
[INFO] [stdout] test commands::statusline::tests::render_context_prefix_builds_dot_separated_line_with_all_fields ... ok
[INFO] [stdout] test commands::statusline::tests::render_context_prefix_drops_missing_fields_individually ... ok
[INFO] [stdout] test commands::statusline::tests::nudge_legacy_statusline_tokens_writes_once_per_day ... ok
[INFO] [stdout] test commands::statusline::tests::render_context_prefix_returns_none_when_everything_missing ... ok
[INFO] [stdout] test commands::statusline::tests::render_template_leaves_unknown_placeholders ... ok
[INFO] [stdout] test commands::statusline::tests::render_template_replaces_placeholders ... ok
[INFO] [stdout] test commands::statusline::tests::short_display_path_normalizes_home_and_truncates ... ok
[INFO] [stdout] test commands::statusline::tests::slots_override_replaces_config_preset ... ok
[INFO] [stdout] test commands::statusline::tests::render_slots_filters_missing ... ok
[INFO] [stdout] test commands::statusline::tests::build_slot_values_message_absent_without_session_msg_cost ... ok
[INFO] [stdout] test commands::statusline::tests::build_slot_values_message_does_not_double_divide_by_100 ... ok
[INFO] [stdout] test commands::statusline::tests::cmd_statusline_rejects_unknown_provider_before_io ... ok
[INFO] [stdout] test commands::statusline::tests::render_slots_session_and_message ... ok
[INFO] [stdout] test commands::statusline::tests::statusline_has_budi_detects_presence ... ok
[INFO] [stdout] test commands::tests::normalize_provider_resolves_user_aliases ... ok
[INFO] [stdout] test commands::tests::normalize_surface_accepts_canonical_names ... ok
[INFO] [stdout] test commands::tests::normalize_provider_accepts_canonical_names ... ok
[INFO] [stdout] test commands::tests::normalize_surface_lowercases_mixed_case_input ... ok
[INFO] [stdout] test commands::tests::normalize_provider_rejects_unknown_with_helpful_list ... ok
[INFO] [stdout] test commands::tests::atomic_write_json_preserves_mode_bits ... ok
[INFO] [stdout] test commands::tests::normalize_surface_rejects_unknown_with_helpful_list ... ok
[INFO] [stdout] test commands::tests::round_cents_ignores_non_numeric_cents_values ... ok
[INFO] [stdout] test commands::tests::round_cents_recurses_into_nested_objects ... ok
[INFO] [stdout] test commands::tests::atomic_write_json_preserves_symlinks ... ok
[INFO] [stdout] test commands::tests::round_cents_rounds_ten_digit_float_to_integer ... ok
[INFO] [stdout] test commands::uninstall::tests::inventory_counts_unknown_entries_separately ... ok
[INFO] [stdout] test commands::uninstall::tests::remove_file_if_exists_is_idempotent ... ok
[INFO] [stdout] test commands::tests::read_json_object_strict_invalid_json_creates_backup ... ok
[INFO] [stdout] test commands::update::tests::parse_checksum_finds_star_entry ... ok
[INFO] [stdout] test commands::update::tests::parse_checksum_returns_error_when_missing ... ok
[INFO] [stdout] test commands::uninstall::tests::inventory_enumerates_known_contract_files ... ok
[INFO] [stdout] test daemon::tests::resolve_daemon_binary_falls_back_to_path_binary_name ... ok
[INFO] [stdout] test daemon::tests::resolve_daemon_binary_uses_env_override_first ... ok
[INFO] [stdout] test commands::tests::read_json_object_strict_missing_file_defaults_to_object ... ok
[INFO] [stdout] test daemon::tests::resolve_daemon_binary_prefers_sibling_binary_when_present ... ok
[INFO] [stdout] test tests::cli_cloud_status_accepts_format_json ... ok
[INFO] [stdout] test tests::cli_doctor_accepts_format_json ... ok
[INFO] [stdout] test tests::cli_no_longer_exposes_vitals_or_health_top_level ... ok
[INFO] [stdout] test tests::cli_parses_autostart_subcommands ... ok
[INFO] [stdout] test tests::cli_autostart_status_accepts_format_json ... ok
[INFO] [stdout] test tests::cli_parses_cloud_init_bare ... ok
[INFO] [stdout] test tests::cli_parses_cloud_init_manual_ids ... ok
[INFO] [stdout] test tests::cli_parses_bare_stats ... ok
[INFO] [stdout] test tests::cli_parses_cloud_init_with_flags ... ok
[INFO] [stdout] test tests::cli_parses_cloud_subcommands ... ok
[INFO] [stdout] test tests::cli_parses_cloud_sync_full ... ok
[INFO] [stdout] test tests::cli_parses_doctor_deep_flag ... ok
[INFO] [stdout] test tests::cli_parses_doctor_quiet_flag ... ok
[INFO] [stdout] test tests::cli_parses_init ... ok
[INFO] [stdout] test commands::integrations::tests::e2e_refresh_from_v8_3_14_creates_statusline_and_skill ... ok
[INFO] [stdout] test tests::cli_parses_pricing_recompute_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_db_subcommands ... ok
[INFO] [stdout] test tests::cli_parses_cloud_reset ... ok
[INFO] [stdout] test tests::cli_parses_sessions_surface_flag ... ok
[INFO] [stdout] test tests::cli_parses_sessions_provider_flag ... ok
[INFO] [stdout] test tests::cli_parses_pricing_subcommands ... ok
[INFO] [stdout] test tests::cli_parses_sessions_ticket_flag ... ok
[INFO] [stdout] test tests::cli_parses_sessions_activity_flag ... ok
[INFO] [stdout] test tests::cli_parses_stats_activities_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_branch_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_file_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_activity_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_projects_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_models_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_surface_global_flag ... ok
[INFO] [stdout] test tests::cli_parses_stats_surfaces_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_tag_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_branches_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_tickets_subcommand ... ok
[INFO] [stdout] test tests::cli_parses_stats_files_subcommand ... ok
[INFO] [stdout] test tests::cli_rejects_legacy_pricing_refresh_flag ... ok
[INFO] [stdout] test tests::cli_parses_stats_ticket_subcommand ... ok
[INFO] [stdout] test tests::cli_rejects_removed_db_bare_verbs ... ok
[INFO] [stdout] test tests::cli_sessions_accepts_current_as_session_id ... ok
[INFO] [stdout] test tests::cli_stats_activity_accepts_repo_filter ... ok
[INFO] [stdout] test tests::cli_stats_file_accepts_repo_filter ... ok
[INFO] [stdout] test commands::tests::round_cents_covers_cache_savings_and_avg_cost_keys ... ok
[INFO] [stdout] test commands::stats::tests::snapshot_models_today_and_30d_layout_is_stable ... ok
[INFO] [stdout] test commands::sessions::tests::sessions_envelope_not_truncated_when_all_returned ... ok
[INFO] [stdout] test daemon::tests::detach_from_session_starts_new_process_group ... ok
[INFO] [stdout] test tests::cli_stats_ticket_accepts_repo_filter ... ok
[INFO] [stdout] test tests::cli_status_accepts_format_json ... ok
[INFO] [stdout] test tests::cli_statusline_accepts_slots_flag ... ok
[INFO] [stdout] test tests::cli_statusline_accepts_text_as_claude_alias ... ok
[INFO] [stdout] test tests::cli_stats_subcommands_are_mutually_exclusive_by_construction ... ok
[INFO] [stdout] test tests::cli_stats_global_flags_parse_after_subcommand ... ok
[INFO] [stdout] test commands::update::tests::parse_checksum_finds_plain_entry ... ok
[INFO] [stdout] test commands::uninstall::tests::pluralize_items_matches_english ... ok
[INFO] [stdout] test commands::tests::round_cents_preserves_already_integer_cents ... ok
[INFO] [stdout] test tests::stats_period_parses_calendar_windows ... ok
[INFO] [stdout] test tests::stats_period_parses_relative_windows ... ok
[INFO] [stdout] test tests::stats_period_rejects_invalid_input ... ok
[INFO] [stdout] test tests::help_shows_expected_commands ... ok
[INFO] [stdout] test tests::help_advertises_sessions_latest_for_vitals_replacement ... ok
[INFO] [stdout] test tests::cli_stats_legacy_view_flags_are_rejected ... ok
[INFO] [stdout] test tests::cli_sessions_accepts_latest_as_session_id ... ok
[INFO] [stdout] test tests::daemon_command_match_is_port_scoped ... ok
[INFO] [stdout] test tests::cli_sessions_parses_relative_period_flag ... ok
[INFO] [stdout] test tests::cli_rejects_removed_proxy_commands ... ok
[INFO] [stdout] test tests::help_lists_cloud_commands ... ok
[INFO] [stdout] test tests::help_advertises_sessions_current_for_budi_skill ... ok
[INFO] [stdout] test tests::cli_stats_parses_relative_period_flag ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_rows_loader_reads_offset_advance_and_message_count ... ok
[INFO] [stdout] test commands::doctor::tests::pre_boot_history_loader_counts_lifetime_messages_per_provider ... ok
[INFO] [stdout] test commands::doctor::tests::legacy_proxy_history_loader_reads_proxy_rows_and_table_presence ... ok
[INFO] [stdout] test commands::doctor::tests::tailer_rows_loader_returns_zero_when_no_offsets_or_messages_exist ... ok
[INFO] [stdout] test commands::doctor::tests::pre_boot_history_loader_separates_seeded_from_zero_offset_rows ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 278 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.84s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/budi_core-25c279551db2da80)
[INFO] [stdout] 
[INFO] [stdout] running 682 tests
[INFO] [stdout] test analytics::sync::tests::sync_progress_tolerates_missing_fields ... ok
[INFO] [stdout] test analytics::sync::tests::read_transcript_tail_resets_offset_after_truncate ... ok
[INFO] [stdout] test analytics::sync::tests::read_transcript_tail_starts_from_offset ... ok
[INFO] [stdout] test analytics::sync::tests::sync_report_roundtrips_per_provider_through_json ... ok
[INFO] [stdout] test analytics::tests::activity_chart_hour_granularity ... ok
[INFO] [stdout] test analytics::tests::activity_cost_single_returns_detail_with_branches ... ok
[INFO] [stdout] test analytics::sync::tests::first_legacy_proxy_message_timestamp_returns_none_without_proxy_rows ... ok
[INFO] [stdout] test analytics::sync::tests::backfill_activity_tags_fills_from_session_category ... ok
[INFO] [stdout] test analytics::tests::backfill_preserves_started_at_but_advances_ended_at ... ok
[INFO] [stdout] test analytics::tests::activity_chart_groups_by_day ... ok
[INFO] [stdout] test analytics::tests::activity_cost_single_can_filter_by_repo ... ok
[INFO] [stdout] test analytics::sync::tests::first_legacy_proxy_message_timestamp_returns_earliest_proxy_row ... ok
[INFO] [stdout] test analytics::tests::breakdown_other_label_is_stable_wire_value ... ok
[INFO] [stdout] test analytics::sync::tests::backfill_activity_tags_skips_already_tagged ... ok
[INFO] [stdout] test analytics::sync::tests::backfill_activity_tags_skips_sessions_without_category ... ok
[INFO] [stdout] test analytics::tests::backfill_preserves_already_populated_repo_and_branch ... ok
[INFO] [stdout] test analytics::tests::activity_cost_groups_by_activity ... ok
[INFO] [stdout] test analytics::tests::branch_cost_groups_by_branch ... ok
[INFO] [stdout] test analytics::tests::backfill_repo_and_branch_from_messages ... ok
[INFO] [stdout] test analytics::tests::backfill_advances_ended_at_for_active_session ... ok
[INFO] [stdout] test analytics::tests::activity_cost_includes_untagged_bucket ... ok
[INFO] [stdout] test analytics::tests::branch_cost_untagged ... ok
[INFO] [stdout] test analytics::tests::branch_cost_single_handles_multi_repo_branches ... ok
[INFO] [stdout] test analytics::tests::breakdown_branches_reconcile_with_other_row_when_truncated ... ok
[INFO] [stdout] test analytics::tests::branch_cost_single_finds_branch ... ok
[INFO] [stdout] test analytics::tests::cost_confidence_stats_groups_correctly ... ok
[INFO] [stdout] test analytics::tests::breakdown_tickets_reconcile_with_other_row_when_truncated ... ok
[INFO] [stdout] test analytics::tests::breakdown_tags_reconcile_with_other_row_when_truncated ... ok
[INFO] [stdout] test analytics::tests::breakdown_models_reconcile_with_other_row_when_truncated ... ok
[INFO] [stdout] test analytics::tests::breakdown_files_reconcile_with_other_row_when_truncated ... ok
[INFO] [stdout] test analytics::tests::cache_efficiency_computes_savings ... ok
[INFO] [stdout] test analytics::tests::cache_stats_computes_hit_rate ... ok
[INFO] [stdout] test analytics::tests::cost_cents_baked_at_ingest ... ok
[INFO] [stdout] test analytics::tests::cross_parse_dedup_by_request_id ... ok
[INFO] [stdout] test analytics::tests::breakdown_projects_reconcile_with_other_row_when_truncated ... ok
[INFO] [stdout] test analytics::tests::breakdown_activities_reconcile_with_other_row_when_truncated ... ok
[INFO] [stdout] test analytics::tests::file_cost_single_can_filter_by_repo ... ok
[INFO] [stdout] test analytics::tests::cross_parse_dedup_keeps_higher_output ... ok
[INFO] [stdout] test analytics::tests::file_cost_single_returns_detail_with_branches_and_tickets ... ok
[INFO] [stdout] test analytics::tests::filter_options_are_normalized_and_match_dimension_filters ... ok
[INFO] [stdout] test analytics::tests::health_batch_matches_detail_thresholds ... ok
[INFO] [stdout] test analytics::tests::file_cost_groups_by_file ... ok
[INFO] [stdout] test analytics::tests::file_cost_includes_untagged_bucket ... ok
[INFO] [stdout] test analytics::tests::breakdown_tickets_reconcile_across_today_7d_and_30d ... ok
[INFO] [stdout] test analytics::tests::breakdown_reconciles_under_fractional_per_row_costs ... ok
[INFO] [stdout] test analytics::tests::health_auto_select_prefers_recent_assistant_activity_when_started_at_missing ... ok
[INFO] [stdout] test analytics::tests::health_all_na_is_insufficient_data ... ok
[INFO] [stdout] test analytics::tests::filter_options_limit_is_optional_and_respected_when_set ... ok
[INFO] [stdout] test analytics::tests::health_batch_returns_all_sessions ... ok
[INFO] [stdout] test analytics::tests::health_cache_efficiency_red ... ok
[INFO] [stdout] test analytics::tests::health_context_drag_resets_after_compact ... ok
[INFO] [stdout] test analytics::tests::health_cache_efficiency_yellow ... ok
[INFO] [stdout] test analytics::tests::health_auto_selects_latest_session ... ok
[INFO] [stdout] test analytics::tests::health_context_drag_yellow ... ok
[INFO] [stdout] test analytics::tests::health_cache_uses_recent_model_run ... ok
[INFO] [stdout] test analytics::tests::health_cost_acceleration_red ... ok
[INFO] [stdout] test analytics::tests::health_green_partial_two_na ... ok
[INFO] [stdout] test analytics::tests::health_context_drag_red ... ok
[INFO] [stdout] test analytics::tests::health_claude_code_context_drag_mentions_compact ... ok
[INFO] [stdout] test analytics::tests::health_green_stable_session ... ok
[INFO] [stdout] test analytics::tests::health_cost_acceleration_reply_fallback ... ok
[INFO] [stdout] test analytics::tests::health_cursor_tips_use_plain_actions ... ok
[INFO] [stdout] test analytics::tests::health_cost_acceleration_suppressed_for_short_turn_sessions ... ok
[INFO] [stdout] test analytics::tests::health_does_not_alias_prefixed_session_id ... ok
[INFO] [stdout] test analytics::tests::health_cost_acceleration_yellow_tip_uses_metric_label ... ok
[INFO] [stdout] test analytics::tests::health_cursor_context_drag_no_compact ... ok
[INFO] [stdout] test analytics::tests::health_cursor_multi_reply_session_not_false_red ... ok
[INFO] [stdout] test analytics::tests::health_cache_efficiency_red_cursor_vs_claude ... ok
[INFO] [stdout] test analytics::tests::health_cost_acceleration_yellow ... ok
[INFO] [stdout] test analytics::tests::health_no_sessions_returns_green ... ok
[INFO] [stdout] test analytics::tests::health_insufficient_data_tip_for_empty_session ... ok
[INFO] [stdout] test analytics::tests::health_insufficient_data_when_all_vitals_unscored ... ok
[INFO] [stdout] test analytics::tests::health_green_stays_plain_with_single_na ... ok
[INFO] [stdout] test analytics::tests::health_thrashing_detects_retry_loop ... ok
[INFO] [stdout] test analytics::tests::health_user_prompt_count_copilot_chat_user_rows_take_precedence ... ok
[INFO] [stdout] test analytics::tests::health_user_prompt_count_single_turn ... ok
[INFO] [stdout] test analytics::tests::health_user_prompt_count_subagent_fanout_stays_one ... ok
[INFO] [stdout] test analytics::tests::health_three_na_stays_insufficient_even_with_one_green_vital ... ok
[INFO] [stdout] test analytics::tests::health_user_prompt_count_empty_user_returns_zero_for_priced_provider ... ok
[INFO] [stdout] test analytics::tests::health_red_with_many_na_stays_red ... ok
[INFO] [stdout] test analytics::tests::health_unknown_provider_gets_neutral_tips ... ok
[INFO] [stdout] test analytics::tests::health_thrashing_yellow ... ok
[INFO] [stdout] test analytics::tests::ingest_and_query ... ok
[INFO] [stdout] test analytics::tests::health_thrashing_ignores_busy_successful_turn ... ok
[INFO] [stdout] test analytics::tests::ingest_heals_stranded_session_when_new_message_arrives ... ok
[INFO] [stdout] test analytics::tests::ingest_populates_session_timestamps_for_claude_code ... ok
[INFO] [stdout] test analytics::tests::health_user_prompt_count_copilot_chat_fallback_uses_priced_distinct_requests ... ok
[INFO] [stdout] test analytics::tests::ingest_with_tail_file_writes_offset_atomically_for_empty_message_batch ... ok
[INFO] [stdout] test analytics::tests::jetbrains_surface_blends_copilot_chat_and_ai_assistant_rows ... ok
[INFO] [stdout] test analytics::tests::health_user_prompt_count_zero_cost_assistant_does_not_inflate_denominator ... ok
[INFO] [stdout] test analytics::tests::normalize_surfaces_lowercases_trims_dedupes ... ok
[INFO] [stdout] test analytics::tests::message_list_singular_provider_filter_partitions_rows ... ok
[INFO] [stdout] test analytics::tests::ingest_with_tail_file_upserts_offset_in_same_transaction ... ok
[INFO] [stdout] test analytics::tests::message_list_unknown_provider_returns_empty ... ok
[INFO] [stdout] test analytics::tests::message_list_multi_provider_filter_unions_rows ... ok
[INFO] [stdout] test analytics::tests::jsonl_dedup_preserves_message_when_otel_candidates_are_ambiguous ... ok
[INFO] [stdout] test analytics::tests::last_seen_derived_from_messages ... ok
[INFO] [stdout] test analytics::tests::jsonl_dedup_matches_otel_by_fingerprint_within_window ... ok
[INFO] [stdout] test analytics::tests::message_list_returns_messages ... ok
[INFO] [stdout] test analytics::tests::ingest_without_tail_file_leaves_tail_offsets_untouched ... ok
[INFO] [stdout] test analytics::tests::migration_backfills_session_timestamps_from_messages ... ok
[INFO] [stdout] test analytics::tests::model_usage_groups_by_model ... ok
[INFO] [stdout] test analytics::tests::health_list_detail_parity_across_fixture_shapes ... ok
[INFO] [stdout] test analytics::tests::multi_provider_ingest_and_query ... ok
[INFO] [stdout] test analytics::tests::no_request_id_no_dedup ... ok
[INFO] [stdout] test analytics::tests::paginate_breakdown_no_truncation_when_rows_fit ... ok
[INFO] [stdout] test analytics::tests::newest_ingested_data_uses_assistant_rows ... ok
[INFO] [stdout] test analytics::tests::repo_usage_groups_by_repo_id ... ok
[INFO] [stdout] test analytics::tests::repo_usage_multi_repo_single_session_is_message_attributed ... ok
[INFO] [stdout] test analytics::tests::resolve_session_id_covers_full_prefix_empty_and_ambiguous ... ok
[INFO] [stdout] test analytics::tests::provider_filtered_summary_count_is_at_most_unfiltered_count ... ok
[INFO] [stdout] test analytics::tests::repo_usage_with_dimension_filters ... ok
[INFO] [stdout] test analytics::tests::provider_filtered_cost_partitions_by_provider_to_the_cent ... ok
[INFO] [stdout] test analytics::tests::provider_filtered_summary_partitions_by_provider_to_the_message ... ok
[INFO] [stdout] test analytics::tests::schema_creates_tables ... ok
[INFO] [stdout] test analytics::tests::rollups_track_message_updates_and_deletes ... ok
[INFO] [stdout] test analytics::tests::session_detail_uses_session_title_when_available ... ok
[INFO] [stdout] test analytics::tests::rollups_are_used_only_for_hour_aligned_ranges ... ok
[INFO] [stdout] test analytics::tests::session_detail_returns_row_for_message_only_session ... ok
[INFO] [stdout] test analytics::tests::session_cost_curve_buckets ... ok
[INFO] [stdout] test analytics::tests::session_list_returns_sessions ... ok
[INFO] [stdout] test analytics::tests::session_detail_tracks_multi_repo_and_branch ... ok
[INFO] [stdout] test analytics::tests::session_list_returns_session_for_today_window_with_local_midnight_utc_since ... ok
[INFO] [stdout] test analytics::tests::session_list_ignores_empty_string_session_id ... ok
[INFO] [stdout] test analytics::tests::session_list_uses_structured_models_array ... ok
[INFO] [stdout] test analytics::tests::session_message_list_keeps_canonical_assistant_sequence_across_sorts ... ok
[INFO] [stdout] test analytics::tests::session_list_filters_by_activity ... ok
[INFO] [stdout] test analytics::tests::session_list_filters_by_ticket ... ok
[INFO] [stdout] test analytics::tests::session_messages_does_not_alias_prefixed_session_id ... ok
[INFO] [stdout] test analytics::tests::session_messages_returns_assistant_only ... ok
[INFO] [stdout] test analytics::tests::session_message_list_paginates_and_includes_message_context ... ok
[INFO] [stdout] test analytics::tests::session_prompt_category_tracks_latest_value ... ok
[INFO] [stdout] test analytics::tests::session_message_curve_uses_full_session_canonical_order ... ok
[INFO] [stdout] test analytics::tests::statusline_provider_filter_parses_comma_list_forms ... ok
[INFO] [stdout] test analytics::tests::session_messages_roles_all_returns_user_and_assistant_with_tools ... ok
[INFO] [stdout] test analytics::tests::session_tags_filter_internal_linkage_and_redundant_keys ... ok
[INFO] [stdout] test analytics::tests::session_list_with_dimension_filters ... ok
[INFO] [stdout] test analytics::tests::session_tags_do_not_derive_repo_and_branch_from_message_columns ... ok
[INFO] [stdout] test analytics::tests::session_list_window_compares_correctly_across_provider_timestamp_formats ... ok
[INFO] [stdout] test analytics::tests::session_tags_include_explicit_identity_keys ... ok
[INFO] [stdout] test analytics::tests::session_tags_filter_legacy_auto_keys ... ok
[INFO] [stdout] test analytics::tests::session_tags_does_not_alias_prefixed_session_id ... ok
[INFO] [stdout] test analytics::tests::session_visibility_reports_windows_and_flags_hidden_rows ... ok
[INFO] [stdout] test analytics::tests::session_tags_empty_for_unknown_session ... ok
[INFO] [stdout] test analytics::tests::status_snapshot_empty_window ... ok
[INFO] [stdout] test analytics::tests::statusline_stats_with_branch_filter ... ok
[INFO] [stdout] test analytics::tests::session_tags_returns_distinct_tags ... ok
[INFO] [stdout] test analytics::tests::statusline_stats_with_data ... ok
[INFO] [stdout] test analytics::tests::statusline_stats_with_provider_filter_scopes_all_numeric_fields ... ok
[INFO] [stdout] test analytics::tests::statusline_stats_empty_db ... ok
[INFO] [stdout] test analytics::tests::statusline_stats_branch_cost_scopes_to_repo_id ... ok
[INFO] [stdout] test analytics::tests::status_snapshot_returns_consistent_data ... ok
[INFO] [stdout] test analytics::tests::statusline_stats_aggregates_across_multiple_providers ... ok
[INFO] [stdout] test analytics::tests::session_visibility_flags_mismatch_when_all_rows_missing_session_id ... ok
[INFO] [stdout] test analytics::tests::subagent_cost_stats_splits_correctly ... ok
[INFO] [stdout] test analytics::tests::statusline_stats_with_session_filter ... ok
[INFO] [stdout] test analytics::tests::surface_filter_csv_combines_listed_surfaces ... ok
[INFO] [stdout] test analytics::tests::surface_stats_returns_one_row_per_surface ... ok
[INFO] [stdout] test analytics::tests::surface_filter_partitions_summary_to_the_message ... ok
[INFO] [stdout] test analytics::tests::sync_offset_round_trip ... ok
[INFO] [stdout] test analytics::tests::tag_stats_branch_uses_message_columns_not_tag_fanout ... ok
[INFO] [stdout] test analytics::tests::tag_stats_even_split_across_values ... ok
[INFO] [stdout] test analytics::tests::tag_stats_groups_by_tag ... ok
[INFO] [stdout] test analytics::tests::sync_completion_marker_round_trip ... ok
[INFO] [stdout] test analytics::tests::tag_stats_tool_splits_cost_for_multi_tool_message ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_defaults_legacy_source_to_branch ... ok
[INFO] [stdout] test autostart::tests::service_mechanism_returns_known_value ... ok
[INFO] [stdout] test autostart::tests::service_status_display ... ok
[INFO] [stdout] test autostart::tests::systemd_unit_contains_expected_fields ... ok
[INFO] [stdout] test autostart::tests::systemd_unit_path_under_config_dir ... ok
[INFO] [stdout] test cloud_sync::tests::backoff_delay_escalation ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_single_legacy_source_defaults_to_branch ... ok
[INFO] [stdout] test cloud_sync::tests::chunk_payload_below_threshold_returns_single_chunk ... ok
[INFO] [stdout] test cloud_sync::tests::chunk_payload_chunks_sessions_separately_from_rollups ... ok
[INFO] [stdout] test analytics::tests::tag_stats_repo_uses_message_columns_not_tag_fanout ... ok
[INFO] [stdout] test cloud_sync::tests::chunk_payload_keeps_oversized_single_day_intact ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_groups_by_ticket ... ok
[INFO] [stdout] test cloud_sync::tests::chunk_payload_empty_returns_one_empty_chunk ... ok
[INFO] [stdout] test cloud_sync::tests::chunk_payload_splits_large_rollup_set_at_day_boundaries ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_single_returns_detail_with_branches ... ok
[INFO] [stdout] test cloud_sync::tests::chunk_payload_simulates_dogfood_db_shape ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_single_surfaces_source ... ok
[INFO] [stdout] test cloud_sync::tests::effective_label_defaults_to_hostname_when_unset ... ok
[INFO] [stdout] test cloud_sync::tests::effective_label_sends_explicit_value_verbatim ... ok
[INFO] [stdout] test cloud_sync::tests::empty_payload_detected ... ok
[INFO] [stdout] test cloud_sync::tests::envelope_serializes_to_expected_shape ... ok
[INFO] [stdout] test cloud_sync::tests::extract_ticket_basic ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_single_can_filter_by_repo ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_surfaces_source_per_ticket ... ok
[INFO] [stdout] test analytics::tests::unknown_provider_filter_yields_zero_messages_and_zero_cost ... ok
[INFO] [stdout] test cloud_sync::tests::https_enforcement ... ok
[INFO] [stdout] test cloud_sync::tests::fetch_rollups_empty_db ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_includes_untagged_bucket ... ok
[INFO] [stdout] test cloud_sync::tests::build_envelope_populates_label_from_config ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_splits_cost_for_multi_ticket_message ... ok
[INFO] [stdout] test cloud_sync::tests::count_pending_matches_envelope ... ok
[INFO] [stdout] test analytics::tests::ticket_cost_untagged_row_has_empty_source ... ok
[INFO] [stdout] test cloud_sync::tests::rollup_extraction_matches_pipeline_extractor ... ok
[INFO] [stdout] test analytics::tests::unknown_surface_filter_yields_empty_result ... ok
[INFO] [stdout] test cloud_sync::tests::current_cloud_status_reports_api_key_stub_when_placeholder ... ok
[INFO] [stdout] test cloud_sync::tests::rollup_wire_snapshot_with_surface ... ok
[INFO] [stdout] test cloud_sync::tests::fetch_session_summaries_empty_db ... ok
[INFO] [stdout] test cloud_sync::tests::current_cloud_status_reports_disabled_when_config_default ... ok
[INFO] [stdout] test config::tests::agents_config_all_enabled ... ok
[INFO] [stdout] test cloud_sync::tests::fetch_rollups_with_data ... ok
[INFO] [stdout] test config::tests::agents_config_default_disables_all ... ok
[INFO] [stdout] test config::tests::agents_config_round_trips_toml ... ok
[INFO] [stdout] test config::tests::agents_config_unknown_provider_disabled ... ok
[INFO] [stdout] test config::tests::cloud_config_defaults ... ok
[INFO] [stdout] test config::tests::cloud_config_disabled_reason_walks_precedence ... ok
[INFO] [stdout] test config::tests::cloud_config_is_api_key_stub_only_for_placeholder ... ok
[INFO] [stdout] test config::tests::cloud_config_is_ready_requires_all_fields ... ok
[INFO] [stdout] test config::tests::agents_config_parses_partial_toml ... ok
[INFO] [stdout] test config::tests::cloud_config_partial_toml_uses_defaults ... ok
[INFO] [stdout] test config::tests::find_insertion_line_for_device_id_anchors_after_api_key ... ok
[INFO] [stdout] test config::tests::cloud_config_parses_full_toml ... ok
[INFO] [stdout] test config::tests::find_insertion_line_for_device_id_returns_none_without_cloud_section ... ok
[INFO] [stdout] test config::tests::find_insertion_line_for_device_id_skips_cloud_sync_section ... ok
[INFO] [stdout] test config::tests::parse_env_path_rejects_blank_values ... ok
[INFO] [stdout] test config::tests::repo_root_marker_round_trip ... ok
[INFO] [stdout] test config::tests::repo_storage_id_uses_slug_plus_short_hash ... ok
[INFO] [stdout] test config::tests::parse_env_path_trims_whitespace ... ok
[INFO] [stdout] test config::tests::resolve_storage_root_returns_self_for_normal_repo ... ok
[INFO] [stdout] test config::tests::statusline_config_default_slots ... ok
[INFO] [stdout] test config::tests::resolve_worktree_main_root_parses_gitdir ... ok
[INFO] [stdout] test config::tests::statusline_config_empty_toml_uses_defaults ... ok
[INFO] [stdout] test config::tests::statusline_config_parse_minimal_toml ... ok
[INFO] [stdout] test config::tests::statusline_config_parse_toml ... ok
[INFO] [stdout] test config::tests::statusline_config_required_slots_from_format ... ok
[INFO] [stdout] test config::tests::statusline_config_required_slots_from_slots ... ok
[INFO] [stdout] test config::tests::statusline_config_required_slots_ignores_unknown ... ok
[INFO] [stdout] test config::tests::statusline_format_overrides_legacy_preset ... ok
[INFO] [stdout] test config::tests::statusline_legacy_preset_coach_migrates_to_slots ... ok
[INFO] [stdout] test config::tests::statusline_legacy_preset_cost_migrates_to_rolling_windows ... ok
[INFO] [stdout] test config::tests::statusline_legacy_preset_full_migrates_to_slots ... ok
[INFO] [stdout] test cloud_sync::tests::current_cloud_status_reports_pending_counts_when_ready ... ok
[INFO] [stdout] test cloud_sync::tests::build_envelope_success ... ok
[INFO] [stdout] test config::tests::statusline_config_legacy_slot_aliases_normalize ... ok
[INFO] [stdout] test cloud_sync::tests::build_envelope_requires_config ... ok
[INFO] [stdout] test cloud_sync::tests::reset_cloud_watermarks_leaves_unrelated_rows_alone ... ok
[INFO] [stdout] test cloud_sync::tests::reset_cloud_watermarks_drops_sentinel_rows ... ok
[INFO] [stdout] test cloud_sync::tests::rollup_numeric_branch_preserves_source_marker ... ok
[INFO] [stdout] test cloud_sync::tests::session_round_trips_surface_for_every_canonical_value ... ok
[INFO] [stdout] test cloud_sync::tests::primary_model_picks_argmax_by_tokens ... ok
[INFO] [stdout] test cloud_sync::tests::rollup_round_trips_surface_for_every_canonical_value ... ok
[INFO] [stdout] test cloud_sync::tests::primary_model_tie_broken_by_latest_used ... ok
[INFO] [stdout] test cost::tests::cost_aggregate_matches_per_message_sum ... ok
[INFO] [stdout] test cloud_sync::tests::primary_model_omitted_for_session_without_scored_messages ... ok
[INFO] [stdout] test file_attribution::tests::absolute_path_normalized_against_cwd_is_medium_confidence_unix ... ok
[INFO] [stdout] test file_attribution::tests::absolute_path_outside_repo_is_dropped ... ok
[INFO] [stdout] test file_attribution::tests::absolute_path_without_repo_root_is_dropped ... ok
[INFO] [stdout] test cloud_sync::tests::rollup_integration_branches_do_not_emit_ticket ... ok
[INFO] [stdout] test file_attribution::tests::accepts_file_url_scheme ... ok
[INFO] [stdout] test file_attribution::tests::caps_at_max_files_per_message ... ok
[INFO] [stdout] test file_attribution::tests::collect_claude_ignores_unknown_tool ... ok
[INFO] [stdout] test cost::tests::cost_cents_stored_as_f64_not_integer ... ok
[INFO] [stdout] test file_attribution::tests::collect_cursor_unknown_tool_is_lenient_for_file_path ... ok
[INFO] [stdout] test file_attribution::tests::deduplicates_paths ... ok
[INFO] [stdout] test file_attribution::tests::normalizes_windows_separators ... ok
[INFO] [stdout] test file_attribution::tests::parent_escape_is_dropped ... ok
[INFO] [stdout] test file_attribution::tests::rejects_non_file_schemes ... ok
[INFO] [stdout] test file_attribution::tests::relative_path_without_cwd_is_accepted_as_high_confidence ... ok
[INFO] [stdout] test fs_util::tests::read_capped_handles_exactly_at_cap ... ok
[INFO] [stdout] test fs_util::tests::read_capped_returns_content_under_cap ... ok
[INFO] [stdout] test fs_util::tests::read_capped_returns_none_for_invalid_utf8 ... ok
[INFO] [stdout] test fs_util::tests::read_capped_returns_none_for_missing_file ... ok
[INFO] [stdout] test file_attribution::tests::collect_claude_read_write_edit_extracts_file_path ... ok
[INFO] [stdout] test file_attribution::tests::collect_cursor_extracts_target_file_and_path ... ok
[INFO] [stdout] test hooks::tests::bugfix_keeps_precedence_when_action_verb_leads ... ok
[INFO] [stdout] test hooks::tests::classify_prompt_bugfix ... ok
[INFO] [stdout] test hooks::tests::classify_prompt_feature ... ok
[INFO] [stdout] test fs_util::tests::read_capped_returns_none_over_cap ... ok
[INFO] [stdout] test hooks::tests::classify_prompt_question ... ok
[INFO] [stdout] test hooks::tests::classify_prompt_skips_commands ... ok
[INFO] [stdout] test hooks::tests::classify_prompt_skips_short ... ok
[INFO] [stdout] test hooks::tests::detailed_returns_source_and_confidence ... ok
[INFO] [stdout] test hooks::tests::docs_split_from_writing ... ok
[INFO] [stdout] test hooks::tests::high_confidence_multi_signal ... ok
[INFO] [stdout] test hooks::tests::question_beats_bugfix_when_leading_with_explain ... ok
[INFO] [stdout] test identity::tests::does_not_strip_non_uuid_suffix ... ok
[INFO] [stdout] test identity::tests::keeps_plain_uuid ... ok
[INFO] [stdout] test hooks::tests::low_confidence_single_weak_keyword ... ok
[INFO] [stdout] test identity::tests::strips_known_provider_prefix_for_uuid ... ok
[INFO] [stdout] test identity::tests::optional_normalization_drops_empty ... ok
[INFO] [stdout] test installer_residue::tests::apply_cleanup_is_noop_when_file_unchanged ... ok
[INFO] [stdout] test installer_residue::tests::looks_like_path_modification_variants ... ok
[INFO] [stdout] test installer_residue::tests::apply_cleanup_roundtrip_preserves_bytes_when_block_absent ... ok
[INFO] [stdout] test hooks::tests::source_is_always_rule_for_primary_path ... ok
[INFO] [stdout] test installer_residue::tests::shell_profile_candidates_empty_on_windows ... ok
[INFO] [stdout] test installer_residue::tests::shell_profile_candidates_respects_shell_hint_but_includes_fallbacks ... ok
[INFO] [stdout] test installer_residue::tests::scan_detects_multiple_blocks_from_repeated_installs ... ok
[INFO] [stdout] test installer_residue::tests::scan_finds_and_apply_removes_installer_block ... ok
[INFO] [stdout] test installer_residue::tests::strip_handles_fish_add_path ... ok
[INFO] [stdout] test installer_residue::tests::strip_handles_file_without_trailing_newline ... ok
[INFO] [stdout] test installer_residue::tests::strip_leaves_unrelated_path_edits_alone ... ok
[INFO] [stdout] test installer_residue::tests::strip_removes_marker_plus_path_line_plus_leading_blank ... ok
[INFO] [stdout] test installer_residue::tests::strip_requires_path_modification_on_next_line ... ok
[INFO] [stdout] test integrations::tests::check_otel_config_loose_accepts_localhost ... ok
[INFO] [stdout] test installer_residue::tests::strip_preserves_crlf_line_endings ... ok
[INFO] [stdout] test integrations::tests::check_otel_config_rejects_wrong_port ... ok
[INFO] [stdout] test integrations::tests::check_otel_config_validates_all_vars ... ok
[INFO] [stdout] test integrations::tests::is_budi_cc_hook_entry_detects_nested_format ... ok
[INFO] [stdout] test integrations::tests::is_budi_cursor_hook_entry_detects_flat_format ... ok
[INFO] [stdout] test integrations::tests::is_budi_hook_cmd_matches_variants ... ok
[INFO] [stdout] test integrations::tests::validate_cc_hooks_handles_no_hooks_key ... ok
[INFO] [stdout] test integrations::tests::validate_cc_hooks_passes_when_all_events_present ... ok
[INFO] [stdout] test integrations::tests::validate_cc_hooks_reports_missing_events ... ok
[INFO] [stdout] test integrations::tests::validate_cursor_hooks_handles_no_hooks_key ... ok
[INFO] [stdout] test integrations::tests::check_otel_config_rejects_missing_env ... ok
[INFO] [stdout] test integrations::tests::check_otel_config_loose_rejects_remote_endpoint ... ok
[INFO] [stdout] test integrations::tests::validate_cursor_hooks_passes_when_all_events_present ... ok
[INFO] [stdout] test jsonl::tests::classify_error_flag_wins_when_no_denial ... ok
[INFO] [stdout] test jsonl::tests::classify_plain_success ... ok
[INFO] [stdout] test integrations::tests::validate_cursor_hooks_reports_missing_events ... ok
[INFO] [stdout] test jsonl::tests::assistant_without_usage_gets_zero_tokens ... ok
[INFO] [stdout] test jsonl::tests::classify_user_denial_sentinels ... ok
[INFO] [stdout] test jsonl::tests::extract_user_tool_outcomes_parses_blocks ... ok
[INFO] [stdout] test jsonl::tests::dedup_multi_content_block_entries ... ok
[INFO] [stdout] test jsonl::tests::extract_user_tool_outcomes_skips_missing_id ... ok
[INFO] [stdout] test jsonl::tests::parse_assistant_with_extended_usage_fields ... ok
[INFO] [stdout] test jsonl::tests::no_dedup_across_request_ids ... ok
[INFO] [stdout] test jsonl::tests::parse_subagent_assistant_flat_format ... ok
[INFO] [stdout] test jsonl::tests::parse_assistant_with_usage ... ok
[INFO] [stdout] test jsonl::tests::parse_subagent_skips_synthetic_model ... ok
[INFO] [stdout] test jsonl::tests::parse_subagent_skips_unknown_role ... ok
[INFO] [stdout] test jsonl::tests::parse_subagent_without_timestamp_uses_epoch ... ok
[INFO] [stdout] test jsonl::tests::parse_transcript_incremental ... ok
[INFO] [stdout] test jsonl::tests::parse_subagent_user_flat_format ... ok
[INFO] [stdout] test jsonl::tests::parse_transcript_mixed_main_and_subagent ... ok
[INFO] [stdout] test jsonl::tests::parse_user_message_populates_tool_outcomes ... ok
[INFO] [stdout] test jsonl::tests::parse_user_message ... ok
[INFO] [stdout] test jsonl::tests::skip_empty_lines ... ok
[INFO] [stdout] test jsonl::tests::parse_user_text_message_has_no_tool_outcomes ... ok
[INFO] [stdout] test jsonl::tests::skip_non_message_types ... ok
[INFO] [stdout] test jsonl::tests::subagent_dedup_by_request_id_with_main ... ok
[INFO] [stdout] test jsonl::tests::user_messages_have_zero_tokens ... ok
[INFO] [stdout] test jsonl::tests::tool_result_text_truncates_at_utf8_boundary_without_panicking ... ok
[INFO] [stdout] test legacy_proxy::tests::codex_config_candidates_include_codex_home_override ... ok
[INFO] [stdout] test legacy_proxy::tests::scan_cursor_settings_findings_only_flags_localhost_values ... ok
[INFO] [stdout] test jsonl::tests::user_messages_not_deduped ... ok
[INFO] [stdout] test legacy_proxy::tests::cursor_settings_candidates_cover_windows_and_fallbacks ... ok
[INFO] [stdout] test legacy_proxy::tests::strip_managed_blocks_marks_unterminated_block_as_corrupted ... ok
[INFO] [stdout] test legacy_proxy::tests::scan_shell_env_findings_ignores_commented_lines ... ok
[INFO] [stdout] test legacy_proxy::tests::strip_managed_blocks_removes_complete_block ... ok
[INFO] [stdout] test legacy_proxy::tests::upgrade_notice_outcome_only_logs_once_when_managed_block_exists ... ok
[INFO] [stdout] test legacy_proxy::tests::shell_profile_candidates_cover_mac_and_linux_shapes ... ok
[INFO] [stdout] test cloud_sync::tests::watermark_round_trip ... ok
[INFO] [stdout] test migration::tests::check_reports_migration_needed_for_v0_db ... ok
[INFO] [stdout] test cost::tests::anthropic_token_semantics_no_overlap ... ok
[INFO] [stdout] test cost::tests::cost_single_opus_message ... ok
[INFO] [stdout] test cost::tests::cost_empty_db ... ok
[INFO] [stdout] test cost::tests::cost_mixed_models ... ok
[INFO] [stdout] test cost::tests::cost_other_component_captures_residual_above_base_tokens ... ok
[INFO] [stdout] test cost::tests::cost_other_component_clamps_negative_residual_to_zero ... ok
[INFO] [stdout] test cost::tests::cost_token_fields_no_double_counting ... ok
[INFO] [stdout] test cost::tests::cost_with_cache_savings ... ok
[INFO] [stdout] test cost::tests::cost_with_date_filter ... ok
[INFO] [stdout] test pipeline::emit::tests::activity_emits_full_triplet ... ok
[INFO] [stdout] test pipeline::emit::tests::file_paths_emits_paths_then_siblings ... ok
[INFO] [stdout] test pipeline::emit::tests::ticket_emits_triplet_for_alphanumeric ... ok
[INFO] [stdout] test pipeline::emit::tests::ticket_skips_prefix_for_numeric_only ... ok
[INFO] [stdout] test pipeline::emit::tests::tool_outcomes_emits_each_outcome_then_siblings ... ok
[INFO] [stdout] test migration::tests::check_on_clean_db_reports_no_drift ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_1h_cache_tier ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_assistant_with_tokens_keeps_manifest_provenance ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_calculates_cost ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_fast_mode_6x ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_fast_with_web_search ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_large_message_precision ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_mixed_cache_tiers ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_preserves_sub_cent_precision ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_skips_user_messages ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_standard_speed_no_multiplier ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_tags_user_messages_as_unpriced_no_tokens ... ok
[INFO] [stdout] test pipeline::enrichers::tests::cost_enricher_web_search ... ok
[INFO] [stdout] test pipeline::enrichers::tests::file_enricher_drops_absolute_path_without_repo_root ... ok
[INFO] [stdout] test pipeline::enrichers::tests::file_enricher_emits_repo_relative_file_tags_without_cwd ... ok
[INFO] [stdout] test pipeline::enrichers::tests::file_enricher_ignores_user_messages ... ok
[INFO] [stdout] test pipeline::enrichers::tests::file_enricher_skips_when_no_tool_files ... ok
[INFO] [stdout] test cost::tests::cost_other_component_is_zero_when_no_residual ... ok
[INFO] [stdout] test pipeline::enrichers::tests::git_enricher_extracts_numeric_only_ticket ... ok
[INFO] [stdout] test pipeline::enrichers::tests::git_enricher_extracts_ticket ... ok
[INFO] [stdout] test pipeline::enrichers::tests::git_enricher_skips_integration_branches ... ok
[INFO] [stdout] test pipeline::enrichers::tests::identity_enricher_emits_explicit_platform_machine_and_git_user ... ok
[INFO] [stdout] test pipeline::enrichers::tests::tag_enricher_applies_rules ... ok
[INFO] [stdout] test pipeline::enrichers::tests::tag_enricher_no_match ... ok
[INFO] [stdout] test pipeline::tests::activity_tag_tracks_latest_prompt_category ... ok
[INFO] [stdout] test pipeline::tests::backfill_remove_denylisted_ticket_tags_is_idempotent ... ok
[INFO] [stdout] test pipeline::enrichers::tests::identity_enricher_produces_tags ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_at_end ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_basic ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_from_branch_alpha_wins_over_numeric ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_from_branch_falls_back_to_numeric ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_from_branch_integration_branches_are_none ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_from_branch_no_ticket_yields_none ... ok
[INFO] [stdout] test pipeline::tests::context_tags_on_every_assistant_message ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_from_branch_prefers_alpha_pattern ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_graphite_lowercase ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_multiple ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_skips_date_prefix ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_skips_denylisted_but_accepts_later_real_ticket ... ok
[INFO] [stdout] test pipeline::tests::extract_ticket_skips_denylisted_prefixes ... ok
[INFO] [stdout] test pipeline::tests::glob_combined ... ok
[INFO] [stdout] test pipeline::tests::glob_question_mark ... ok
[INFO] [stdout] test pipeline::tests::glob_exact_match ... ok
[INFO] [stdout] test pipeline::tests::glob_star ... ok
[INFO] [stdout] test pipeline::tests::tool_outcome_absent_when_no_tool_use ... ok
[INFO] [stdout] test pipeline::tests::tool_outcome_denied_passes_through ... ok
[INFO] [stdout] test pipeline::tests::tool_outcome_retry_heuristic_promotes_second_call ... ok
[INFO] [stdout] test pipeline::tests::no_tags_on_user_messages ... ok
[INFO] [stdout] test pipeline::emit::tests::file_paths_rejects_empty_input_in_debug - should panic ... ok
[INFO] [stdout] test pipeline::emit::tests::tool_outcomes_rejects_empty_input_in_debug - should panic ... ok
[INFO] [stdout] test pricing::display::tests::combined_label_joins_effort_with_middot ... ok
[INFO] [stdout] test pricing::display::tests::known_aliases_every_entry_roundtrips_through_resolve ... ok
[INFO] [stdout] test pipeline::tests::tool_outcome_success_tag_on_assistant ... ok
[INFO] [stdout] test pricing::display::tests::resolve_cursor_auto_placeholder ... ok
[INFO] [stdout] test pricing::display::tests::resolve_cursor_new_style_anthropic ... ok
[INFO] [stdout] test pricing::display::tests::resolve_cursor_old_style_anthropic_transposes_effort ... ok
[INFO] [stdout] test pricing::display::tests::resolve_gpt_codex_family ... ok
[INFO] [stdout] test pricing::display::tests::resolve_untagged_placeholder ... ok
[INFO] [stdout] test pricing::display::tests::resolve_unknown_family_falls_through_to_raw ... ok
[INFO] [stdout] test pricing::display::tests::resolve_canonical_anthropic_names ... ok
[INFO] [stdout] test pricing::display::tests::utf8_safety_on_non_ascii_raw ... ok
[INFO] [stdout] test migration::tests::check_detects_missing_dual_cost_columns ... ok
[INFO] [stdout] test migration::tests::check_detects_drift_without_modifying_db ... ok
[INFO] [stdout] test migration::tests::fresh_install_creates_correct_schema ... ok
[INFO] [stdout] test pipeline::tests::tool_tags_emit_all_tools_per_message ... ok
[INFO] [stdout] test cost::tests::cost_sub_cent_messages_not_lost ... ok
[INFO] [stdout] test pricing::pricing_tests::alias_overlay_does_not_affect_direct_hits ... ok
[INFO] [stdout] test migration::tests::reconcile_adds_tail_offsets_to_existing_v1_db ... ok
[INFO] [stdout] test migration::tests::reconcile_drops_legacy_proxy_events_table_from_existing_v1_db ... ok
[INFO] [stdout] test migration::tests::reconcile_adds_surface_and_backfills_existing_v1_db ... ok
[INFO] [stdout] test pricing::pricing_tests::gate_5_retention_floor_rejects_wiped_payload ... ok
[INFO] [stdout] test pricing::pricing_tests::gate_6_sanity_ceiling_rejects_row_keeps_rest ... ok
[INFO] [stdout] test pricing::pricing_tests::embedded_aliases_all_resolve_against_embedded_baseline ... ok
[INFO] [stdout] test pricing::pricing_tests::alias_overlay_falls_through_to_unknown_when_no_match ... ok
[INFO] [stdout] test pricing::pricing_tests::pricing_source_column_value_round_trip ... ok
[INFO] [stdout] test pricing::pricing_tests::pricing_source_column_value_round_trip_includes_alias_variant ... ok
[INFO] [stdout] test migration::tests::reconcile_adds_dual_cost_columns_on_existing_v1_db ... ok
[INFO] [stdout] test pricing::pricing_tests::row_level_rejection_still_triggers_retention_floor ... ok
[INFO] [stdout] test pricing::pricing_tests::alias_resolves_cursor_transposed_form ... ok
[INFO] [stdout] test migration::tests::reconcile_scrubs_bare_folder_repo_ids_to_null ... ok
[INFO] [stdout] test pricing::team::tests::cache_roundtrip ... ok
[INFO] [stdout] test pricing::team::tests::compute_cost_falls_back_when_a_token_type_is_unpriced ... ok
[INFO] [stdout] test pricing::team::tests::compute_cost_in_cents_matches_dollars_x_100 ... ok
[INFO] [stdout] test pricing::team::tests::install_and_snapshot_roundtrip ... ok
[INFO] [stdout] test migration::tests::repair_is_idempotent ... ok
[INFO] [stdout] test pricing::pricing_tests::alias_resolves_dotted_to_dashed_with_alias_tagged_source ... ok
[INFO] [stdout] test pricing::team::tests::resolve_matches_glob_pattern_and_returns_rates ... ok
[INFO] [stdout] test pricing::team::tests::resolve_misses_unrelated_model ... ok
[INFO] [stdout] test pricing::pricing_tests::gate_8_pricing_migration_is_idempotent ... ok
[INFO] [stdout] test privacy::tests::minimize_sensitive_field_hashes_or_omits ... ok
[INFO] [stdout] test privacy::tests::sanitize_hook_raw_json_hashes_sensitive_keys ... ok
[INFO] [stdout] test privacy::tests::sanitize_hook_raw_json_omit_drops_payload ... ok
[INFO] [stdout] test provider::tests::default_watch_roots_dedups_parent_dirs ... ok
[INFO] [stdout] test provider::tests::default_watch_roots_empty_when_no_files ... ok
[INFO] [stdout] test providers::claude_code::tests::watch_roots_empty_when_projects_dir_absent ... ok
[INFO] [stdout] test providers::claude_code::tests::watch_roots_returns_projects_dir_when_present ... ok
[INFO] [stdout] test providers::codex::tests::deterministic_uuid_is_stable ... ok
[INFO] [stdout] test providers::codex::tests::parse_session_meta_extracts_fields ... ok
[INFO] [stdout] test providers::codex::tests::parse_token_count_skips_null_info ... ok
[INFO] [stdout] test providers::codex::tests::parse_token_count_skips_zero_tokens ... ok
[INFO] [stdout] test providers::codex::tests::parse_token_count_with_last_usage ... ok
[INFO] [stdout] test providers::codex::tests::parse_transcript_full_session ... ok
[INFO] [stdout] test providers::codex::tests::parse_transcript_incremental ... ok
[INFO] [stdout] test providers::codex::tests::watch_roots_empty_when_codex_home_absent ... ok
[INFO] [stdout] test providers::codex::tests::watch_roots_returns_both_session_dirs_when_present ... ok
[INFO] [stdout] test providers::codex::tests::watch_roots_skips_missing_archived_dir ... ok
[INFO] [stdout] test providers::copilot::tests::deterministic_uuid_is_stable ... ok
[INFO] [stdout] test providers::copilot::tests::parse_transcript_full_session ... ok
[INFO] [stdout] test providers::copilot::tests::parse_transcript_incremental ... ok
[INFO] [stdout] test providers::copilot::tests::parse_transcript_model_from_usage_event ... ok
[INFO] [stdout] test providers::copilot::tests::parse_usage_event_extracts_tokens ... ok
[INFO] [stdout] test providers::copilot::tests::parse_usage_event_nested_usage_field ... ok
[INFO] [stdout] test providers::copilot::tests::parse_usage_event_skips_zero_tokens ... ok
[INFO] [stdout] test providers::copilot::tests::parse_workspace_yaml_extracts_fields ... ok
[INFO] [stdout] test providers::copilot::tests::parse_workspace_yaml_quoted_values ... ok
[INFO] [stdout] test providers::copilot::tests::watch_roots_empty_when_session_state_absent ... ok
[INFO] [stdout] test providers::copilot::tests::watch_roots_returns_session_state_when_present ... ok
[INFO] [stdout] test pricing::team::tests::recompute_with_active_pricing_rewrites_effective ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::byte_contains_basic ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::deterministic_uuid_is_stable_and_namespaced ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::discover_session_dirs_finds_all_session_types_and_slugs ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::discover_session_dirs_handles_missing_root ... ok
[INFO] [stdout] test pricing::pricing_tests::current_state_skips_model_aliases_when_empty ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::empty_session_fixture_parses_to_zero_messages ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::missing_xd_file_yields_zero_rows ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::populated_session_marker_yields_one_row ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::watch_roots_includes_session_type_dirs ... ok
[INFO] [stdout] test providers::copilot_chat::tests::append_at_path_appends_to_named_array ... ok
[INFO] [stdout] test pricing::team::tests::build_status_returns_inactive_when_no_list_installed ... ok
[INFO] [stdout] test providers::copilot_chat::tests::collect_session_files_finds_jsonl_under_chat_sessions ... ok
[INFO] [stdout] test providers::copilot_chat::tests::collect_session_files_recurses_into_global_publisher_dir ... ok
[INFO] [stdout] test providers::copilot_chat::tests::collect_session_files_accepts_chat_sessions_chat_sessions_and_sessions_subdirs ... ok
[INFO] [stdout] test providers::copilot_chat::tests::deterministic_uuid_is_stable ... ok
[INFO] [stdout] test providers::copilot_chat::tests::collect_session_files_skips_global_publisher_siblings_of_session_dir ... ok
[INFO] [stdout] test providers::copilot_chat::tests::editor_context_text_absent_returns_none ... ok
[INFO] [stdout] test providers::copilot_chat::tests::editor_context_text_extracts_parent_dir ... ok
[INFO] [stdout] test providers::copilot_chat::tests::editor_context_text_rejects_relative_path ... ok
[INFO] [stdout] test providers::copilot_chat::tests::editor_context_text_handles_spaces_and_dots ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_auto_resolves_under_metadata_shape ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_auto_resolves_via_agent_edits ... ok
[INFO] [stdout] test providers::copilot_chat::tests::empty_window_session_uses_editor_context_hint ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_auto_resolves_via_agent_workspace ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_auto_with_unknown_agent_falls_back_to_auto ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_auto_without_agent_preserves_auto ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_falls_back_to_metadata ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_passes_through_when_no_prefix ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_concrete_models_bypass_auto_resolver ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_strips_copilot_prefix ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_completion_only_shape ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_completion_only_zero_skips ... ok
[INFO] [stdout] test providers::copilot_chat::jetbrains::tests::agent_session_marker_titled_agent ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_feb_2026_shape ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_full_pair_outranks_completion_only_fallback ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_legacy_usage_shape ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_unknown_shape_returns_none ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_vscode_delta_shape ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_vscode_delta_with_cache ... ok
[INFO] [stdout] test pricing::team::tests::build_status_surfaces_active_list_and_latest_audit_row ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_zero_pair_skips_shape_and_falls_through ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tokens_copilot_cli_shape ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_empty_when_metadata_missing ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_empty_when_no_rounds ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_apply_patch_falls_back_to_top_level_filepath ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_flattens_across_rounds_and_preserves_duplicates ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_missing_tool_calls_array_skips_round ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_multi_replace_and_create_and_read ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_replace_string_in_file ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_skips_speak_only_rounds ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_skips_blank_name_and_blank_id ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_strips_file_uri_scheme ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_strips_vscode_vfs_scheme ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_unknown_tool_yields_no_file_but_name_and_id_emit ... ok
[INFO] [stdout] test providers::copilot_chat::tests::is_available_robust_when_dirs_absent ... ok
[INFO] [stdout] test providers::copilot_chat::tests::is_available_true_when_chat_sessions_present ... ok
[INFO] [stdout] test providers::copilot_chat::tests::is_available_true_when_global_storage_publisher_dir_present ... ok
[INFO] [stdout] test providers::copilot_chat::tests::is_clean_model_shape_filters ... ok
[INFO] [stdout] test providers::copilot_chat::tests::jetbrains_empty_session_fixture_layout_is_intact ... ok
[INFO] [stdout] test providers::copilot_chat::tests::jetbrains_empty_session_parses_to_no_messages ... ok
[INFO] [stdout] test providers::copilot_chat::tests::is_available_when_workspace_storage_lacks_copilot_subdirs ... ok
[INFO] [stdout] test providers::copilot_chat::tests::jetbrains_empty_session_xd_lck_header_is_redacted ... ok
[INFO] [stdout] test providers::copilot_chat::tests::json_document_emits_user_and_assistant_rows ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_json_document_extracts_messages ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_json_document_unknown_shape_skipped ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_json_document_real_requests_envelope ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_jsonl_file_extracts_messages ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_jsonl_real_kind_v_envelope ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_jsonl_kind1_array_silently_yields_no_messages ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_jsonl_resumes_from_offset ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_jsonl_truncates_partial_final_line ... ok
[INFO] [stdout] test privacy::tests::enforce_retention_scrubs_old_raw_payloads_and_metadata ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_tool_data_apply_patch_walks_patches_array ... ok
[INFO] [stdout] test migration::tests::drop_and_recreate_for_non_matching_version ... ok
[INFO] [stdout] test providers::copilot_chat::tests::extract_model_id_prefers_resolved_when_manifest_known ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_jsonl_real_v3_completion_only_turns ... ok
[INFO] [stdout] test providers::copilot_chat::tests::empty_window_session_without_editor_context_leaves_cwd_none ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_deterministic_uuid_stable_across_reparse ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_emit_keyed_by_request_id_no_double_emit ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_kind0_snapshot_with_inline_tokens_emits ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_kind1_patches_auto_create_intermediate_objects ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_emits_user_and_assistant_for_message_text ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_multiple_requests_emit_in_completion_order ... ok
[INFO] [stdout] test pricing::pricing_tests::current_state_surfaces_model_aliases_when_populated ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_real_vscode_0_47_0_fixture_streaming_truncation ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_no_user_row_when_message_missing_or_empty ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_kind1_completion_tokens_patch_emits_row ... ok
[INFO] [stdout] test providers::copilot_chat::tests::resolve_auto_model_id_known_table ... ok
[INFO] [stdout] test providers::copilot_chat::tests::reducer_user_row_concatenates_message_parts ... ok
[INFO] [stdout] test providers::copilot_chat::tests::set_at_path_grows_arrays_and_creates_objects ... ok
[INFO] [stdout] test providers::copilot_chat::tests::surface_jetbrains_path_classifier_returns_jetbrains_placeholder ... ok
[INFO] [stdout] test providers::copilot_chat::tests::surface_is_cursor_when_path_under_cursor_user_root ... ok
[INFO] [stdout] test providers::copilot_chat::tests::surface_is_vscode_when_path_under_vscode_server_root ... ok
[INFO] [stdout] test providers::copilot_chat::tests::watch_roots_skips_absent_subdirs ... ok
[INFO] [stdout] test providers::copilot_chat::tests::user_row_uuid_stable_across_reparse ... ok
[INFO] [stdout] test providers::copilot_chat::tests::workspace_json_percent_decodes_folder_uri ... ok
[INFO] [stdout] test providers::copilot_chat::tests::workspace_json_malformed_falls_back_to_none ... ok
[INFO] [stdout] test providers::copilot_chat::tests::surface_is_vscode_when_path_under_code_user_root ... ok
[INFO] [stdout] test providers::cursor::tests::cursor_auth_issue_reason_tags_are_stable ... ok
[INFO] [stdout] test providers::cursor::tests::cursor_user_state_roots_include_windows_variants_without_duplicates ... ok
[INFO] [stdout] test providers::copilot_chat::tests::workspace_anchored_session_does_not_apply_editor_context_hint ... ok
[INFO] [stdout] test providers::cursor::tests::bubbles_without_any_timestamp_are_dropped ... ok
[INFO] [stdout] test providers::cursor::tests::parse_cursor_line_normalizes_prefixed_session_uuid ... ok
[INFO] [stdout] test pricing::team::tests::recompute_with_no_pricing_resets_effective_to_ingested ... ok
[INFO] [stdout] test providers::cursor::tests::parse_real_cursor_assistant_message ... ok
[INFO] [stdout] test providers::cursor::tests::parse_real_cursor_transcript ... ok
[INFO] [stdout] test providers::cursor::tests::parse_real_cursor_user_message ... ok
[INFO] [stdout] test providers::cursor::tests::parse_usage_event_accepts_numeric_timestamp ... ok
[INFO] [stdout] test providers::cursor::tests::quick_sync_handles_numeric_timestamps ... ok
[INFO] [stdout] test providers::cursor::tests::parse_cursor_with_optional_fields ... ok
[INFO] [stdout] test providers::cursor::tests::quick_sync_without_watermark_stays_on_page_one ... ok
[INFO] [stdout] test providers::cursor::tests::quick_sync_paginates_until_existing_watermark ... ok
[INFO] [stdout] test providers::cursor::tests::resolve_git_branch_detached_head_returns_none ... ok
[INFO] [stdout] test providers::cursor::tests::malformed_bubble_keys_are_filtered_at_sql ... ok
[INFO] [stdout] test providers::cursor::tests::auto_mode_falls_back_to_claude_sonnet_4_5 ... ok
[INFO] [stdout] test providers::cursor::tests::bubbles_without_created_at_fall_back_to_composer_timestamp ... ok
[INFO] [stdout] test providers::cursor::tests::resolve_git_branch_missing_dir_returns_none ... ok
[INFO] [stdout] test providers::cursor::tests::session_id_from_path_flat ... ok
[INFO] [stdout] test providers::cursor::tests::session_id_from_path_uuid ... ok
[INFO] [stdout] test providers::cursor::tests::resolve_git_branch_reads_head_file ... ok
[INFO] [stdout] test providers::cursor::tests::skip_empty_and_whitespace ... ok
[INFO] [stdout] test providers::cursor::tests::usage_events_orphan_when_no_session_match ... ok
[INFO] [stdout] test providers::cursor::tests::skip_system_role ... ok
[INFO] [stdout] test providers::cursor::tests::usage_events_subscription_no_cost ... ok
[INFO] [stdout] test providers::cursor::tests::usage_events_deterministic_uuid ... ok
[INFO] [stdout] test providers::cursor::tests::usage_events_to_messages_basic ... ok
[INFO] [stdout] test providers::cursor::tests::watch_roots_empty_when_projects_dir_absent ... ok
[INFO] [stdout] test providers::cursor::tests::workspace_root_from_project_dir_reads_worker_log ... ok
[INFO] [stdout] test providers::cursor::tests::watch_roots_excludes_state_vscdb_and_usage_api ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::cost_confidence_is_estimated ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::discover_chat_dirs_returns_empty_when_root_missing ... ok
[INFO] [stdout] test providers::cursor::tests::watch_roots_returns_projects_dir_when_present ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::fallback_session_id_used_when_event_omits_it ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::ignores_malformed_lines ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::incremental_offset_advances_past_completed_lines_only ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::message_stop_inherits_model_from_running_message_start ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::parses_synthetic_fixture_emits_one_row_per_message_stop ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::skips_message_start_and_zero_token_rows ... ok
[INFO] [stdout] test repo_id::tests::cache_returns_consistent_results ... ok
[INFO] [stdout] test repo_id::tests::looks_like_repo_url_accepts_normalized_outputs ... ok
[INFO] [stdout] test repo_id::tests::looks_like_repo_url_rejects_bare_folder_names ... ok
[INFO] [stdout] test repo_id::tests::normalize_git_protocol ... ok
[INFO] [stdout] test repo_id::tests::normalize_https_no_suffix ... ok
[INFO] [stdout] test repo_id::tests::normalize_https_url ... ok
[INFO] [stdout] test repo_id::tests::normalize_ssh_protocol ... ok
[INFO] [stdout] test repo_id::tests::normalize_ssh_shorthand ... ok
[INFO] [stdout] test repo_id::tests::resolve_repo_id_returns_none_for_non_git_paths ... ok
[INFO] [stdout] test session_resolve::tests::encode_preserves_alphanumerics ... ok
[INFO] [stdout] test session_resolve::tests::encode_replaces_slash_dot_underscore_with_dash ... ok
[INFO] [stdout] test session_resolve::tests::find_current_uses_encoded_cwd_under_home ... ok
[INFO] [stdout] test session_resolve::tests::newest_jsonl_ignores_non_jsonl_files ... ok
[INFO] [stdout] test session_resolve::tests::newest_jsonl_picks_most_recent_mtime ... ok
[INFO] [stdout] test session_resolve::tests::newest_jsonl_returns_none_for_empty_dir ... ok
[INFO] [stdout] test session_resolve::tests::newest_jsonl_returns_none_for_missing_dir ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::deterministic_uuid_is_stable ... ok
[INFO] [stdout] test surface::tests::code_insiders_maps_to_vscode ... ok
[INFO] [stdout] test surface::tests::code_user_root_maps_to_vscode ... ok
[INFO] [stdout] test surface::tests::default_for_provider_maps_known_providers ... ok
[INFO] [stdout] test surface::tests::jetbrains_shape_maps_to_jetbrains_placeholder ... ok
[INFO] [stdout] test surface::tests::cursor_user_root_maps_to_cursor ... ok
[INFO] [stdout] test surface::tests::vscode_server_absolute_maps_to_vscode ... ok
[INFO] [stdout] test surface::tests::vscode_server_remote_maps_to_vscode ... ok
[INFO] [stdout] test surface::tests::unknown_path_maps_to_unknown ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_real_vscode_0_47_0_fixture ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_real_vscode_0_47_0_fixture_enriches_cwd ... ok
[INFO] [stdout] test providers::jetbrains_ai_assistant::tests::discovers_chat_dirs_under_each_jetbrains_product ... ok
[INFO] [stdout] test providers::copilot_chat::tests::parse_workspace_storage_session_enriches_cwd ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::parses_credits_alt_container_credits_used_array ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::parses_post_2026_06_01_credits_shape ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::parses_pre_2026_06_01_pru_shape ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::pru_response_skips_malformed_rows ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::pru_response_with_invalid_cycle_start_errors ... ok
[INFO] [stdout] test providers::cursor::tests::schema_missing_returns_empty_not_panic ... ok
[INFO] [stdout] test providers::cursor::tests::read_cursor_bubbles_returns_parsed_messages_from_fixture_db ... ok
[INFO] [stdout] test update::tests::normalize_release_tag_accepts_existing_v_prefix ... ok
[INFO] [stdout] test update::tests::normalize_release_tag_accepts_plain_semver ... ok
[INFO] [stdout] test update::tests::normalize_release_tag_rejects_unsafe_characters ... ok
[INFO] [stdout] test update::tests::parse_and_normalize_release_tag_reads_json ... ok
[INFO] [stdout] test update::tests::version_from_tag_strips_prefix ... ok
[INFO] [stdout] test work_outcome::tests::branch_merged_when_reachable_from_integration ... ok
[INFO] [stdout] test providers::cursor::tests::ingest_roundtrip_writes_embedded_or_manifest_source ... ok
[INFO] [stdout] test work_outcome::tests::is_integration_branch_is_shared_across_pipeline_and_work_outcome ... ok
[INFO] [stdout] test work_outcome::tests::labels_serialize_stable_values ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::bucket_with_zero_existing_sum_is_skipped ... ok
[INFO] [stdout] test work_outcome::tests::unknown_on_integration_branch ... ok
[INFO] [stdout] test work_outcome::tests::unknown_rationale_avoids_integration_branch_jargon ... ok
[INFO] [stdout] test work_outcome::tests::unknown_when_branch_empty ... ok
[INFO] [stdout] test work_outcome::tests::committed_when_feature_branch_has_commits ... ok
[INFO] [stdout] test work_outcome::tests::no_commit_when_branch_is_idle ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::empty_response_advances_org_managed_streak_and_warns_on_second ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::nonempty_bucket_scales_existing_rows_and_bumps_confidence ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::watermark_advances_to_billing_cycle_end ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::empty_pat_does_not_trigger_reconciliation ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::nonempty_response_clears_streak_counter ... ok
[INFO] [stdout] test pricing::pricing_tests::gate_1_manifest_rows_never_recomputed_on_refresh ... ok
[INFO] [stdout] test sync::copilot_chat_billing::tests::streak_resets_on_cycle_rollover ... ok
[INFO] [stdout] test pricing::pricing_tests::gate_3_unknown_rows_backfill_to_resolved_cost ... ok
[INFO] [stdout] test analytics::tests::rollup_summary_latency_smoke_on_large_dataset ... ok
[INFO] [stdout] test pricing::pricing_tests::gate_2_legacy_pre_manifest_rows_never_recomputed ... ok
[INFO] [stdout] test pricing::pricing_tests::gate_4_utf8_boundary_safe_lookup ... ok
[INFO] [stdout] test pricing::pricing_tests::gate_9_pricing_status_json_shape_is_stable ... ok
[INFO] [stdout] test pricing::pricing_tests::pricing_status_surfaces_rejected_rows_when_populated ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 682 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 23.86s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/budi_daemon-5320f72f6d32eae9)
[INFO] [stdout] 
[INFO] [stdout] running 66 tests
[INFO] [stdout] test routes::cloud::tests::not_ready_body_tags_result_and_endpoint ... ok
[INFO] [stdout] test routes::hooks::tests::collect_health_sources_grouped_omits_unknown_surfaces ... ok
[INFO] [stdout] test routes::hooks::tests::cursor_extension_manifest_detection_finds_identifier ... ok
[INFO] [stdout] test routes::hooks::tests::surface_for_path_classifies_copilot_chat_per_path ... ok
[INFO] [stdout] test routes::cloud::tests::report_to_json_success_reports_upsert_count ... ok
[INFO] [stdout] test routes::hooks::tests::collect_health_sources_filtered_returns_only_matching_surface ... ok
[INFO] [stdout] test routes::cloud::tests::report_to_json_empty_is_still_ok ... ok
[INFO] [stdout] test routes::hooks::tests::cursor_extension_cli_output_detection_handles_versioned_lines ... ok
[INFO] [stdout] test routes::cloud::tests::report_to_json_auth_failure_is_not_ok ... ok
[INFO] [stdout] test routes::cloud::tests::report_to_json_transient_after_partial_success_includes_progress ... ok
[INFO] [stdout] test routes::hooks::tests::collect_health_sources_blank_surface_is_treated_as_unfiltered ... ok
[INFO] [stdout] test routes::hooks::tests::surface_for_path_maps_single_host_providers_via_default ... ok
[INFO] [stdout] test tests::host_allowlist_includes_configured_override_host ... ok
[INFO] [stdout] test tests::host_allowlist_skips_wildcard_bind_sentinel ... ok
[INFO] [stdout] test tests::log_id_prefix_abbreviates_long_ids_and_preserves_short_ones ... ok
[INFO] [stdout] test tests::schema_status_for_returns_proceed_when_db_missing ... ok
[INFO] [stdout] test tests::protected_admin_route_requires_connect_info ... ok
[INFO] [stdout] test tests::host_allowlist_rejects_rebound_host_on_analytics_sessions ... ok
[INFO] [stdout] test tests::schema_unavailable_has_stable_body_shape ... ok
[INFO] [stdout] test workers::cloud_sync::tests::credentials_changed_detects_rotated_api_key ... ok
[INFO] [stdout] test tests::favicon_returns_ok ... ok
[INFO] [stdout] test tests::cloud_sync_route_blocks_non_loopback_client ... ok
[INFO] [stdout] test tests::host_allowlist_rejects_rebound_host_on_health ... ok
[INFO] [stdout] test tests::protected_admin_route_blocks_non_loopback_client ... ok
[INFO] [stdout] test workers::cloud_sync::tests::credentials_changed_returns_false_when_fresh_key_missing ... ok
[INFO] [stdout] test workers::cloud_sync::tests::credentials_changed_detects_swapped_endpoint ... ok
[INFO] [stdout] test workers::cloud_sync::tests::credentials_changed_returns_false_when_no_previous_key ... ok
[INFO] [stdout] test workers::cloud_sync::tests::credentials_changed_returns_false_when_unchanged ... ok
[INFO] [stdout] test tests::health_returns_ok ... ok
[INFO] [stdout] test tests::host_allowlist_rejects_missing_host_header ... ok
[INFO] [stdout] test tests::host_allowlist_rejects_rebound_host_on_admin_install_even_with_loopback_peer ... ok
[INFO] [stdout] test tests::host_allowlist_accepts_loopback_host_on_health ... ok
[INFO] [stdout] test tests::protected_admin_route_allows_loopback_client ... ok
[INFO] [stdout] test workers::cloud_sync::tests::guard_clears_flag_on_normal_drop ... ok
[INFO] [stdout] test workers::pricing_refresh::tests::refresh_disabled_by_env_false ... ok
[INFO] [stdout] test workers::tailer::tests::build_routes_picks_up_new_roots_after_materialization ... ok
[INFO] [stdout] test workers::pricing_refresh::tests::refresh_enabled_when_env_empty_or_other ... ok
[INFO] [stdout] test workers::tailer::tests::is_jsonl_recognizes_extension ... ok
[INFO] [stdout] test workers::pricing_refresh::tests::refresh_enabled_when_env_unset ... ok
[INFO] [stdout] test workers::tailer::tests::provider_for_path_picks_longest_prefix ... ok
[INFO] [stdout] test workers::tailer::tests::read_tail_buffer_bounded_by_cap ... ok
[INFO] [stdout] test workers::tailer::tests::read_tail_caps_per_tick_and_resumes ... ok
[INFO] [stdout] test workers::pricing_refresh::tests::refresh_disabled_by_env_zero ... ok
[INFO] [stdout] test workers::tailer::tests::attach_new_watchers_is_idempotent_across_reconcile_ticks ... ok
[INFO] [stdout] test workers::pricing_refresh::tests::gate_7_disabled_env_suppresses_network_and_exits ... ok
[INFO] [stdout] test workers::team_pricing::tests::disabled_env_false_short_circuits_poll ... ok
[INFO] [stdout] test workers::team_pricing::tests::disabled_env_zero_short_circuits_poll ... ok
[INFO] [stdout] test workers::team_pricing::tests::refresh_interval_defaults_to_one_hour ... ok
[INFO] [stdout] test workers::team_pricing::tests::refresh_interval_honours_env_override ... ok
[INFO] [stdout] test workers::team_pricing::tests::refresh_interval_ignores_zero_override ... ok
[INFO] [stdout] test tests::host_allowlist_accepts_localhost_with_port ... ok
[INFO] [stdout] test tests::sync_mutation_route_blocks_non_loopback_client ... ok
[INFO] [stdout] test workers::team_pricing::tests::run_exits_when_disabled ... ok
[INFO] [stdout] test tests::schema_status_for_returns_stale_for_pre_migration_db ... ok
[INFO] [stdout] test tests::schema_status_for_returns_ahead_when_db_is_future_version ... ok
[INFO] [stdout] test workers::cloud_sync::tests::guard_clears_flag_on_panic_unwind ... ok
[INFO] [stdout] test tests::cloud_status_route_public_and_reports_shape ... ok
[INFO] [stdout] test workers::pricing_refresh::tests::refresh_skips_invalid_row_keeps_rest_when_majority_valid ... ok
[INFO] [stdout] test workers::tailer::tests::process_path_recovers_from_truncation ... ok
[INFO] [stdout] test tests::schema_status_for_returns_proceed_at_current_version ... ok
[INFO] [stdout] test workers::tailer::tests::seed_offsets_marks_existing_files_at_eof ... ok
[INFO] [stdout] test workers::tailer::tests::process_path_advances_offset_and_is_idempotent ... ok
[INFO] [stdout] test workers::tailer::tests::process_path_tolerates_partial_utf8_at_boundary ... ok
[INFO] [stdout] test workers::tailer::tests::offsets_survive_simulated_daemon_restart ... ok
[INFO] [stdout] test workers::tailer::tests::run_blocking_exits_when_shutdown_flag_is_set ... ok
[INFO] [stdout] test workers::tailer::tests::run_blocking_recovers_when_watch_root_materializes_post_boot ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 66 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.03s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests budi_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] running `Command { std: "docker" "inspect" "724a042cc116f0766abe5ec1c86e98505a4efd112409d972b8966c21136a05dd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "724a042cc116f0766abe5ec1c86e98505a4efd112409d972b8966c21136a05dd", kill_on_drop: false }`
[INFO] [stdout] 724a042cc116f0766abe5ec1c86e98505a4efd112409d972b8966c21136a05dd
