[INFO] fetching crate suivi 0.3.0...
[INFO] testing suivi-0.3.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate suivi 0.3.0 into /workspace/builds/worker-2-tc1/source
[INFO] started tweaking crates.io crate suivi 0.3.0
[INFO] finished tweaking crates.io crate suivi 0.3.0
[INFO] tweaked toml for crates.io crate suivi 0.3.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate suivi 0.3.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate suivi 0.3.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rusqlite v0.35.0
[INFO] [stderr]   Downloaded zmij v1.0.22
[INFO] [stderr]   Downloaded libsqlite3-sys v0.33.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718
[INFO] running `Command { std: "docker" "start" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling zmij v1.0.22
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling regex-automata v0.4.15
[INFO] [stderr]    Compiling libsqlite3-sys v0.33.0
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling time v0.3.53
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling symlink v0.1.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling crossbeam-channel v0.5.16
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling tracing-appender v0.2.5
[INFO] [stderr]    Compiling rusqlite v0.35.0
[INFO] [stderr]    Compiling suivi v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.57s
[INFO] running `Command { std: "docker" "inspect" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling rusqlite v0.35.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling suivi v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 8.63s
[INFO] running `Command { std: "docker" "inspect" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/suivi-cbb68dd7f2d58358)
[INFO] [stdout] 
[INFO] [stdout] running 195 tests
[INFO] [stdout] test agents::claude_code::tests::test_detect_by_parent_process ... ok
[INFO] [stdout] test agents::claude_code::tests::test_hook_templates_not_empty ... ok
[INFO] [stdout] test agents::claude_code::tests::test_detect_by_env_var ... ok
[INFO] [stdout] test agents::claude_code::tests::test_parse_payload_no_model ... ok
[INFO] [stdout] test agents::claude_code::tests::test_parse_payload_malformed ... ok
[INFO] [stdout] test agents::claude_code::tests::test_parse_payload_stop_event ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::empty_transcript_returns_started_at ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::locate_transcript_in_returns_none_when_missing ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::locate_transcript_in_primary_hit ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::events_out_of_order_still_walked_in_time_order ... ok
[INFO] [stdout] test agents::claude_code::tests::test_id_and_display_name ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::gap_exactly_at_threshold_does_not_split ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::locate_transcript_in_glob_fallback ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::malformed_json_lines_skipped ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::all_events_before_started_at_returns_started_at ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::next_turn_bound_excludes_events_past_it ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::non_activity_types_ignored ... ok
[INFO] [stdout] test agents::codex::tests::test_parse_payload_malformed ... ok
[INFO] [stdout] test agents::codex::tests::test_detect_by_env_var ... ok
[INFO] [stdout] test agents::codex::tests::test_parse_payload_no_model ... ok
[INFO] [stdout] test agents::codex::tests::test_parse_payload_valid ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::gap_just_over_threshold_splits ... ok
[INFO] [stdout] test agents::claude_code::tests::test_parse_payload_valid ... ok
[INFO] [stdout] test agents::codex::tests::test_hook_templates_not_empty ... ok
[INFO] [stdout] test agents::pi::tests::test_detect_by_env_var ... ok
[INFO] [stdout] test agents::codex::tests::test_detect_by_parent_process ... ok
[INFO] [stdout] test agents::codex::tests::test_id_and_display_name ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::missing_file_returns_none ... ok
[INFO] [stdout] test agents::codex::tests::test_hook_templates_have_nested_claude_code_shape ... ok
[INFO] [stdout] test agents::opencode::tests::test_parse_payload_no_model ... ok
[INFO] [stdout] test agents::opencode::tests::test_detect_by_env_var ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::single_cluster_returns_last_event ... ok
[INFO] [stdout] test agents::opencode::tests::test_id_and_display_name ... ok
[INFO] [stdout] test agents::opencode::tests::test_parse_payload_malformed ... ok
[INFO] [stdout] test agents::opencode::tests::test_parse_payload_valid ... ok
[INFO] [stdout] test agents::pi::tests::test_detect_by_parent_process ... ok
[INFO] [stdout] test agents::pi::tests::test_hook_templates_not_empty ... ok
[INFO] [stdout] test agents::opencode::tests::test_detect_by_parent_process ... ok
[INFO] [stdout] test agents::pi::tests::test_id_and_display_name ... ok
[INFO] [stdout] test agents::opencode::tests::test_hook_templates_not_empty ... ok
[INFO] [stdout] test agents::pi::tests::test_parse_payload_malformed ... ok
[INFO] [stdout] test agents::pi::tests::test_parse_payload_valid ... ok
[INFO] [stdout] test agents::pi::tests::test_parse_payload_no_model ... ok
[INFO] [stdout] test agents::tests::test_binary_in_path_var ... ok
[INFO] [stdout] test agents::claude_code::transcript::tests::two_clusters_split_by_gap_returns_end_of_first ... ok
[INFO] [stdout] test agents::tests::test_find_by_id ... ok
[INFO] [stdout] test analytics::graph::tests::test_render_empty ... ok
[INFO] [stdout] test analytics::graph::tests::test_render_two_days_two_lines_each ... ok
[INFO] [stdout] test analytics::history::tests::test_turns_to_json_snapshot ... ok
[INFO] [stdout] test analytics::stats::tests::test_summary_to_json_snapshot ... ok
[INFO] [stdout] test analytics::tests::test_compute_daily_contributions_two_turns_same_day ... ok
[INFO] [stdout] test analytics::tests::test_day_key_in_shifts_across_midnight ... ok
[INFO] [stdout] test analytics::tests::test_day_key_in_invalid_timestamp ... ok
[INFO] [stdout] test analytics::stats::tests::test_turns_to_json_full_snapshot ... ok
[INFO] [stdout] test analytics::tests::test_format_duration_hours ... ok
[INFO] [stdout] test analytics::tests::test_day_start_in_converts_to_utc ... ok
[INFO] [stdout] test analytics::history::tests::test_turns_to_csv_snapshot ... ok
[INFO] [stdout] test analytics::tests::test_graph_label_for_unparseable_input ... ok
[INFO] [stdout] test analytics::tests::test_agent_secs_sums_all_sessions ... ok
[INFO] [stdout] test analytics::tests::test_local_helpers_no_panic ... ok
[INFO] [stdout] test analytics::tests::test_merge_intervals_single ... ok
[INFO] [stdout] test analytics::graph::tests::test_render_shared_scale_max_bar_full_width ... ok
[INFO] [stdout] test analytics::history::tests::test_turns_to_csv_empty ... ok
[INFO] [stdout] test analytics::stats::tests::test_summary_to_csv_snapshot ... ok
[INFO] [stdout] test analytics::tests::test_compute_daily_contributions_splits_multi_day_turn ... ok
[INFO] [stdout] test analytics::tests::test_range_label_for_renders_both_dates ... ok
[INFO] [stdout] test analytics::tests::test_graph_label_for_recognizes_week_and_month ... ok
[INFO] [stdout] test analytics::tests::test_merge_intervals_adjacent ... ok
[INFO] [stdout] test analytics::tests::test_merge_intervals_empty ... ok
[INFO] [stdout] test analytics::tests::test_merge_intervals_non_overlapping ... ok
[INFO] [stdout] test agents::tests::test_is_installed_no_panic ... ok
[INFO] [stdout] test analytics::tests::test_merge_intervals_overlapping ... ok
[INFO] [stdout] test analytics::tests::test_format_duration_minutes ... ok
[INFO] [stdout] test analytics::tests::test_graph_label_for_falls_back_to_custom_range ... ok
[INFO] [stdout] test analytics::tests::test_format_duration_under_1m ... ok
[INFO] [stdout] test analytics::tests::test_turn_day_contribution_fully_within_day_utc ... ok
[INFO] [stdout] test analytics::tests::test_turn_day_contribution_no_overlap ... ok
[INFO] [stdout] test analytics::tests::test_range_label_for_delegates_when_until_is_none ... ok
[INFO] [stdout] test analytics::tests::test_turn_day_contribution_unended_returns_none ... ok
[INFO] [stdout] test commands::init::tests::test_split_paths_comma_separated ... ok
[INFO] [stdout] test commands::init::tests::test_split_paths_empty ... ok
[INFO] [stdout] test commands::init::tests::test_split_paths_single ... ok
[INFO] [stdout] test commands::status::tests::test_json_hook_health_missing ... ok
[INFO] [stdout] test commands::init::tests::test_merge_json_hook_no_duplicate ... ok
[INFO] [stdout] test commands::status::tests::test_template_commands_extracts_nested ... ok
[INFO] [stdout] test analytics::tests::test_wall_clock_parallel_sessions ... ok
[INFO] [stdout] test commands::init::tests::test_merge_json_hook_upgrades_outdated_command ... ok
[INFO] [stdout] test commands::init::tests::test_write_atomic ... ok
[INFO] [stdout] test commands::status::tests::test_json_hook_health_ok ... ok
[INFO] [stdout] test commands::status::tests::test_json_hook_health_outdated_old_command ... ok
[INFO] [stdout] test commands::uninstall::tests::test_remove_json_hooks_missing_file ... ok
[INFO] [stdout] test commands::init::tests::test_init_skips_when_config_exists ... ok
[INFO] [stdout] test commands::init::tests::test_merge_json_hook_creates_new_file ... ok
[INFO] [stdout] test agents::tests::test_env_capture ... ok
[INFO] [stdout] test commands::uninstall::tests::test_remove_json_hooks_untouched_without_suivi_entries ... ok
[INFO] [stdout] test commands::uninstall::tests::test_remove_plugin_file_deletes_suivi_plugin ... ok
[INFO] [stdout] test commands::uninstall::tests::test_remove_json_hooks_writes_back_without_suivi ... ok
[INFO] [stdout] test commands::uninstall::tests::test_strip_suivi_hooks_no_hooks_key ... ok
[INFO] [stdout] test commands::uninstall::tests::test_strip_suivi_hooks_nested_and_flat ... ok
[INFO] [stdout] test analytics::tests::test_turn_day_contribution_spans_midnight_utc ... ok
[INFO] [stdout] test commands::uninstall::tests::test_strip_suivi_hooks_idempotent ... ok
[INFO] [stdout] test commands::uninstall::tests::test_remove_plugin_file_skips_foreign_file ... ok
[INFO] [stdout] test agents::tests::test_detect_parent_no_panic ... ok
[INFO] [stdout] test commands::init::tests::test_merge_json_hook_merges_into_existing ... ok
[INFO] [stdout] test commands::track::tests::test_track_rejects_duplicate ... ok
[INFO] [stdout] test commands::track::tests::test_track_falls_back_to_dir_basename ... ok
[INFO] [stdout] test commands::track::tests::test_track_rejects_missing_directory ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test config::tests::test_expand_globs_tilde ... ok
[INFO] [stdout] test commands::untrack::tests::test_untrack_aborted_when_confirm_says_no ... ok
[INFO] [stdout] test commands::untrack::tests::test_untrack_errors_on_ambiguous_name ... ok
[INFO] [stdout] test config::tests::test_find_project_exact_match ... ok
[INFO] [stdout] test config::tests::test_find_project_ancestor ... ok
[INFO] [stdout] test commands::track::tests::test_track_rejects_globs ... ok
[INFO] [stdout] test config::tests::test_find_project_name_optional ... ok
[INFO] [stdout] test config::tests::test_find_project_most_specific ... ok
[INFO] [stdout] test commands::doctor::tests::test_doctor_prune_sql ... ok
[INFO] [stdout] test config::tests::test_expand_globs_skips_files ... ok
[INFO] [stdout] test commands::track::tests::test_track_adds_entry_with_explicit_name ... ok
[INFO] [stdout] test commands::untrack::tests::test_untrack_errors_on_unknown_target ... ok
[INFO] [stdout] test commands::track::tests::test_track_no_backfill_leaves_db_untouched ... ok
[INFO] [stdout] test commands::untrack::tests::test_untrack_removes_by_name ... ok
[INFO] [stdout] test config::tests::test_find_project_no_match ... ok
[INFO] [stdout] test config::tests::test_is_excluded_honors_user_entries ... ok
[INFO] [stdout] test config::tests::test_is_excluded_default_tmp ... ok
[INFO] [stdout] test config::tests::test_load_missing_file ... ok
[INFO] [stdout] test config::tests::test_find_project_overlapping_siblings_no_double_match ... ok
[INFO] [stdout] test config::tests::test_is_excluded_default_macos_temp ... ok
[INFO] [stdout] test config::tests::test_is_excluded_non_match ... ok
[INFO] [stdout] test config::tests::test_is_excluded_does_not_match_prefix_collision ... ok
[INFO] [stdout] test config::tests::test_is_excluded_expands_tilde_in_entry ... ok
[INFO] [stdout] test config::tests::test_legacy_migration_multi_paths ... ok
[INFO] [stdout] test commands::untrack::tests::test_untrack_yes_skips_prompt ... ok
[INFO] [stdout] test config::tests::test_legacy_migration ... ok
[INFO] [stdout] test commands::untrack::tests::test_untrack_removes_by_literal_path ... ok
[INFO] [stdout] test config::tests::test_load_and_save_roundtrip ... ok
[INFO] [stdout] test commands::track::tests::test_track_respects_longest_match_for_nested_existing_project ... ok
[INFO] [stdout] test commands::untrack::tests::test_untrack_preserves_db_rows ... ok
[INFO] [stdout] test commands::track::tests::test_track_backfills_unattributed_turns_under_path ... ok
[INFO] [stdout] test db::tests::test_init_schema ... ok
[INFO] [stdout] test db::tests::test_count_stale ... ok
[INFO] [stdout] test db::tests::test_delete_stale ... ok
[INFO] [stdout] test db::tests::test_open_configures_concurrency ... ok
[INFO] [stdout] test db::tests::test_find_transcript_fix_candidates_matches_by_wall_window ... ok
[INFO] [stdout] test db::tests::test_correct_effective_duration ... ok
[INFO] [stdout] test db::tests::test_count_beyond_retention ... ok
[INFO] [stdout] test db::tests::test_insert_and_query_turn ... ok
[INFO] [stdout] test db::tests::test_concurrent_connections_can_both_write ... ok
[INFO] [stdout] test db::tests::test_find_transcript_fix_candidates_scopes_to_claude_code ... ok
[INFO] [stdout] test db::tests::test_clamp_outliers_updates_columns_and_ended_at ... ok
[INFO] [stdout] test db::tests::test_find_transcript_fix_candidates_populates_next_start ... ok
[INFO] [stdout] test db::tests::test_last_open_turn ... ok
[INFO] [stdout] test db::tests::test_find_outlier_turns_only_returns_above_cap ... ok
[INFO] [stdout] test db::tests::test_last_ended_turn ... ok
[INFO] [stdout] test db::tests::test_query_turns_with_filter ... ok
[INFO] [stdout] test hooks::pre::tests::test_resolve_agent_flag_wins ... ok
[INFO] [stdout] test hooks::pre::tests::test_resolve_agent_payload_field_beats_env ... ok
[INFO] [stdout] test db::tests::test_stop_turn_double_fire_guard ... ok
[INFO] [stdout] test hooks::pre::tests::test_resolve_agent_unknown_flag_falls_back_to_payload ... ok
[INFO] [stdout] test hooks::stop::tests::test_agent_duration_clock_skew_clamped_to_zero ... ok
[INFO] [stdout] test hooks::stop::tests::test_agent_duration_falls_back_to_timestamps ... ok
[INFO] [stdout] test db::tests::test_query_turns_until_excludes_after ... ok
[INFO] [stdout] test db::tests::test_set_ended_at_and_duration_recomputes_effective ... ok
[INFO] [stdout] test hooks::stop::tests::test_agent_duration_unparseable_started_at ... ok
[INFO] [stdout] test hooks::stop::tests::test_agent_duration_prefers_payload_field ... ok
[INFO] [stdout] test hooks::stop::tests::test_fallback_ended_at_over_cap_clamps_both_duration_and_end ... ok
[INFO] [stdout] test hooks::stop::tests::test_fallback_ended_at_under_cap_uses_now ... ok
[INFO] [stdout] test hooks::stop::tests::test_fallback_ended_at_no_duration_ms_falls_back_to_wall ... ok
[INFO] [stdout] test hooks::stop::tests::test_read_last_assistant_model_bad_lines_skipped ... ok
[INFO] [stdout] test db::tests::test_set_ended_at_and_duration_zero_skips_buffer ... ok
[INFO] [stdout] test hooks::stop::tests::test_read_last_assistant_model_missing_returns_none ... ok
[INFO] [stdout] test hooks::stop::tests::test_read_last_assistant_model_basic ... ok
[INFO] [stdout] test db::tests::test_set_project_attribution_updates_both_columns ... ok
[INFO] [stdout] test hooks::stop::tests::test_read_last_assistant_model_nonexistent_file ... ok
[INFO] [stdout] test hooks::pre::tests::test_resolve_agent_unknown_everywhere_uses_env_detection ... ok
[INFO] [stdout] test hooks::stop::tests::test_read_last_assistant_model_picks_latest ... ok
[INFO] [stdout] test time_range::tests::test_all_returns_none_none ... ok
[INFO] [stdout] test db::tests::test_stop_turn ... ok
[INFO] [stdout] test time_range::tests::test_default_returns_none_none ... ok
[INFO] [stdout] test time_range::tests::test_invalid_since_errors ... ok
[INFO] [stdout] test time_range::tests::test_until_before_since_errors ... ok
[INFO] [stdout] test time_range::tests::test_invalid_until_errors ... ok
[INFO] [stdout] test time_range::tests::test_since_without_until ... ok
[INFO] [stdout] test time_range::tests::test_week_and_month_set_since_only ... ok
[INFO] [stdout] test time_range::tests::test_since_with_until_returns_both ... ok
[INFO] [stdout] test time_range::tests::test_today_sets_since_only ... ok
[INFO] [stdout] test hooks::pre::tests::test_close_orphaned_turn_ignores_other_sessions ... ok
[INFO] [stdout] test db::tests::test_query_turns_multi_filter_positional_binding ... ok
[INFO] [stdout] test hooks::pre::tests::test_close_orphaned_turn_charges_elapsed_time ... ok
[INFO] [stdout] test hooks::pre::tests::test_buffer_correction_long_gap_untouched ... ok
[INFO] [stdout] test hooks::pre::tests::test_buffer_correction_short_gap_uses_real_gap ... ok
[INFO] [stdout] test hooks::pre::tests::test_close_orphaned_turn_noop_without_open_turn ... ok
[INFO] [stdout] test db::tests::test_unattributed_turns_under_escapes_like_metachars ... ok
[INFO] [stdout] test db::tests::test_unattributed_turns_under_excludes_attributed ... ok
[INFO] [stdout] test db::tests::test_unattributed_turns_under_finds_by_prefix ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 195 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.44s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718", kill_on_drop: false }`
[INFO] [stdout] c41648b2e382fd907f5b56663da56d47ab7129de85229d597b49c9aa6878e718
