[INFO] cloning repository https://github.com/AppachiTech/suvadu [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AppachiTech/suvadu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAppachiTech%2Fsuvadu", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAppachiTech%2Fsuvadu'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0d79cd4aefd51863b112c9d3479cc8451d273b88 [INFO] testing AppachiTech/suvadu against master#562dee4820c458d823175268e41601d4c060588a for pr-154210 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAppachiTech%2Fsuvadu" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/AppachiTech/suvadu [INFO] finished tweaking git repo https://github.com/AppachiTech/suvadu [INFO] tweaked toml for git repo https://github.com/AppachiTech/suvadu written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/AppachiTech/suvadu on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/AppachiTech/suvadu 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" "+562dee4820c458d823175268e41601d4c060588a" "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 roff v0.2.2 [INFO] [stderr] Downloaded minisign-verify v0.2.5 [INFO] [stderr] Downloaded nucleo-matcher v0.3.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b13af5fc3ab6a226584af1fe9b44008d27cf037d818b2a3e0799b08891eb15da [INFO] running `Command { std: "docker" "start" "-a" "b13af5fc3ab6a226584af1fe9b44008d27cf037d818b2a3e0799b08891eb15da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b13af5fc3ab6a226584af1fe9b44008d27cf037d818b2a3e0799b08891eb15da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b13af5fc3ab6a226584af1fe9b44008d27cf037d818b2a3e0799b08891eb15da", kill_on_drop: false }` [INFO] [stdout] b13af5fc3ab6a226584af1fe9b44008d27cf037d818b2a3e0799b08891eb15da [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a285bcb95d983907658c4aa2475c4745b12a8e1c6a74a9fb8f29b876bb41053b [INFO] running `Command { std: "docker" "start" "-a" "a285bcb95d983907658c4aa2475c4745b12a8e1c6a74a9fb8f29b876bb41053b", kill_on_drop: false }` [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling compact_str v0.9.0 [INFO] [stderr] Compiling unicode-truncate v2.0.1 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling getrandom v0.4.2 [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 flate2 v1.1.9 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling clap_builder v4.5.60 [INFO] [stderr] Compiling pxfm v0.1.28 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling x11rb-protocol v0.13.2 [INFO] [stderr] Compiling bytemuck v1.25.0 [INFO] [stderr] Compiling lru v0.16.3 [INFO] [stderr] Compiling png v0.18.1 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling hashlink v0.11.0 [INFO] [stderr] Compiling serde_spanned v1.0.4 [INFO] [stderr] Compiling toml_datetime v1.0.0+spec-1.1.0 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling toml_writer v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling roff v0.2.2 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling directories v6.0.0 [INFO] [stderr] Compiling serde_json v1.0.149 [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 libsqlite3-sys v0.36.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling suvadu v0.2.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling toml_parser v1.0.9+spec-1.1.0 [INFO] [stderr] Compiling moxcms v0.7.11 [INFO] [stderr] Compiling toml v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling darling_core v0.23.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 regex v1.12.3 [INFO] [stderr] Compiling derive_more v2.1.1 [INFO] [stderr] Compiling kasuari v0.4.11 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling clap_complete v4.5.66 [INFO] [stderr] Compiling clap_mangen v0.2.31 [INFO] [stderr] Compiling gethostname v1.1.0 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling x11rb v0.13.2 [INFO] [stderr] Compiling tempfile v3.26.0 [INFO] [stderr] Compiling strum v0.27.2 [INFO] [stderr] Compiling ratatui-core v0.1.0 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling ratatui-widgets v0.3.0 [INFO] [stderr] Compiling ratatui-crossterm v0.1.0 [INFO] [stderr] Compiling ratatui-macros v0.7.0 [INFO] [stderr] Compiling ratatui v0.30.0 [INFO] [stderr] Compiling image v0.25.9 [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 04s [INFO] running `Command { std: "docker" "inspect" "a285bcb95d983907658c4aa2475c4745b12a8e1c6a74a9fb8f29b876bb41053b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a285bcb95d983907658c4aa2475c4745b12a8e1c6a74a9fb8f29b876bb41053b", kill_on_drop: false }` [INFO] [stdout] a285bcb95d983907658c4aa2475c4745b12a8e1c6a74a9fb8f29b876bb41053b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f89af537216212856e6560a475542ed0b3378e4e6261794c2e4a4d8f148dc2a7 [INFO] running `Command { std: "docker" "start" "-a" "f89af537216212856e6560a475542ed0b3378e4e6261794c2e4a4d8f148dc2a7", kill_on_drop: false }` [INFO] [stderr] Compiling suvadu v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `crossterm::event::KeyEvent` [INFO] [stdout] --> src/agent_ui/dashboard.rs:939:9 [INFO] [stdout] | [INFO] [stdout] 939 | 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:127:8 [INFO] [stdout] | [INFO] [stdout] 127 | fn make_request(method: &str, id: Option) -> 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) -> 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>; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 22 | fn entry_exists(&self, command: &str, started_at: i64) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | fn insert_entry(&self, entry: &Entry) -> DbResult; [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; [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; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 67 | fn count_orphaned_sessions(&self) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 68 | fn delete_orphaned_sessions(&self) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 69 | fn count_orphaned_notes(&self) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 70 | fn delete_orphaned_notes(&self) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 71 | fn list_sessions( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn find_sessions_by_prefix(&self, prefix: &str) -> DbResult>; [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; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 82 | fn get_tags(&self) -> DbResult>; [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>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 85 | fn tag_session(&self, session_id: &str, tag_id: Option) -> DbResult<()>; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 86 | fn get_tag_by_session(&self, session_id: &str) -> DbResult>; [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>; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 91 | fn delete_note(&self, entry_id: i64) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 92 | fn get_noted_entry_ids(&self) -> DbResult>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | fn add_bookmark(&self, command: &str, label: Option<&str>) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 96 | fn remove_bookmark(&self, command: &str) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 97 | fn list_bookmarks(&self) -> DbResult>; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 98 | fn get_bookmarked_commands(&self) -> DbResult>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | fn add_alias(&self, name: &str, command: &str) -> DbResult; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 102 | fn remove_alias(&self, name: &str) -> DbResult; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 103 | fn list_aliases(&self) -> DbResult>; [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 15.62s [INFO] running `Command { std: "docker" "inspect" "f89af537216212856e6560a475542ed0b3378e4e6261794c2e4a4d8f148dc2a7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f89af537216212856e6560a475542ed0b3378e4e6261794c2e4a4d8f148dc2a7", kill_on_drop: false }` [INFO] [stdout] f89af537216212856e6560a475542ed0b3378e4e6261794c2e4a4d8f148dc2a7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] c6bfbcc160932fc3277382b690366c8b4d72fb0288e2f3cb4be432c5987eb520 [INFO] running `Command { std: "docker" "start" "-a" "c6bfbcc160932fc3277382b690366c8b4d72fb0288e2f3cb4be432c5987eb520", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `crossterm::event::KeyEvent` [INFO] [stderr] --> src/agent_ui/dashboard.rs:939:9 [INFO] [stderr] | [INFO] [stderr] 939 | 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:127:8 [INFO] [stderr] | [INFO] [stderr] 127 | fn make_request(method: &str, id: Option) -> 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) -> 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>; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 22 | fn entry_exists(&self, command: &str, started_at: i64) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 25 | fn insert_entry(&self, entry: &Entry) -> DbResult; [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; [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; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 67 | fn count_orphaned_sessions(&self) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 68 | fn delete_orphaned_sessions(&self) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 69 | fn count_orphaned_notes(&self) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 70 | fn delete_orphaned_notes(&self) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 71 | fn list_sessions( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 77 | fn find_sessions_by_prefix(&self, prefix: &str) -> DbResult>; [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; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 82 | fn get_tags(&self) -> DbResult>; [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>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 85 | fn tag_session(&self, session_id: &str, tag_id: Option) -> DbResult<()>; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 86 | fn get_tag_by_session(&self, session_id: &str) -> DbResult>; [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>; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 91 | fn delete_note(&self, entry_id: i64) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 92 | fn get_noted_entry_ids(&self) -> DbResult>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 95 | fn add_bookmark(&self, command: &str, label: Option<&str>) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] 96 | fn remove_bookmark(&self, command: &str) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 97 | fn list_bookmarks(&self) -> DbResult>; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 98 | fn get_bookmarked_commands(&self) -> DbResult>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 101 | fn add_alias(&self, name: &str, command: &str) -> DbResult; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 102 | fn remove_alias(&self, name: &str) -> DbResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] 103 | fn list_aliases(&self) -> DbResult>; [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.26s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/suvadu-e733f347482503a1) [INFO] [stdout] [INFO] [stdout] running 155 tests [INFO] [stdout] test models::tests::test_alias_suggestion_creation ... ok [INFO] [stdout] test models::tests::test_entry_executor_kind ... ok [INFO] [stdout] test models::tests::test_entry_creation ... 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 db::tests::test_get_db_path_returns_valid_path ... ok [INFO] [stdout] test models::tests::test_entry_is_agent ... 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 repository::filter_builder_tests::chained_filters ... ok [INFO] [stdout] test repository::filter_builder_tests::empty_builder_produces_where_1_eq_1 ... ok [INFO] [stdout] test repository::filter_builder_tests::push_param_adds_to_list ... 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::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::chained_session_filters ... 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_query_prefix_mode ... ok [INFO] [stdout] test repository::filter_builder_tests::with_session ... 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_none_is_noop ... ok [INFO] [stdout] test repository::filter_builder_tests::with_tag_adds_two_params ... ok [INFO] [stdout] test db::tests::test_all_entry_columns_exist ... ok [INFO] [stdout] test db::tests::test_column_exists_rejects_unlisted_column ... ok [INFO] [stdout] test db::tests::test_schema_version_tracking ... ok [INFO] [stdout] test db::tests::test_all_tables_created ... ok [INFO] [stdout] test db::tests::test_schema_version_table_exists ... ok [INFO] [stdout] test db::tests::test_foreign_keys_enforced ... ok [INFO] [stdout] test repository::api::tests::trait_crud_roundtrip ... ok [INFO] [stdout] test db::tests::test_column_exists_rejects_sql_injection_attempt ... ok [INFO] [stdout] test db::tests::test_column_exists_rejects_unlisted_table ... ok [INFO] [stdout] test db::tests::test_init_db_idempotent ... ok [INFO] [stdout] test db::tests::test_init_db ... ok [INFO] [stdout] test repository::tests::test_bookmark_crud ... ok [INFO] [stdout] test repository::tests::test_begin_and_commit_transaction ... ok [INFO] [stdout] test db::tests::test_db_file_permissions ... ok [INFO] [stdout] test repository::api::tests::repo_implements_trait ... ok [INFO] [stdout] test repository::tests::test_bookmark_duplicate_upsert ... ok [INFO] [stdout] test db::tests::test_migrate_pre_existing_db_without_version ... 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_delete_entries_by_regex ... ok [INFO] [stdout] test repository::tests::test_cwd_filter_with_other_filters ... ok [INFO] [stdout] test repository::tests::test_daily_activity_empty_database ... ok [INFO] [stdout] test repository::tests::test_executor_tracking ... ok [INFO] [stdout] test repository::tests::test_executor_filter_in_count ... ok [INFO] [stdout] test repository::tests::test_entry_exists ... ok [INFO] [stdout] test repository::tests::test_delete_entries_by_pattern ... ok [INFO] [stdout] test repository::tests::test_delete_entry_by_id ... ok [INFO] [stdout] test repository::tests::test_delete_entries_regex_with_before ... ok [INFO] [stdout] test repository::tests::test_executor_null_values ... ok [INFO] [stdout] test repository::tests::test_export_entries_all ... ok [INFO] [stdout] test repository::tests::test_delete_entries_with_before_timestamp ... 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_entries_filtering_by_tag ... ok [INFO] [stdout] test repository::tests::test_executor_types ... ok [INFO] [stdout] test repository::tests::test_export_entries_with_date_filter ... ok [INFO] [stdout] test repository::tests::test_gc_orphaned_notes ... ok [INFO] [stdout] test repository::tests::test_get_bookmarked_commands ... 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_entries_by_session ... ok [INFO] [stdout] test repository::tests::test_filter_by_cwd ... ok [INFO] [stdout] test repository::tests::test_get_replay_entries_by_session ... ok [INFO] [stdout] test repository::tests::test_get_noted_entry_ids ... ok [INFO] [stdout] test repository::tests::test_get_replay_entries_with_date_filter ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands_with_day_filter ... ok [INFO] [stdout] test repository::tests::test_get_replay_entries_with_cwd_filter ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands_human_only ... ok [INFO] [stdout] test repository::tests::test_get_replay_entries_with_exit_code_filter ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands_basic ... ok [INFO] [stdout] test repository::tests::test_get_daily_activity_with_tag ... 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_frequent_commands ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands_dir_diversity_ranking ... ok [INFO] [stdout] test repository::tests::test_get_stats_empty_db ... ok [INFO] [stdout] test repository::tests::test_get_tag_by_nonexistent_session ... ok [INFO] [stdout] test repository::tests::test_get_stats_executor_breakdown ... ok [INFO] [stdout] test repository::tests::test_get_stats_all_time ... ok [INFO] [stdout] test repository::tests::test_insert_and_get_entry ... ok [INFO] [stdout] test repository::tests::test_insert_and_get_session ... ok [INFO] [stdout] test repository::tests::test_hourly_heatmap_empty_database ... ok [INFO] [stdout] test repository::tests::test_get_stats_with_day_filter ... ok [INFO] [stdout] test repository::tests::test_note_crud ... ok [INFO] [stdout] test repository::tests::test_recent_entries_prefix_match ... ok [INFO] [stdout] test repository::tests::test_get_tag_by_session ... ok [INFO] [stdout] test repository::tests::test_get_stats_with_tag_filter ... ok [INFO] [stdout] test repository::tests::test_note_upsert_overwrites ... ok [INFO] [stdout] test repository::tests::test_recent_entries_shows_failed_commands ... 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_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 util::cleanup::tests::test_cleanup_claude_settings_no_hooks_key ... ok [INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_preserves_other_hooks ... ok [INFO] [stdout] test repository::tests::test_stats_with_entries ... 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 util::cleanup::tests::test_cleanup_shell_rc_file_missing ... 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_no_suvadu_line ... ok [INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_removes_suvadu_hook ... ok [INFO] [stdout] test repository::tests::test_stats_single_entry ... 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::cleanup::tests::test_cleanup_shell_rc_removes_suvadu_line ... ok [INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_only_matches_exact_shell ... ok [INFO] [stdout] test util::format::tests::test_dirs_home ... ok [INFO] [stdout] test repository::tests::test_tag_lifecycle ... 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_tiny_max ... ok [INFO] [stdout] test util::format::tests::test_truncate_str_truncated ... 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 util::timestamp::tests::test_parse_relative_invalid ... ok [INFO] [stdout] test util::exclusion::tests::test_is_excluded ... ok [INFO] [stdout] test util::format::tests::test_truncate_str_start_unicode ... ok [INFO] [stdout] test repository::tests::test_stats_with_period_filter ... ok [INFO] [stdout] test repository::tests::test_top_sessions_empty_database ... ok [INFO] [stdout] test repository::tests::test_stats_with_days_filter ... 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 repository::tests::test_unique_entries_recency_priority ... ok [INFO] [stdout] test repository::tests::test_unique_entries_pagination_and_query ... ok [INFO] [stdout] test repository::tests::test_vacuum ... ok [INFO] [stdout] test repository::tests::test_tag_limits_and_constraints ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 155 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/suv-97b54fe7489040a5) [INFO] [stdout] [INFO] [stdout] running 926 tests [INFO] [stdout] test agent::tests::agent_breakdown_counts_multiple_agents ... ok [INFO] [stdout] test agent::tests::agent_filter_excludes_human_and_unknown ... ok [INFO] [stdout] test agent::tests::days_ms_saturating_mul_does_not_overflow ... ok [INFO] [stdout] test agent::tests::days_ms_normal_value ... 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::format_timestamp_time_normal_ms ... ok [INFO] [stdout] test agent::tests::stats_text_agent_summary_computes_success_rate ... ok [INFO] [stdout] test agent::tests::text_report_empty_entries ... ok [INFO] [stdout] test agent_ui::dashboard::tests::build_table_title_empty ... ok [INFO] [stdout] test agent_ui::dashboard::tests::page_slice_empty ... ok [INFO] [stdout] test agent_ui::dashboard::tests::selected_entry_empty ... ok [INFO] [stdout] test agent_ui::dashboard::tests::handle_input_q_quits ... ok [INFO] [stdout] test agent_ui::dashboard::tests::rebuild_visible_resets_page_and_selection ... 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::rebuild_visible_no_filter ... ok [INFO] [stdout] test agent_ui::dashboard::tests::page_slice_returns_correct_count ... ok [INFO] [stdout] test agent_ui::dashboard::tests::rebuild_visible_agent_filter ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_backspace_returns_from_detail ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_detail_tab_toggles_pane ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_enter_detail_and_back ... 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::dashboard::tests::selected_risk_safe_command ... ok [INFO] [stdout] test agent_ui::dashboard::tests::visible_high_risk_count_tracked ... ok [INFO] [stdout] test agent_ui::dashboard::tests::total_pages_empty ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_list_total_pages_empty ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_list_total_pages_within_one_page ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_new_with_entries ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_quit_from_list ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_list_navigation ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_new_empty_entries ... ok [INFO] [stdout] test agent_ui::prompts::tests::app_session_shortcut_returns_open_session ... ok [INFO] [stdout] test agent_ui::dashboard::tests::selected_entry_returns_entry ... ok [INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_correct_aggregates ... ok [INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_multiple_sessions ... ok [INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_same_session_different_prompts ... 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_empty ... ok [INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_no_prompts_skipped ... 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_sorted_by_recency ... ok [INFO] [stdout] test agent_ui::dashboard::tests::selected_risk_dangerous_command ... ok [INFO] [stdout] test agent::tests::agent_report_json_has_expected_fields ... ok [INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_mixed_with_and_without_prompts ... ok [INFO] [stdout] test agent_ui::stats::tests::empty_agents_app ... 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::prompts::tests::app_selected_group_returns_correct ... ok [INFO] [stdout] test agent_ui::prompts::tests::build_prompt_groups_single_group ... ok [INFO] [stdout] test agent_ui::stats::tests::agent_stat_high_risk_cmds_match_count ... ok [INFO] [stdout] test agent::tests::agent_report_json_risk_levels_populated ... ok [INFO] [stdout] test agent::tests::markdown_report_contains_expected_sections ... ok [INFO] [stdout] test agent::tests::text_report_contains_header_and_agents ... ok [INFO] [stdout] test agent::tests::json_report_roundtrips_through_serde ... ok [INFO] [stdout] test agent_ui::stats::tests::agent_stat_top_dirs_populated ... ok [INFO] [stdout] test agent_ui::dashboard::tests::rebuild_visible_risk_filter ... 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_multiple_agents ... ok [INFO] [stdout] test agent_ui::tests::period_labels ... ok [INFO] [stdout] test agent_ui::tests::compute_agent_counts_single_agent ... 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::period_after_ms_all_time_is_none ... ok [INFO] [stdout] test agent_ui::tests::format_full_datetime_microsecond_input ... ok [INFO] [stdout] test agent_ui::tests::format_full_datetime_valid_ms ... ok [INFO] [stdout] test agent_ui::tests::period_after_ms_days30_is_some ... ok [INFO] [stdout] test agent_ui::tests::period_after_ms_today_is_some ... ok [INFO] [stdout] test agent_ui::tests::period_after_ms_days7_is_some ... ok [INFO] [stdout] test cli::tests::test_cli_parses_enable ... ok [INFO] [stdout] test cli::tests::test_cli_parses_agent_report ... ok [INFO] [stdout] test cli::tests::test_cli_parses_stats_defaults ... ok [INFO] [stdout] test cli::tests::test_cli_parses_wrap_with_trailing_args ... ok [INFO] [stdout] test cli::tests::test_cli_parses_stats_with_tag ... ok [INFO] [stdout] test cli::tests::test_cli_parses_search_with_args ... ok [INFO] [stdout] test cli::tests::test_cli_rejects_unknown_command ... ok [INFO] [stdout] test commands::alias::tests::test_alias_name_validation ... 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_add_and_list ... ok [INFO] [stdout] test commands::alias::tests::test_alias_apply_stdout_format ... ok [INFO] [stdout] test commands::alias::tests::test_alias_list_empty ... 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::alias::tests::test_alias_add_invalid_name ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_disabled_config_drops ... ok [INFO] [stdout] test commands::alias::tests::test_alias_upsert ... ok [INFO] [stdout] test commands::alias::tests::test_alias_apply_empty ... ok [INFO] [stdout] test commands::alias::tests::test_alias_list_with_entries ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_skips_redaction_when_disabled ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_creates_session_automatically ... ok [INFO] [stdout] test commands::entry::tests::test_drop_early_empty_session_id ... ok [INFO] [stdout] test commands::entry::tests::test_drop_early_invalid_session_id_chars ... ok [INFO] [stdout] test commands::entry::tests::test_drop_early_max_session_id_ok ... ok [INFO] [stdout] test commands::entry::tests::test_drop_early_normal_command_passes ... 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_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_exclusion_cache_empty_patterns ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_zero_started_at_uses_ended_at ... ok [INFO] [stdout] test commands::entry::tests::test_handle_add_nanosecond_timestamps ... ok [INFO] [stdout] test commands::entry::tests::test_exclusion_cache_reuses_compiled ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_redacts_secrets_by_default ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_multiple_exclusion_patterns ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_exclusion_drops ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_no_auto_tag_for_unmatched_cwd ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_normalizes_second_timestamps ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_reuses_existing_session ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_preserves_exit_code ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_multiple_entries_same_session ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_happy_path ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_normalizes_nanosecond_timestamps ... 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_executor_info ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_preserves_context ... ok [INFO] [stdout] test commands::entry::tests::test_handle_bookmark_with_repo_remove_nonexistent_errors ... ok [INFO] [stdout] test commands::entry::tests::test_add_inner_auto_tags_by_cwd ... ok [INFO] [stdout] test commands::entry::tests::test_handle_bookmark_remove ... ok [INFO] [stdout] test commands::entry::tests::test_handle_delete_dry_run ... ok [INFO] [stdout] test commands::entry::tests::test_handle_bookmark_remove_nonexistent ... ok [INFO] [stdout] test commands::entry::tests::test_handle_delete_no_match ... 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_delete_regex_pattern ... ok [INFO] [stdout] test commands::entry::tests::test_handle_gc_dry_run_no_orphans ... ok [INFO] [stdout] test commands::entry::tests::test_handle_gc_cleans_orphan_sessions ... ok [INFO] [stdout] test commands::entry::tests::test_handle_gc_cleans_orphan_notes ... ok [INFO] [stdout] test commands::entry::tests::test_handle_bookmark_add_and_list ... ok [INFO] [stdout] test commands::entry::tests::test_handle_bookmark_with_repo_list ... 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_bookmark_with_repo_remove ... ok [INFO] [stdout] test commands::entry::tests::test_handle_bookmark_with_repo_add ... ok [INFO] [stdout] test commands::entry::tests::test_handle_add_pipeline ... ok [INFO] [stdout] test commands::entry::tests::test_handle_delete_empty_pattern_error ... ok [INFO] [stdout] test commands::search::tests::test_shell_fallback_exit_code_is_documented ... ok [INFO] [stdout] test commands::entry::tests::test_handle_note_delete_nonexistent ... ok [INFO] [stdout] test commands::entry::tests::test_handle_note_delete ... ok [INFO] [stdout] test commands::entry::tests::test_handle_gc_vacuum ... ok [INFO] [stdout] test commands::replay::tests::test_replay_empty_session ... ok [INFO] [stdout] test commands::entry::tests::test_handle_note_upsert_and_read ... ok [INFO] [stdout] test commands::entry::tests::test_handle_note_read_nonexistent ... ok [INFO] [stdout] test commands::settings::tests::test_confirmation_input_parsing ... 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_entries_cwd_filter ... ok [INFO] [stdout] test commands::replay::tests::test_replay_entries_by_session ... ok [INFO] [stdout] test commands::replay::tests::test_replay_entries_time_filter ... ok [INFO] [stdout] test commands::replay::tests::test_replay_entries_exit_code_filter ... ok [INFO] [stdout] test commands::search::tests::test_handle_get_empty_db ... ok [INFO] [stdout] test commands::replay::tests::test_replay_full_flow ... ok [INFO] [stdout] test commands::search::tests::test_handle_get_returns_most_recent ... ok [INFO] [stdout] test commands::session::tests::test_session_prefix_multiple_matches ... ok [INFO] [stdout] test commands::session::tests::test_session_list_empty ... ok [INFO] [stdout] test commands::stats::tests::test_resolve_tag_not_found ... ok [INFO] [stdout] test commands::session::tests::test_session_prefix_exact_match ... ok [INFO] [stdout] test commands::session::tests::test_session_prefix_no_match ... ok [INFO] [stdout] test commands::search::tests::test_handle_get_prefix_match ... ok [INFO] [stdout] test commands::session::tests::test_session_list_with_tag_filter ... ok [INFO] [stdout] test commands::stats::tests::test_resolve_tag_none ... ok [INFO] [stdout] test commands::tag::tests::test_tag_associate_no_session_id ... ok [INFO] [stdout] test commands::session::tests::test_session_list_with_entries ... ok [INFO] [stdout] test commands::search::tests::test_handle_get_with_query_filter ... ok [INFO] [stdout] test commands::stats::tests::test_resolve_tag_found ... ok [INFO] [stdout] test commands::stats::tests::test_stats_json_empty_db ... ok [INFO] [stdout] test commands::stats::tests::test_stats_empty_db ... ok [INFO] [stdout] test commands::stats::tests::test_stats_text_empty_db ... 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_tag_filter ... ok [INFO] [stdout] test commands::stats::tests::test_stats_text_with_data ... ok [INFO] [stdout] test commands::stats::tests::test_stats_filtered_by_tag ... ok [INFO] [stdout] test commands::tag::tests::test_tag_create_with_description ... 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 commands::wrap::tests::test_exit_code_signal_kill ... 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_unknown_fields_ignored ... ok [INFO] [stdout] test commands::tag::tests::test_tag_associate_auto_creates_tag ... ok [INFO] [stdout] test config::tests::test_save_and_load_config ... ok [INFO] [stdout] test commands::tag::tests::test_tag_create_with_name ... ok [INFO] [stdout] test commands::tag::tests::test_tag_associate_existing_tag ... ok [INFO] [stdout] test commands::tag::tests::test_tag_create_duplicate ... ok [INFO] [stdout] test commands::stats::tests::test_stats_with_failures ... ok [INFO] [stdout] test commands::tag::tests::test_tag_create_empty_name ... ok [INFO] [stdout] test db::tests::test_get_db_path_returns_valid_path ... ok [INFO] [stdout] test commands::tag::tests::test_tag_list_empty ... ok [INFO] [stdout] test commands::tag::tests::test_tag_update_not_found ... ok [INFO] [stdout] test commands::stats::tests::test_stats_with_entries ... ok [INFO] [stdout] test commands::tag::tests::test_tag_update_name ... ok [INFO] [stdout] test commands::tag::tests::test_tag_list_with_tags ... 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 commands::tag::tests::test_tag_update_description ... 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_safe_escapes_double_quotes ... ok [INFO] [stdout] test import_export::tests::test_csv_row_formatting ... 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 db::tests::test_all_entry_columns_exist ... ok [INFO] [stdout] test commands::wrap::tests::test_exit_code_normal_exit ... ok [INFO] [stdout] test import_export::tests::test_jsonl_roundtrip ... ok [INFO] [stdout] test db::tests::test_column_exists_rejects_unlisted_table ... 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 db::tests::test_db_file_permissions ... 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 integrations::tests::test_get_prompts_dir ... ok [INFO] [stdout] test integrations::tests::test_hook_claude_code_parses_bash_event ... ok [INFO] [stdout] test db::tests::test_foreign_keys_enforced ... ok [INFO] [stdout] test integrations::tests::test_hook_claude_code_handles_missing_exit_code ... ok [INFO] [stdout] test db::tests::test_column_exists_rejects_unlisted_column ... ok [INFO] [stdout] test integrations::tests::test_hook_claude_code_skips_non_bash ... ok [INFO] [stdout] test integrations::tests::test_invalid_session_ids ... ok [INFO] [stdout] test integrations::tests::test_parse_exit_code_from_error_no_match ... ok [INFO] [stdout] test commands::wrap::tests::test_exit_code_nonzero_exit ... ok [INFO] [stdout] test integrations::tests::test_post_tool_use_defaults_to_exit_0 ... ok [INFO] [stdout] test mcp::protocol::tests::test_error_response ... ok [INFO] [stdout] test mcp::protocol::tests::test_initialize_response ... ok [INFO] [stdout] test integrations::tests::test_merge_claude_settings_idempotent ... ok [INFO] [stdout] test integrations::tests::test_merge_claude_settings_preserves_existing ... ok [INFO] [stdout] test mcp::protocol::tests::test_ping_response ... ok [INFO] [stdout] test integrations::tests::test_parse_exit_code_from_error_standard ... ok [INFO] [stdout] test integrations::tests::test_valid_session_ids ... ok [INFO] [stdout] test mcp::protocol::tests::test_tool_error ... ok [INFO] [stdout] test integrations::tests::test_merge_deduplicates_existing_duplicates ... ok [INFO] [stdout] test mcp::protocol::tests::test_tool_result_truncates_long_output ... 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 mcp::resources::tests::test_list_resources_has_five ... ok [INFO] [stdout] test mcp::resources::tests::test_list_templates_has_session ... 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 import_export::tests::test_import_entries_batch_deduplicates ... ok [INFO] [stdout] test db::tests::test_init_db_idempotent ... ok [INFO] [stdout] test import_export::tests::test_import_entries_batch_inserts_entries ... ok [INFO] [stdout] test import_export::tests::test_import_entries_batch_skips_empty_and_space_prefixed ... ok [INFO] [stdout] test db::tests::test_init_db ... ok [INFO] [stdout] test mcp::tools::tests::test_assess_risk_critical_command ... ok [INFO] [stdout] test mcp::tools::tests::test_assess_risk_force_push ... ok [INFO] [stdout] test mcp::tools::tests::test_assess_risk_high_command ... ok [INFO] [stdout] test mcp::tools::tests::test_assess_risk_no_input ... ok [INFO] [stdout] test mcp::tools::tests::test_assess_risk_safe_command ... ok [INFO] [stdout] test mcp::tools::tests::test_assess_risk_batch ... ok [INFO] [stdout] test mcp::tools::tests::test_classify_command ... ok [INFO] [stdout] test db::tests::test_all_tables_created ... ok [INFO] [stdout] test db::tests::test_migrate_pre_existing_db_without_version ... ok [INFO] [stdout] test mcp::server::tests::test_malformed_json_returns_parse_error ... ok [INFO] [stdout] test db::tests::test_column_exists_rejects_sql_injection_attempt ... ok [INFO] [stdout] test mcp::resources::tests::test_read_agents_empty ... ok [INFO] [stdout] test mcp::tools::tests::test_list_tools_count ... ok [INFO] [stdout] test mcp::resources::tests::test_read_risk_empty ... ok [INFO] [stdout] test mcp::resources::tests::test_read_session_empty_id ... ok [INFO] [stdout] test mcp::resources::tests::test_read_unknown_resource ... ok [INFO] [stdout] test mcp::server::tests::test_handle_tool_call_unknown ... ok [INFO] [stdout] test mcp::resources::tests::test_read_failures_empty ... ok [INFO] [stdout] test mcp::resources::tests::test_read_recent_history_empty ... ok [INFO] [stdout] test mcp::tools::tests::test_tool_definitions_have_required_fields ... ok [INFO] [stdout] test mcp::tools::tests::test_call_unknown_tool ... ok [INFO] [stdout] test mcp::resources::tests::test_read_recent_with_data ... ok [INFO] [stdout] test mcp::server::tests::test_handle_tool_call_search ... ok [INFO] [stdout] test mcp::resources::tests::test_read_stats_empty ... 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 redact::tests::test_anthropic_api_key ... ok [INFO] [stdout] test redact::tests::test_aws_access_key ... ok [INFO] [stdout] test mcp::tools::tests::test_get_prompts_empty_db ... ok [INFO] [stdout] test redact::tests::test_bare_openai_key_redacted ... ok [INFO] [stdout] test redact::tests::test_basic_auth_curl ... ok [INFO] [stdout] test mcp::tools::tests::test_list_sessions_empty_db ... 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_command_status_requires_command ... ok [INFO] [stdout] test redact::tests::test_connection_string_mongodb ... ok [INFO] [stdout] test redact::tests::test_azure_client_secret ... ok [INFO] [stdout] test redact::tests::test_contains_secrets ... ok [INFO] [stdout] test mcp::tools::tests::test_command_status_with_seeded_data ... ok [INFO] [stdout] test mcp::tools::tests::test_get_prompts_with_seeded_data ... ok [INFO] [stdout] test redact::tests::test_github_token ... ok [INFO] [stdout] test redact::tests::test_no_false_positive_cd ... ok [INFO] [stdout] test redact::tests::test_no_false_positive_grep ... ok [INFO] [stdout] test redact::tests::test_no_false_positive_ls ... ok [INFO] [stdout] test redact::tests::test_mysql_password ... ok [INFO] [stdout] test redact::tests::test_no_false_positive_safe_command ... ok [INFO] [stdout] test redact::tests::test_env_var_export ... ok [INFO] [stdout] test redact::tests::test_npm_token ... ok [INFO] [stdout] test redact::tests::test_openai_key_not_match_anthropic ... ok [INFO] [stdout] test mcp::tools::tests::test_search_commands_empty_db ... ok [INFO] [stdout] test mcp::tools::tests::test_suggest_next_empty_db ... ok [INFO] [stdout] test redact::tests::test_pem_private_key ... ok [INFO] [stdout] test mcp::tools::tests::test_recent_commands_empty_db ... ok [INFO] [stdout] test redact::tests::test_wrap_command_no_panic ... ok [INFO] [stdout] test redact::tests::test_pypi_token ... ok [INFO] [stdout] test mcp::tools::tests::test_search_with_seeded_data ... ok [INFO] [stdout] test redact::tests::test_stripe_key ... ok [INFO] [stdout] test redact::tests::test_slack_token ... ok [INFO] [stdout] test redact::tests::test_password_flag ... ok [INFO] [stdout] test repository::filter_builder_tests::empty_builder_produces_where_1_eq_1 ... ok [INFO] [stdout] test redact::tests::test_env_var_inline ... ok [INFO] [stdout] test mcp::tools::tests::test_what_failed_empty_db ... ok [INFO] [stdout] test mcp::tools::tests::test_what_changed_empty_db ... ok [INFO] [stdout] test repository::filter_builder_tests::chained_session_filters ... ok [INFO] [stdout] test mcp::tools::tests::test_what_changed_classifies_commands ... 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 repository::filter_builder_tests::push_param_adds_to_list ... ok [INFO] [stdout] test repository::filter_builder_tests::with_cwd ... 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_query_field_executor ... ok [INFO] [stdout] test repository::filter_builder_tests::with_query_field_cwd ... 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_tag ... ok [INFO] [stdout] test repository::filter_builder_tests::with_tag_adds_two_params ... ok [INFO] [stdout] test repository::filter_builder_tests::with_date_range_after_only ... ok [INFO] [stdout] test repository::filter_builder_tests::with_session_created_after_none_is_noop ... 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_tag_none_is_noop ... ok [INFO] [stdout] test mcp::tools::tests::test_what_failed_with_failures ... ok [INFO] [stdout] test mcp::tools::tests::test_search_commands_with_exit_code_filter ... ok [INFO] [stdout] test redact::tests::test_openai_key ... ok [INFO] [stdout] test repository::filter_builder_tests::with_query_field_session ... ok [INFO] [stdout] test repository::filter_builder_tests::with_session_tag_none_is_noop ... ok [INFO] [stdout] test repository::api::tests::trait_crud_roundtrip ... ok [INFO] [stdout] test mcp::tools::tests::test_suggest_next_with_data ... ok [INFO] [stdout] test redact::tests::test_multiple_secrets_in_one_command ... ok [INFO] [stdout] test repository::tests::test_bookmark_crud ... 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_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_no_match ... ok [INFO] [stdout] test repository::tests::test_daily_activity_empty_database ... ok [INFO] [stdout] test repository::tests::test_delete_entries_with_before_timestamp ... ok [INFO] [stdout] test repository::tests::test_bookmark_duplicate_upsert ... ok [INFO] [stdout] test repository::tests::test_delete_entries_by_regex ... ok [INFO] [stdout] test repository::api::tests::repo_implements_trait ... ok [INFO] [stdout] test repository::tests::test_entries_filtering_by_tag ... ok [INFO] [stdout] test repository::tests::test_count_entries_by_pattern ... ok [INFO] [stdout] test repository::tests::test_delete_entries_regex_with_before ... ok [INFO] [stdout] test repository::tests::test_entry_with_context ... ok [INFO] [stdout] test repository::tests::test_entry_exists ... ok [INFO] [stdout] test repository::tests::test_delete_entry_by_id ... ok [INFO] [stdout] test repository::tests::test_executor_null_values ... ok [INFO] [stdout] test repository::tests::test_executor_filter_in_count ... ok [INFO] [stdout] test repository::tests::test_executor_types ... ok [INFO] [stdout] test repository::tests::test_export_entries_all ... ok [INFO] [stdout] test repository::tests::test_executor_tracking ... ok [INFO] [stdout] test repository::tests::test_get_bookmarked_commands ... ok [INFO] [stdout] test repository::tests::test_get_daily_activity ... 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_get_entries_by_session ... ok [INFO] [stdout] test repository::tests::test_export_entries_with_date_filter ... ok [INFO] [stdout] test repository::tests::test_gc_orphaned_sessions ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands_with_day_filter ... ok [INFO] [stdout] test repository::tests::test_get_daily_activity_with_tag ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands_basic ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands_human_only ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands_dir_diversity_ranking ... ok [INFO] [stdout] test repository::tests::test_get_replay_entries_with_date_filter ... ok [INFO] [stdout] test repository::tests::test_get_frequent_commands ... ok [INFO] [stdout] test repository::tests::test_get_replay_entries_with_cwd_filter ... ok [INFO] [stdout] test repository::tests::test_get_replay_entries_with_executor_filter ... ok [INFO] [stdout] test repository::tests::test_get_replay_entries_with_exit_code_filter ... ok [INFO] [stdout] test repository::tests::test_get_stats_all_time ... ok [INFO] [stdout] test repository::tests::test_get_stats_empty_db ... 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_get_frequent_commands_with_days ... ok [INFO] [stdout] test repository::tests::test_get_noted_entry_ids ... ok [INFO] [stdout] test repository::tests::test_get_tag_by_nonexistent_session ... ok [INFO] [stdout] test repository::tests::test_insert_and_get_entry ... ok [INFO] [stdout] test repository::tests::test_get_stats_with_day_filter ... ok [INFO] [stdout] test repository::tests::test_get_tag_by_session ... ok [INFO] [stdout] test repository::tests::test_get_stats_with_tag_filter ... ok [INFO] [stdout] test repository::tests::test_hourly_heatmap_empty_database ... ok [INFO] [stdout] test repository::tests::test_insert_and_get_session ... ok [INFO] [stdout] test repository::tests::test_note_crud ... ok [INFO] [stdout] test repository::tests::test_stats_empty_db ... ok [INFO] [stdout] test repository::tests::test_note_upsert_overwrites ... ok [INFO] [stdout] test repository::tests::test_stats_empty_database ... ok [INFO] [stdout] test repository::tests::test_recent_entries_prefix_match ... ok [INFO] [stdout] test repository::tests::test_recent_entries_with_cwd_boost ... ok [INFO] [stdout] test repository::tests::test_recent_entries_shows_failed_commands ... 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 repository::tests::test_stats_single_entry ... ok [INFO] [stdout] test risk::tests::test_comment_is_safe ... ok [INFO] [stdout] test risk::tests::test_echo_rm_is_safe ... ok [INFO] [stdout] test risk::tests::test_critical_patterns ... ok [INFO] [stdout] test repository::tests::test_tag_lifecycle ... ok [INFO] [stdout] test risk::tests::test_high_patterns ... ok [INFO] [stdout] test risk::tests::test_echo_with_chaining_is_risky ... ok [INFO] [stdout] test risk::tests::test_is_non_executing ... 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_package_extraction_cargo ... ok [INFO] [stdout] test risk::tests::test_package_extraction_none ... ok [INFO] [stdout] test risk::tests::test_medium_patterns ... ok [INFO] [stdout] test risk::tests::test_package_extraction_npm ... ok [INFO] [stdout] test repository::tests::test_stats_with_days_filter ... ok [INFO] [stdout] test risk::tests::test_low_patterns ... ok [INFO] [stdout] test risk::tests::test_package_extraction_pip ... ok [INFO] [stdout] test repository::tests::test_stats_with_period_filter ... ok [INFO] [stdout] test search::render::tests::test_active_filter_count_all_five ... 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_one_before ... ok [INFO] [stdout] test risk::tests::test_session_risk_aggregate ... 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 repository::tests::test_transaction_guard_recommit ... ok [INFO] [stdout] test search::render::tests::test_active_filter_count_one_tag ... ok [INFO] [stdout] test search::render::tests::test_build_command_text_bookmarked_unique_noted ... ok [INFO] [stdout] test repository::tests::test_transaction_guard_rollback_on_drop ... ok [INFO] [stdout] test search::render::tests::test_active_filter_count_two ... ok [INFO] [stdout] test repository::tests::test_top_sessions_empty_database ... ok [INFO] [stdout] test search::render::tests::test_build_command_text_no_id ... ok [INFO] [stdout] test risk::tests::test_package_extraction_npm_with_flags ... ok [INFO] [stdout] test search::render::tests::test_build_command_text_no_id_unique_mode ... ok [INFO] [stdout] test search::render::tests::test_build_detail_lines_basic ... ok [INFO] [stdout] test risk::tests::test_safe_patterns ... ok [INFO] [stdout] test search::render::tests::test_build_command_text_plain ... ok [INFO] [stdout] test search::render::tests::test_build_command_text_noted ... ok [INFO] [stdout] test search::render::tests::test_build_detail_lines_no_executor ... ok [INFO] [stdout] test search::render::tests::test_build_detail_lines_executor_only_type ... ok [INFO] [stdout] test search::render::tests::test_build_command_text_unique_mode ... ok [INFO] [stdout] test search::render::tests::test_build_detail_lines_bookmarked_and_noted ... ok [INFO] [stdout] test search::render::tests::test_build_command_text_bookmarked ... ok [INFO] [stdout] test search::render::tests::test_build_detail_lines_bookmarked ... 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_failed_exit ... 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_unknown_exit ... ok [INFO] [stdout] test search::render::tests::test_build_table_title_empty ... ok [INFO] [stdout] test search::render::tests::test_build_detail_lines_with_tag ... ok [INFO] [stdout] test search::render::tests::test_build_detail_lines_session_truncated ... 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_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_129_semi_compact ... ok [INFO] [stdout] test search::render::tests::test_column_layout_boundary_130_full ... ok [INFO] [stdout] test repository::tests::test_unique_entries_pagination_and_query ... ok [INFO] [stdout] test search::render::tests::test_column_layout_boundary_79_compact ... ok [INFO] [stdout] test search::render::tests::test_column_layout_boundary_0_compact ... ok [INFO] [stdout] test search::render::tests::test_column_layout_boundary_80_semi_compact ... 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 search::render::tests::test_column_layout_boundary_u16_max_full ... ok [INFO] [stdout] test repository::tests::test_stats_with_entries ... 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_compact ... ok [INFO] [stdout] test search::render::tests::test_column_layout_constraints_full ... ok [INFO] [stdout] test repository::tests::test_vacuum ... 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 repository::tests::test_unique_entries_reexecution ... ok [INFO] [stdout] test search::render::tests::test_column_layout_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_command_col_width_full_narrow ... ok [INFO] [stdout] test search::render::tests::test_command_col_width_full_exact ... ok [INFO] [stdout] test search::render::tests::test_build_detail_lines_risk_enabled_dangerous ... 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_build_detail_lines_risk_enabled_safe ... ok [INFO] [stdout] test search::render::tests::test_entry_row_styles_not_selected ... 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_local ... 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_not_local ... ok [INFO] [stdout] test search::render::tests::test_fill_text_empty_string ... ok [INFO] [stdout] test search::render::tests::test_entry_row_styles_selected ... 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_exact_width ... ok [INFO] [stdout] test search::render::tests::test_fill_text_width_zero ... ok [INFO] [stdout] test search::render::tests::test_format_executor_bot ... ok [INFO] [stdout] test search::render::tests::test_fill_text_needs_wrapping ... 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_programmatic ... ok [INFO] [stdout] test search::render::tests::test_format_executor_ci ... 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_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_column_layout_constraints_semi_compact ... 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_executor_agent ... 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 repository::tests::test_unique_entries_recency_priority ... ok [INFO] [stdout] test search::render::tests::test_format_executor_unknown_type_no_executor ... ok [INFO] [stdout] test search::render::tests::test_format_executor_human ... ok [INFO] [stdout] test search::tests::test_combined_sort_human_first ... ok [INFO] [stdout] test search::tests::test_ctrl_b_nothing_selected ... ok [INFO] [stdout] test search::tests::test_ctrl_b_toggles_bookmark ... 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_n_no_entry_id ... ok [INFO] [stdout] test search::tests::test_ctrl_n_opens_note_dialog ... ok [INFO] [stdout] test search::tests::test_delete_dialog_other_key_ignored ... ok [INFO] [stdout] test search::tests::test_ctrl_s_toggles_context_boost ... ok [INFO] [stdout] test search::tests::test_ctrl_t_opens_tag_dialog_empty_tags ... ok [INFO] [stdout] test search::tests::test_ctrl_t_opens_tag_dialog_with_tags ... ok [INFO] [stdout] test search::tests::test_ctrl_y_copies_selected_command ... ok [INFO] [stdout] test search::tests::test_ctrl_y_nothing_selected ... ok [INFO] [stdout] test search::tests::test_dialog_routing_delete ... ok [INFO] [stdout] test search::tests::test_delete_dialog_enter_confirms ... ok [INFO] [stdout] test search::tests::test_delete_dialog_esc_cancels ... ok [INFO] [stdout] test repository::tests::test_tag_limits_and_constraints ... ok [INFO] [stdout] test search::tests::test_combined_sort_no_context_human_only ... ok [INFO] [stdout] test search::tests::test_dialog_routing_note ... 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 search::tests::test_filter_backtab_cycles_focus_backward ... ok [INFO] [stdout] test search::tests::test_filter_enter_applies_executor ... ok [INFO] [stdout] test search::tests::test_filter_enter_clears_empty_fields ... ok [INFO] [stdout] test search::tests::test_enter_with_no_selection_continues ... ok [INFO] [stdout] test search::tests::test_filter_enter_applies_exit_code ... ok [INFO] [stdout] test search::tests::test_filter_enter_invalid_exit_code ... ok [INFO] [stdout] test search::tests::test_filter_enter_resolves_tag_name ... ok [INFO] [stdout] test search::tests::test_filter_typing_each_field ... 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_filter_enter_executor_all ... ok [INFO] [stdout] test search::tests::test_filter_backspace_each_field ... ok [INFO] [stdout] test search::tests::test_fuzzy_score_empty_query ... 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_other_key_ignored ... ok [INFO] [stdout] test search::tests::test_fuzzy_score_human_boost ... ok [INFO] [stdout] test search::tests::test_filter_tab_cycles_focus_forward ... ok [INFO] [stdout] test search::tests::test_fuzzy_score_no_match ... ok [INFO] [stdout] test search::tests::test_fuzzy_score_length_penalty ... ok [INFO] [stdout] test search::tests::test_get_selected_entry_out_of_bounds ... ok [INFO] [stdout] test search::tests::test_goto_dialog_clamps_to_max_page ... ok [INFO] [stdout] test search::tests::test_goto_dialog_backspace ... ok [INFO] [stdout] test search::tests::test_goto_dialog_empty_enter_continues ... 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_get_selected_entry ... ok [INFO] [stdout] test search::tests::test_handle_input_delete_dialog_no ... 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_goto_dialog_clamps_to_min_page ... ok [INFO] [stdout] test search::tests::test_handle_input_filter_enter ... ok [INFO] [stdout] test search::tests::test_fuzzy_score_ranking ... ok [INFO] [stdout] test search::tests::test_handle_input_escape_exits ... ok [INFO] [stdout] test search::tests::test_fuzzy_score_single_char ... ok [INFO] [stdout] test search::tests::test_handle_input_ctrl_f_opens_filter ... ok [INFO] [stdout] test search::tests::test_handle_input_char_reloads ... ok [INFO] [stdout] test search::tests::test_handle_input_ctrl_u_toggles_unique ... ok [INFO] [stdout] test search::tests::test_handle_input_backspace_reloads ... ok [INFO] [stdout] test search::tests::test_dialog_routing_goto ... ok [INFO] [stdout] test search::tests::test_handle_input_tab_toggles_detail ... ok [INFO] [stdout] test search::tests::test_handle_input_goto_enter ... ok [INFO] [stdout] test search::tests::test_dialog_routing_filter ... ok [INFO] [stdout] test search::tests::test_tag_dialog_enter_no_selection_closes ... ok [INFO] [stdout] test search::tests::test_note_dialog_backspace ... ok [INFO] [stdout] test search::tests::test_tag_dialog_other_key_ignored ... 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_handle_input_left_right_pages ... 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_note_dialog_other_key_ignored ... ok [INFO] [stdout] test search::tests::test_pagination_logic ... 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_tag_dialog_navigation ... ok [INFO] [stdout] test search::tests::test_tag_dialog_down_when_none_selected ... ok [INFO] [stdout] test search::tests::test_tag_dialog_enter_associates_session ... ok [INFO] [stdout] test search::tests::test_handle_input_up_down_navigation ... ok [INFO] [stdout] test search::tests::test_unknown_ctrl_key_ignored ... ok [INFO] [stdout] test search::tests::test_unknown_key_continues ... ok [INFO] [stdout] test session_ui::picker::tests::filter_before_date_narrows_results ... ok [INFO] [stdout] test session_ui::picker::tests::clear_filters_resets_all ... ok [INFO] [stdout] test session_ui::picker::tests::filter_date_range_overlap ... ok [INFO] [stdout] test session_ui::picker::tests::filter_tag_narrows_results ... ok [INFO] [stdout] test session_ui::picker::tests::next_on_empty_does_nothing ... ok [INFO] [stdout] test session_ui::picker::tests::next_single_element_stays ... 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::prev_on_empty_does_nothing ... ok [INFO] [stdout] test session_ui::picker::tests::prev_single_element_stays ... ok [INFO] [stdout] test session_ui::picker::tests::filter_after_date_narrows_results ... ok [INFO] [stdout] test session_ui::picker::tests::new_empty_sessions_no_selection ... 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::prev_wraps_around ... ok [INFO] [stdout] test session_ui::picker::tests::selected_session_id_empty ... ok [INFO] [stdout] test session_ui::picker::tests::selected_session_id_returns_correct ... ok [INFO] [stdout] test session_ui::picker::tests::active_filter_count_works ... ok [INFO] [stdout] test session_ui::timeline::tests::build_timeline_empty_entries ... ok [INFO] [stdout] test session_ui::timeline::tests::build_timeline_gap_duration_correct ... 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::build_timeline_saturating_sub_no_underflow ... ok [INFO] [stdout] test session_ui::timeline::tests::handle_input_q_returns_false ... ok [INFO] [stdout] test session_ui::picker::tests::search_and_filter_combine ... ok [INFO] [stdout] test session_ui::timeline::tests::handle_input_tab_toggles_detail ... ok [INFO] [stdout] test session_ui::timeline::tests::build_timeline_single_entry ... 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::move_down_advances_selection ... 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 session_ui::picker::tests::search_empty_shows_all ... ok [INFO] [stdout] test session_ui::timeline::tests::handle_input_k_moves_up ... ok [INFO] [stdout] test session_ui::timeline::tests::move_up_at_zero_stays ... ok [INFO] [stdout] test session_ui::timeline::tests::page_slice_empty ... ok [INFO] [stdout] test session_ui::timeline::tests::selected_entry_empty ... ok [INFO] [stdout] test session_ui::timeline::tests::selected_entry_with_entries ... 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_add_exclusion_pattern ... ok [INFO] [stdout] test settings_ui::tests::test_agent_add_flow ... ok [INFO] [stdout] test settings_ui::tests::test_agent_empty_fields_rejected ... ok [INFO] [stdout] test settings_ui::tests::test_agent_esc_cancels_add ... ok [INFO] [stdout] test settings_ui::tests::test_agent_delete_flow ... ok [INFO] [stdout] test settings_ui::tests::test_agent_tab_toggles_focus ... ok [INFO] [stdout] test settings_ui::tests::test_agent_item_navigation ... ok [INFO] [stdout] test settings_ui::tests::test_app_state_navigation ... ok [INFO] [stdout] test settings_ui::tests::test_auto_tag_add_flow ... ok [INFO] [stdout] test settings_ui::tests::test_auto_tag_backspace_path_field ... ok [INFO] [stdout] test settings_ui::tests::test_auto_tag_backspace_tag_field ... ok [INFO] [stdout] test settings_ui::tests::test_agent_backspace ... 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_agent_name_validation ... ok [INFO] [stdout] test settings_ui::tests::test_agent_executor_type_cycling ... ok [INFO] [stdout] test settings_ui::tests::test_auto_tag_item_navigation ... ok [INFO] [stdout] test settings_ui::tests::test_auto_tag_tab_toggles_focus ... ok [INFO] [stdout] test settings_ui::tests::test_backspace_in_editing_mode ... ok [INFO] [stdout] test settings_ui::tests::test_confirm_quit_esc_cancels ... 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_auto_tag_esc_cancels_add ... ok [INFO] [stdout] test settings_ui::tests::test_exclusion_delete_last_adjusts_selected ... ok [INFO] [stdout] test settings_ui::tests::test_exclusion_delete_empties_list ... ok [INFO] [stdout] test settings_ui::tests::test_confirm_quit_y_save_attempt ... ok [INFO] [stdout] test settings_ui::tests::test_exclusion_add_esc_cancels ... ok [INFO] [stdout] test settings_ui::tests::test_exclusion_delete_middle_item ... ok [INFO] [stdout] test settings_ui::tests::test_exclusion_item_navigation ... ok [INFO] [stdout] test settings_ui::tests::test_handle_input_enter_space_toggle_bool ... ok [INFO] [stdout] test settings_ui::tests::test_handle_input_q_not_dirty_quits ... ok [INFO] [stdout] test settings_ui::tests::test_initial_state ... ok [INFO] [stdout] test settings_ui::tests::test_handle_input_via_key_events ... 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_multiple_exclusion_adds ... ok [INFO] [stdout] test settings_ui::tests::test_prev_tab_navigation ... ok [INFO] [stdout] test settings_ui::tests::test_input_buffer_length_limit ... ok [INFO] [stdout] test settings_ui::tests::test_handle_input_s_attempts_save ... 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 settings_ui::tests::test_toggle_all_search_bools ... 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 stats_ui::tests::compute_program_groups_alias_no_match_stays ... 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_descending_order ... 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::intensity_level_boundary_26_percent ... ok [INFO] [stdout] test stats_ui::tests::compute_program_groups_with_alias_map ... 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_low ... ok [INFO] [stdout] test settings_ui::tests::test_handle_input_q_dirty_enters_confirm_quit ... 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_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_empty ... ok [INFO] [stdout] test stats_ui::tests::parse_type_output_bash_format ... 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::test_focus_prev_cycle ... ok [INFO] [stdout] test stats_ui::tests::parse_type_output_zsh_format ... 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 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::intensity_level_negative_count ... ok [INFO] [stdout] test stats_ui::tests::test_period_days ... ok [INFO] [stdout] test stats_ui::tests::test_build_daily_counts ... ok [INFO] [stdout] test stats_ui::tests::test_handle_input_backtab_full_cycle ... 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_all_periods ... ok [INFO] [stdout] test stats_ui::tests::test_handle_input_backtab_from_top_dirs ... ok [INFO] [stdout] test stats_ui::tests::test_move_selection_up_at_zero_top_programs ... ok [INFO] [stdout] test stats_ui::tests::test_reload_empty_repo_no_selection ... ok [INFO] [stdout] test stats_ui::tests::test_handle_input_unknown_key_no_state_change ... ok [INFO] [stdout] test stats_ui::tests::test_move_selection_up_at_zero_top_dirs ... ok [INFO] [stdout] test stats_ui::tests::test_handle_input_backtab_from_hourly ... ok [INFO] [stdout] test stats_ui::tests::test_period_mapping_via_stats_app_new ... 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 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_single_word ... ok [INFO] [stdout] test suggest::tests::test_generate_alias_name_high_suffix ... ok [INFO] [stdout] test stats_ui::tests::test_move_selection_down_clamps_top_dirs ... 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_plain ... ok [INFO] [stdout] test suggest::tests::test_shell_quote_special_chars ... ok [INFO] [stdout] test suggest::tests::test_parse_alias_output_bash ... ok [INFO] [stdout] test stats_ui::tests::test_move_selection_down_clamps_top_commands ... ok [INFO] [stdout] test suggest::tests::test_shell_quote_with_single_quotes ... ok [INFO] [stdout] test suggest::tests::test_shell_quote_empty ... ok [INFO] [stdout] test suggest_ui::tests::deselect_all ... ok [INFO] [stdout] test suggest_ui::tests::edit_mode_rejects_invalid_chars ... ok [INFO] [stdout] test suggest_ui::tests::edit_mode_typing_and_confirm ... ok [INFO] [stdout] test suggest_ui::tests::edit_mode_esc_cancels ... ok [INFO] [stdout] test suggest_ui::tests::handle_input_confirm_enter ... ok [INFO] [stdout] test suggest_ui::tests::edit_mode_backspace ... ok [INFO] [stdout] test suggest_ui::tests::handle_input_a_selects_all ... 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_navigation ... ok [INFO] [stdout] test suggest_ui::tests::handle_input_quit_q ... ok [INFO] [stdout] test suggest_ui::tests::new_state_empty_suggestions ... 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::handle_input_quit_esc ... ok [INFO] [stdout] test suggest_ui::tests::handle_input_space_toggles ... ok [INFO] [stdout] test suggest_ui::tests::prev_on_empty_is_noop ... ok [INFO] [stdout] test suggest_ui::tests::select_all ... ok [INFO] [stdout] test suggest_ui::tests::toggle_selected ... ok [INFO] [stdout] test tests::internal_commands_are_not_user_facing ... ok [INFO] [stdout] test tests::pause_is_user_facing ... ok [INFO] [stdout] test tests::pause_outputs_export_line ... ok [INFO] [stdout] test tests::search_is_user_facing ... ok [INFO] [stdout] test tests::stats_is_user_facing ... ok [INFO] [stdout] test tests::user_facing_commands_are_detected ... ok [INFO] [stdout] test tests::version_command_succeeds ... 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 update::tests::checksum_extracted_from_sha256sum_output ... ok [INFO] [stdout] test update::tests::checksum_extraction_handles_shasum_format ... ok [INFO] [stdout] test update::tests::checksum_extraction_handles_empty_output ... ok [INFO] [stdout] test update::tests::checksum_mismatch_detected ... ok [INFO] [stdout] test update::tests::empty_checksum_rejected ... ok [INFO] [stdout] test update::tests::github_releases_url_is_https ... 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::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 stats_ui::tests::test_build_daily_counts_with_data ... ok [INFO] [stdout] test update::tests::release_notes_items_extracted ... 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::test_embedded_public_key_parses ... ok [INFO] [stdout] test update::tests::test_is_not_cargo_install ... ok [INFO] [stdout] test update::tests::test_is_not_homebrew_install ... ok [INFO] [stdout] test update::tests::test_signature_verification_rejects_wrong_key ... ok [INFO] [stdout] test update::tests::test_valid_public_key_parses ... ok [INFO] [stdout] test update::tests::version_url_is_https ... ok [INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_no_file ... ok [INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_no_hooks_key ... ok [INFO] [stdout] test stats_ui::tests::test_move_selection_down_clamps_top_programs ... ok [INFO] [stdout] test util::cleanup::tests::test_cleanup_shell_rc_file_missing ... ok [INFO] [stdout] test stats_ui::tests::test_reload_resets_table_selections_with_data ... ok [INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_preserves_other_hooks ... 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_removes_suvadu_hook ... ok [INFO] [stdout] test suggest_ui::tests::prev_wraps_around ... ok [INFO] [stdout] test suggest_ui::tests::new_state_selects_first ... ok [INFO] [stdout] test util::cleanup::tests::test_cleanup_claude_settings_removes_both_hook_types ... ok [INFO] [stdout] test util::format::tests::test_format_duration_ms ... 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::cleanup::tests::test_cleanup_shell_rc_removes_suvadu_line ... 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::cleanup::tests::test_cleanup_shell_rc_only_matches_exact_shell ... 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::exclusion::tests::test_is_excluded ... 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::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_keywords ... ok [INFO] [stdout] test util::timestamp::tests::test_parse_date_iso ... ok [INFO] [stdout] test util::timestamp::tests::test_parse_relative_days ... ok [INFO] [stdout] test util::timestamp::tests::test_parse_relative_invalid ... ok [INFO] [stdout] test stats_ui::tests::test_reload_via_period_change_resets_selections ... ok [INFO] [stdout] test stats_ui::tests::test_stats_app_period_change ... ok [INFO] [stdout] test stats_ui::tests::test_stats_app_toggle_executor ... ok [INFO] [stdout] test stats_ui::tests::test_stats_app_selection_on_different_panels ... ok [INFO] [stdout] test stats_ui::tests::test_stats_app_focus_via_handle_input ... ok [INFO] [stdout] test stats_ui::tests::test_stats_app_with_tag ... ok [INFO] [stdout] test stats_ui::tests::test_stats_app_initial_state ... ok [INFO] [stdout] test stats_ui::tests::test_stats_app_selection_movement ... ok [INFO] [stdout] test stats_ui::tests::test_stats_app_quit ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 926 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.43s [INFO] [stdout] [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-f1aec3be606d084a) [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test test_gc_cleans_orphans ... ok [INFO] [stdout] test test_bookmark_note_alias_cross_feature ... ok [INFO] [stdout] test test_foreign_keys_cascade ... ok [INFO] [stdout] test test_transaction_rollback_on_drop ... ok [INFO] [stdout] test test_session_management ... ok [INFO] [stdout] test test_delete_with_pattern ... ok [INFO] [stdout] test test_export_import_preserves_fields ... ok [INFO] [stdout] test test_add_search_roundtrip ... ok [INFO] [stdout] test test_daily_activity ... ok [INFO] [stdout] test test_regex_delete_and_count ... ok [INFO] [stdout] test test_stats_aggregation ... ok [INFO] [stdout] test test_tag_lifecycle ... ok [INFO] [stdout] test test_filtered_queries ... ok [INFO] [stdout] test test_unique_entries ... ok [INFO] [stdout] test test_schema_migration_idempotent ... 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.18s [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" "c6bfbcc160932fc3277382b690366c8b4d72fb0288e2f3cb4be432c5987eb520", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c6bfbcc160932fc3277382b690366c8b4d72fb0288e2f3cb4be432c5987eb520", kill_on_drop: false }` [INFO] [stdout] c6bfbcc160932fc3277382b690366c8b4d72fb0288e2f3cb4be432c5987eb520