[INFO] fetching crate suvadu 0.3.2...
[INFO] testing suvadu-0.3.2 against 1.95.0 for beta-1.96-2
[INFO] extracting crate suvadu 0.3.2 into /workspace/builds/worker-0-tc1/source
[INFO] started tweaking crates.io crate suvadu 0.3.2
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate suvadu 0.3.2
[INFO] tweaked toml for crates.io crate suvadu 0.3.2 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate suvadu 0.3.2 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate suvadu 0.3.2 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded clap_mangen v0.2.31
[INFO] [stderr]   Downloaded nucleo-matcher v0.3.1
[INFO] [stderr]   Downloaded roff v0.2.2
[INFO] [stderr]   Downloaded minisign-verify v0.2.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2f867ce6fc70682bd49f1d65c10671acb313a83c82a069f2752e599298764363
[INFO] running `Command { std: "docker" "start" "-a" "2f867ce6fc70682bd49f1d65c10671acb313a83c82a069f2752e599298764363", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2f867ce6fc70682bd49f1d65c10671acb313a83c82a069f2752e599298764363", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2f867ce6fc70682bd49f1d65c10671acb313a83c82a069f2752e599298764363", kill_on_drop: false }`
[INFO] [stdout] 2f867ce6fc70682bd49f1d65c10671acb313a83c82a069f2752e599298764363
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 69029871378b166b9f6ee0cb206e6512ae121591ae9c82b1019ba0d112e1bd1b
[INFO] running `Command { std: "docker" "start" "-a" "69029871378b166b9f6ee0cb206e6512ae121591ae9c82b1019ba0d112e1bd1b", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling pxfm v0.1.28
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling toml_datetime v1.0.0+spec-1.1.0
[INFO] [stderr]    Compiling hashlink v0.11.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling roff v0.2.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling directories v6.0.0
[INFO] [stderr]    Compiling uuid v1.22.0
[INFO] [stderr]    Compiling nucleo-matcher v0.3.1
[INFO] [stderr]    Compiling hostname v0.4.2
[INFO] [stderr]    Compiling minisign-verify v0.2.5
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.36.0
[INFO] [stderr]    Compiling suvadu v0.3.2 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling moxcms v0.7.11
[INFO] [stderr]    Compiling toml_parser v1.0.9+spec-1.1.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling toml v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling kasuari v0.4.11
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling clap_complete v4.5.66
[INFO] [stderr]    Compiling clap_mangen v0.2.31
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling image v0.25.9
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling rusqlite v0.38.0
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "69029871378b166b9f6ee0cb206e6512ae121591ae9c82b1019ba0d112e1bd1b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "69029871378b166b9f6ee0cb206e6512ae121591ae9c82b1019ba0d112e1bd1b", kill_on_drop: false }`
[INFO] [stdout] 69029871378b166b9f6ee0cb206e6512ae121591ae9c82b1019ba0d112e1bd1b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] df8bf4cda8b1b4b5d1d0331e752c2737d35dab218c52b032d4d85e84998517e4
[INFO] running `Command { std: "docker" "start" "-a" "df8bf4cda8b1b4b5d1d0331e752c2737d35dab218c52b032d4d85e84998517e4", kill_on_drop: false }`
[INFO] [stderr]    Compiling suvadu v0.3.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crossterm::event::KeyEvent`
[INFO] [stdout]    --> src/agent_ui/dashboard.rs:931:9
[INFO] [stdout]     |
[INFO] [stdout] 931 |     use crossterm::event::KeyEvent;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_request` is never used
[INFO] [stdout]    --> src/mcp/server.rs:131:8
[INFO] [stdout]     |
[INFO] [stdout] 131 |     fn make_request(method: &str, id: Option<i64>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_with_exit` is never used
[INFO] [stdout]   --> src/models.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Entry {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn test_with_exit(command: &str, exit_code: Option<i32>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/repository/api.rs:18:8
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait RepositoryApi {
[INFO] [stdout]     |           ------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout]  18 |     fn begin_transaction(&self) -> DbResult<()>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout]  19 |     fn commit(&self) -> DbResult<()>;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout]  20 |     fn rollback(&self) -> DbResult<()>;
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout]  21 |     fn transaction(&self) -> DbResult<super::TransactionGuard<'_>>;
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout]  22 |     fn entry_exists(&self, command: &str, started_at: i64) -> DbResult<bool>;
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     fn insert_entry(&self, entry: &Entry) -> DbResult<i64>;
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]  26 |     fn get_entries_filtered(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     fn get_replay_entries(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     fn get_unique_entries_filtered(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  44 |     fn get_recent_entries(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     fn count_unique_filtered(&self, filter: &super::QueryFilter) -> DbResult<i64>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  53 |     fn delete_entries(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn count_entries_by_pattern(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     fn delete_entry(&self, id: i64) -> DbResult<()>;
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]  66 |     fn count_filtered(&self, filter: &super::QueryFilter) -> DbResult<i64>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]  67 |     fn count_orphaned_sessions(&self) -> DbResult<i64>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  68 |     fn delete_orphaned_sessions(&self) -> DbResult<usize>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  69 |     fn count_orphaned_notes(&self) -> DbResult<i64>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  70 |     fn delete_orphaned_notes(&self) -> DbResult<usize>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  71 |     fn list_sessions(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     fn find_sessions_by_prefix(&self, prefix: &str) -> DbResult<Vec<String>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  78 |     fn vacuum(&self) -> DbResult<()>;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     fn create_tag(&self, name: &str, description: Option<&str>) -> DbResult<i64>;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout]  82 |     fn get_tags(&self) -> DbResult<Vec<crate::models::Tag>>;
[INFO] [stdout]  83 |     fn update_tag(&self, id: i64, name: &str, description: Option<&str>) -> DbResult<()>;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout]  84 |     fn get_tag_id_by_name(&self, name: &str) -> DbResult<Option<i64>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  85 |     fn tag_session(&self, session_id: &str, tag_id: Option<i64>) -> DbResult<()>;
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout]  86 |     fn get_tag_by_session(&self, session_id: &str) -> DbResult<Option<String>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     fn upsert_note(&self, entry_id: i64, note: &str) -> DbResult<()>;
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout]  90 |     fn get_note(&self, entry_id: i64) -> DbResult<Option<crate::models::Note>>;
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout]  91 |     fn delete_note(&self, entry_id: i64) -> DbResult<bool>;
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout]  92 |     fn get_noted_entry_ids(&self) -> DbResult<std::collections::HashSet<i64>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     fn add_bookmark(&self, command: &str, label: Option<&str>) -> DbResult<i64>;
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]  96 |     fn remove_bookmark(&self, command: &str) -> DbResult<bool>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout]  97 |     fn list_bookmarks(&self) -> DbResult<Vec<crate::models::Bookmark>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     fn get_bookmarked_commands(&self) -> DbResult<std::collections::HashSet<String>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn add_alias(&self, name: &str, command: &str) -> DbResult<i64>;
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 102 |     fn remove_alias(&self, name: &str) -> DbResult<bool>;
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 103 |     fn list_aliases(&self) -> DbResult<Vec<crate::models::Alias>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn get_stats(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     fn get_daily_activity(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     fn get_frequent_commands_filtered(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 19.57s
[INFO] running `Command { std: "docker" "inspect" "df8bf4cda8b1b4b5d1d0331e752c2737d35dab218c52b032d4d85e84998517e4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "df8bf4cda8b1b4b5d1d0331e752c2737d35dab218c52b032d4d85e84998517e4", kill_on_drop: false }`
[INFO] [stdout] df8bf4cda8b1b4b5d1d0331e752c2737d35dab218c52b032d4d85e84998517e4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] f1fae610c4012a5352e7947ffd32676f0128826124c5bb2df3feb04c2e699a0c
[INFO] running `Command { std: "docker" "start" "-a" "f1fae610c4012a5352e7947ffd32676f0128826124c5bb2df3feb04c2e699a0c", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `crossterm::event::KeyEvent`
[INFO] [stderr]    --> src/agent_ui/dashboard.rs:931:9
[INFO] [stderr]     |
[INFO] [stderr] 931 |     use crossterm::event::KeyEvent;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_request` is never used
[INFO] [stderr]    --> src/mcp/server.rs:131:8
[INFO] [stderr]     |
[INFO] [stderr] 131 |     fn make_request(method: &str, id: Option<i64>) -> String {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `test_with_exit` is never used
[INFO] [stderr]   --> src/models.rs:90:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | impl Entry {
[INFO] [stderr]    | ---------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 90 |     pub fn test_with_exit(command: &str, exit_code: Option<i32>) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/repository/api.rs:18:8
[INFO] [stderr]     |
[INFO] [stderr]  14 | pub trait RepositoryApi {
[INFO] [stderr]     |           ------------- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr]  18 |     fn begin_transaction(&self) -> DbResult<()>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr]  19 |     fn commit(&self) -> DbResult<()>;
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr]  20 |     fn rollback(&self) -> DbResult<()>;
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr]  21 |     fn transaction(&self) -> DbResult<super::TransactionGuard<'_>>;
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr]  22 |     fn entry_exists(&self, command: &str, started_at: i64) -> DbResult<bool>;
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  25 |     fn insert_entry(&self, entry: &Entry) -> DbResult<i64>;
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr]  26 |     fn get_entries_filtered(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  32 |     fn get_replay_entries(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  37 |     fn get_unique_entries_filtered(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  44 |     fn get_recent_entries(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  52 |     fn count_unique_filtered(&self, filter: &super::QueryFilter) -> DbResult<i64>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]  53 |     fn delete_entries(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  59 |     fn count_entries_by_pattern(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  65 |     fn delete_entry(&self, id: i64) -> DbResult<()>;
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr]  66 |     fn count_filtered(&self, filter: &super::QueryFilter) -> DbResult<i64>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr]  67 |     fn count_orphaned_sessions(&self) -> DbResult<i64>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]  68 |     fn delete_orphaned_sessions(&self) -> DbResult<usize>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]  69 |     fn count_orphaned_notes(&self) -> DbResult<i64>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]  70 |     fn delete_orphaned_notes(&self) -> DbResult<usize>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]  71 |     fn list_sessions(
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  77 |     fn find_sessions_by_prefix(&self, prefix: &str) -> DbResult<Vec<String>>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]  78 |     fn vacuum(&self) -> DbResult<()>;
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  81 |     fn create_tag(&self, name: &str, description: Option<&str>) -> DbResult<i64>;
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr]  82 |     fn get_tags(&self) -> DbResult<Vec<crate::models::Tag>>;
[INFO] [stderr]  83 |     fn update_tag(&self, id: i64, name: &str, description: Option<&str>) -> DbResult<()>;
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr]  84 |     fn get_tag_id_by_name(&self, name: &str) -> DbResult<Option<i64>>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]  85 |     fn tag_session(&self, session_id: &str, tag_id: Option<i64>) -> DbResult<()>;
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr]  86 |     fn get_tag_by_session(&self, session_id: &str) -> DbResult<Option<String>>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  89 |     fn upsert_note(&self, entry_id: i64, note: &str) -> DbResult<()>;
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr]  90 |     fn get_note(&self, entry_id: i64) -> DbResult<Option<crate::models::Note>>;
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr]  91 |     fn delete_note(&self, entry_id: i64) -> DbResult<bool>;
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr]  92 |     fn get_noted_entry_ids(&self) -> DbResult<std::collections::HashSet<i64>>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  95 |     fn add_bookmark(&self, command: &str, label: Option<&str>) -> DbResult<i64>;
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr]  96 |     fn remove_bookmark(&self, command: &str) -> DbResult<bool>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr]  97 |     fn list_bookmarks(&self) -> DbResult<Vec<crate::models::Bookmark>>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr]  98 |     fn get_bookmarked_commands(&self) -> DbResult<std::collections::HashSet<String>>;
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     fn add_alias(&self, name: &str, command: &str) -> DbResult<i64>;
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 102 |     fn remove_alias(&self, name: &str) -> DbResult<bool>;
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 103 |     fn list_aliases(&self) -> DbResult<Vec<crate::models::Alias>>;
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 106 |     fn get_stats(
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 112 |     fn get_daily_activity(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 117 |     fn get_frequent_commands_filtered(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `suvadu` (bin "suv" test) generated 4 warnings (run `cargo fix --bin "suv" -p suvadu --tests` to apply 1 suggestion)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.37s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/suvadu-3f06fea8dffcb4c1)
[INFO] [stdout] 
[INFO] [stdout] running 155 tests
[INFO] [stdout] test models::tests::test_alias_suggestion_creation ... ok
[INFO] [stdout] test models::tests::test_entry_is_agent ... ok
[INFO] [stdout] test db::tests::test_get_db_path_returns_valid_path ... ok
[INFO] [stdout] test models::tests::test_executor_kind_from_str_opt ... ok
[INFO] [stdout] test models::tests::test_executor_kind_is_human ... ok
[INFO] [stdout] test models::tests::test_entry_creation ... ok
[INFO] [stdout] test models::tests::test_entry_executor_kind ... ok
[INFO] [stdout] test models::tests::test_session_creation ... ok
[INFO] [stdout] test repository::filter_builder_tests::all_none_filters_produce_no_clauses ... ok
[INFO] [stdout] test models::tests::test_entry_with_context ... ok
[INFO] [stdout] test repository::filter_builder_tests::chained_filters ... ok
[INFO] [stdout] test repository::filter_builder_tests::chained_session_filters ... ok
[INFO] [stdout] test repository::filter_builder_tests::empty_builder_produces_where_1_eq_1 ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_cwd ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_date_range_after_only ... ok
[INFO] [stdout] test repository::filter_builder_tests::push_param_adds_to_list ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_date_range_before_only ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_date_range_both ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_executor ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_exit_code ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_contains_mode ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_field_cwd ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_field_executor ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_field_session ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_prefix_mode ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session_created_after ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session_created_after_none_is_noop ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session_tag ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session_tag_none_is_noop ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_tag_adds_two_params ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_tag_none_is_noop ... ok
[INFO] [stdout] test db::tests::test_foreign_keys_enforced ... ok
[INFO] [stdout] test db::tests::test_column_exists_rejects_unlisted_column ... ok
[INFO] [stdout] test repository::api::tests::trait_crud_roundtrip ... ok
[INFO] [stdout] test repository::api::tests::repo_implements_trait ... ok
[INFO] [stdout] test db::tests::test_column_exists_rejects_unlisted_table ... ok
[INFO] [stdout] test db::tests::test_all_tables_created ... ok
[INFO] [stdout] test db::tests::test_init_db ... ok
[INFO] [stdout] test db::tests::test_db_file_permissions ... ok
[INFO] [stdout] test db::tests::test_init_db_idempotent ... ok
[INFO] [stdout] test db::tests::test_column_exists_rejects_sql_injection_attempt ... ok
[INFO] [stdout] test db::tests::test_schema_version_tracking ... ok
[INFO] [stdout] test db::tests::test_schema_version_table_exists ... ok
[INFO] [stdout] test db::tests::test_all_entry_columns_exist ... ok
[INFO] [stdout] test repository::tests::test_bookmark_crud ... ok
[INFO] [stdout] test repository::tests::test_bookmark_duplicate_upsert ... ok
[INFO] [stdout] test repository::tests::test_begin_and_commit_transaction ... ok
[INFO] [stdout] test repository::tests::test_count_entries ... ok
[INFO] [stdout] test repository::tests::test_count_entries_by_pattern ... ok
[INFO] [stdout] test repository::tests::test_cwd_filter_with_other_filters ... ok
[INFO] [stdout] test db::tests::test_migrate_pre_existing_db_without_version ... ok
[INFO] [stdout] test repository::tests::test_delete_entry_by_id ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_by_pattern ... ok
[INFO] [stdout] test repository::tests::test_daily_activity_empty_database ... ok
[INFO] [stdout] test repository::tests::test_entry_exists ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_by_regex ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_no_match ... ok
[INFO] [stdout] test repository::tests::test_entry_with_context ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_regex_with_before ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_with_before_timestamp ... ok
[INFO] [stdout] test repository::tests::test_executor_null_values ... ok
[INFO] [stdout] test repository::tests::test_executor_tracking ... ok
[INFO] [stdout] test repository::tests::test_export_entries_with_date_filter ... ok
[INFO] [stdout] test repository::tests::test_entries_filtering_by_tag ... ok
[INFO] [stdout] test repository::tests::test_executor_filter_in_count ... ok
[INFO] [stdout] test repository::tests::test_export_entries_all ... ok
[INFO] [stdout] test repository::tests::test_get_bookmarked_commands ... ok
[INFO] [stdout] test repository::tests::test_executor_types ... ok
[INFO] [stdout] test repository::tests::test_gc_orphaned_notes ... ok
[INFO] [stdout] test repository::tests::test_filter_by_cwd ... ok
[INFO] [stdout] test repository::tests::test_gc_orphaned_sessions ... ok
[INFO] [stdout] test repository::tests::test_get_daily_activity ... ok
[INFO] [stdout] test repository::tests::test_get_daily_activity_with_tag ... ok
[INFO] [stdout] test repository::tests::test_get_entries_by_session ... ok
[INFO] [stdout] test repository::tests::test_get_noted_entry_ids ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_with_day_filter ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_basic ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_by_session ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_with_date_filter ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_with_cwd_filter ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_dir_diversity_ranking ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_human_only ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_with_executor_filter ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_with_days ... ok
[INFO] [stdout] test repository::tests::test_get_tag_by_nonexistent_session ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_with_exit_code_filter ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands ... ok
[INFO] [stdout] test repository::tests::test_get_stats_all_time ... ok
[INFO] [stdout] test repository::tests::test_get_stats_with_tag_filter ... ok
[INFO] [stdout] test repository::tests::test_get_tag_by_session ... ok
[INFO] [stdout] test repository::tests::test_insert_and_get_session ... ok
[INFO] [stdout] test repository::tests::test_insert_and_get_entry ... ok
[INFO] [stdout] test repository::tests::test_note_crud ... ok
[INFO] [stdout] test repository::tests::test_note_upsert_overwrites ... ok
[INFO] [stdout] test repository::tests::test_recent_entries_prefix_match ... ok
[INFO] [stdout] test repository::tests::test_get_stats_executor_breakdown ... ok
[INFO] [stdout] test repository::tests::test_get_stats_with_day_filter ... ok
[INFO] [stdout] test repository::tests::test_stats_empty_database ... ok
[INFO] [stdout] test repository::tests::test_recent_entries_with_cwd_boost ... ok
[INFO] [stdout] test repository::tests::test_hourly_heatmap_empty_database ... ok
[INFO] [stdout] test repository::tests::test_recent_entries_shows_failed_commands ... ok
[INFO] [stdout] test repository::tests::test_stats_empty_db ... ok
[INFO] [stdout] test repository::tests::test_get_stats_empty_db ... ok
[INFO] [stdout] test theme::tests::test_dark_theme_colors ... ok
[INFO] [stdout] test theme::tests::test_light_theme_colors ... ok
[INFO] [stdout] test theme::tests::test_terminal_theme_uses_ansi ... ok
[INFO] [stdout] test theme::tests::test_theme_index ... ok
[INFO] [stdout] test theme::tests::test_theme_name_cycle ... ok
[INFO] [stdout] test theme::tests::test_theme_name_default ... ok
[INFO] [stdout] test theme::tests::test_theme_name_display ... ok
[INFO] [stdout] test theme::tests::test_theme_name_serde_roundtrip ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_no_file ... ok
[INFO] [stdout] test repository::tests::test_stats_with_entries ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_no_hooks_key ... ok
[INFO] [stdout] test repository::tests::test_stats_with_days_filter ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_preserves_other_hooks ... ok
[INFO] [stdout] test repository::tests::test_stats_single_entry ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_removes_both_hook_types ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_file_missing ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_no_suvadu_line ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_removes_suvadu_line ... ok
[INFO] [stdout] test util::format::tests::test_dirs_home ... ok
[INFO] [stdout] test util::format::tests::test_format_count ... ok
[INFO] [stdout] test util::format::tests::test_format_duration_ms ... ok
[INFO] [stdout] test util::format::tests::test_shorten_path ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_emoji ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_exact ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_short ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_start_short ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_start_truncated ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_removes_suvadu_hook ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_start_unicode ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_tiny_max ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_truncated ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_only_matches_exact_shell ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_unicode ... ok
[INFO] [stdout] test util::tests::test_resolve_auto_tag ... ok
[INFO] [stdout] test util::timestamp::tests::test_parse_date_iso ... ok
[INFO] [stdout] test util::timestamp::tests::test_parse_keywords ... ok
[INFO] [stdout] test util::timestamp::tests::test_parse_relative_days ... ok
[INFO] [stdout] test repository::tests::test_stats_with_period_filter ... ok
[INFO] [stdout] test util::timestamp::tests::test_parse_relative_invalid ... ok
[INFO] [stdout] test repository::tests::test_tag_lifecycle ... ok
[INFO] [stdout] test util::exclusion::tests::test_is_excluded ... ok
[INFO] [stdout] test repository::tests::test_transaction_guard_recommit ... ok
[INFO] [stdout] test repository::tests::test_transaction_guard_rollback_on_drop ... ok
[INFO] [stdout] test repository::tests::test_top_sessions_empty_database ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_pagination_and_query ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_query ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_recency_priority ... ok
[INFO] [stdout] test repository::tests::test_vacuum ... ok
[INFO] [stdout] test repository::tests::test_tag_limits_and_constraints ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_reexecution ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_filtering_by_tag ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 155 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.54s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/suv-86989eca0b910755)
[INFO] [stdout] 
[INFO] [stdout] running 1032 tests
[INFO] [stdout] test agent::tests::agent_filter_excludes_human_and_unknown ... ok
[INFO] [stdout] test agent::tests::format_timestamp_time_invalid_value ... ok
[INFO] [stdout] test agent::tests::format_timestamp_time_microsecond_normalization ... ok
[INFO] [stdout] test agent::tests::stats_text_agent_summary_computes_success_rate ... ok
[INFO] [stdout] test agent::tests::format_timestamp_time_normal_ms ... ok
[INFO] [stdout] test agent::tests::agent_breakdown_counts_multiple_agents ... ok
[INFO] [stdout] test agent::tests::days_ms_saturating_mul_does_not_overflow ... ok
[INFO] [stdout] test agent::tests::text_report_empty_entries ... ok
[INFO] [stdout] test agent::tests::days_ms_normal_value ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::build_table_title_empty ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::selected_entry_empty ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::page_slice_empty ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::handle_input_q_quits ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::page_slice_returns_correct_count ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::rebuild_visible_resets_page_and_selection ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::selected_risk_safe_command ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::build_table_title_with_items ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::rebuild_visible_empty_selects_none ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::total_pages_empty ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::total_pages_within_one_page ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_copy_in_detail_does_not_panic ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_detail_tab_toggles_pane ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::visible_high_risk_count_tracked ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_backspace_returns_from_detail ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_list_navigation ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_list_total_pages_within_one_page ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_quit_from_list ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_new_with_entries ... ok
[INFO] [stdout] test agent::tests::agent_report_json_has_expected_fields ... ok
[INFO] [stdout] test agent::tests::agent_report_json_risk_levels_populated ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_selected_group_returns_correct ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_session_shortcut_returns_open_session ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_session_shortcut_on_empty_is_continue ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_empty ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_list_total_pages_empty ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_new_empty_entries ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_correct_aggregates ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_mixed_with_and_without_prompts ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_no_prompts_skipped ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_multiple_sessions ... ok
[INFO] [stdout] test agent::tests::text_report_contains_header_and_agents ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_none_exit_code_is_neutral ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_single_group ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_same_session_different_prompts ... ok
[INFO] [stdout] test agent::tests::markdown_report_contains_expected_sections ... ok
[INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_sorted_by_recency ... ok
[INFO] [stdout] test agent_ui::stats::tests::agent_stat_high_risk_cmds_match_count ... ok
[INFO] [stdout] test agent_ui::stats::tests::agent_stat_top_dirs_populated ... ok
[INFO] [stdout] test agent_ui::stats::tests::focus_starts_on_cards ... ok
[INFO] [stdout] test agent_ui::stats::tests::risk_selected_starts_at_zero ... ok
[INFO] [stdout] test agent_ui::stats::tests::selected_high_risk_count_no_agents ... ok
[INFO] [stdout] test agent_ui::stats::tests::selected_high_risk_count_second_agent ... ok
[INFO] [stdout] test agent_ui::stats::tests::empty_agents_app ... ok
[INFO] [stdout] test agent_ui::stats::tests::selected_high_risk_count_with_agents ... ok
[INFO] [stdout] test agent_ui::stats::tests::selected_starts_at_zero ... ok
[INFO] [stdout] test agent_ui::tests::compute_agent_counts_empty ... ok
[INFO] [stdout] test agent_ui::tests::compute_agent_counts_single_agent ... ok
[INFO] [stdout] test agent_ui::tests::compute_agent_counts_multiple_agents ... ok
[INFO] [stdout] test agent::tests::json_report_roundtrips_through_serde ... ok
[INFO] [stdout] test agent_ui::tests::compute_agent_counts_unknown_executor ... ok
[INFO] [stdout] test agent_ui::tests::format_datetime_microsecond_input ... ok
[INFO] [stdout] test agent_ui::tests::format_datetime_valid_ms ... ok
[INFO] [stdout] test agent_ui::tests::format_full_datetime_microsecond_input ... ok
[INFO] [stdout] test agent_ui::tests::period_after_ms_days30_is_some ... ok
[INFO] [stdout] test agent_ui::tests::period_after_ms_days7_is_some ... ok
[INFO] [stdout] test agent_ui::prompts::tests::app_enter_detail_and_back ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_stats_defaults ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_stats_with_tag ... ok
[INFO] [stdout] test cli::tests::test_cli_rejects_unknown_command ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_wrap_with_trailing_args ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_search_with_args ... ok
[INFO] [stdout] test agent_ui::tests::format_full_datetime_valid_ms ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_apply_empty ... ok
[INFO] [stdout] test agent_ui::tests::period_after_ms_all_time_is_none ... ok
[INFO] [stdout] test agent_ui::tests::period_after_ms_today_is_some ... ok
[INFO] [stdout] test agent_ui::tests::period_labels ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_name_validation ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_apply_stdout_format ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_add_and_list ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_add_invalid_name ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_enable ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::rebuild_visible_agent_filter ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::selected_entry_returns_entry ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::selected_risk_dangerous_command ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::rebuild_visible_risk_filter ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_agent_report ... ok
[INFO] [stdout] test agent_ui::dashboard::tests::rebuild_visible_no_filter ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_list_empty ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_upsert_updates_command ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_add_and_list_roundtrip ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_upsert ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_list_with_entries ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_disabled_config_drops ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_creates_session_automatically ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_remove_nonexistent ... ok
[INFO] [stdout] test commands::alias::tests::test_alias_remove ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_happy_path ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_no_auto_tag_for_unmatched_cwd ... ok
[INFO] [stdout] test commands::entry::tests::test_drop_early_empty_session_id ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_auto_tags_by_cwd ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_normalizes_nanosecond_timestamps ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_preserves_context ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_multiple_exclusion_patterns ... ok
[INFO] [stdout] test commands::entry::tests::test_drop_early_invalid_session_id_chars ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_exclusion_drops ... ok
[INFO] [stdout] test commands::entry::tests::test_exclusion_cache_empty_patterns ... ok
[INFO] [stdout] test commands::entry::tests::test_drop_early_normal_command_passes ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_add_nanosecond_timestamps ... ok
[INFO] [stdout] test commands::entry::tests::test_drop_early_oversized_command ... ok
[INFO] [stdout] test commands::entry::tests::test_drop_early_oversized_cwd ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_multiple_entries_same_session ... ok
[INFO] [stdout] test commands::entry::tests::test_exclusion_cache_reuses_compiled ... ok
[INFO] [stdout] test commands::entry::tests::test_drop_early_oversized_session_id ... ok
[INFO] [stdout] test commands::entry::tests::test_drop_early_space_prefixed_command ... ok
[INFO] [stdout] test commands::entry::tests::test_drop_early_max_session_id_ok ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_zero_started_at_uses_ended_at ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_reuses_existing_session ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_zero_ended_at_uses_started_at ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_preserves_exit_code ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_redacts_secrets_by_default ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_preserves_executor_info ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_normalizes_second_timestamps ... ok
[INFO] [stdout] test commands::entry::tests::test_add_inner_skips_redaction_when_disabled ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_bookmark_remove ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_bookmark_with_repo_add ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_bookmark_with_repo_remove ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_bookmark_with_repo_list ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_bookmark_remove_nonexistent ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_boundary_ms_us ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_boundary_seconds_ms ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_current_epoch ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_microseconds ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_milliseconds ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_nanoseconds ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_negative ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_seconds ... ok
[INFO] [stdout] test commands::entry::tests::test_normalize_timestamp_zero ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_add_pipeline ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_bookmark_with_repo_remove_nonexistent_errors ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_bookmark_add_and_list ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_delete_empty_pattern_error ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_delete_regex_pattern ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_delete_dry_run ... ok
[INFO] [stdout] test commands::replay::tests::test_resolve_replay_scope_combined_flags ... ok
[INFO] [stdout] test commands::replay::tests::test_resolve_replay_scope_cwd_flag ... ok
[INFO] [stdout] test commands::replay::tests::test_resolve_replay_scope_date_flags ... ok
[INFO] [stdout] test commands::replay::tests::test_resolve_replay_scope_explicit_session ... ok
[INFO] [stdout] test commands::replay::tests::test_resolve_replay_scope_here_flag ... ok
[INFO] [stdout] test commands::replay::tests::test_resolve_replay_scope_no_flags_no_env ... ok
[INFO] [stdout] test commands::replay::tests::test_resolve_replay_scope_tag_flag ... ok
[INFO] [stdout] test commands::search::tests::test_empty_query_becomes_none ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_delete_no_match ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_gc_cleans_orphan_notes ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_note_delete_nonexistent ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_gc_cleans_orphan_sessions ... ok
[INFO] [stdout] test commands::search::tests::test_shell_fallback_exit_code_is_documented ... ok
[INFO] [stdout] test commands::replay::tests::test_replay_entries_by_session ... ok
[INFO] [stdout] test commands::replay::tests::test_replay_empty_session ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_note_delete ... ok
[INFO] [stdout] test commands::replay::tests::test_replay_entries_cwd_filter ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_note_read_nonexistent ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_note_upsert_and_read ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_gc_vacuum ... ok
[INFO] [stdout] test commands::settings::tests::test_confirmation_input_parsing ... ok
[INFO] [stdout] test commands::entry::tests::test_handle_gc_dry_run_no_orphans ... ok
[INFO] [stdout] test commands::settings::tests::test_recording_state_logic ... ok
[INFO] [stdout] test commands::settings::tests::test_uninstall_detection_logic ... ok
[INFO] [stdout] test commands::replay::tests::test_replay_full_flow ... ok
[INFO] [stdout] test commands::search::tests::test_handle_get_prefix_match ... ok
[INFO] [stdout] test commands::session::tests::test_session_list_empty ... ok
[INFO] [stdout] test commands::search::tests::test_handle_get_empty_db ... ok
[INFO] [stdout] test commands::search::tests::test_handle_get_returns_most_recent ... ok
[INFO] [stdout] test commands::session::tests::test_session_prefix_exact_match ... ok
[INFO] [stdout] test commands::stats::tests::test_resolve_tag_none ... ok
[INFO] [stdout] test commands::session::tests::test_session_list_with_tag_filter ... ok
[INFO] [stdout] test commands::stats::tests::test_resolve_tag_not_found ... ok
[INFO] [stdout] test commands::session::tests::test_session_prefix_multiple_matches ... ok
[INFO] [stdout] test commands::session::tests::test_session_list_with_entries ... ok
[INFO] [stdout] test commands::stats::tests::test_resolve_tag_found ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_empty_db ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_associate_no_session_id ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_filtered_by_tag ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_json_output ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_percentage_no_division_by_zero ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_text_with_data ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_with_failures ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_associate_existing_tag ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_text_with_tag_filter ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_associate_auto_creates_tag ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_create_empty_name ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_create_with_description ... ok
[INFO] [stdout] test commands::wrap::tests::test_exit_code_normal_exit ... ok
[INFO] [stdout] test commands::wrap::tests::test_exit_code_signal_kill ... ok
[INFO] [stdout] test commands::wrap::tests::test_exit_code_signal_segv ... ok
[INFO] [stdout] test config::tests::test_config_path_creation ... ok
[INFO] [stdout] test config::tests::test_config_serialization ... ok
[INFO] [stdout] test config::tests::test_custom_agent_default_executor_type ... ok
[INFO] [stdout] test config::tests::test_custom_agents_deserialization ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test config::tests::test_empty_agents_section ... ok
[INFO] [stdout] test config::tests::test_is_paused_logic ... ok
[INFO] [stdout] test config::tests::test_load_nonexistent_config ... ok
[INFO] [stdout] test config::tests::test_mcp_config_defaults ... ok
[INFO] [stdout] test commands::wrap::tests::test_exit_code_nonzero_exit ... ok
[INFO] [stdout] test config::tests::test_mcp_config_missing_section_uses_defaults ... ok
[INFO] [stdout] test config::tests::test_mcp_config_validation_days ... ok
[INFO] [stdout] test config::tests::test_mcp_config_deserialization ... ok
[INFO] [stdout] test config::tests::test_mcp_config_validation_limit ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_json_empty_db ... ok
[INFO] [stdout] test config::tests::test_save_and_load_config ... ok
[INFO] [stdout] test config::tests::test_unknown_fields_ignored ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_update_not_found ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_list_with_tags ... ok
[INFO] [stdout] test db::tests::test_all_entry_columns_exist ... ok
[INFO] [stdout] test db::tests::test_all_tables_created ... ok
[INFO] [stdout] test db::tests::test_column_exists_rejects_sql_injection_attempt ... ok
[INFO] [stdout] test db::tests::test_get_db_path_returns_valid_path ... ok
[INFO] [stdout] test db::tests::test_column_exists_rejects_unlisted_table ... ok
[INFO] [stdout] test db::tests::test_column_exists_rejects_unlisted_column ... ok
[INFO] [stdout] test db::tests::test_db_file_permissions ... ok
[INFO] [stdout] test commands::replay::tests::test_replay_entries_exit_code_filter ... ok
[INFO] [stdout] test db::tests::test_init_db ... ok
[INFO] [stdout] test hooks::tests::test_bash_hook_contains_executor_detection ... ok
[INFO] [stdout] test hooks::tests::test_bash_hook_generation ... ok
[INFO] [stdout] test hooks::tests::test_bash_suv_wrapper_structure ... ok
[INFO] [stdout] test hooks::tests::test_custom_agent_unsafe_name_skipped ... ok
[INFO] [stdout] test hooks::tests::test_custom_agents_checked_before_builtins ... ok
[INFO] [stdout] test hooks::tests::test_custom_agents_in_bash_hook ... ok
[INFO] [stdout] test hooks::tests::test_custom_agents_in_zsh_hook ... ok
[INFO] [stdout] test hooks::tests::test_no_custom_agents_default_config ... ok
[INFO] [stdout] test hooks::tests::test_no_doubled_braces_in_output ... ok
[INFO] [stdout] test hooks::tests::test_shell_quote_path_with_dollar ... ok
[INFO] [stdout] test hooks::tests::test_shell_quote_path_with_single_quote ... ok
[INFO] [stdout] test hooks::tests::test_shell_quote_path_with_spaces ... ok
[INFO] [stdout] test hooks::tests::test_shell_quote_simple_path ... ok
[INFO] [stdout] test hooks::tests::test_zsh_hook_arrow_nav_disabled ... ok
[INFO] [stdout] test hooks::tests::test_zsh_hook_arrow_nav_enabled ... ok
[INFO] [stdout] test hooks::tests::test_zsh_hook_binary_path ... ok
[INFO] [stdout] test hooks::tests::test_zsh_hook_contains_session_id ... ok
[INFO] [stdout] test hooks::tests::test_zsh_hook_generation ... ok
[INFO] [stdout] test hooks::tests::test_zsh_suv_wrapper_structure ... ok
[INFO] [stdout] test import_export::tests::test_csv_row_formatting ... ok
[INFO] [stdout] test import_export::tests::test_csv_safe_escapes_double_quotes ... ok
[INFO] [stdout] test import_export::tests::test_csv_safe_formula_injection_prefixes ... ok
[INFO] [stdout] test import_export::tests::test_csv_safe_formula_injection_with_quotes ... ok
[INFO] [stdout] test import_export::tests::test_csv_safe_plain_string ... ok
[INFO] [stdout] test commands::replay::tests::test_replay_entries_time_filter ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_create_with_name ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_update_description ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_list_empty ... ok
[INFO] [stdout] test import_export::tests::test_jsonl_roundtrip ... ok
[INFO] [stdout] test import_export::tests::test_parse_extended_history_empty_command ... ok
[INFO] [stdout] test import_export::tests::test_parse_extended_history_invalid ... ok
[INFO] [stdout] test import_export::tests::test_parse_extended_history_line ... ok
[INFO] [stdout] test import_export::tests::test_parse_extended_history_multiline_marker ... ok
[INFO] [stdout] test import_export::tests::test_parse_extended_history_with_duration ... ok
[INFO] [stdout] test import_export::tests::test_parse_extended_history_with_semicolons_in_command ... ok
[INFO] [stdout] test import_export::tests::test_parse_zsh_history_extended_format ... ok
[INFO] [stdout] test import_export::tests::test_parse_zsh_history_multiline_command ... ok
[INFO] [stdout] test import_export::tests::test_parse_zsh_history_multiline_plain_format ... ok
[INFO] [stdout] test import_export::tests::test_parse_zsh_history_plain_format ... ok
[INFO] [stdout] test import_export::tests::test_parse_zsh_history_skips_blank_lines ... ok
[INFO] [stdout] test integrations::tests::test_claude_settings_snippet_structure ... ok
[INFO] [stdout] test integrations::tests::test_dedup_preserves_non_suvadu_hooks ... ok
[INFO] [stdout] test integrations::tests::test_generate_claude_settings_snippet ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_update_name ... ok
[INFO] [stdout] test integrations::tests::test_get_prompts_dir ... ok
[INFO] [stdout] test integrations::tests::test_hook_claude_code_handles_missing_exit_code ... ok
[INFO] [stdout] test integrations::tests::test_hook_claude_code_skips_non_bash ... ok
[INFO] [stdout] test integrations::tests::test_hook_claude_code_parses_bash_event ... ok
[INFO] [stdout] test integrations::tests::test_invalid_session_ids ... ok
[INFO] [stdout] test integrations::tests::test_merge_claude_settings_idempotent ... ok
[INFO] [stdout] test integrations::tests::test_parse_exit_code_from_error_no_match ... ok
[INFO] [stdout] test integrations::tests::test_parse_exit_code_from_error_standard ... ok
[INFO] [stdout] test integrations::tests::test_post_tool_use_defaults_to_exit_0 ... ok
[INFO] [stdout] test integrations::tests::test_valid_session_ids ... ok
[INFO] [stdout] test mcp::protocol::tests::test_error_response ... ok
[INFO] [stdout] test mcp::protocol::tests::test_initialize_response ... ok
[INFO] [stdout] test mcp::protocol::tests::test_ping_response ... ok
[INFO] [stdout] test integrations::tests::test_merge_claude_settings_preserves_existing ... ok
[INFO] [stdout] test integrations::tests::test_merge_deduplicates_existing_duplicates ... ok
[INFO] [stdout] test mcp::protocol::tests::test_tool_error ... ok
[INFO] [stdout] test mcp::protocol::tests::test_tool_result ... ok
[INFO] [stdout] test mcp::protocol::tests::test_tool_result_no_truncation_under_limit ... ok
[INFO] [stdout] test db::tests::test_schema_version_table_exists ... ok
[INFO] [stdout] test mcp::protocol::tests::test_tool_result_truncates_long_output ... ok
[INFO] [stdout] test mcp::resources::tests::test_list_resources_count ... ok
[INFO] [stdout] test mcp::resources::tests::test_list_resources_with_disabled ... ok
[INFO] [stdout] test mcp::resources::tests::test_list_templates_has_session ... ok
[INFO] [stdout] test db::tests::test_init_db_idempotent ... ok
[INFO] [stdout] test commands::session::tests::test_session_prefix_no_match ... ok
[INFO] [stdout] test import_export::tests::test_import_entries_batch_inserts_entries ... ok
[INFO] [stdout] test import_export::tests::test_import_entries_batch_deduplicates ... ok
[INFO] [stdout] test db::tests::test_migrate_pre_existing_db_without_version ... ok
[INFO] [stdout] test commands::search::tests::test_handle_get_with_query_filter ... ok
[INFO] [stdout] test import_export::tests::test_import_entries_batch_skips_empty_and_space_prefixed ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_failures_empty ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_agent_sessions_with_data ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_agents_empty ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_project_context_empty ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_agent_sessions_empty ... ok
[INFO] [stdout] test mcp::server::tests::test_malformed_json_returns_parse_error ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_text_empty_db ... ok
[INFO] [stdout] test mcp::tools::tests::test_assess_risk_critical_command ... ok
[INFO] [stdout] test mcp::tools::tests::test_assess_risk_batch ... ok
[INFO] [stdout] test mcp::tools::tests::test_assess_risk_high_command ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_disabled_resource_returns_error ... ok
[INFO] [stdout] test mcp::tools::tests::test_assess_risk_safe_command ... ok
[INFO] [stdout] test mcp::tools::tests::test_assess_risk_force_push ... ok
[INFO] [stdout] test mcp::tools::tests::test_assess_risk_no_input ... ok
[INFO] [stdout] test mcp::tools::tests::test_classify_command ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_project_context_with_data ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_recent_history_empty ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_session_empty_id ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_recent_with_data ... ok
[INFO] [stdout] test commands::stats::tests::test_stats_with_entries ... ok
[INFO] [stdout] test mcp::server::tests::test_handle_tool_call_unknown ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_unknown_resource ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_stats_empty ... ok
[INFO] [stdout] test mcp::resources::tests::test_read_risk_empty ... ok
[INFO] [stdout] test mcp::server::tests::test_handle_tool_call_search ... ok
[INFO] [stdout] test commands::tag::tests::test_tag_create_duplicate ... ok
[INFO] [stdout] test mcp::tools::tests::test_call_disabled_tool_returns_error ... ok
[INFO] [stdout] test mcp::tools::tests::test_call_unknown_tool ... ok
[INFO] [stdout] test db::tests::test_foreign_keys_enforced ... ok
[INFO] [stdout] test mcp::tools::tests::test_list_tools_count ... ok
[INFO] [stdout] test mcp::tools::tests::test_list_tools_with_disabled ... ok
[INFO] [stdout] test db::tests::test_schema_version_tracking ... ok
[INFO] [stdout] test mcp::tools::tests::test_command_status_requires_command ... ok
[INFO] [stdout] test mcp::tools::tests::test_get_prompts_with_seeded_data ... ok
[INFO] [stdout] test mcp::tools::tests::test_find_agent_session_empty_db ... ok
[INFO] [stdout] test mcp::tools::tests::test_command_status_with_seeded_data ... ok
[INFO] [stdout] test mcp::tools::tests::test_find_agent_session_filter_by_executor ... ok
[INFO] [stdout] test mcp::tools::tests::test_learn_from_failures_empty_db ... ok
[INFO] [stdout] test mcp::tools::tests::test_get_prompts_empty_db ... ok
[INFO] [stdout] test mcp::tools::tests::test_find_agent_session_filter_by_directory ... ok
[INFO] [stdout] test mcp::tools::tests::test_find_agent_session_filter_by_prompt ... ok
[INFO] [stdout] test mcp::tools::tests::test_find_agent_session_with_data ... ok
[INFO] [stdout] test mcp::tools::tests::test_learn_from_failures_detects_recurring ... ok
[INFO] [stdout] test mcp::tools::tests::test_project_context_empty_db ... ok
[INFO] [stdout] test mcp::tools::tests::test_find_agent_session_shows_resume ... ok
[INFO] [stdout] test mcp::tools::tests::test_tool_definitions_have_required_fields ... ok
[INFO] [stdout] test mcp::tools::tests::test_recent_commands_empty_db ... ok
[INFO] [stdout] test mcp::tools::tests::test_project_context_filter_by_directory ... ok
[INFO] [stdout] test mcp::tools::tests::test_replay_agent_session_not_found ... ok
[INFO] [stdout] test mcp::tools::tests::test_replay_agent_session_prefix_normalization ... ok
[INFO] [stdout] test models::tests::test_alias_suggestion_creation ... ok
[INFO] [stdout] test models::tests::test_entry_creation ... ok
[INFO] [stdout] test models::tests::test_entry_executor_kind ... ok
[INFO] [stdout] test models::tests::test_entry_is_agent ... ok
[INFO] [stdout] test models::tests::test_entry_with_context ... ok
[INFO] [stdout] test models::tests::test_executor_kind_from_str_opt ... ok
[INFO] [stdout] test models::tests::test_executor_kind_is_human ... ok
[INFO] [stdout] test models::tests::test_session_creation ... ok
[INFO] [stdout] test redact::tests::test_all_patterns_compile ... ok
[INFO] [stdout] test mcp::tools::tests::test_replay_agent_session_shows_resume ... ok
[INFO] [stdout] test redact::tests::test_aws_access_key ... ok
[INFO] [stdout] test mcp::tools::tests::test_project_context_with_data ... ok
[INFO] [stdout] test redact::tests::test_anthropic_api_key ... ok
[INFO] [stdout] test redact::tests::test_basic_auth_curl ... ok
[INFO] [stdout] test redact::tests::test_bare_openai_key_redacted ... ok
[INFO] [stdout] test mcp::tools::tests::test_search_with_seeded_data ... ok
[INFO] [stdout] test redact::tests::test_bearer_token ... ok
[INFO] [stdout] test redact::tests::test_connection_string ... ok
[INFO] [stdout] test mcp::tools::tests::test_search_commands_with_exit_code_filter ... ok
[INFO] [stdout] test redact::tests::test_connection_string_mongodb ... ok
[INFO] [stdout] test redact::tests::test_contains_secrets ... ok
[INFO] [stdout] test redact::tests::test_env_var_api_key ... ok
[INFO] [stdout] test redact::tests::test_env_var_bare_secret ... ok
[INFO] [stdout] test redact::tests::test_env_var_bare_token ... ok
[INFO] [stdout] test redact::tests::test_env_var_basic_auth ... ok
[INFO] [stdout] test mcp::tools::tests::test_replay_agent_session_with_data ... ok
[INFO] [stdout] test redact::tests::test_env_var_db_password ... ok
[INFO] [stdout] test redact::tests::test_env_var_auth_token ... ok
[INFO] [stdout] test redact::tests::test_env_var_aws_secret_access_key ... ok
[INFO] [stdout] test redact::tests::test_env_var_anthropic_api_key ... ok
[INFO] [stdout] test mcp::tools::tests::test_learn_from_failures_no_problems ... ok
[INFO] [stdout] test redact::tests::test_azure_client_secret ... ok
[INFO] [stdout] test redact::tests::test_env_var_secret_key ... ok
[INFO] [stdout] test redact::tests::test_env_var_private_key ... ok
[INFO] [stdout] test mcp::tools::tests::test_search_commands_empty_db ... ok
[INFO] [stdout] test redact::tests::test_mysql_password ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_author_name ... ok
[INFO] [stdout] test mcp::tools::tests::test_suggest_next_empty_db ... ok
[INFO] [stdout] test redact::tests::test_env_var_export_credential ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_cd ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_authentication_mode ... ok
[INFO] [stdout] test redact::tests::test_env_var_inline ... ok
[INFO] [stdout] test mcp::tools::tests::test_list_sessions_empty_db ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_grep ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_password_file ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_ls ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_private_key_path ... ok
[INFO] [stdout] test redact::tests::test_github_token ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_node_env ... ok
[INFO] [stdout] test redact::tests::test_multiple_secrets_in_one_command ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_claude_code_no_flicker ... ok
[INFO] [stdout] test redact::tests::test_env_var_github_token ... ok
[INFO] [stdout] test mcp::tools::tests::test_what_failed_empty_db ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_react_app_auth_domain ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_git_author_email ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_credential_helper ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_safe_command ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_secret_scanning ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_token_bucket_size ... ok
[INFO] [stdout] test redact::tests::test_slack_token ... ok
[INFO] [stdout] test redact::tests::test_no_false_positive_tokenizers_parallelism ... ok
[INFO] [stdout] test redact::tests::test_pypi_token ... ok
[INFO] [stdout] test redact::tests::test_npm_token ... ok
[INFO] [stdout] test redact::tests::test_password_flag ... ok
[INFO] [stdout] test redact::tests::test_openai_key_not_match_anthropic ... ok
[INFO] [stdout] test redact::tests::test_stripe_key ... ok
[INFO] [stdout] test repository::filter_builder_tests::all_none_filters_produce_no_clauses ... ok
[INFO] [stdout] test repository::filter_builder_tests::chained_filters ... ok
[INFO] [stdout] test redact::tests::test_env_var_export ... ok
[INFO] [stdout] test redact::tests::test_openai_key ... ok
[INFO] [stdout] test repository::filter_builder_tests::chained_session_filters ... ok
[INFO] [stdout] test repository::filter_builder_tests::empty_builder_produces_where_1_eq_1 ... ok
[INFO] [stdout] test redact::tests::test_wrap_command_no_panic ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_cwd ... ok
[INFO] [stdout] test repository::filter_builder_tests::push_param_adds_to_list ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_date_range_after_only ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_date_range_before_only ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_exit_code ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_contains_mode ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_executor ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_field_executor ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_prefix_mode ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session_created_after ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session_tag ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_field_cwd ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session_created_after_none_is_noop ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_date_range_both ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_query_field_session ... ok
[INFO] [stdout] test redact::tests::test_pem_private_key ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_tag_adds_two_params ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session_tag_none_is_noop ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_tag_none_is_noop ... ok
[INFO] [stdout] test repository::filter_builder_tests::with_session ... ok
[INFO] [stdout] test mcp::tools::tests::test_what_changed_empty_db ... ok
[INFO] [stdout] test mcp::tools::tests::test_replay_agent_session_requires_session_id ... ok
[INFO] [stdout] test mcp::tools::tests::test_suggest_next_with_data ... ok
[INFO] [stdout] test mcp::tools::tests::test_what_changed_classifies_commands ... ok
[INFO] [stdout] test mcp::tools::tests::test_what_failed_with_failures ... ok
[INFO] [stdout] test repository::api::tests::repo_implements_trait ... ok
[INFO] [stdout] test repository::tests::test_count_entries ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_by_pattern ... ok
[INFO] [stdout] test repository::tests::test_bookmark_duplicate_upsert ... ok
[INFO] [stdout] test repository::api::tests::trait_crud_roundtrip ... ok
[INFO] [stdout] test repository::tests::test_cwd_filter_with_other_filters ... ok
[INFO] [stdout] test repository::tests::test_begin_and_commit_transaction ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_regex_with_before ... ok
[INFO] [stdout] test repository::tests::test_daily_activity_empty_database ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_no_match ... ok
[INFO] [stdout] test repository::tests::test_bookmark_crud ... ok
[INFO] [stdout] test repository::tests::test_count_entries_by_pattern ... ok
[INFO] [stdout] test repository::tests::test_entries_filtering_by_tag ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_with_before_timestamp ... ok
[INFO] [stdout] test repository::tests::test_entry_with_context ... ok
[INFO] [stdout] test repository::tests::test_executor_tracking ... ok
[INFO] [stdout] test repository::tests::test_export_entries_all ... ok
[INFO] [stdout] test repository::tests::test_executor_null_values ... ok
[INFO] [stdout] test repository::tests::test_gc_orphaned_sessions ... ok
[INFO] [stdout] test repository::tests::test_executor_types ... ok
[INFO] [stdout] test repository::tests::test_gc_orphaned_notes ... ok
[INFO] [stdout] test repository::tests::test_executor_filter_in_count ... ok
[INFO] [stdout] test repository::tests::test_export_entries_with_date_filter ... ok
[INFO] [stdout] test repository::tests::test_get_daily_activity_with_tag ... ok
[INFO] [stdout] test repository::tests::test_get_bookmarked_commands ... ok
[INFO] [stdout] test repository::tests::test_entry_exists ... ok
[INFO] [stdout] test repository::tests::test_filter_by_cwd ... ok
[INFO] [stdout] test repository::tests::test_delete_entry_by_id ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands ... ok
[INFO] [stdout] test repository::tests::test_delete_entries_by_regex ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_human_only ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_basic ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_with_cwd_filter ... ok
[INFO] [stdout] test repository::tests::test_get_noted_entry_ids ... ok
[INFO] [stdout] test repository::tests::test_get_daily_activity ... ok
[INFO] [stdout] test repository::tests::test_get_stats_all_time ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_dir_diversity_ranking ... ok
[INFO] [stdout] test repository::tests::test_get_tag_by_nonexistent_session ... ok
[INFO] [stdout] test repository::tests::test_get_stats_empty_db ... ok
[INFO] [stdout] test repository::tests::test_get_stats_with_tag_filter ... ok
[INFO] [stdout] test repository::tests::test_get_entries_by_session ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_with_exit_code_filter ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_with_day_filter ... ok
[INFO] [stdout] test repository::tests::test_get_frequent_commands_with_days ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_by_session ... ok
[INFO] [stdout] test repository::tests::test_get_stats_executor_breakdown ... ok
[INFO] [stdout] test repository::tests::test_note_crud ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_with_executor_filter ... ok
[INFO] [stdout] test repository::tests::test_get_stats_with_day_filter ... ok
[INFO] [stdout] test repository::tests::test_insert_and_get_entry ... ok
[INFO] [stdout] test repository::tests::test_recent_entries_shows_failed_commands ... ok
[INFO] [stdout] test repository::tests::test_hourly_heatmap_empty_database ... ok
[INFO] [stdout] test repository::tests::test_note_upsert_overwrites ... ok
[INFO] [stdout] test repository::tests::test_recent_entries_prefix_match ... ok
[INFO] [stdout] test repository::tests::test_get_replay_entries_with_date_filter ... ok
[INFO] [stdout] test repository::tests::test_insert_and_get_session ... ok
[INFO] [stdout] test repository::tests::test_stats_empty_database ... ok
[INFO] [stdout] test repository::tests::test_get_tag_by_session ... ok
[INFO] [stdout] test repository::tests::test_stats_single_entry ... ok
[INFO] [stdout] test repository::tests::test_stats_empty_db ... ok
[INFO] [stdout] test risk::tests::test_alias_definition_is_safe ... ok
[INFO] [stdout] test risk::tests::test_all_patterns_compile ... ok
[INFO] [stdout] test risk::tests::test_chaining_double_quote_inside_single_quotes ... ok
[INFO] [stdout] test risk::tests::test_chaining_double_quoted_and_ignored ... ok
[INFO] [stdout] test risk::tests::test_chaining_double_quoted_pipe_ignored ... ok
[INFO] [stdout] test risk::tests::test_chaining_double_quoted_semicolon_ignored ... ok
[INFO] [stdout] test risk::tests::test_chaining_echo_with_quoted_operators_is_safe ... ok
[INFO] [stdout] test risk::tests::test_chaining_echo_with_real_chain_still_detected ... ok
[INFO] [stdout] test risk::tests::test_chaining_escaped_quote_inside_double_quotes ... ok
[INFO] [stdout] test risk::tests::test_chaining_mixed_quoted_and_unquoted ... ok
[INFO] [stdout] test risk::tests::test_chaining_none ... ok
[INFO] [stdout] test risk::tests::test_chaining_single_quote_inside_double_quotes ... ok
[INFO] [stdout] test risk::tests::test_chaining_single_quoted_and_ignored ... ok
[INFO] [stdout] test risk::tests::test_chaining_single_quoted_pipe_ignored ... ok
[INFO] [stdout] test risk::tests::test_chaining_single_quoted_semicolon_ignored ... ok
[INFO] [stdout] test risk::tests::test_chaining_unquoted_and ... ok
[INFO] [stdout] test risk::tests::test_chaining_unquoted_or ... ok
[INFO] [stdout] test risk::tests::test_chaining_unquoted_pipe ... ok
[INFO] [stdout] test risk::tests::test_chaining_unquoted_semicolon ... ok
[INFO] [stdout] test risk::tests::test_comment_is_safe ... ok
[INFO] [stdout] test risk::tests::test_critical_patterns ... ok
[INFO] [stdout] test risk::tests::test_echo_rm_is_safe ... ok
[INFO] [stdout] test risk::tests::test_echo_with_chaining_is_risky ... ok
[INFO] [stdout] test repository::tests::test_recent_entries_with_cwd_boost ... ok
[INFO] [stdout] test risk::tests::test_force_with_lease_is_not_critical ... ok
[INFO] [stdout] test risk::tests::test_highest_risk_wins ... ok
[INFO] [stdout] test risk::tests::test_is_non_executing ... ok
[INFO] [stdout] test risk::tests::test_low_patterns ... ok
[INFO] [stdout] test risk::tests::test_high_patterns ... ok
[INFO] [stdout] test risk::tests::test_medium_patterns ... ok
[INFO] [stdout] test risk::tests::test_package_extraction_cargo ... ok
[INFO] [stdout] test risk::tests::test_package_extraction_none ... ok
[INFO] [stdout] test risk::tests::test_package_extraction_npm ... ok
[INFO] [stdout] test risk::tests::test_package_extraction_npm_with_flags ... ok
[INFO] [stdout] test risk::tests::test_package_extraction_pip ... ok
[INFO] [stdout] test risk::tests::test_safe_patterns ... ok
[INFO] [stdout] test risk::tests::test_session_risk_aggregate ... ok
[INFO] [stdout] test search::render::tests::test_active_filter_count_none ... ok
[INFO] [stdout] test search::render::tests::test_active_filter_count_one_after ... ok
[INFO] [stdout] test search::render::tests::test_active_filter_count_all_five ... ok
[INFO] [stdout] test search::render::tests::test_active_filter_count_one_before ... ok
[INFO] [stdout] test search::render::tests::test_active_filter_count_one_executor ... ok
[INFO] [stdout] test search::render::tests::test_active_filter_count_one_exit_code ... ok
[INFO] [stdout] test search::render::tests::test_active_filter_count_one_tag ... ok
[INFO] [stdout] test search::render::tests::test_active_filter_count_two ... ok
[INFO] [stdout] test search::render::tests::test_build_command_text_bookmarked ... ok
[INFO] [stdout] test search::render::tests::test_build_command_text_no_id ... ok
[INFO] [stdout] test search::render::tests::test_build_command_text_bookmarked_unique_noted ... ok
[INFO] [stdout] test search::render::tests::test_build_command_text_no_id_unique_mode ... ok
[INFO] [stdout] test repository::tests::test_stats_with_period_filter ... ok
[INFO] [stdout] test search::render::tests::test_build_command_text_noted ... ok
[INFO] [stdout] test search::render::tests::test_build_command_text_unique_mode ... ok
[INFO] [stdout] test search::render::tests::test_build_command_text_plain ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_bookmarked_and_noted ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_executor_only_type ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_failed_exit ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_no_executor ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_not_bookmarked_not_noted ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_noted ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_risk_disabled ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_risk_enabled_dangerous ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_risk_enabled_safe ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_session_truncated ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_unknown_exit ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_with_tag ... ok
[INFO] [stdout] test search::render::tests::test_build_table_title_empty ... ok
[INFO] [stdout] test repository::tests::test_stats_with_days_filter ... ok
[INFO] [stdout] test search::render::tests::test_build_table_title_exact_page_boundary ... ok
[INFO] [stdout] test search::render::tests::test_build_table_title_page_two ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_basic ... ok
[INFO] [stdout] test search::render::tests::test_build_detail_lines_bookmarked ... ok
[INFO] [stdout] test search::render::tests::test_build_table_title_single_item ... ok
[INFO] [stdout] test search::render::tests::test_build_table_title_with_items ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_boundary_0_compact ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_boundary_129_semi_compact ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_boundary_u16_max_full ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_boundary_130_full ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_boundary_79_compact ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_boundary_80_semi_compact ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_command_width ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_compact ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_constraints_full ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_constraints_compact ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_constraints_semi_compact ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_full ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_header_compact ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_header_full ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_header_semi_compact ... ok
[INFO] [stdout] test search::render::tests::test_command_col_width_compact_narrow ... ok
[INFO] [stdout] test search::render::tests::test_command_col_width_compact_zero ... ok
[INFO] [stdout] test search::render::tests::test_column_layout_semi_compact ... ok
[INFO] [stdout] test search::render::tests::test_command_col_width_full_exact ... ok
[INFO] [stdout] test search::render::tests::test_command_col_width_full_narrow ... ok
[INFO] [stdout] test search::render::tests::test_entry_row_styles_not_selected ... ok
[INFO] [stdout] test search::render::tests::test_command_col_width_full_one_over ... ok
[INFO] [stdout] test search::render::tests::test_command_col_width_semi_narrow ... ok
[INFO] [stdout] test search::render::tests::test_entry_row_styles_not_selected_not_local ... ok
[INFO] [stdout] test search::render::tests::test_entry_row_styles_selected ... ok
[INFO] [stdout] test search::render::tests::test_entry_row_styles_not_selected_local ... ok
[INFO] [stdout] test search::render::tests::test_entry_row_styles_selected_local ... ok
[INFO] [stdout] test search::render::tests::test_entry_row_styles_selected_not_local ... ok
[INFO] [stdout] test search::render::tests::test_fill_text_empty_string ... ok
[INFO] [stdout] test search::render::tests::test_fill_text_exact_width ... ok
[INFO] [stdout] test search::render::tests::test_fill_text_needs_wrapping ... ok
[INFO] [stdout] test search::render::tests::test_fill_text_shorter_than_width ... ok
[INFO] [stdout] test search::render::tests::test_fill_text_single_long_word ... ok
[INFO] [stdout] test search::render::tests::test_fill_text_width_zero ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_agent ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_bot ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_ci ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_human ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_programmatic ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_ide ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_none ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_unknown_type_with_executor ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_127_command_not_found ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_130_sigint ... ok
[INFO] [stdout] test search::render::tests::test_format_executor_unknown_type_no_executor ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_137_sigkill ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_failure ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_failure_style_uses_error_color ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_none ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_none_style_uses_muted_color ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_success ... ok
[INFO] [stdout] test search::render::tests::test_format_exit_code_success_style_uses_success_color ... ok
[INFO] [stdout] test search::tests::test_active_filter_count ... ok
[INFO] [stdout] test search::tests::test_combined_sort_cwd_beats_human ... ok
[INFO] [stdout] test search::tests::test_combined_sort_cwd_first ... ok
[INFO] [stdout] test search::tests::test_combined_sort_empty ... ok
[INFO] [stdout] test search::tests::test_combined_sort_no_context_human_only ... ok
[INFO] [stdout] test search::tests::test_ctrl_b_nothing_selected ... ok
[INFO] [stdout] test search::tests::test_combined_sort_human_first ... ok
[INFO] [stdout] test search::tests::test_ctrl_b_toggles_bookmark ... ok
[INFO] [stdout] test search::tests::test_ctrl_n_no_entry_id ... ok
[INFO] [stdout] test search::tests::test_ctrl_d_no_entry_id ... ok
[INFO] [stdout] test search::tests::test_ctrl_g_opens_goto_dialog ... ok
[INFO] [stdout] test search::tests::test_ctrl_l_toggles_cwd_filter ... ok
[INFO] [stdout] test search::tests::test_ctrl_t_opens_tag_dialog_empty_tags ... ok
[INFO] [stdout] test search::tests::test_ctrl_n_opens_note_dialog ... ok
[INFO] [stdout] test search::tests::test_ctrl_s_toggles_context_boost ... ok
[INFO] [stdout] test search::tests::test_ctrl_y_copies_selected_command ... ok
[INFO] [stdout] test search::tests::test_delete_dialog_enter_confirms ... ok
[INFO] [stdout] test search::tests::test_ctrl_y_nothing_selected ... ok
[INFO] [stdout] test search::tests::test_delete_dialog_esc_cancels ... ok
[INFO] [stdout] test search::tests::test_dialog_routing_delete ... ok
[INFO] [stdout] test search::tests::test_delete_dialog_other_key_ignored ... ok
[INFO] [stdout] test search::tests::test_ctrl_t_opens_tag_dialog_with_tags ... ok
[INFO] [stdout] test search::tests::test_dialog_routing_filter ... ok
[INFO] [stdout] test search::tests::test_dialog_routing_note ... ok
[INFO] [stdout] test repository::tests::test_tag_lifecycle ... ok
[INFO] [stdout] test repository::tests::test_transaction_guard_recommit ... ok
[INFO] [stdout] test repository::tests::test_top_sessions_empty_database ... ok
[INFO] [stdout] test search::tests::test_dialog_routing_tag ... ok
[INFO] [stdout] test search::tests::test_down_selects_first_when_none_selected ... ok
[INFO] [stdout] test repository::tests::test_stats_with_entries ... ok
[INFO] [stdout] test repository::tests::test_transaction_guard_rollback_on_drop ... ok
[INFO] [stdout] test search::tests::test_dialog_routing_goto ... ok
[INFO] [stdout] test search::tests::test_enter_with_no_selection_continues ... ok
[INFO] [stdout] test search::tests::test_filter_backspace_each_field ... ok
[INFO] [stdout] test search::tests::test_filter_enter_invalid_exit_code ... ok
[INFO] [stdout] test search::tests::test_filter_backtab_cycles_focus_backward ... ok
[INFO] [stdout] test search::tests::test_filter_enter_unknown_tag_name ... ok
[INFO] [stdout] test search::tests::test_filter_esc_closes ... ok
[INFO] [stdout] test search::tests::test_filter_enter_applies_executor ... ok
[INFO] [stdout] test search::tests::test_filter_enter_applies_exit_code ... ok
[INFO] [stdout] test search::tests::test_filter_enter_clears_empty_fields ... ok
[INFO] [stdout] test search::tests::test_filter_enter_executor_all ... ok
[INFO] [stdout] test search::tests::test_filter_other_key_ignored ... ok
[INFO] [stdout] test search::tests::test_filter_enter_resolves_tag_name ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_empty_query ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_cwd_boost ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_filters_irrelevant ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_cwd_boost_zero ... ok
[INFO] [stdout] test search::tests::test_filter_typing_each_field ... ok
[INFO] [stdout] test search::tests::test_filter_tab_cycles_focus_forward ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_custom_length_threshold ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_length_penalty ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_high_boost ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_no_match ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_single_char ... ok
[INFO] [stdout] test search::tests::test_get_selected_entry ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_human_boost ... ok
[INFO] [stdout] test search::tests::test_get_selected_entry_out_of_bounds ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_human_boost_zero ... ok
[INFO] [stdout] test search::tests::test_fuzzy_score_ranking ... ok
[INFO] [stdout] test search::tests::test_goto_dialog_esc_closes ... ok
[INFO] [stdout] test search::tests::test_goto_dialog_non_digit_ignored ... ok
[INFO] [stdout] test search::tests::test_goto_dialog_backspace ... ok
[INFO] [stdout] test search::tests::test_handle_input_backspace_reloads ... ok
[INFO] [stdout] test search::tests::test_handle_input_ctrl_u_toggles_unique ... ok
[INFO] [stdout] test search::tests::test_handle_input_ctrl_f_opens_filter ... ok
[INFO] [stdout] test search::tests::test_goto_dialog_clamps_to_max_page ... ok
[INFO] [stdout] test search::tests::test_goto_dialog_empty_enter_continues ... ok
[INFO] [stdout] test search::tests::test_handle_input_delete_dialog_no ... ok
[INFO] [stdout] test search::tests::test_handle_input_char_reloads ... ok
[INFO] [stdout] test search::tests::test_handle_input_delete_dialog_yes ... ok
[INFO] [stdout] test search::tests::test_handle_input_enter_selects ... ok
[INFO] [stdout] test search::tests::test_handle_input_escape_exits ... ok
[INFO] [stdout] test search::tests::test_goto_dialog_clamps_to_min_page ... ok
[INFO] [stdout] test search::tests::test_handle_input_filter_enter ... ok
[INFO] [stdout] test search::tests::test_handle_input_left_right_pages ... ok
[INFO] [stdout] test search::tests::test_handle_input_up_down_navigation ... ok
[INFO] [stdout] test search::tests::test_note_dialog_backspace ... ok
[INFO] [stdout] test search::tests::test_handle_input_goto_enter ... ok
[INFO] [stdout] test search::tests::test_handle_input_tab_toggles_detail ... ok
[INFO] [stdout] test search::tests::test_note_dialog_enter_empty_deletes ... ok
[INFO] [stdout] test search::tests::test_note_dialog_enter_with_text_saves ... ok
[INFO] [stdout] test search::tests::test_note_dialog_other_key_ignored ... ok
[INFO] [stdout] test search::tests::test_note_dialog_esc_closes ... ok
[INFO] [stdout] test search::tests::test_note_dialog_typing ... ok
[INFO] [stdout] test search::tests::test_pagination_logic ... ok
[INFO] [stdout] test search::tests::test_paste_in_help_dialog_ignored ... ok
[INFO] [stdout] test search::tests::test_paste_in_delete_dialog_ignored ... ok
[INFO] [stdout] test search::tests::test_paste_appends_to_existing_query ... ok
[INFO] [stdout] test search::tests::test_paste_empty_string ... ok
[INFO] [stdout] test search::tests::test_paste_in_vim_normal_mode_switches_to_insert ... ok
[INFO] [stdout] test search::tests::test_paste_into_empty_query ... ok
[INFO] [stdout] test search::tests::test_paste_into_filter_executor_selector_ignored ... ok
[INFO] [stdout] test search::tests::test_paste_into_filter_end_date ... ok
[INFO] [stdout] test search::tests::test_paste_into_filter_exit_code ... ok
[INFO] [stdout] test search::tests::test_paste_into_filter_tag ... ok
[INFO] [stdout] test search::tests::test_paste_into_filter_start_date ... ok
[INFO] [stdout] test search::tests::test_paste_only_control_chars ... ok
[INFO] [stdout] test search::tests::test_paste_into_note_dialog ... ok
[INFO] [stdout] test search::tests::test_paste_into_goto_dialog_digits_only ... ok
[INFO] [stdout] test search::tests::test_paste_preserves_spaces ... ok
[INFO] [stdout] test search::tests::test_right_at_last_page_continues ... ok
[INFO] [stdout] test search::tests::test_search_app_initialization ... ok
[INFO] [stdout] test search::tests::test_paste_respects_max_input_len ... ok
[INFO] [stdout] test search::tests::test_tag_dialog_down_when_none_selected ... ok
[INFO] [stdout] test search::tests::test_paste_strips_control_characters ... ok
[INFO] [stdout] test search::tests::test_paste_unicode ... ok
[INFO] [stdout] test search::tests::test_tag_dialog_enter_associates_session ... ok
[INFO] [stdout] test search::tests::test_tag_dialog_navigation ... ok
[INFO] [stdout] test search::tests::test_tag_dialog_enter_no_selection_closes ... ok
[INFO] [stdout] test search::tests::test_unknown_key_continues ... ok
[INFO] [stdout] test search::tests::test_vim_ctrl_d_clamps_at_bottom ... ok
[INFO] [stdout] test search::tests::test_vim_ctrl_u_clamps_at_top ... ok
[INFO] [stdout] test search::tests::test_paste_respects_remaining_capacity ... ok
[INFO] [stdout] test search::tests::test_vim_esc_quits_in_normal_mode ... ok
[INFO] [stdout] test search::tests::test_vim_disabled_esc_still_exits ... ok
[INFO] [stdout] test search::tests::test_vim_ctrl_u_scrolls_up ... ok
[INFO] [stdout] test search::tests::test_vim_g_jumps_to_top ... ok
[INFO] [stdout] test search::tests::test_unknown_ctrl_key_ignored ... ok
[INFO] [stdout] test search::tests::test_tag_dialog_other_key_ignored ... ok
[INFO] [stdout] test search::tests::test_vim_ctrl_d_scrolls_down ... ok
[INFO] [stdout] test search::tests::test_vim_esc_switches_to_normal ... ok
[INFO] [stdout] test search::tests::test_vim_enter_selects_in_normal_mode ... ok
[INFO] [stdout] test search::tests::test_vim_i_switches_to_insert ... ok
[INFO] [stdout] test search::tests::test_vim_j_clamps_at_bottom ... ok
[INFO] [stdout] test search::tests::test_vim_k_navigates_up ... ok
[INFO] [stdout] test search::tests::test_vim_h_prev_page ... ok
[INFO] [stdout] test search::tests::test_vim_j_navigates_down ... ok
[INFO] [stdout] test search::tests::test_vim_shift_g_jumps_to_bottom ... ok
[INFO] [stdout] test search::tests::test_vim_k_clamps_at_top ... ok
[INFO] [stdout] test search::tests::test_vim_slash_switches_to_insert ... ok
[INFO] [stdout] test search::tests::test_vim_mode_roundtrip ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_query ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_filtering_by_tag ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_reexecution ... ok
[INFO] [stdout] test search::tests::test_vim_tab_toggles_detail_in_normal_mode ... ok
[INFO] [stdout] test search::tests::test_vim_typing_works_in_insert_mode ... ok
[INFO] [stdout] test session_ui::picker::tests::active_filter_count_works ... ok
[INFO] [stdout] test session_ui::picker::tests::clear_filters_resets_all ... ok
[INFO] [stdout] test session_ui::picker::tests::filter_after_date_narrows_results ... ok
[INFO] [stdout] test search::tests::test_vim_l_next_page ... ok
[INFO] [stdout] test session_ui::picker::tests::filter_date_range_overlap ... ok
[INFO] [stdout] test search::tests::test_vim_typing_does_not_work_in_normal_mode ... ok
[INFO] [stdout] test session_ui::picker::tests::new_empty_sessions_no_selection ... ok
[INFO] [stdout] test session_ui::picker::tests::filter_before_date_narrows_results ... ok
[INFO] [stdout] test session_ui::picker::tests::filter_tag_narrows_results ... ok
[INFO] [stdout] test search::tests::test_vim_q_quits_in_normal_mode ... ok
[INFO] [stdout] test search::tests::test_vim_mode_defaults_to_insert ... ok
[INFO] [stdout] test repository::tests::test_vacuum ... ok
[INFO] [stdout] test session_ui::picker::tests::new_with_sessions_selects_first ... ok
[INFO] [stdout] test session_ui::picker::tests::next_wraps_around ... ok
[INFO] [stdout] test session_ui::picker::tests::next_on_empty_does_nothing ... ok
[INFO] [stdout] test session_ui::picker::tests::selected_session_id_returns_correct ... ok
[INFO] [stdout] test session_ui::picker::tests::prev_on_empty_does_nothing ... ok
[INFO] [stdout] test session_ui::timeline::tests::build_timeline_empty_entries ... ok
[INFO] [stdout] test session_ui::picker::tests::prev_single_element_stays ... ok
[INFO] [stdout] test session_ui::picker::tests::prev_wraps_around ... ok
[INFO] [stdout] test session_ui::picker::tests::search_and_filter_combine ... ok
[INFO] [stdout] test session_ui::picker::tests::search_empty_shows_all ... ok
[INFO] [stdout] test session_ui::picker::tests::search_filters_by_session_id ... ok
[INFO] [stdout] test session_ui::picker::tests::search_filters_by_tag ... ok
[INFO] [stdout] test session_ui::picker::tests::next_single_element_stays ... ok
[INFO] [stdout] test session_ui::timeline::tests::build_timeline_gap_duration_correct ... ok
[INFO] [stdout] test session_ui::picker::tests::selected_session_id_empty ... ok
[INFO] [stdout] test session_ui::timeline::tests::build_timeline_inserts_gap_above_threshold ... ok
[INFO] [stdout] test session_ui::timeline::tests::build_timeline_no_gap_below_threshold ... ok
[INFO] [stdout] test session_ui::timeline::tests::handle_input_end_goes_to_last_page ... ok
[INFO] [stdout] test session_ui::timeline::tests::handle_input_esc_returns_false ... ok
[INFO] [stdout] test session_ui::timeline::tests::handle_input_g_resets_to_page_one ... ok
[INFO] [stdout] test session_ui::timeline::tests::handle_input_j_moves_down ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_pagination_and_query ... ok
[INFO] [stdout] test session_ui::timeline::tests::handle_input_k_moves_up ... ok
[INFO] [stdout] test session_ui::timeline::tests::move_down_advances_selection ... ok
[INFO] [stdout] test session_ui::timeline::tests::page_slice_empty ... ok
[INFO] [stdout] test session_ui::timeline::tests::move_up_at_zero_stays ... ok
[INFO] [stdout] test session_ui::timeline::tests::selected_entry_empty ... ok
[INFO] [stdout] test settings_ui::tests::test_add_exclusion_pattern ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_add_flow ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_esc_cancels_add ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_backspace ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_executor_type_cycling ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_name_validation ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_tab_toggles_focus ... ok
[INFO] [stdout] test session_ui::timeline::tests::build_timeline_saturating_sub_no_underflow ... ok
[INFO] [stdout] test session_ui::timeline::tests::build_timeline_single_entry ... ok
[INFO] [stdout] test settings_ui::tests::test_auto_tag_add_flow ... ok
[INFO] [stdout] test settings_ui::tests::test_app_state_navigation ... ok
[INFO] [stdout] test session_ui::timeline::tests::handle_input_q_returns_false ... ok
[INFO] [stdout] test session_ui::timeline::tests::handle_input_tab_toggles_detail ... ok
[INFO] [stdout] test session_ui::timeline::tests::selected_entry_with_entries ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_item_navigation ... ok
[INFO] [stdout] test session_ui::timeline::tests::total_pages_empty ... ok
[INFO] [stdout] test session_ui::timeline::tests::total_pages_one_page ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_delete_flow ... ok
[INFO] [stdout] test settings_ui::tests::test_agent_empty_fields_rejected ... ok
[INFO] [stdout] test settings_ui::tests::test_auto_tag_delete_flow ... ok
[INFO] [stdout] test settings_ui::tests::test_auto_tag_empty_fields_rejected ... ok
[INFO] [stdout] test settings_ui::tests::test_auto_tag_esc_cancels_add ... ok
[INFO] [stdout] test settings_ui::tests::test_auto_tag_item_navigation ... ok
[INFO] [stdout] test settings_ui::tests::test_backspace_in_editing_mode ... ok
[INFO] [stdout] test settings_ui::tests::test_auto_tag_tab_toggles_focus ... ok
[INFO] [stdout] test settings_ui::tests::test_confirm_quit_save_discard ... ok
[INFO] [stdout] test settings_ui::tests::test_edit_page_limit_clamps ... ok
[INFO] [stdout] test settings_ui::tests::test_edit_page_limit_via_handle_input ... ok
[INFO] [stdout] test settings_ui::tests::test_escape_from_editing ... ok
[INFO] [stdout] test settings_ui::tests::test_exclusion_add_esc_cancels ... ok
[INFO] [stdout] test settings_ui::tests::test_exclusion_item_navigation ... ok
[INFO] [stdout] test settings_ui::tests::test_exclusion_delete_empties_list ... ok
[INFO] [stdout] test settings_ui::tests::test_auto_tag_backspace_path_field ... ok
[INFO] [stdout] test settings_ui::tests::test_exclusion_delete_last_adjusts_selected ... ok
[INFO] [stdout] test settings_ui::tests::test_handle_input_enter_space_toggle_bool ... ok
[INFO] [stdout] test settings_ui::tests::test_auto_tag_backspace_tag_field ... ok
[INFO] [stdout] test settings_ui::tests::test_handle_input_q_dirty_enters_confirm_quit ... ok
[INFO] [stdout] test settings_ui::tests::test_exclusion_delete_middle_item ... ok
[INFO] [stdout] test settings_ui::tests::test_confirm_quit_y_save_attempt ... ok
[INFO] [stdout] test settings_ui::tests::test_handle_input_q_not_dirty_quits ... ok
[INFO] [stdout] test settings_ui::tests::test_handle_input_s_attempts_save ... ok
[INFO] [stdout] test settings_ui::tests::test_confirm_quit_esc_cancels ... ok
[INFO] [stdout] test settings_ui::tests::test_handle_input_via_key_events ... ok
[INFO] [stdout] test settings_ui::tests::test_initial_state ... ok
[INFO] [stdout] test settings_ui::tests::test_input_buffer_length_limit ... ok
[INFO] [stdout] test settings_ui::tests::test_item_navigation_empty_tab ... ok
[INFO] [stdout] test settings_ui::tests::test_item_selection_prev_wraps ... ok
[INFO] [stdout] test settings_ui::tests::test_mcp_tab_edit_default_days ... ok
[INFO] [stdout] test settings_ui::tests::test_mcp_tab_edit_default_limit ... ok
[INFO] [stdout] test settings_ui::tests::test_mcp_tab_item_count ... ok
[INFO] [stdout] test settings_ui::tests::test_mcp_tab_toggle_resource ... ok
[INFO] [stdout] test settings_ui::tests::test_mcp_tab_toggle_tool ... ok
[INFO] [stdout] test settings_ui::tests::test_multiple_exclusion_adds ... ok
[INFO] [stdout] test settings_ui::tests::test_prev_tab_navigation ... ok
[INFO] [stdout] test settings_ui::tests::test_remove_exclusion_pattern ... ok
[INFO] [stdout] test settings_ui::tests::test_tab_navigation_resets_selected_item ... ok
[INFO] [stdout] test settings_ui::tests::test_theme_cycle_in_settings ... ok
[INFO] [stdout] test settings_ui::tests::test_toggle_all_search_bools ... ok
[INFO] [stdout] test settings_ui::tests::test_toggle_bool ... ok
[INFO] [stdout] test settings_ui::tests::test_toggle_show_risk_in_search ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_alias_no_match_stays ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_descending_order ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_empty ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_empty_string_commands ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_multiple_programs ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_single_program ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_single_word_command ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_whitespace_only_commands ... ok
[INFO] [stdout] test stats_ui::tests::compute_program_groups_with_alias_map ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_boundary_26_percent ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_low ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_negative_count ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_zero_count ... ok
[INFO] [stdout] test stats_ui::tests::month_abbrev_all_months ... ok
[INFO] [stdout] test stats_ui::tests::month_abbrev_out_of_range ... ok
[INFO] [stdout] test stats_ui::tests::parse_type_output_bash_format ... ok
[INFO] [stdout] test stats_ui::tests::parse_type_output_empty ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_count_one_max_one ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_equal_count_and_max ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_exact_boundaries ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_high ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_large_values ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_medium_high ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_medium_low ... ok
[INFO] [stdout] test stats_ui::tests::intensity_level_zero_max ... ok
[INFO] [stdout] test stats_ui::tests::parse_type_output_non_alias_lines_ignored ... ok
[INFO] [stdout] test stats_ui::tests::test_focus_next_cycle ... ok
[INFO] [stdout] test stats_ui::tests::parse_type_output_zsh_format ... ok
[INFO] [stdout] test stats_ui::tests::test_focus_prev_cycle ... ok
[INFO] [stdout] test stats_ui::tests::test_heatmap_colors_ascending_intensity ... ok
[INFO] [stdout] test stats_ui::tests::test_heatmap_colors_matches_theme ... ok
[INFO] [stdout] test stats_ui::tests::test_heatmap_colors_returns_five_elements ... ok
[INFO] [stdout] test repository::tests::test_unique_entries_recency_priority ... ok
[INFO] [stdout] test stats_ui::tests::test_period_days ... ok
[INFO] [stdout] test stats_ui::tests::test_period_heatmap_days ... ok
[INFO] [stdout] test stats_ui::tests::test_period_labels ... ok
[INFO] [stdout] test stats_ui::tests::test_period_mapping_boundary_values ... ok
[INFO] [stdout] test stats_ui::tests::test_period_mapping_from_initial_days ... ok
[INFO] [stdout] test stats_ui::tests::test_build_daily_counts ... ok
[INFO] [stdout] test repository::tests::test_tag_limits_and_constraints ... ok
[INFO] [stdout] test stats_ui::tests::test_build_daily_counts_all_periods ... ok
[INFO] [stdout] test stats_ui::tests::test_handle_input_function_key_no_state_change ... ok
[INFO] [stdout] test stats_ui::tests::test_build_daily_counts_with_data ... ok
[INFO] [stdout] test stats_ui::tests::test_reload_empty_repo_no_selection ... ok
[INFO] [stdout] test stats_ui::tests::test_handle_input_backtab_from_hourly ... ok
[INFO] [stdout] test stats_ui::tests::test_handle_input_backtab_from_top_dirs ... ok
[INFO] [stdout] test stats_ui::tests::test_handle_input_unknown_key_no_state_change ... ok
[INFO] [stdout] test stats_ui::tests::test_period_mapping_via_stats_app_new ... ok
[INFO] [stdout] test stats_ui::tests::test_move_selection_up_at_zero_top_programs ... ok
[INFO] [stdout] test stats_ui::tests::test_success_rate_boundary_69 ... ok
[INFO] [stdout] test stats_ui::tests::test_success_rate_boundary_exactly_70 ... ok
[INFO] [stdout] test stats_ui::tests::test_success_rate_boundary_exactly_90 ... ok
[INFO] [stdout] test stats_ui::tests::test_success_rate_calculation_error_zone ... ok
[INFO] [stdout] test stats_ui::tests::test_success_rate_calculation_high ... ok
[INFO] [stdout] test stats_ui::tests::test_success_rate_calculation_warning_zone ... ok
[INFO] [stdout] test stats_ui::tests::test_success_rate_zero_total ... ok
[INFO] [stdout] test suggest::tests::test_generate_alias_name ... ok
[INFO] [stdout] test stats_ui::tests::test_move_selection_down_clamps_top_commands ... ok
[INFO] [stdout] test suggest::tests::test_generate_alias_name_all_collisions ... ok
[INFO] [stdout] test suggest::tests::test_generate_alias_name_collision ... ok
[INFO] [stdout] test suggest::tests::test_generate_alias_name_high_suffix ... ok
[INFO] [stdout] test suggest::tests::test_generate_alias_name_single_word ... ok
[INFO] [stdout] test suggest::tests::test_parse_alias_output_bash ... ok
[INFO] [stdout] test suggest::tests::test_parse_alias_output_mixed_quotes ... ok
[INFO] [stdout] test suggest::tests::test_parse_alias_output_zsh ... ok
[INFO] [stdout] test suggest::tests::test_shell_quote_empty ... ok
[INFO] [stdout] test suggest::tests::test_shell_quote_special_chars ... ok
[INFO] [stdout] test suggest::tests::test_shell_quote_plain ... ok
[INFO] [stdout] test suggest::tests::test_shell_quote_with_single_quotes ... ok
[INFO] [stdout] test suggest_ui::tests::deselect_all ... ok
[INFO] [stdout] test suggest_ui::tests::edit_mode_backspace ... ok
[INFO] [stdout] test suggest_ui::tests::edit_mode_esc_cancels ... ok
[INFO] [stdout] test suggest_ui::tests::edit_mode_rejects_invalid_chars ... ok
[INFO] [stdout] test stats_ui::tests::test_move_selection_down_clamps_top_programs ... ok
[INFO] [stdout] test suggest_ui::tests::edit_mode_typing_and_confirm ... ok
[INFO] [stdout] test suggest_ui::tests::handle_input_a_selects_all ... ok
[INFO] [stdout] test suggest_ui::tests::handle_input_confirm_enter ... ok
[INFO] [stdout] test suggest_ui::tests::handle_input_e_enters_edit_mode ... ok
[INFO] [stdout] test suggest_ui::tests::handle_input_n_deselects_all ... ok
[INFO] [stdout] test suggest_ui::tests::handle_input_quit_esc ... ok
[INFO] [stdout] test suggest_ui::tests::handle_input_quit_q ... ok
[INFO] [stdout] test suggest_ui::tests::handle_input_space_toggles ... ok
[INFO] [stdout] test suggest_ui::tests::new_state_empty_suggestions ... ok
[INFO] [stdout] test suggest_ui::tests::new_state_selects_first ... ok
[INFO] [stdout] test suggest_ui::tests::next_on_empty_is_noop ... ok
[INFO] [stdout] test suggest_ui::tests::next_wraps_around ... ok
[INFO] [stdout] test suggest_ui::tests::prev_on_empty_is_noop ... ok
[INFO] [stdout] test suggest_ui::tests::prev_wraps_around ... ok
[INFO] [stdout] test suggest_ui::tests::toggle_selected ... ok
[INFO] [stdout] test suggest_ui::tests::select_all ... ok
[INFO] [stdout] test tests::pause_is_user_facing ... ok
[INFO] [stdout] test tests::internal_commands_are_not_user_facing ... ok
[INFO] [stdout] test stats_ui::tests::test_handle_input_backtab_full_cycle ... ok
[INFO] [stdout] test tests::stats_is_user_facing ... ok
[INFO] [stdout] test tests::search_is_user_facing ... ok
[INFO] [stdout] test tests::pause_outputs_export_line ... ok
[INFO] [stdout] test tests::user_facing_commands_are_detected ... ok
[INFO] [stdout] test theme::tests::test_dark_theme_colors ... ok
[INFO] [stdout] test suggest_ui::tests::handle_input_navigation ... ok
[INFO] [stdout] test theme::tests::test_light_theme_colors ... ok
[INFO] [stdout] test theme::tests::test_terminal_theme_uses_ansi ... ok
[INFO] [stdout] test tests::version_command_succeeds ... ok
[INFO] [stdout] test theme::tests::test_theme_name_default ... ok
[INFO] [stdout] test theme::tests::test_theme_index ... ok
[INFO] [stdout] test theme::tests::test_theme_name_cycle ... ok
[INFO] [stdout] test theme::tests::test_theme_name_display ... ok
[INFO] [stdout] test update::tests::checksum_extraction_handles_empty_output ... ok
[INFO] [stdout] test update::tests::checksum_mismatch_detected ... ok
[INFO] [stdout] test theme::tests::test_theme_name_serde_roundtrip ... ok
[INFO] [stdout] test update::tests::checksum_extracted_from_sha256sum_output ... ok
[INFO] [stdout] test update::tests::checksum_extraction_handles_shasum_format ... ok
[INFO] [stdout] test update::tests::logo_constant_is_not_empty ... ok
[INFO] [stdout] test update::tests::matching_checksum_accepted ... ok
[INFO] [stdout] test update::tests::github_releases_url_is_https ... ok
[INFO] [stdout] test update::tests::empty_checksum_rejected ... ok
[INFO] [stdout] test update::tests::release_notes_items_extracted ... ok
[INFO] [stdout] test update::tests::path_traversal_detected_outside_dir ... ok
[INFO] [stdout] test update::tests::path_within_dir_is_accepted ... ok
[INFO] [stdout] test update::tests::release_notes_section_headers_detected ... ok
[INFO] [stdout] test update::tests::test_embedded_public_key_parses ... ok
[INFO] [stdout] test update::tests::test_is_not_cargo_install ... ok
[INFO] [stdout] test update::tests::test_invalid_public_key_errors ... ok
[INFO] [stdout] test update::tests::test_invalid_signature_format_errors ... ok
[INFO] [stdout] test update::tests::version_url_is_https ... ok
[INFO] [stdout] test update::tests::test_is_not_homebrew_install ... ok
[INFO] [stdout] test update::tests::test_valid_public_key_parses ... ok
[INFO] [stdout] test update::tests::test_signature_verification_rejects_wrong_key ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_no_file ... ok
[INFO] [stdout] test stats_ui::tests::test_move_selection_down_clamps_top_dirs ... ok
[INFO] [stdout] test stats_ui::tests::test_move_selection_up_at_zero_top_dirs ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_no_hooks_key ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_no_suvadu_line ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_preserves_other_hooks ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_removes_both_hook_types ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_file_missing ... ok
[INFO] [stdout] test util::format::tests::test_format_count ... ok
[INFO] [stdout] test util::format::tests::test_dirs_home ... ok
[INFO] [stdout] test util::format::tests::test_format_duration_ms ... ok
[INFO] [stdout] test util::format::tests::test_shorten_path ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_emoji ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_exact ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_short ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_start_short ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_start_truncated ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_start_unicode ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_tiny_max ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_truncated ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_removes_suvadu_line ... ok
[INFO] [stdout] test stats_ui::tests::test_reload_resets_table_selections_with_data ... ok
[INFO] [stdout] test util::format::tests::test_truncate_str_unicode ... ok
[INFO] [stdout] test util::tests::test_resolve_auto_tag ... ok
[INFO] [stdout] test util::timestamp::tests::test_parse_relative_days ... ok
[INFO] [stdout] test util::timestamp::tests::test_parse_date_iso ... ok
[INFO] [stdout] test util::timestamp::tests::test_parse_keywords ... ok
[INFO] [stdout] test util::timestamp::tests::test_parse_relative_invalid ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_only_matches_exact_shell ... ok
[INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_removes_suvadu_hook ... ok
[INFO] [stdout] test stats_ui::tests::test_reload_via_period_change_resets_selections ... ok
[INFO] [stdout] test util::exclusion::tests::test_is_excluded ... ok
[INFO] [stdout] test stats_ui::tests::test_stats_app_focus_via_handle_input ... ok
[INFO] [stdout] test stats_ui::tests::test_stats_app_initial_state ... ok
[INFO] [stdout] test stats_ui::tests::test_stats_app_selection_on_different_panels ... ok
[INFO] [stdout] test stats_ui::tests::test_stats_app_with_tag ... ok
[INFO] [stdout] test stats_ui::tests::test_stats_app_period_change ... ok
[INFO] [stdout] test stats_ui::tests::test_stats_app_quit ... ok
[INFO] [stdout] test stats_ui::tests::test_stats_app_selection_movement ... ok
[INFO] [stdout] test stats_ui::tests::test_stats_app_toggle_executor ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1032 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.31s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-45f57e6454cd3f3b)
[INFO] [stdout] 
[INFO] [stdout] running 17 tests
[INFO] [stdout] test test_export_import_preserves_fields ... ok
[INFO] [stdout] test test_add_search_roundtrip ... ok
[INFO] [stdout] test test_foreign_keys_cascade ... ok
[INFO] [stdout] test test_daily_activity ... ok
[INFO] [stdout] test test_transaction_rollback_on_drop ... ok
[INFO] [stdout] test test_stats_aggregation ... ok
[INFO] [stdout] test test_session_management ... ok
[INFO] [stdout] test test_regex_delete_and_count ... ok
[INFO] [stdout] test test_gc_cleans_orphans ... ok
[INFO] [stdout] test test_delete_with_pattern ... ok
[INFO] [stdout] test test_tag_lifecycle ... ok
[INFO] [stdout] test test_filtered_queries ... ok
[INFO] [stdout] test test_bookmark_note_alias_cross_feature ... ok
[INFO] [stdout] test test_schema_migration_idempotent ... ok
[INFO] [stdout] test test_unique_entries ... ok
[INFO] [stdout] test test_export_import_roundtrip ... ok
[INFO] [stdout] test test_concurrent_writes ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests suvadu
[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" "f1fae610c4012a5352e7947ffd32676f0128826124c5bb2df3feb04c2e699a0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f1fae610c4012a5352e7947ffd32676f0128826124c5bb2df3feb04c2e699a0c", kill_on_drop: false }`
[INFO] [stdout] f1fae610c4012a5352e7947ffd32676f0128826124c5bb2df3feb04c2e699a0c
