[INFO] cloning repository https://github.com/QuentinMallet/agentic-kb
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/QuentinMallet/agentic-kb" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FQuentinMallet%2Fagentic-kb", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FQuentinMallet%2Fagentic-kb'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ac4ae871ad058e2c07dcaaee42ccde23c668b071
[INFO] checking QuentinMallet/agentic-kb against 1ed2df61a19042f231709eb05d032ae9e2cb2084 for pr-160235
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FQuentinMallet%2Fagentic-kb" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/QuentinMallet/agentic-kb
[INFO] finished tweaking git repo https://github.com/QuentinMallet/agentic-kb
[INFO] tweaked toml for git repo https://github.com/QuentinMallet/agentic-kb written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/QuentinMallet/agentic-kb on toolchain 1ed2df61a19042f231709eb05d032ae9e2cb2084
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1ed2df61a19042f231709eb05d032ae9e2cb2084" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/QuentinMallet/agentic-kb 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" "+1ed2df61a19042f231709eb05d032ae9e2cb2084" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded gemm v0.19.0
[INFO] [stderr]   Downloaded pulp-wasm-simd-flag v0.1.0
[INFO] [stderr]   Downloaded abscissa_derive v0.9.0
[INFO] [stderr]   Downloaded gemm-f64 v0.19.0
[INFO] [stderr]   Downloaded dyn-stack-macros v0.1.3
[INFO] [stderr]   Downloaded gemm-f32 v0.19.0
[INFO] [stderr]   Downloaded gemm-c64 v0.19.0
[INFO] [stderr]   Downloaded gemm-c32 v0.19.0
[INFO] [stderr]   Downloaded canonical-path v2.0.2
[INFO] [stderr]   Downloaded gemm-common v0.19.0
[INFO] [stderr]   Downloaded gemm-f16 v0.19.0
[INFO] [stderr]   Downloaded float8 v0.6.0
[INFO] [stderr]   Downloaded fs-err v3.3.0
[INFO] [stderr]   Downloaded dyn-stack v0.13.2
[INFO] [stderr]   Downloaded abscissa_core v0.9.0
[INFO] [stderr]   Downloaded candle-nn v0.9.2
[INFO] [stderr]   Downloaded zip v7.2.0
[INFO] [stderr]   Downloaded candle-core v0.9.2
[INFO] [stderr]   Downloaded pulp v0.22.2
[INFO] [stderr]   Downloaded candle-transformers v0.9.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17
[INFO] running `Command { std: "docker" "start" "d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17" "/opt/rustwide/cargo-home/bin/cargo" "+1ed2df61a19042f231709eb05d032ae9e2cb2084" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17" "/opt/rustwide/cargo-home/bin/cargo" "+1ed2df61a19042f231709eb05d032ae9e2cb2084" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling pulp v0.22.2
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]     Checking reborrow v0.5.5
[INFO] [stderr]     Checking pulp-wasm-simd-flag v0.1.0
[INFO] [stderr]    Compiling dyn-stack-macros v0.1.3
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]    Compiling openssl-sys v0.9.116
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]    Compiling onig_sys v69.9.3
[INFO] [stderr]    Compiling openssl v0.10.80
[INFO] [stderr]     Checking typed-path v0.12.3
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking ring v0.17.14
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking object v0.37.3
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking memmap2 v0.9.10
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]     Checking safetensors v0.7.0
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking dyn-stack v0.13.2
[INFO] [stderr]    Compiling fs-err v3.3.0
[INFO] [stderr]     Checking indenter v0.3.4
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking winnow v1.0.3
[INFO] [stderr]     Checking zip v7.2.0
[INFO] [stderr]    Compiling esaxx-rs v0.1.10
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking eyre v0.6.12
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]    Compiling monostate-impl v0.1.18
[INFO] [stderr]     Checking toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]     Checking serde_spanned v1.1.1
[INFO] [stderr]     Checking winnow v0.7.15
[INFO] [stderr]    Compiling macro_rules_attribute-proc_macro v0.2.2
[INFO] [stderr]     Checking toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking fancy-regex v0.17.0
[INFO] [stderr]     Checking monostate v0.1.18
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking macro_rules_attribute v0.2.2
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking compact_str v0.9.0
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking dary_heap v0.3.9
[INFO] [stderr]     Checking serde_plain v1.0.2
[INFO] [stderr]     Checking secrecy v0.10.3
[INFO] [stderr]     Checking arc-swap v1.9.1
[INFO] [stderr]    Compiling abscissa_derive v0.9.0
[INFO] [stderr]     Checking unicode-normalization-alignments v0.1.12
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking semver v1.0.28
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking toml v0.9.12+spec-1.1.0
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling derive_builder_core v0.20.2
[INFO] [stderr]     Checking canonical-path v2.0.2
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking uuid v1.23.1
[INFO] [stderr]     Checking spm_precompiled v0.1.4
[INFO] [stderr]     Checking rayon-cond v0.4.0
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]    Compiling derive_builder_macro v0.20.2
[INFO] [stderr]     Checking derive_builder v0.20.2
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking onig v6.5.3
[INFO] [stderr]     Checking rusty-fork v0.3.1
[INFO] [stderr]     Checking color-eyre v0.6.5
[INFO] [stderr]     Checking abscissa_core v0.9.0
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking ureq v2.12.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking rand_distr v0.5.1
[INFO] [stderr]     Checking tokenizers v0.21.4
[INFO] [stderr]     Checking proptest v1.11.0
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking gemm-common v0.19.0
[INFO] [stderr]     Checking float8 v0.6.0
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking gemm-f32 v0.19.0
[INFO] [stderr]     Checking gemm-c64 v0.19.0
[INFO] [stderr]     Checking gemm-f64 v0.19.0
[INFO] [stderr]     Checking gemm-c32 v0.19.0
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking gemm-f16 v0.19.0
[INFO] [stderr]     Checking gemm v0.19.0
[INFO] [stderr]     Checking candle-core v0.9.2
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking candle-nn v0.9.2
[INFO] [stderr]     Checking candle-transformers v0.9.2
[INFO] [stderr]     Checking kb v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/eval.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 |                 report: &'a crate::components::retrieval_eval::EvalReport,
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:7:60
[INFO] [stdout]     |
[INFO] [stdout]   7 | #![warn(rust_2018_idioms, trivial_casts, unused_lifetimes, unused_qualifications)]
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 134 -                 report: &'a crate::components::retrieval_eval::EvalReport,
[INFO] [stdout] 134 +                 report: &'a EvalReport,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:636:14
[INFO] [stdout]     |
[INFO] [stdout] 636 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 636 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 636 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:691:25
[INFO] [stdout]     |
[INFO] [stdout] 691 |     let content = match std::fs::read_to_string(&file_path) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 691 -     let content = match std::fs::read_to_string(&file_path) {
[INFO] [stdout] 691 +     let content = match fs::read_to_string(&file_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:743:18
[INFO] [stdout]     |
[INFO] [stdout] 743 |         let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 743 -         let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 743 +         let ts = Utc::now().to_rfc3339();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:857:14
[INFO] [stdout]     |
[INFO] [stdout] 857 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 857 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 857 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:926:14
[INFO] [stdout]     |
[INFO] [stdout] 926 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 926 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 926 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1043:16
[INFO] [stdout]      |
[INFO] [stdout] 1043 |     let mode = crate::components::db::EmbedTextMode::from_env();
[INFO] [stdout]      |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1043 -     let mode = crate::components::db::EmbedTextMode::from_env();
[INFO] [stdout] 1043 +     let mode = db::EmbedTextMode::from_env();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1047:13
[INFO] [stdout]      |
[INFO] [stdout] 1047 |             crate::components::db::entry_embed_text(mode, path, summary, content, tags).len()
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1047 -             crate::components::db::entry_embed_text(mode, path, summary, content, tags).len()
[INFO] [stdout] 1047 +             db::entry_embed_text(mode, path, summary, content, tags).len()
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1060:5
[INFO] [stdout]      |
[INFO] [stdout] 1060 |     crate::components::db::check_embed_mode_vintage(&conn, mode);
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1060 -     crate::components::db::check_embed_mode_vintage(&conn, mode);
[INFO] [stdout] 1060 +     db::check_embed_mode_vintage(&conn, mode);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1062:20
[INFO] [stdout]      |
[INFO] [stdout] 1062 |         let text = crate::components::db::entry_embed_text(mode, path, summary, content, tags);
[INFO] [stdout]      |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1062 -         let text = crate::components::db::entry_embed_text(mode, path, summary, content, tags);
[INFO] [stdout] 1062 +         let text = db::entry_embed_text(mode, path, summary, content, tags);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1233:14
[INFO] [stdout]      |
[INFO] [stdout] 1233 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1233 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 1233 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1388:14
[INFO] [stdout]      |
[INFO] [stdout] 1388 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1388 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 1388 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1468:14
[INFO] [stdout]      |
[INFO] [stdout] 1468 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1468 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 1468 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1794:15
[INFO] [stdout]      |
[INFO] [stdout] 1794 |     let now = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1794 -     let now = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 1794 +     let now = Utc::now().to_rfc3339();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `blob_to_f32s` and `f32s_to_blob`
[INFO] [stdout]  --> src/components/db.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     blob_to_f32s, cosine_similarity, decode_emb_blob, decode_f16_blob_into, f32s_to_blob,
[INFO] [stdout]   |     ^^^^^^^^^^^^                                                            ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2098:22
[INFO] [stdout]      |
[INFO] [stdout] 2098 |         ev_rows: Vec<crate::models::Evidence>,
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2098 -         ev_rows: Vec<crate::models::Evidence>,
[INFO] [stdout] 2098 +         ev_rows: Vec<Evidence>,
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2147:29
[INFO] [stdout]      |
[INFO] [stdout] 2147 |     let mut flat_tasks: Vec<crate::models::Evidence> = Vec::new();
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2147 -     let mut flat_tasks: Vec<crate::models::Evidence> = Vec::new();
[INFO] [stdout] 2147 +     let mut flat_tasks: Vec<Evidence> = Vec::new();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2183:54
[INFO] [stdout]      |
[INFO] [stdout] 2183 |                 crossbeam_channel::bounded::<(usize, crate::models::Evidence)>(work_chan_cap);
[INFO] [stdout]      |                                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2183 -                 crossbeam_channel::bounded::<(usize, crate::models::Evidence)>(work_chan_cap);
[INFO] [stdout] 2183 +                 crossbeam_channel::bounded::<(usize, Evidence)>(work_chan_cap);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OpenFlags`
[INFO] [stdout]  --> src/components/query_hits.rs:8:66
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rusqlite::{params, Connection, Error as SqlError, ErrorCode, OpenFlags};
[INFO] [stdout]   |                                                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/eval.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 |                 report: &'a crate::components::retrieval_eval::EvalReport,
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:7:60
[INFO] [stdout]     |
[INFO] [stdout]   7 | #![warn(rust_2018_idioms, trivial_casts, unused_lifetimes, unused_qualifications)]
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 134 -                 report: &'a crate::components::retrieval_eval::EvalReport,
[INFO] [stdout] 134 +                 report: &'a EvalReport,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:636:14
[INFO] [stdout]     |
[INFO] [stdout] 636 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 636 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 636 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:691:25
[INFO] [stdout]     |
[INFO] [stdout] 691 |     let content = match std::fs::read_to_string(&file_path) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 691 -     let content = match std::fs::read_to_string(&file_path) {
[INFO] [stdout] 691 +     let content = match fs::read_to_string(&file_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:743:18
[INFO] [stdout]     |
[INFO] [stdout] 743 |         let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 743 -         let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 743 +         let ts = Utc::now().to_rfc3339();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:857:14
[INFO] [stdout]     |
[INFO] [stdout] 857 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 857 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 857 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/mcp.rs:926:14
[INFO] [stdout]     |
[INFO] [stdout] 926 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 926 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 926 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1043:16
[INFO] [stdout]      |
[INFO] [stdout] 1043 |     let mode = crate::components::db::EmbedTextMode::from_env();
[INFO] [stdout]      |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1043 -     let mode = crate::components::db::EmbedTextMode::from_env();
[INFO] [stdout] 1043 +     let mode = db::EmbedTextMode::from_env();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1047:13
[INFO] [stdout]      |
[INFO] [stdout] 1047 |             crate::components::db::entry_embed_text(mode, path, summary, content, tags).len()
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1047 -             crate::components::db::entry_embed_text(mode, path, summary, content, tags).len()
[INFO] [stdout] 1047 +             db::entry_embed_text(mode, path, summary, content, tags).len()
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1060:5
[INFO] [stdout]      |
[INFO] [stdout] 1060 |     crate::components::db::check_embed_mode_vintage(&conn, mode);
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1060 -     crate::components::db::check_embed_mode_vintage(&conn, mode);
[INFO] [stdout] 1060 +     db::check_embed_mode_vintage(&conn, mode);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1062:20
[INFO] [stdout]      |
[INFO] [stdout] 1062 |         let text = crate::components::db::entry_embed_text(mode, path, summary, content, tags);
[INFO] [stdout]      |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1062 -         let text = crate::components::db::entry_embed_text(mode, path, summary, content, tags);
[INFO] [stdout] 1062 +         let text = db::entry_embed_text(mode, path, summary, content, tags);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1233:14
[INFO] [stdout]      |
[INFO] [stdout] 1233 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1233 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 1233 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1388:14
[INFO] [stdout]      |
[INFO] [stdout] 1388 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1388 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 1388 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1468:14
[INFO] [stdout]      |
[INFO] [stdout] 1468 |     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1468 -     let ts = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 1468 +     let ts = Utc::now().to_rfc3339();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:1794:15
[INFO] [stdout]      |
[INFO] [stdout] 1794 |     let now = chrono::Utc::now().to_rfc3339();
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1794 -     let now = chrono::Utc::now().to_rfc3339();
[INFO] [stdout] 1794 +     let now = Utc::now().to_rfc3339();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:2235:39
[INFO] [stdout]      |
[INFO] [stdout] 2235 |             let mut verdict_objs: Vec<serde_json::Value> = Vec::new();
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2235 -             let mut verdict_objs: Vec<serde_json::Value> = Vec::new();
[INFO] [stdout] 2235 +             let mut verdict_objs: Vec<Value> = Vec::new();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:2318:39
[INFO] [stdout]      |
[INFO] [stdout] 2318 |             let mut verdict_objs: Vec<serde_json::Value> = Vec::new();
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2318 -             let mut verdict_objs: Vec<serde_json::Value> = Vec::new();
[INFO] [stdout] 2318 +             let mut verdict_objs: Vec<Value> = Vec::new();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:2427:35
[INFO] [stdout]      |
[INFO] [stdout] 2427 |             let fwd_verdicts: Vec<serde_json::Value> = items.iter().zip(&entry_ids_a).map(|((_, _, _, v), eid)| {
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2427 -             let fwd_verdicts: Vec<serde_json::Value> = items.iter().zip(&entry_ids_a).map(|((_, _, _, v), eid)| {
[INFO] [stdout] 2427 +             let fwd_verdicts: Vec<Value> = items.iter().zip(&entry_ids_a).map(|((_, _, _, v), eid)| {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:2434:35
[INFO] [stdout]      |
[INFO] [stdout] 2434 |             let rev_verdicts: Vec<serde_json::Value> = items.iter().zip(&entry_ids_b).map(|((_, _, _, v), eid)| {
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2434 -             let rev_verdicts: Vec<serde_json::Value> = items.iter().zip(&entry_ids_b).map(|((_, _, _, v), eid)| {
[INFO] [stdout] 2434 +             let rev_verdicts: Vec<Value> = items.iter().zip(&entry_ids_b).map(|((_, _, _, v), eid)| {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/commands/mcp.rs:3077:46
[INFO] [stdout]      |
[INFO] [stdout] 3077 |                 match serde_json::from_str::<serde_json::Value>(&line) {
[INFO] [stdout]      |                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3077 -                 match serde_json::from_str::<serde_json::Value>(&line) {
[INFO] [stdout] 3077 +                 match serde_json::from_str::<Value>(&line) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:658:20
[INFO] [stdout]     |
[INFO] [stdout] 658 |         let opts = crate::components::db::SearchOptions {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 658 -         let opts = crate::components::db::SearchOptions {
[INFO] [stdout] 658 +         let opts = db::SearchOptions {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:670:20
[INFO] [stdout]     |
[INFO] [stdout] 670 |         let conn = crate::components::db::open_db(&paths.db).unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 670 -         let conn = crate::components::db::open_db(&paths.db).unwrap();
[INFO] [stdout] 670 +         let conn = db::open_db(&paths.db).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:678:13
[INFO] [stdout]     |
[INFO] [stdout] 678 |             crate::components::db::search_entries(&conn, &embedder, "evidence test", &opts)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 678 -             crate::components::db::search_entries(&conn, &embedder, "evidence test", &opts)
[INFO] [stdout] 678 +             db::search_entries(&conn, &embedder, "evidence test", &opts)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:741:20
[INFO] [stdout]     |
[INFO] [stdout] 741 |         let opts = crate::components::db::SearchOptions {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 741 -         let opts = crate::components::db::SearchOptions {
[INFO] [stdout] 741 +         let opts = db::SearchOptions {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:753:20
[INFO] [stdout]     |
[INFO] [stdout] 753 |         let conn = crate::components::db::open_db(&paths.db).unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 753 -         let conn = crate::components::db::open_db(&paths.db).unwrap();
[INFO] [stdout] 753 +         let conn = db::open_db(&paths.db).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:754:23
[INFO] [stdout]     |
[INFO] [stdout] 754 |         let results = crate::components::db::search_entries(
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 754 -         let results = crate::components::db::search_entries(
[INFO] [stdout] 754 +         let results = db::search_entries(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/commands/search.rs:804:9
[INFO] [stdout]     |
[INFO] [stdout] 804 | /         /// Invariant: arbitrary FTS queries don't panic and FTS keywords
[INFO] [stdout] 805 | |         /// are treated as literals, not operators. Quote/backslash escaping
[INFO] [stdout] 806 | |         /// preserves valid FTS5 syntax.
[INFO] [stdout]     | |_________-------------------------------^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           rustdoc does not generate documentation for macro invocations
[INFO] [stdout]     |
[INFO] [stdout]     = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SearchOptions` and `open_db_memory`
[INFO] [stdout]    --> src/commands/search.rs:810:45
[INFO] [stdout]     |
[INFO] [stdout] 810 |                 use crate::components::db::{open_db_memory, search_entries, SearchOptions};
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^                  ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]    --> src/commands/search.rs:814:21
[INFO] [stdout]     |
[INFO] [stdout] 814 |                 use std::path::Path;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:816:27
[INFO] [stdout]     |
[INFO] [stdout] 816 |                 let dir = tempfile::tempdir().unwrap();
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 816 -                 let dir = tempfile::tempdir().unwrap();
[INFO] [stdout] 816 +                 let dir = tempdir().unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:840:28
[INFO] [stdout]     |
[INFO] [stdout] 840 |                 let conn = crate::components::db::open_db(&paths.db).unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 840 -                 let conn = crate::components::db::open_db(&paths.db).unwrap();
[INFO] [stdout] 840 +                 let conn = db::open_db(&paths.db).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:906:26
[INFO] [stdout]     |
[INFO] [stdout] 906 |         let local_conn = crate::components::db::open_db(&local_paths.db).unwrap();
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 906 -         let local_conn = crate::components::db::open_db(&local_paths.db).unwrap();
[INFO] [stdout] 906 +         let local_conn = db::open_db(&local_paths.db).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:922:20
[INFO] [stdout]     |
[INFO] [stdout] 922 |         let opts = crate::components::db::SearchOptions {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 922 -         let opts = crate::components::db::SearchOptions {
[INFO] [stdout] 922 +         let opts = db::SearchOptions {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:935:23
[INFO] [stdout]     |
[INFO] [stdout] 935 |         let peer_db = crate::config::Paths::from_root(std::path::Path::new(&peer_root_str)).db;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 935 -         let peer_db = crate::config::Paths::from_root(std::path::Path::new(&peer_root_str)).db;
[INFO] [stdout] 935 +         let peer_db = Paths::from_root(std::path::Path::new(&peer_root_str)).db;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:936:25
[INFO] [stdout]     |
[INFO] [stdout] 936 |         let peer_conn = crate::components::db::open_db(&peer_db).unwrap();
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 936 -         let peer_conn = crate::components::db::open_db(&peer_db).unwrap();
[INFO] [stdout] 936 +         let peer_conn = db::open_db(&peer_db).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:937:25
[INFO] [stdout]     |
[INFO] [stdout] 937 |         let peer_opts = crate::components::db::SearchOptions {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 937 -         let peer_opts = crate::components::db::SearchOptions {
[INFO] [stdout] 937 +         let peer_opts = db::SearchOptions {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/commands/search.rs:941:32
[INFO] [stdout]     |
[INFO] [stdout] 941 |         let mut peer_results = crate::components::db::search_entries(
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 941 -         let mut peer_results = crate::components::db::search_entries(
[INFO] [stdout] 941 +         let mut peer_results = db::search_entries(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]     --> src/commands/stale_check.rs:1048:9
[INFO] [stdout]      |
[INFO] [stdout] 1048 | /         /// Invariant: STALE, REVIEW, UNREACHABLE buckets are pairwise disjoint.
[INFO] [stdout] 1049 | |         /// All entry IDs appear in exactly zero or one bucket.
[INFO] [stdout]      | |_________------------------------------------------------------^
[INFO] [stdout]      |           |
[INFO] [stdout]      |           rustdoc does not generate documentation for macro invocations
[INFO] [stdout]      |
[INFO] [stdout]      = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `blob_to_f32s` and `f32s_to_blob`
[INFO] [stdout]  --> src/components/db.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     blob_to_f32s, cosine_similarity, decode_emb_blob, decode_f16_blob_into, f32s_to_blob,
[INFO] [stdout]   |     ^^^^^^^^^^^^                                                            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2098:22
[INFO] [stdout]      |
[INFO] [stdout] 2098 |         ev_rows: Vec<crate::models::Evidence>,
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2098 -         ev_rows: Vec<crate::models::Evidence>,
[INFO] [stdout] 2098 +         ev_rows: Vec<Evidence>,
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2147:29
[INFO] [stdout]      |
[INFO] [stdout] 2147 |     let mut flat_tasks: Vec<crate::models::Evidence> = Vec::new();
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2147 -     let mut flat_tasks: Vec<crate::models::Evidence> = Vec::new();
[INFO] [stdout] 2147 +     let mut flat_tasks: Vec<Evidence> = Vec::new();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2183:54
[INFO] [stdout]      |
[INFO] [stdout] 2183 |                 crossbeam_channel::bounded::<(usize, crate::models::Evidence)>(work_chan_cap);
[INFO] [stdout]      |                                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2183 -                 crossbeam_channel::bounded::<(usize, crate::models::Evidence)>(work_chan_cap);
[INFO] [stdout] 2183 +                 crossbeam_channel::bounded::<(usize, Evidence)>(work_chan_cap);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2317:10
[INFO] [stdout]      |
[INFO] [stdout] 2317 |     impl crate::components::embedder::Embedder for SearchTestEmbedder {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2317 -     impl crate::components::embedder::Embedder for SearchTestEmbedder {
[INFO] [stdout] 2317 +     impl Embedder for SearchTestEmbedder {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2318:40
[INFO] [stdout]      |
[INFO] [stdout] 2318 |         fn embed(&self, text: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2318 -         fn embed(&self, text: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout] 2318 +         fn embed(&self, text: &str) -> Result<Vec<f32>> {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:2502:20
[INFO] [stdout]      |
[INFO] [stdout] 2502 |         let conn = rusqlite::Connection::open_in_memory().unwrap();
[INFO] [stdout]      |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 2502 -         let conn = rusqlite::Connection::open_in_memory().unwrap();
[INFO] [stdout] 2502 +         let conn = Connection::open_in_memory().unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3030:9
[INFO] [stdout]      |
[INFO] [stdout] 3030 |         std::fs::create_dir_all(root.join("src")).unwrap();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3030 -         std::fs::create_dir_all(root.join("src")).unwrap();
[INFO] [stdout] 3030 +         fs::create_dir_all(root.join("src")).unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3031:9
[INFO] [stdout]      |
[INFO] [stdout] 3031 |         std::fs::write(root.join(rel), cited_content).unwrap();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3031 -         std::fs::write(root.join(rel), cited_content).unwrap();
[INFO] [stdout] 3031 +         fs::write(root.join(rel), cited_content).unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3120:48
[INFO] [stdout]      |
[INFO] [stdout] 3120 |     fn snapshot_db_state(conn: &Connection) -> anyhow::Result<DbSnapshot> {
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3120 -     fn snapshot_db_state(conn: &Connection) -> anyhow::Result<DbSnapshot> {
[INFO] [stdout] 3120 +     fn snapshot_db_state(conn: &Connection) -> Result<DbSnapshot> {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3245:9
[INFO] [stdout]      |
[INFO] [stdout] 3245 |         std::fs::create_dir_all(root.join("src")).unwrap();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3245 -         std::fs::create_dir_all(root.join("src")).unwrap();
[INFO] [stdout] 3245 +         fs::create_dir_all(root.join("src")).unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3246:9
[INFO] [stdout]      |
[INFO] [stdout] 3246 |         std::fs::write(root.join("src/big.rs"), cited_content).unwrap();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3246 -         std::fs::write(root.join("src/big.rs"), cited_content).unwrap();
[INFO] [stdout] 3246 +         fs::write(root.join("src/big.rs"), cited_content).unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `blob_to_f32s`
[INFO] [stdout]     --> src/components/db.rs:3413:29
[INFO] [stdout]      |
[INFO] [stdout] 3413 |         use crate::models::{blob_to_f32s, f32s_to_blob};
[INFO] [stdout]      |                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3482:14
[INFO] [stdout]      |
[INFO] [stdout] 3482 |         impl crate::components::embedder::Embedder for FixedEmbedder {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3482 -         impl crate::components::embedder::Embedder for FixedEmbedder {
[INFO] [stdout] 3482 +         impl Embedder for FixedEmbedder {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3483:41
[INFO] [stdout]      |
[INFO] [stdout] 3483 |             fn embed(&self, _: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3483 -             fn embed(&self, _: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout] 3483 +             fn embed(&self, _: &str) -> Result<Vec<f32>> {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::f32s_to_blob`
[INFO] [stdout]     --> src/components/db.rs:3555:13
[INFO] [stdout]      |
[INFO] [stdout] 3555 |         use crate::models::f32s_to_blob;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3558:14
[INFO] [stdout]      |
[INFO] [stdout] 3558 |         impl crate::components::embedder::Embedder for FakeEmbedder {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3558 -         impl crate::components::embedder::Embedder for FakeEmbedder {
[INFO] [stdout] 3558 +         impl Embedder for FakeEmbedder {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3559:41
[INFO] [stdout]      |
[INFO] [stdout] 3559 |             fn embed(&self, _: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3559 -             fn embed(&self, _: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout] 3559 +             fn embed(&self, _: &str) -> Result<Vec<f32>> {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::f32s_to_blob`
[INFO] [stdout]     --> src/components/db.rs:3625:13
[INFO] [stdout]      |
[INFO] [stdout] 3625 |         use crate::models::f32s_to_blob;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3628:14
[INFO] [stdout]      |
[INFO] [stdout] 3628 |         impl crate::components::embedder::Embedder for FakeEmbedder {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3628 -         impl crate::components::embedder::Embedder for FakeEmbedder {
[INFO] [stdout] 3628 +         impl Embedder for FakeEmbedder {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3629:41
[INFO] [stdout]      |
[INFO] [stdout] 3629 |             fn embed(&self, _: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3629 -             fn embed(&self, _: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout] 3629 +             fn embed(&self, _: &str) -> Result<Vec<f32>> {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3702:14
[INFO] [stdout]      |
[INFO] [stdout] 3702 |         impl crate::components::embedder::Embedder for FakeEmbedder {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3702 -         impl crate::components::embedder::Embedder for FakeEmbedder {
[INFO] [stdout] 3702 +         impl Embedder for FakeEmbedder {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3703:41
[INFO] [stdout]      |
[INFO] [stdout] 3703 |             fn embed(&self, _: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3703 -             fn embed(&self, _: &str) -> anyhow::Result<Vec<f32>> {
[INFO] [stdout] 3703 +             fn embed(&self, _: &str) -> Result<Vec<f32>> {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3810:24
[INFO] [stdout]      |
[INFO] [stdout] 3810 |         let baseline = std::fs::read_dir("/proc/self/task")
[INFO] [stdout]      |                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3810 -         let baseline = std::fs::read_dir("/proc/self/task")
[INFO] [stdout] 3810 +         let baseline = fs::read_dir("/proc/self/task")
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3816:48
[INFO] [stdout]      |
[INFO] [stdout] 3816 |         let peak_threads = std::sync::Arc::new(std::sync::atomic::AtomicUsize::new(baseline));
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3816 -         let peak_threads = std::sync::Arc::new(std::sync::atomic::AtomicUsize::new(baseline));
[INFO] [stdout] 3816 +         let peak_threads = std::sync::Arc::new(AtomicUsize::new(baseline));
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/db.rs:3823:32
[INFO] [stdout]      |
[INFO] [stdout] 3823 |                 if let Ok(d) = std::fs::read_dir("/proc/self/task") {
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 3823 -                 if let Ok(d) = std::fs::read_dir("/proc/self/task") {
[INFO] [stdout] 3823 +                 if let Ok(d) = fs::read_dir("/proc/self/task") {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/components/transcript_state.rs:213:9
[INFO] [stdout]     |
[INFO] [stdout] 213 |         std::fs::write(&tmp_path, serde_json::to_vec(&fake_map).unwrap()).unwrap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 213 -         std::fs::write(&tmp_path, serde_json::to_vec(&fake_map).unwrap()).unwrap();
[INFO] [stdout] 213 +         fs::write(&tmp_path, serde_json::to_vec(&fake_map).unwrap()).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/components/verification.rs:908:21
[INFO] [stdout]     |
[INFO] [stdout] 908 |         let outer = tempfile::NamedTempFile::new().unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 908 -         let outer = tempfile::NamedTempFile::new().unwrap();
[INFO] [stdout] 908 +         let outer = NamedTempFile::new().unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/verification.rs:1055:23
[INFO] [stdout]      |
[INFO] [stdout] 1055 |         let outside = tempfile::NamedTempFile::new().unwrap();
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1055 -         let outside = tempfile::NamedTempFile::new().unwrap();
[INFO] [stdout] 1055 +         let outside = NamedTempFile::new().unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/verification.rs:1085:23
[INFO] [stdout]      |
[INFO] [stdout] 1085 |         let outside = tempfile::NamedTempFile::new().unwrap();
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1085 -         let outside = tempfile::NamedTempFile::new().unwrap();
[INFO] [stdout] 1085 +         let outside = NamedTempFile::new().unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/verification.rs:1163:22
[INFO] [stdout]      |
[INFO] [stdout] 1163 |         let inside = std::fs::File::open(&repo_file).unwrap();
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1163 -         let inside = std::fs::File::open(&repo_file).unwrap();
[INFO] [stdout] 1163 +         let inside = File::open(&repo_file).unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]     --> src/components/verification.rs:1164:23
[INFO] [stdout]      |
[INFO] [stdout] 1164 |         let outside = std::fs::File::open(&sibling_file).unwrap();
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]      |
[INFO] [stdout] 1164 -         let outside = std::fs::File::open(&sibling_file).unwrap();
[INFO] [stdout] 1164 +         let outside = File::open(&sibling_file).unwrap();
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trivial cast: `&std::string::String` as `&dyn ToSql`
[INFO] [stdout]     --> src/components/db.rs:1225:72
[INFO] [stdout]      |
[INFO] [stdout] 1225 |             let mut params_vec: Vec<&dyn ToSql> = chunk.iter().map(|s| s as &dyn ToSql).collect();
[INFO] [stdout]      |                                                                        ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: cast can be replaced by coercion; this might require a temporary variable
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]     --> src/lib.rs:7:27
[INFO] [stdout]      |
[INFO] [stdout]    7 | #![warn(rust_2018_idioms, trivial_casts, unused_lifetimes, unused_qualifications)]
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trivial cast: `&std::string::String` as `&dyn ToSql`
[INFO] [stdout]     --> src/components/db.rs:1225:72
[INFO] [stdout]      |
[INFO] [stdout] 1225 |             let mut params_vec: Vec<&dyn ToSql> = chunk.iter().map(|s| s as &dyn ToSql).collect();
[INFO] [stdout]      |                                                                        ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: cast can be replaced by coercion; this might require a temporary variable
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]     --> src/lib.rs:7:27
[INFO] [stdout]      |
[INFO] [stdout]    7 | #![warn(rust_2018_idioms, trivial_casts, unused_lifetimes, unused_qualifications)]
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_abs`
[INFO] [stdout]    --> src/components/verification.rs:306:41
[INFO] [stdout]     |
[INFO] [stdout] 306 | fn opened_file_within_repo(file: &File, file_abs: &Path, repo_root: &Path) -> bool {
[INFO] [stdout]     |                                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_abs`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_abs`
[INFO] [stdout]    --> src/components/verification.rs:306:41
[INFO] [stdout]     |
[INFO] [stdout] 306 | fn opened_file_within_repo(file: &File, file_abs: &Path, repo_root: &Path) -> bool {
[INFO] [stdout]     |                                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_abs`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_phase2_barrier` is never used
[INFO] [stdout]   --> src/commands/rebuild.rs:26:15
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub(crate) fn set_phase2_barrier(b: std::sync::Arc<std::sync::Barrier>) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 13s
[INFO] running `Command { std: "docker" "inspect" "d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17", kill_on_drop: false }`
[INFO] [stdout] d55c34dc6ec096d2db80f92d25a3c725f34de8b72e143cf0fdd6979bde629e17
