[INFO] cloning repository https://github.com/c86j224s/liquid
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/c86j224s/liquid" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fc86j224s%2Fliquid", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fc86j224s%2Fliquid'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3c98288f8967053113ed6235c10f36b2a2f66cc2
[INFO] checking c86j224s/liquid against 65b20a97de33e9e59992793a144aef2950c48c76 for pr-154715
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fc86j224s%2Fliquid" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/c86j224s/liquid
[INFO] finished tweaking git repo https://github.com/c86j224s/liquid
[INFO] tweaked toml for git repo https://github.com/c86j224s/liquid written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/c86j224s/liquid on toolchain 65b20a97de33e9e59992793a144aef2950c48c76
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+65b20a97de33e9e59992793a144aef2950c48c76" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/c86j224s/liquid 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" "+65b20a97de33e9e59992793a144aef2950c48c76" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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] 7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999
[INFO] running `Command { std: "docker" "start" "7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999", 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" "7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999" "/opt/rustwide/cargo-home/bin/cargo" "+65b20a97de33e9e59992793a144aef2950c48c76" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999", 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" "7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999" "/opt/rustwide/cargo-home/bin/cargo" "+65b20a97de33e9e59992793a144aef2950c48c76" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling siphasher v0.3.11
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling phf_shared v0.10.0
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]     Checking mac v0.1.1
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]     Checking precomputed-hash v0.1.1
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]     Checking futf v0.1.5
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]     Checking tendril v0.4.3
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling phf_generator v0.10.0
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling phf_codegen v0.10.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]    Compiling sqlformat v0.2.6
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]     Checking phf v0.10.1
[INFO] [stderr]     Checking dtoa v1.0.11
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling selectors v0.25.0
[INFO] [stderr]    Compiling markup5ever v0.12.1
[INFO] [stderr]     Checking getopts v0.2.24
[INFO] [stderr]     Checking dtoa-short v0.3.5
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking servo_arc v0.3.0
[INFO] [stderr]    Compiling rustls v0.23.39
[INFO] [stderr]     Checking ego-tree v0.6.3
[INFO] [stderr]    Compiling openssl v0.10.78
[INFO] [stderr]    Compiling markup5ever v0.11.0
[INFO] [stderr]    Compiling libsqlite3-sys v0.27.0
[INFO] [stderr]    Compiling aws-lc-sys v0.40.0
[INFO] [stderr]    Compiling openssl-sys v0.9.114
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking liquid-research-artifacts v0.1.0 (/opt/rustwide/workdir/crates/liquid-research-artifacts)
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]    Compiling pulldown-cmark v0.10.3
[INFO] [stderr]     Checking anstyle-parse v1.0.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking pulldown-cmark-escape v0.10.1
[INFO] [stderr]     Checking colorchoice v1.0.5
[INFO] [stderr]     Checking liquid-html-report v0.1.0 (/opt/rustwide/workdir/crates/liquid-html-report)
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking uuid v1.23.1
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]    Compiling html5ever v0.26.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling html5ever v0.27.0
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking cssparser v0.31.2
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking string_cache v0.8.9
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking xml5ever v0.18.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking xml5ever v0.17.0
[INFO] [stderr]     Checking liquid-files v0.1.0 (/opt/rustwide/workdir/crates/liquid-files)
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking scraper v0.19.1
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking markup5ever_rcdom v0.3.0
[INFO] [stderr]     Checking sqlx-core v0.7.4
[INFO] [stderr]     Checking html2md v0.2.15
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking markup5ever_rcdom v0.2.0
[INFO] [stderr]     Checking sqlx-sqlite v0.7.4
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]    Compiling aws-lc-rs v1.16.3
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.4
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]    Compiling sqlx-macros v0.7.4
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]     Checking liquid-protocol v0.1.0 (/opt/rustwide/workdir/crates/liquid-protocol)
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking readability v0.3.0
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.6.2
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.2
[INFO] [stderr]     Checking liquid-research-core v0.1.0 (/opt/rustwide/workdir/crates/liquid-research-core)
[INFO] [stderr]     Checking liquid-workspace v0.1.0 (/opt/rustwide/workdir/crates/liquid-workspace)
[INFO] [stderr]     Checking liquid-acquisition v0.1.0 (/opt/rustwide/workdir/crates/liquid-acquisition)
[INFO] [stderr]     Checking liquid-runtime v0.1.0 (/opt/rustwide/workdir/crates/liquid-runtime)
[INFO] [stderr]     Checking liquid-storage-sqlite v0.1.0 (/opt/rustwide/workdir/crates/liquid-storage-sqlite)
[INFO] [stdout] warning: function `configured_search_provider` is never used
[INFO] [stdout]    --> crates/liquid-acquisition/src/research_sources.rs:647:4
[INFO] [stdout]     |
[INFO] [stdout] 647 | fn configured_search_provider(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dedupe_sources` is never used
[INFO] [stdout]     --> crates/liquid-acquisition/src/research_sources.rs:4180:4
[INFO] [stdout]      |
[INFO] [stdout] 4180 | fn dedupe_sources(sources: &mut Vec<ResearchSource>) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `source_score` is never used
[INFO] [stdout]     --> crates/liquid-acquisition/src/research_sources.rs:4214:4
[INFO] [stdout]      |
[INFO] [stdout] 4214 | fn source_score(url: &str) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `source_quality` is never used
[INFO] [stdout]     --> crates/liquid-acquisition/src/research_sources.rs:4278:4
[INFO] [stdout]      |
[INFO] [stdout] 4278 | fn source_quality(url: &str) -> &'static str {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking liquid-server v0.1.0 (/opt/rustwide/workdir/crates/liquid-server)
[INFO] [stderr]     Checking liquid-research-classic v0.8.0 (/opt/rustwide/workdir/crates/liquid-research-classic)
[INFO] [stderr]     Checking liquid v0.8.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `default_engine_presets` is never used
[INFO] [stdout]  --> src/application/engine_presets/catalog.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) fn default_engine_presets() -> Vec<DefaultEnginePreset> {
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_engine_preset_by_id` is never used
[INFO] [stdout]   --> src/application/engine_presets/catalog.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) fn default_engine_preset_by_id(id: i64) -> Option<EnginePreset> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_engine_preset_for_model` is never used
[INFO] [stdout]   --> src/application/engine_presets/catalog.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) fn default_engine_preset_for_model(model: Option<&str>) -> EnginePreset {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_engine_preset_to_engine_preset` is never used
[INFO] [stdout]   --> src/application/engine_presets/catalog.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(crate) fn default_engine_preset_to_engine_preset(preset: DefaultEnginePreset) -> EnginePreset {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SqliteEnginePresetRepository` is never constructed
[INFO] [stdout]  --> src/application/engine_presets/repository.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(crate) struct SqliteEnginePresetRepository<'a> {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/application/engine_presets/repository.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl<'a> SqliteEnginePresetRepository<'a> {
[INFO] [stdout]    | ----------------------------------------- associated items in this implementation
[INFO] [stdout] 12 |     pub(crate) fn new(db: &'a SqlitePool) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub(crate) async fn list_custom_presets(&self) -> Result<Vec<EnginePreset>, sqlx::Error> {
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub(crate) async fn load_custom_preset_by_id(
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub(crate) async fn load_enabled_custom_preset_by_id(
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub(crate) async fn insert_custom_preset(
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub(crate) async fn update_custom_preset_name_and_model(
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub(crate) async fn delete_custom_preset(&self, id: i64) -> Result<u64, sqlx::Error> {
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub(crate) async fn record_test_result(
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EngineResolutionError` is never used
[INFO] [stdout]   --> src/application/engine_presets/resolver.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) enum EngineResolutionError {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_engine_for_research` is never used
[INFO] [stdout]   --> src/application/engine_presets/resolver.rs:16:21
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) async fn resolve_engine_for_research(
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compatibility_preset_for_model` is never used
[INFO] [stdout]    --> src/application/engine_presets/resolver.rs:102:15
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub(crate) fn compatibility_preset_for_model(model: Option<&str>) -> EnginePreset {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_engine_preset_status` is never used
[INFO] [stdout]  --> src/application/engine_presets/status_check.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) async fn test_engine_preset_status(
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `executable_exists` is never used
[INFO] [stdout]    --> src/application/engine_presets/status_check.rs:117:15
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub(crate) fn executable_exists(command: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TaskRepository` is never used
[INFO] [stdout]   --> src/application/ports.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub(crate) trait TaskRepository {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `id`, `normalize_research_mode`, `normalize_research_type`, `research_focus_section`, `build_document_research_user_prompt`, and `build_follow_up_research_user_prompt` are never used
[INFO] [stdout]    --> src/application/ports.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub(crate) trait ResearchImplementation: Send + Sync {
[INFO] [stdout]     |                  ---------------------- methods in this trait
[INFO] [stdout] 127 |     fn id(&self) -> &'static str;
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     fn normalize_research_mode(&self, mode: &str) -> &'static str;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 139 |     fn normalize_research_type(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     fn research_focus_section(&self, instructions: Option<&str>) -> String;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 151 |     fn build_document_research_user_prompt(&self, instructions: Option<&str>) -> String;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 152 |     fn build_follow_up_research_user_prompt(&self, instructions: Option<&str>) -> String;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_allows_web_search` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn research_allows_web_search(file_prefix: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_search_provider_for` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) fn web_search_provider_for(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_search_audit_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:31:15
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(crate) fn web_search_audit_prompt(requested: bool, provider: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `intensity_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) fn intensity_prompt(intensity: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_controller_contract_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:39:15
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub(crate) fn research_controller_contract_prompt(format: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fallback_disclosure_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) fn fallback_disclosure_prompt(reason: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_research_type` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub(crate) fn normalize_research_type(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_mode_lens` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub(crate) fn research_mode_lens(mode: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_research_system_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) fn build_research_system_prompt(mode: &str, format: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_focus_section` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub(crate) fn research_focus_section(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_document_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub(crate) fn build_document_research_user_prompt(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_follow_up_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub(crate) fn build_follow_up_research_user_prompt(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_topic_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:79:15
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub(crate) fn build_topic_research_user_prompt(topic: &str, instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_smart_content` is never used
[INFO] [stdout]    --> src/application/scraping.rs:228:15
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub(crate) fn get_smart_content(html: &str, url_str: &str) -> (String, String) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_smart_content_with_strategy` is never used
[INFO] [stdout]    --> src/application/scraping.rs:232:15
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub(crate) fn get_smart_content_with_strategy(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extracted_content_is_sufficient` is never used
[INFO] [stdout]    --> src/application/scraping.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub(crate) fn extracted_content_is_sufficient(title: &str, content_html: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extracted_content_looks_noisy` is never used
[INFO] [stdout]    --> src/application/scraping.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub(crate) fn extracted_content_looks_noisy(content_html: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `markdown_plain_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:258:15
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub(crate) fn markdown_plain_text(markdown: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_text_for_quality` is never used
[INFO] [stdout]    --> src/application/scraping.rs:262:15
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub(crate) fn normalize_text_for_quality(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_scraped_title` is never used
[INFO] [stdout]    --> src/application/scraping.rs:266:15
[INFO] [stdout]     |
[INFO] [stdout] 266 | pub(crate) fn normalize_scraped_title(title: &str) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_scraped_title` is never used
[INFO] [stdout]    --> src/application/scraping.rs:270:15
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub(crate) fn resolve_scraped_title(html: &str, extracted_title: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fallback_page_content` is never used
[INFO] [stdout]    --> src/application/scraping.rs:274:15
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub(crate) fn fallback_page_content(html: &str, preferred_title: &str) -> Option<(String, String)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_document_title` is never used
[INFO] [stdout]    --> src/application/scraping.rs:278:15
[INFO] [stdout]     |
[INFO] [stdout] 278 | pub(crate) fn extract_document_title(document: &scraper::Html) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_scrape_failure_for_task` is never used
[INFO] [stdout]    --> src/application/scraping.rs:601:15
[INFO] [stdout]     |
[INFO] [stdout] 601 | pub(crate) fn format_scrape_failure_for_task(diagnostics: &ScrapeDiagnostics) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_geeknews_url` is never used
[INFO] [stdout]    --> src/application/scraping.rs:622:15
[INFO] [stdout]     |
[INFO] [stdout] 622 | pub(crate) fn is_geeknews_url(url: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_geeknews_original_url` is never used
[INFO] [stdout]    --> src/application/scraping.rs:639:15
[INFO] [stdout]     |
[INFO] [stdout] 639 | pub(crate) fn extract_geeknews_original_url(html: &str, geeknews_url: &str) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `preserve_code_line_spans` is never used
[INFO] [stdout]    --> src/application/scraping.rs:905:15
[INFO] [stdout]     |
[INFO] [stdout] 905 | pub(crate) fn preserve_code_line_spans(html: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_line_span_pre` is never used
[INFO] [stdout]    --> src/application/scraping.rs:909:15
[INFO] [stdout]     |
[INFO] [stdout] 909 | pub(crate) fn normalize_line_span_pre(pre_html: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_pre_code_lines` is never used
[INFO] [stdout]    --> src/application/scraping.rs:913:15
[INFO] [stdout]     |
[INFO] [stdout] 913 | pub(crate) fn select_pre_code_lines(fragment: &scraper::Html) -> Vec<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_pandoc_line_span_id` is never used
[INFO] [stdout]    --> src/application/scraping.rs:917:15
[INFO] [stdout]     |
[INFO] [stdout] 917 | pub(crate) fn is_pandoc_line_span_id(id: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_ascii_case_insensitive` is never used
[INFO] [stdout]    --> src/application/scraping.rs:921:15
[INFO] [stdout]     |
[INFO] [stdout] 921 | pub(crate) fn find_ascii_case_insensitive(haystack: &str, needle: &str) -> Option<usize> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_markdown_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:929:15
[INFO] [stdout]     |
[INFO] [stdout] 929 | pub(crate) fn escape_markdown_text(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_multiline_linked_images` is never used
[INFO] [stdout]    --> src/application/scraping.rs:933:15
[INFO] [stdout]     |
[INFO] [stdout] 933 | pub(crate) fn normalize_multiline_linked_images(markdown: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_multiline_linked_image` is never used
[INFO] [stdout]    --> src/application/scraping.rs:937:15
[INFO] [stdout]     |
[INFO] [stdout] 937 | pub(crate) fn parse_multiline_linked_image(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trim_markdown_content_indent` is never used
[INFO] [stdout]    --> src/application/scraping.rs:944:15
[INFO] [stdout]     |
[INFO] [stdout] 944 | pub(crate) fn trim_markdown_content_indent(line: &str) -> Option<(usize, &str)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_markdown_link_target_with_trailing_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:948:15
[INFO] [stdout]     |
[INFO] [stdout] 948 | pub(crate) fn parse_markdown_link_target_with_trailing_text(line: &str) -> Option<(String, &str)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_markdown_link_target_close` is never used
[INFO] [stdout]    --> src/application/scraping.rs:952:15
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub(crate) fn find_markdown_link_target_close(target_and_trailing: &str) -> Option<usize> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opens_markdown_fence` is never used
[INFO] [stdout]    --> src/application/scraping.rs:956:15
[INFO] [stdout]     |
[INFO] [stdout] 956 | pub(crate) fn opens_markdown_fence(line: &str) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `closes_markdown_fence` is never used
[INFO] [stdout]    --> src/application/scraping.rs:960:15
[INFO] [stdout]     |
[INFO] [stdout] 960 | pub(crate) fn closes_markdown_fence(line: &str, marker: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_html_attribute` is never used
[INFO] [stdout]    --> src/application/scraping.rs:964:15
[INFO] [stdout]     |
[INFO] [stdout] 964 | pub(crate) fn escape_html_attribute(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_server_context` is never used
[INFO] [stdout]   --> src/application/server_adapters.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) fn build_server_context(state: Arc<AppState>) -> Arc<ServerContext> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RootServerAdapter` is never constructed
[INFO] [stdout]   --> src/application/server_adapters.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | struct RootServerAdapter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `protocol_task_update_event` is never used
[INFO] [stdout]   --> src/application/server_adapters.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn protocol_task_update_event(event: &LegacyTaskUpdateEvent) -> TaskUpdateEvent {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `protocol_engine_preset` is never used
[INFO] [stdout]   --> src/application/server_adapters.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn protocol_engine_preset(preset: LegacyEnginePreset) -> EnginePreset {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `hydrate_file_tags`, `has_research_request`, `build_content_preview`, and `list_files_with_metadata` are never used
[INFO] [stdout]    --> src/application/server_adapters.rs:127:14
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl RootServerAdapter {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] 127 |     async fn hydrate_file_tags(&self, items: &mut [FileListItem]) -> Result<(), sqlx::Error> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     async fn has_research_request(&self, file: &FileMetadata) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     async fn build_content_preview(&self, file: &FileMetadata) -> Option<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     async fn list_files_with_metadata(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TagUpdateError` is never used
[INFO] [stdout]    --> src/application/server_adapters.rs:169:6
[INFO] [stdout]     |
[INFO] [stdout] 169 | enum TagUpdateError {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `user_tag_labels` is never used
[INFO] [stdout]    --> src/application/server_adapters.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn user_tag_labels(raw_tags: Vec<String>) -> Result<Vec<String>, TagUpdateError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `user_tag_ids` is never used
[INFO] [stdout]    --> src/application/server_adapters.rs:197:10
[INFO] [stdout]     |
[INFO] [stdout] 197 | async fn user_tag_ids(
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_user_tag_id` is never used
[INFO] [stdout]    --> src/application/server_adapters.rs:211:10
[INFO] [stdout]     |
[INFO] [stdout] 211 | async fn ensure_user_tag_id(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replace_user_tag_ids` is never used
[INFO] [stdout]    --> src/application/server_adapters.rs:253:10
[INFO] [stdout]     |
[INFO] [stdout] 253 | async fn replace_user_tag_ids(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_has_time_anchor` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:847:4
[INFO] [stdout]     |
[INFO] [stdout] 847 | fn claim_has_time_anchor(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_has_region_anchor` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:851:4
[INFO] [stdout]     |
[INFO] [stdout] 851 | fn claim_has_region_anchor(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_has_actor_anchor` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:855:4
[INFO] [stdout]     |
[INFO] [stdout] 855 | fn claim_has_actor_anchor(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_has_handoff_anchor` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:859:4
[INFO] [stdout]     |
[INFO] [stdout] 859 | fn claim_has_handoff_anchor(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_is_phase_specific` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:865:4
[INFO] [stdout]     |
[INFO] [stdout] 865 | fn claim_is_phase_specific(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `infer_historical_claim_type` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:882:4
[INFO] [stdout]     |
[INFO] [stdout] 882 | fn infer_historical_claim_type(claim: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK_CANCELLED_MESSAGE` is never used
[INFO] [stdout]  --> src/application/tasks/lifecycle_policy.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub(crate) const TASK_CANCELLED_MESSAGE: &str = "Task was cancelled";
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE_CANCELLABLE_TASK_STATUSES` is never used
[INFO] [stdout]  --> src/application/tasks/lifecycle_policy.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub(super) const DELETE_CANCELLABLE_TASK_STATUSES: &[&str] = &[
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE_CANCELLABLE_TASK_STATUS_SQL_LIST` is never used
[INFO] [stdout]   --> src/application/tasks/lifecycle_policy.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) const DELETE_CANCELLABLE_TASK_STATUS_SQL_LIST: &str =
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ABORT_RECOVERY_TASK_STATUSES` is never used
[INFO] [stdout]   --> src/application/tasks/lifecycle_policy.rs:13:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(super) const ABORT_RECOVERY_TASK_STATUSES: &[&str] =
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_delete_cancellable_task_status` is never used
[INFO] [stdout]   --> src/application/tasks/lifecycle_policy.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) fn is_delete_cancellable_task_status(status: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_abort_recovery_task_status` is never used
[INFO] [stdout]   --> src/application/tasks/lifecycle_policy.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub(super) fn is_abort_recovery_task_status(status: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_ai_queue_workers` is never used
[INFO] [stdout]    --> src/application/tasks/queue_workflow.rs:158:15
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub(crate) fn spawn_ai_queue_workers(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ai_queue_worker` is never used
[INFO] [stdout]    --> src/application/tasks/queue_workflow.rs:177:10
[INFO] [stdout]     |
[INFO] [stdout] 177 | async fn ai_queue_worker(state: Arc<AppState>, lane: QueueLane) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_claimed_task_with_cancellation` is never used
[INFO] [stdout]    --> src/application/tasks/queue_workflow.rs:187:10
[INFO] [stdout]     |
[INFO] [stdout] 187 | async fn execute_claimed_task_with_cancellation(state: Arc<AppState>, task: TaskInfo) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_task_interrupted_if_present` is never used
[INFO] [stdout]    --> src/application/tasks/queue_workflow.rs:209:21
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub(super) async fn mark_task_interrupted_if_present(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_repair_search_hints_block` is never used
[INFO] [stdout]   --> src/application/tasks/repair_helpers.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub(super) fn render_repair_search_hints_block(hints: &[RepairSearchHint]) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_retryable_task` is never used
[INFO] [stdout]  --> src/application/tasks/retry_policy.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub(crate) fn is_retryable_task(task: &TaskInfo) -> bool {
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retry_task_metadata` is never used
[INFO] [stdout]   --> src/application/tasks/retry_policy.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(crate) fn retry_task_metadata(task: &TaskInfo) -> TaskMetadata {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_retry_engine_metadata` is never used
[INFO] [stdout]   --> src/application/tasks/retry_policy.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) fn merge_retry_engine_metadata(target: &mut TaskMetadata, engine: TaskMetadata) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SqliteTaskRepository` is never constructed
[INFO] [stdout]  --> src/application/tasks/runtime_adapters.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub(super) struct SqliteTaskRepository<'a> {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/application/tasks/runtime_adapters.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl<'a> SqliteTaskRepository<'a> {
[INFO] [stdout]   | --------------------------------- associated function in this implementation
[INFO] [stdout] 8 |     pub(super) fn new(db: &'a sqlx::SqlitePool) -> Self {
[INFO] [stdout]   |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerInfo` is never constructed
[INFO] [stdout]   --> src/contracts.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) struct DrawerInfo {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePreset` is never constructed
[INFO] [stdout]   --> src/contracts.rs:54:19
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) struct EnginePreset {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/contracts.rs:83:16
[INFO] [stdout]     |
[INFO] [stdout]  81 | pub(crate) struct TaskInfo {
[INFO] [stdout]     |                   -------- fields in this struct
[INFO] [stdout]  82 |     pub(crate) id: i64,
[INFO] [stdout]  83 |     pub(crate) file_id: Option<i64>,
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub(crate) created_at: DateTime<Utc>,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout]  89 |     pub(crate) deleted_at: Option<DateTime<Utc>>,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub(crate) source_file_ids: Option<String>, // JSON array
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub(crate) research_type: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 100 |     pub(crate) research_mode: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 101 |     pub(crate) research_format: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub(crate) prompt_version: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub(crate) engine_preset_id: Option<i64>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 110 |     pub(crate) engine_preset_name: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TaskInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskSummary` is never constructed
[INFO] [stdout]    --> src/contracts.rs:131:19
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub(crate) struct TaskSummary {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatusUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:170:19
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub(crate) struct StatusUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerPayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:175:19
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub(crate) struct DrawerPayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerAssignment` is never constructed
[INFO] [stdout]    --> src/contracts.rs:181:19
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub(crate) struct DrawerAssignment {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePresetCreatePayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:186:19
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub(crate) struct EnginePresetCreatePayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePresetUpdatePayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:193:19
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub(crate) struct EnginePresetUpdatePayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TitleUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:199:19
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(crate) struct TitleUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadataUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:204:19
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub(crate) struct FileMetadataUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TagUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub(crate) struct TagUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScrapRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:215:19
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub(crate) struct ScrapRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActionRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:224:19
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub(crate) struct ActionRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiResearchRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:229:19
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub(crate) struct MultiResearchRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TopicResearchRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:243:19
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub(crate) struct TopicResearchRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PushRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:257:19
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub(crate) struct PushRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ModelOption` is never constructed
[INFO] [stdout]    --> src/contracts.rs:284:19
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub(crate) struct ModelOption {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RetryTaskPayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:312:19
[INFO] [stdout]     |
[INFO] [stdout] 312 | pub(crate) struct RetryTaskPayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EngineResolution` is never constructed
[INFO] [stdout]    --> src/contracts.rs:320:19
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub(crate) struct EngineResolution {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]    --> src/contracts.rs:355:19
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub(crate) struct AppConfig {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchQuery` is never constructed
[INFO] [stdout]    --> src/contracts.rs:775:19
[INFO] [stdout]     |
[INFO] [stdout] 775 | pub(crate) struct SearchQuery {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `install_panic_hook` is never used
[INFO] [stdout]   --> src/diagnostics.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) fn install_panic_hook(crash_dir: PathBuf) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_lifecycle_event` is never used
[INFO] [stdout]   --> src/diagnostics.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub(crate) fn log_lifecycle_event(event: &str, detail: &str) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shutdown_signal` is never used
[INFO] [stdout]   --> src/diagnostics.rs:44:21
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub(crate) async fn shutdown_signal() {
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_for_shutdown_signal` is never used
[INFO] [stdout]   --> src/diagnostics.rs:49:10
[INFO] [stdout]    |
[INFO] [stdout] 49 | async fn wait_for_shutdown_signal() -> &'static str {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_panic_report` is never used
[INFO] [stdout]   --> src/diagnostics.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn format_panic_report(info: &std::panic::PanicHookInfo<'_>, backtrace: &Backtrace) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_lifecycle_event` is never used
[INFO] [stdout]   --> src/diagnostics.rs:99:15
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub(crate) fn format_lifecycle_event(event: &str, detail: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_panic_summary` is never used
[INFO] [stdout]    --> src/diagnostics.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn format_panic_summary(info: &std::panic::PanicHookInfo<'_>) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sanitize_log_field` is never used
[INFO] [stdout]    --> src/diagnostics.rs:117:4
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn sanitize_log_field(value: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_crash_report` is never used
[INFO] [stdout]    --> src/diagnostics.rs:133:15
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub(crate) fn write_crash_report(crash_dir: &Path, report: &str) -> io::Result<PathBuf> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_private_crash_dir` is never used
[INFO] [stdout]    --> src/diagnostics.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn create_private_crash_dir(crash_dir: &Path) -> io::Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_private_file` is never used
[INFO] [stdout]    --> src/diagnostics.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn write_private_file(path: &Path, report: &str) -> io::Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_html_design_prompt` is never used
[INFO] [stdout]  --> src/research_design.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) fn build_html_design_prompt() -> String {
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `active_tasks`, `ai_workers`, `local_ai_workers`, and `research_implementation_id` are never read
[INFO] [stdout]   --> src/state.rs:53:16
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub(crate) struct AppState {
[INFO] [stdout]    |                   -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub(crate) active_tasks: Mutex<HashMap<i64, AbortHandle>>,
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 54 |     pub(crate) ai_workers: usize,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 55 |     pub(crate) local_ai_workers: usize,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub(crate) research_implementation_id: &'static str,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking liquid-bench v0.8.0 (/opt/rustwide/workdir/crates/liquid-bench)
[INFO] [stdout] warning: field `title` is never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:458:5
[INFO] [stdout]     |
[INFO] [stdout] 455 | struct ParsedSourceCard {
[INFO] [stdout]     |        ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 458 |     title: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedSourceCard` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `claim` is never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:465:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | struct ParsedClaimLogEntry {
[INFO] [stdout]     |        ------------------- field in this struct
[INFO] [stdout] 464 |     id: String,
[INFO] [stdout] 465 |     claim: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedClaimLogEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `topic`, and `conflicting_claim_ids` are never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:474:5
[INFO] [stdout]     |
[INFO] [stdout] 473 | struct ParsedConflictEntry {
[INFO] [stdout]     |        ------------------- fields in this struct
[INFO] [stdout] 474 |     id: String,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 475 |     topic: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 476 |     #[serde(default)]
[INFO] [stdout] 477 |     conflicting_claim_ids: Vec<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedConflictEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `candidate_queries` are never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:484:5
[INFO] [stdout]     |
[INFO] [stdout] 483 | struct ParsedDebtItem {
[INFO] [stdout]     |        -------------- fields in this struct
[INFO] [stdout] 484 |     id: String,
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |     candidate_queries: Vec<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedDebtItem` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `subject` is never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:505:5
[INFO] [stdout]     |
[INFO] [stdout] 504 | struct ParsedSourceDiagnosticsEnvelope {
[INFO] [stdout]     |        ------------------------------- field in this struct
[INFO] [stdout] 505 |     subject: Option<String>,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedSourceDiagnosticsEnvelope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reason` is never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:515:5
[INFO] [stdout]     |
[INFO] [stdout] 513 | struct ParsedSourcePackReport {
[INFO] [stdout]     |        ---------------------- field in this struct
[INFO] [stdout] 514 |     status: String,
[INFO] [stdout] 515 |     reason: Option<String>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedSourcePackReport` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `query`, `result_count`, `adopted_count`, `skipped_count`, and `error` are never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:528:5
[INFO] [stdout]     |
[INFO] [stdout] 527 | struct ParsedSourceQueryReport {
[INFO] [stdout]     |        ----------------------- fields in this struct
[INFO] [stdout] 528 |     query: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 532 |     result_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 533 |     adopted_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 534 |     skipped_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 535 |     error: Option<String>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedSourceQueryReport` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:550:5
[INFO] [stdout]     |
[INFO] [stdout] 544 | struct ParsedContextPackingDiagnostics {
[INFO] [stdout]     |        ------------------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 550 |     narrative_timeline_event_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 551 |     #[serde(default)]
[INFO] [stdout] 552 |     narrative_section_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 553 |     #[serde(default)]
[INFO] [stdout] 554 |     narrative_evidence_layer_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 555 |     #[serde(default)]
[INFO] [stdout] 556 |     narrative_interpretive_tension_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 557 |     #[serde(default)]
[INFO] [stdout] 558 |     narrative_impact_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 559 |     #[serde(default)]
[INFO] [stdout] 560 |     narrative_reader_question_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     reader_argument_node_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 567 |     #[serde(default)]
[INFO] [stdout] 568 |     reader_argument_edge_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 569 |     #[serde(default)]
[INFO] [stdout] 570 |     reader_narrative_plan_present: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 574 |     reader_critique_present: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     reader_critique_failed_metric_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedContextPackingDiagnostics` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_bounded_text_file` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:1048:4
[INFO] [stdout]      |
[INFO] [stdout] 1048 | fn read_bounded_text_file(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_replay_fixture_prompt` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:1057:4
[INFO] [stdout]      |
[INFO] [stdout] 1057 | fn extract_replay_fixture_prompt(resolved_user_prompt: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_failure_markdown_artifact` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:1215:4
[INFO] [stdout]      |
[INFO] [stdout] 1215 | fn render_failure_markdown_artifact(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_case_summary_json` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:1222:4
[INFO] [stdout]      |
[INFO] [stdout] 1222 | fn write_case_summary_json(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_case_failure_fallback_artifacts_with_stem` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:1244:4
[INFO] [stdout]      |
[INFO] [stdout] 1244 | fn write_case_failure_fallback_artifacts_with_stem(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_dimension_aggregates` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:1326:4
[INFO] [stdout]      |
[INFO] [stdout] 1326 | fn build_dimension_aggregates(executions: &[RunExecution]) -> Vec<BenchmarkDimensionAggregate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_by_key` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4171:4
[INFO] [stdout]      |
[INFO] [stdout] 4171 | fn count_by_key<I>(values: I) -> BTreeMap<String, usize>
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_count_map` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4178:4
[INFO] [stdout]      |
[INFO] [stdout] 4178 | fn render_count_map(counts: &BTreeMap<String, usize>) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `average_f64` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4186:4
[INFO] [stdout]      |
[INFO] [stdout] 4186 | fn average_f64(scores: &[f64]) -> f64 {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `min_f64` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4190:4
[INFO] [stdout]      |
[INFO] [stdout] 4190 | fn min_f64(scores: &[f64]) -> f64 {
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max_f64` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4194:4
[INFO] [stdout]      |
[INFO] [stdout] 4194 | fn max_f64(scores: &[f64]) -> f64 {
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `csv_escape` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4198:4
[INFO] [stdout]      |
[INFO] [stdout] 4198 | fn csv_escape(value: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `title` is never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:458:5
[INFO] [stdout]     |
[INFO] [stdout] 455 | struct ParsedSourceCard {
[INFO] [stdout]     |        ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 458 |     title: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedSourceCard` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `claim` is never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:465:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | struct ParsedClaimLogEntry {
[INFO] [stdout]     |        ------------------- field in this struct
[INFO] [stdout] 464 |     id: String,
[INFO] [stdout] 465 |     claim: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedClaimLogEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `topic`, and `conflicting_claim_ids` are never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:474:5
[INFO] [stdout]     |
[INFO] [stdout] 473 | struct ParsedConflictEntry {
[INFO] [stdout]     |        ------------------- fields in this struct
[INFO] [stdout] 474 |     id: String,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 475 |     topic: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 476 |     #[serde(default)]
[INFO] [stdout] 477 |     conflicting_claim_ids: Vec<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedConflictEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `candidate_queries` are never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:484:5
[INFO] [stdout]     |
[INFO] [stdout] 483 | struct ParsedDebtItem {
[INFO] [stdout]     |        -------------- fields in this struct
[INFO] [stdout] 484 |     id: String,
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |     candidate_queries: Vec<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedDebtItem` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `subject` is never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:505:5
[INFO] [stdout]     |
[INFO] [stdout] 504 | struct ParsedSourceDiagnosticsEnvelope {
[INFO] [stdout]     |        ------------------------------- field in this struct
[INFO] [stdout] 505 |     subject: Option<String>,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedSourceDiagnosticsEnvelope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reason` is never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:515:5
[INFO] [stdout]     |
[INFO] [stdout] 513 | struct ParsedSourcePackReport {
[INFO] [stdout]     |        ---------------------- field in this struct
[INFO] [stdout] 514 |     status: String,
[INFO] [stdout] 515 |     reason: Option<String>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedSourcePackReport` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `query`, `result_count`, `adopted_count`, `skipped_count`, and `error` are never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:528:5
[INFO] [stdout]     |
[INFO] [stdout] 527 | struct ParsedSourceQueryReport {
[INFO] [stdout]     |        ----------------------- fields in this struct
[INFO] [stdout] 528 |     query: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 532 |     result_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 533 |     adopted_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 534 |     skipped_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 535 |     error: Option<String>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedSourceQueryReport` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> crates/liquid-bench/src/main.rs:550:5
[INFO] [stdout]     |
[INFO] [stdout] 544 | struct ParsedContextPackingDiagnostics {
[INFO] [stdout]     |        ------------------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 550 |     narrative_timeline_event_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 551 |     #[serde(default)]
[INFO] [stdout] 552 |     narrative_section_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 553 |     #[serde(default)]
[INFO] [stdout] 554 |     narrative_evidence_layer_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 555 |     #[serde(default)]
[INFO] [stdout] 556 |     narrative_interpretive_tension_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 557 |     #[serde(default)]
[INFO] [stdout] 558 |     narrative_impact_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 559 |     #[serde(default)]
[INFO] [stdout] 560 |     narrative_reader_question_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     reader_argument_node_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 567 |     #[serde(default)]
[INFO] [stdout] 568 |     reader_argument_edge_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 569 |     #[serde(default)]
[INFO] [stdout] 570 |     reader_narrative_plan_present: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 574 |     reader_critique_present: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     reader_critique_failed_metric_count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParsedContextPackingDiagnostics` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_dimension_aggregates` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:1326:4
[INFO] [stdout]      |
[INFO] [stdout] 1326 | fn build_dimension_aggregates(executions: &[RunExecution]) -> Vec<BenchmarkDimensionAggregate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_by_key` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4171:4
[INFO] [stdout]      |
[INFO] [stdout] 4171 | fn count_by_key<I>(values: I) -> BTreeMap<String, usize>
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_count_map` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4178:4
[INFO] [stdout]      |
[INFO] [stdout] 4178 | fn render_count_map(counts: &BTreeMap<String, usize>) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `average_f64` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4186:4
[INFO] [stdout]      |
[INFO] [stdout] 4186 | fn average_f64(scores: &[f64]) -> f64 {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `min_f64` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4190:4
[INFO] [stdout]      |
[INFO] [stdout] 4190 | fn min_f64(scores: &[f64]) -> f64 {
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max_f64` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4194:4
[INFO] [stdout]      |
[INFO] [stdout] 4194 | fn max_f64(scores: &[f64]) -> f64 {
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `csv_escape` is never used
[INFO] [stdout]     --> crates/liquid-bench/src/main.rs:4198:4
[INFO] [stdout]      |
[INFO] [stdout] 4198 | fn csv_escape(value: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assign_file_tags` is never used
[INFO] [stdout]  --> src/application/file_tags.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(crate) async fn assign_file_tags(
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TaskRepository` is never used
[INFO] [stdout]   --> src/application/ports.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub(crate) trait TaskRepository {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `id` and `research_focus_section` are never used
[INFO] [stdout]    --> src/application/ports.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub(crate) trait ResearchImplementation: Send + Sync {
[INFO] [stdout]     |                  ---------------------- methods in this trait
[INFO] [stdout] 127 |     fn id(&self) -> &'static str;
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     fn research_focus_section(&self, instructions: Option<&str>) -> String;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_allows_web_search` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn research_allows_web_search(file_prefix: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_search_provider_for` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) fn web_search_provider_for(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_search_audit_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:31:15
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(crate) fn web_search_audit_prompt(requested: bool, provider: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `intensity_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) fn intensity_prompt(intensity: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_controller_contract_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:39:15
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub(crate) fn research_controller_contract_prompt(format: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fallback_disclosure_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) fn fallback_disclosure_prompt(reason: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_research_type` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub(crate) fn normalize_research_type(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_mode_lens` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub(crate) fn research_mode_lens(mode: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_research_system_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) fn build_research_system_prompt(mode: &str, format: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_focus_section` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub(crate) fn research_focus_section(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_document_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub(crate) fn build_document_research_user_prompt(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_follow_up_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub(crate) fn build_follow_up_research_user_prompt(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_topic_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:79:15
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub(crate) fn build_topic_research_user_prompt(topic: &str, instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_smart_content_with_strategy` is never used
[INFO] [stdout]    --> src/application/scraping.rs:232:15
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub(crate) fn get_smart_content_with_strategy(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extracted_content_is_sufficient` is never used
[INFO] [stdout]    --> src/application/scraping.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub(crate) fn extracted_content_is_sufficient(title: &str, content_html: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `markdown_plain_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:258:15
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub(crate) fn markdown_plain_text(markdown: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_text_for_quality` is never used
[INFO] [stdout]    --> src/application/scraping.rs:262:15
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub(crate) fn normalize_text_for_quality(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_document_title` is never used
[INFO] [stdout]    --> src/application/scraping.rs:278:15
[INFO] [stdout]     |
[INFO] [stdout] 278 | pub(crate) fn extract_document_title(document: &scraper::Html) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_line_span_pre` is never used
[INFO] [stdout]    --> src/application/scraping.rs:909:15
[INFO] [stdout]     |
[INFO] [stdout] 909 | pub(crate) fn normalize_line_span_pre(pre_html: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_pre_code_lines` is never used
[INFO] [stdout]    --> src/application/scraping.rs:913:15
[INFO] [stdout]     |
[INFO] [stdout] 913 | pub(crate) fn select_pre_code_lines(fragment: &scraper::Html) -> Vec<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_pandoc_line_span_id` is never used
[INFO] [stdout]    --> src/application/scraping.rs:917:15
[INFO] [stdout]     |
[INFO] [stdout] 917 | pub(crate) fn is_pandoc_line_span_id(id: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_ascii_case_insensitive` is never used
[INFO] [stdout]    --> src/application/scraping.rs:921:15
[INFO] [stdout]     |
[INFO] [stdout] 921 | pub(crate) fn find_ascii_case_insensitive(haystack: &str, needle: &str) -> Option<usize> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_markdown_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:929:15
[INFO] [stdout]     |
[INFO] [stdout] 929 | pub(crate) fn escape_markdown_text(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_multiline_linked_image` is never used
[INFO] [stdout]    --> src/application/scraping.rs:937:15
[INFO] [stdout]     |
[INFO] [stdout] 937 | pub(crate) fn parse_multiline_linked_image(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trim_markdown_content_indent` is never used
[INFO] [stdout]    --> src/application/scraping.rs:944:15
[INFO] [stdout]     |
[INFO] [stdout] 944 | pub(crate) fn trim_markdown_content_indent(line: &str) -> Option<(usize, &str)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_markdown_link_target_with_trailing_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:948:15
[INFO] [stdout]     |
[INFO] [stdout] 948 | pub(crate) fn parse_markdown_link_target_with_trailing_text(line: &str) -> Option<(String, &str)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_markdown_link_target_close` is never used
[INFO] [stdout]    --> src/application/scraping.rs:952:15
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub(crate) fn find_markdown_link_target_close(target_and_trailing: &str) -> Option<usize> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opens_markdown_fence` is never used
[INFO] [stdout]    --> src/application/scraping.rs:956:15
[INFO] [stdout]     |
[INFO] [stdout] 956 | pub(crate) fn opens_markdown_fence(line: &str) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `closes_markdown_fence` is never used
[INFO] [stdout]    --> src/application/scraping.rs:960:15
[INFO] [stdout]     |
[INFO] [stdout] 960 | pub(crate) fn closes_markdown_fence(line: &str, marker: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_html_attribute` is never used
[INFO] [stdout]    --> src/application/scraping.rs:964:15
[INFO] [stdout]     |
[INFO] [stdout] 964 | pub(crate) fn escape_html_attribute(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_ai_queue_workers` is never used
[INFO] [stdout]    --> src/application/tasks/queue_workflow.rs:158:15
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub(crate) fn spawn_ai_queue_workers(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ai_queue_worker` is never used
[INFO] [stdout]    --> src/application/tasks/queue_workflow.rs:177:10
[INFO] [stdout]     |
[INFO] [stdout] 177 | async fn ai_queue_worker(state: Arc<AppState>, lane: QueueLane) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_claimed_task_with_cancellation` is never used
[INFO] [stdout]    --> src/application/tasks/queue_workflow.rs:187:10
[INFO] [stdout]     |
[INFO] [stdout] 187 | async fn execute_claimed_task_with_cancellation(state: Arc<AppState>, task: TaskInfo) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_repair_search_hints_block` is never used
[INFO] [stdout]   --> src/application/tasks/repair_helpers.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub(super) fn render_repair_search_hints_block(hints: &[RepairSearchHint]) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SqliteTaskRepository` is never constructed
[INFO] [stdout]  --> src/application/tasks/runtime_adapters.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub(super) struct SqliteTaskRepository<'a> {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/application/tasks/runtime_adapters.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl<'a> SqliteTaskRepository<'a> {
[INFO] [stdout]   | --------------------------------- associated function in this implementation
[INFO] [stdout] 8 |     pub(super) fn new(db: &'a sqlx::SqlitePool) -> Self {
[INFO] [stdout]   |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerInfo` is never constructed
[INFO] [stdout]   --> src/contracts.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) struct DrawerInfo {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file_id`, `created_at`, and `deleted_at` are never read
[INFO] [stdout]   --> src/contracts.rs:83:16
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub(crate) struct TaskInfo {
[INFO] [stdout]    |                   -------- fields in this struct
[INFO] [stdout] 82 |     pub(crate) id: i64,
[INFO] [stdout] 83 |     pub(crate) file_id: Option<i64>,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub(crate) created_at: DateTime<Utc>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 89 |     pub(crate) deleted_at: Option<DateTime<Utc>>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TaskInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskSummary` is never constructed
[INFO] [stdout]    --> src/contracts.rs:131:19
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub(crate) struct TaskSummary {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatusUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:170:19
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub(crate) struct StatusUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerPayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:175:19
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub(crate) struct DrawerPayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerAssignment` is never constructed
[INFO] [stdout]    --> src/contracts.rs:181:19
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub(crate) struct DrawerAssignment {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePresetCreatePayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:186:19
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub(crate) struct EnginePresetCreatePayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePresetUpdatePayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:193:19
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub(crate) struct EnginePresetUpdatePayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TitleUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:199:19
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(crate) struct TitleUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadataUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:204:19
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub(crate) struct FileMetadataUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TagUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub(crate) struct TagUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScrapRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:215:19
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub(crate) struct ScrapRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActionRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:224:19
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub(crate) struct ActionRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiResearchRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:229:19
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub(crate) struct MultiResearchRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TopicResearchRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:243:19
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub(crate) struct TopicResearchRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PushRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:257:19
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub(crate) struct PushRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ModelOption` is never constructed
[INFO] [stdout]    --> src/contracts.rs:284:19
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub(crate) struct ModelOption {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RetryTaskPayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:312:19
[INFO] [stdout]     |
[INFO] [stdout] 312 | pub(crate) struct RetryTaskPayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]    --> src/contracts.rs:355:19
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub(crate) struct AppConfig {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchQuery` is never constructed
[INFO] [stdout]    --> src/contracts.rs:775:19
[INFO] [stdout]     |
[INFO] [stdout] 775 | pub(crate) struct SearchQuery {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `install_panic_hook` is never used
[INFO] [stdout]   --> src/diagnostics.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) fn install_panic_hook(crash_dir: PathBuf) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_lifecycle_event` is never used
[INFO] [stdout]   --> src/diagnostics.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub(crate) fn log_lifecycle_event(event: &str, detail: &str) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shutdown_signal` is never used
[INFO] [stdout]   --> src/diagnostics.rs:44:21
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub(crate) async fn shutdown_signal() {
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_for_shutdown_signal` is never used
[INFO] [stdout]   --> src/diagnostics.rs:49:10
[INFO] [stdout]    |
[INFO] [stdout] 49 | async fn wait_for_shutdown_signal() -> &'static str {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_panic_report` is never used
[INFO] [stdout]   --> src/diagnostics.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn format_panic_report(info: &std::panic::PanicHookInfo<'_>, backtrace: &Backtrace) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_panic_summary` is never used
[INFO] [stdout]    --> src/diagnostics.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn format_panic_summary(info: &std::panic::PanicHookInfo<'_>) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `research_implementation_id` is never read
[INFO] [stdout]   --> src/state.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub(crate) struct AppState {
[INFO] [stdout]    |                   -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub(crate) research_implementation_id: &'static str,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_state_with_historical_phase_engine` is never used
[INFO] [stdout]   --> src/test_support.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub(crate) fn test_state_with_historical_phase_engine(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `table_exists` is never used
[INFO] [stdout]   --> src/test_support.rs:96:21
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub(crate) async fn table_exists(db: &SqlitePool, table: &str) -> bool {
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `schema_snapshot` is never used
[INFO] [stdout]    --> src/test_support.rs:107:21
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub(crate) async fn schema_snapshot(db: &SqlitePool) -> Vec<String> {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TaskRepository` is never used
[INFO] [stdout]   --> src/application/ports.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub(crate) trait TaskRepository {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ArtifactFinalizer` is never used
[INFO] [stdout]   --> src/application/ports.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub(crate) trait ArtifactFinalizer {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ArtifactValidator` is never used
[INFO] [stdout]   --> src/application/ports.rs:99:18
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub(crate) trait ArtifactValidator {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `research_focus_section` is never used
[INFO] [stdout]    --> src/application/ports.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub(crate) trait ResearchImplementation: Send + Sync {
[INFO] [stdout]     |                  ---------------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 150 |     fn research_focus_section(&self, instructions: Option<&str>) -> String;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_allows_web_search` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn research_allows_web_search(file_prefix: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_search_provider_for` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) fn web_search_provider_for(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_search_audit_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:31:15
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(crate) fn web_search_audit_prompt(requested: bool, provider: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `intensity_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) fn intensity_prompt(intensity: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_controller_contract_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:39:15
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub(crate) fn research_controller_contract_prompt(format: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fallback_disclosure_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) fn fallback_disclosure_prompt(reason: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_research_mode` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:47:15
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub(crate) fn normalize_research_mode(mode: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_research_type` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub(crate) fn normalize_research_type(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_mode_lens` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub(crate) fn research_mode_lens(mode: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_research_system_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) fn build_research_system_prompt(mode: &str, format: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_focus_section` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub(crate) fn research_focus_section(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_document_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub(crate) fn build_document_research_user_prompt(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_follow_up_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub(crate) fn build_follow_up_research_user_prompt(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_topic_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:79:15
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub(crate) fn build_topic_research_user_prompt(topic: &str, instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_smart_content` is never used
[INFO] [stdout]    --> src/application/scraping.rs:228:15
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub(crate) fn get_smart_content(html: &str, url_str: &str) -> (String, String) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_smart_content_with_strategy` is never used
[INFO] [stdout]    --> src/application/scraping.rs:232:15
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub(crate) fn get_smart_content_with_strategy(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extracted_content_is_sufficient` is never used
[INFO] [stdout]    --> src/application/scraping.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub(crate) fn extracted_content_is_sufficient(title: &str, content_html: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extracted_content_looks_noisy` is never used
[INFO] [stdout]    --> src/application/scraping.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub(crate) fn extracted_content_looks_noisy(content_html: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `markdown_plain_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:258:15
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub(crate) fn markdown_plain_text(markdown: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_text_for_quality` is never used
[INFO] [stdout]    --> src/application/scraping.rs:262:15
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub(crate) fn normalize_text_for_quality(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_scraped_title` is never used
[INFO] [stdout]    --> src/application/scraping.rs:266:15
[INFO] [stdout]     |
[INFO] [stdout] 266 | pub(crate) fn normalize_scraped_title(title: &str) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_scraped_title` is never used
[INFO] [stdout]    --> src/application/scraping.rs:270:15
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub(crate) fn resolve_scraped_title(html: &str, extracted_title: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fallback_page_content` is never used
[INFO] [stdout]    --> src/application/scraping.rs:274:15
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub(crate) fn fallback_page_content(html: &str, preferred_title: &str) -> Option<(String, String)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_document_title` is never used
[INFO] [stdout]    --> src/application/scraping.rs:278:15
[INFO] [stdout]     |
[INFO] [stdout] 278 | pub(crate) fn extract_document_title(document: &scraper::Html) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_scrape_failure_for_task` is never used
[INFO] [stdout]    --> src/application/scraping.rs:601:15
[INFO] [stdout]     |
[INFO] [stdout] 601 | pub(crate) fn format_scrape_failure_for_task(diagnostics: &ScrapeDiagnostics) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `preserve_code_line_spans` is never used
[INFO] [stdout]    --> src/application/scraping.rs:905:15
[INFO] [stdout]     |
[INFO] [stdout] 905 | pub(crate) fn preserve_code_line_spans(html: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_line_span_pre` is never used
[INFO] [stdout]    --> src/application/scraping.rs:909:15
[INFO] [stdout]     |
[INFO] [stdout] 909 | pub(crate) fn normalize_line_span_pre(pre_html: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_pre_code_lines` is never used
[INFO] [stdout]    --> src/application/scraping.rs:913:15
[INFO] [stdout]     |
[INFO] [stdout] 913 | pub(crate) fn select_pre_code_lines(fragment: &scraper::Html) -> Vec<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_pandoc_line_span_id` is never used
[INFO] [stdout]    --> src/application/scraping.rs:917:15
[INFO] [stdout]     |
[INFO] [stdout] 917 | pub(crate) fn is_pandoc_line_span_id(id: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_ascii_case_insensitive` is never used
[INFO] [stdout]    --> src/application/scraping.rs:921:15
[INFO] [stdout]     |
[INFO] [stdout] 921 | pub(crate) fn find_ascii_case_insensitive(haystack: &str, needle: &str) -> Option<usize> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_markdown_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:929:15
[INFO] [stdout]     |
[INFO] [stdout] 929 | pub(crate) fn escape_markdown_text(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_multiline_linked_image` is never used
[INFO] [stdout]    --> src/application/scraping.rs:937:15
[INFO] [stdout]     |
[INFO] [stdout] 937 | pub(crate) fn parse_multiline_linked_image(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trim_markdown_content_indent` is never used
[INFO] [stdout]    --> src/application/scraping.rs:944:15
[INFO] [stdout]     |
[INFO] [stdout] 944 | pub(crate) fn trim_markdown_content_indent(line: &str) -> Option<(usize, &str)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_markdown_link_target_with_trailing_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:948:15
[INFO] [stdout]     |
[INFO] [stdout] 948 | pub(crate) fn parse_markdown_link_target_with_trailing_text(line: &str) -> Option<(String, &str)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_markdown_link_target_close` is never used
[INFO] [stdout]    --> src/application/scraping.rs:952:15
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub(crate) fn find_markdown_link_target_close(target_and_trailing: &str) -> Option<usize> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opens_markdown_fence` is never used
[INFO] [stdout]    --> src/application/scraping.rs:956:15
[INFO] [stdout]     |
[INFO] [stdout] 956 | pub(crate) fn opens_markdown_fence(line: &str) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `closes_markdown_fence` is never used
[INFO] [stdout]    --> src/application/scraping.rs:960:15
[INFO] [stdout]     |
[INFO] [stdout] 960 | pub(crate) fn closes_markdown_fence(line: &str, marker: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_html_attribute` is never used
[INFO] [stdout]    --> src/application/scraping.rs:964:15
[INFO] [stdout]     |
[INFO] [stdout] 964 | pub(crate) fn escape_html_attribute(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_queue_lane` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_fixture.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(super) fn benchmark_queue_lane(model_input: &str) -> QueueLane {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_engine_kind` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_fixture.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub(super) fn benchmark_engine_kind(model_input: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_model_name` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_fixture.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub(super) fn benchmark_model_name(model_input: &str) -> &str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_research_mode` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_fixture.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub(super) fn benchmark_research_mode(category: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_benchmark_fixture` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_fixture.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub(super) fn build_benchmark_fixture(input: &ResearchBenchmarkCaseInput) -> BenchmarkFixture {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_benchmark_fixture_output` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_fixture.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn render_benchmark_fixture_output(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_fixture_narrative_state` is never used
[INFO] [stdout]    --> src/application/tasks/benchmark_fixture.rs:256:4
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn benchmark_fixture_narrative_state(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_source_pack_report` is never used
[INFO] [stdout]    --> src/application/tasks/benchmark_fixture.rs:531:4
[INFO] [stdout]     |
[INFO] [stdout] 531 | fn fixture_source_pack_report(input: &ResearchBenchmarkCaseInput) -> ResearchSourcePackReport {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_fixture_urls` is never used
[INFO] [stdout]    --> src/application/tasks/benchmark_fixture.rs:583:4
[INFO] [stdout]     |
[INFO] [stdout] 583 | fn benchmark_fixture_urls() -> &'static [(&'static str, &'static str)] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResearchBenchmarkDebugCaseResult` is never constructed
[INFO] [stdout]  --> src/application/tasks/benchmark_runtime.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ResearchBenchmarkDebugCaseResult {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `safe_result` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_runtime.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl ResearchBenchmarkDebugCaseResult {
[INFO] [stdout]    | ------------------------------------- method in this implementation
[INFO] [stdout] 29 |     pub fn safe_result(&self) -> ResearchBenchmarkCaseResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_ai_task_timeout_secs` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_runtime.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub(super) fn benchmark_ai_task_timeout_secs(timeout_secs: u64) -> u64 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_research_benchmark_case` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_runtime.rs:54:14
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub async fn run_research_benchmark_case(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_research_benchmark_case_debug` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_runtime.rs:62:14
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub async fn run_research_benchmark_case_debug(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay_research_benchmark_case` is never used
[INFO] [stdout]    --> src/application/tasks/benchmark_runtime.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub fn replay_research_benchmark_case(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay_research_benchmark_case_debug` is never used
[INFO] [stdout]    --> src/application/tasks/benchmark_runtime.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn replay_research_benchmark_case_debug(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_has_time_anchor` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:847:4
[INFO] [stdout]     |
[INFO] [stdout] 847 | fn claim_has_time_anchor(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_has_region_anchor` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:851:4
[INFO] [stdout]     |
[INFO] [stdout] 851 | fn claim_has_region_anchor(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_has_actor_anchor` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:855:4
[INFO] [stdout]     |
[INFO] [stdout] 855 | fn claim_has_actor_anchor(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_has_handoff_anchor` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:859:4
[INFO] [stdout]     |
[INFO] [stdout] 859 | fn claim_has_handoff_anchor(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `claim_is_phase_specific` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:865:4
[INFO] [stdout]     |
[INFO] [stdout] 865 | fn claim_is_phase_specific(claim: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `infer_historical_claim_type` is never used
[INFO] [stdout]    --> src/application/tasks/historical_phase_engine.rs:882:4
[INFO] [stdout]     |
[INFO] [stdout] 882 | fn infer_historical_claim_type(claim: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ABORT_RECOVERY_TASK_STATUSES` is never used
[INFO] [stdout]   --> src/application/tasks/lifecycle_policy.rs:13:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(super) const ABORT_RECOVERY_TASK_STATUSES: &[&str] =
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_abort_recovery_task_status` is never used
[INFO] [stdout]   --> src/application/tasks/lifecycle_policy.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub(super) fn is_abort_recovery_task_status(status: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_repair_search_hints_block` is never used
[INFO] [stdout]   --> src/application/tasks/repair_helpers.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub(super) fn render_repair_search_hints_block(hints: &[RepairSearchHint]) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SqliteTaskRepository` is never constructed
[INFO] [stdout]  --> src/application/tasks/runtime_adapters.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub(super) struct SqliteTaskRepository<'a> {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/application/tasks/runtime_adapters.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl<'a> SqliteTaskRepository<'a> {
[INFO] [stdout]   | --------------------------------- associated function in this implementation
[INFO] [stdout] 8 |     pub(super) fn new(db: &'a sqlx::SqlitePool) -> Self {
[INFO] [stdout]   |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DefaultArtifactProcessor` is never constructed
[INFO] [stdout]   --> src/application/tasks/runtime_adapters.rs:77:19
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub(super) struct DefaultArtifactProcessor;
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerInfo` is never constructed
[INFO] [stdout]   --> src/contracts.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) struct DrawerInfo {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/contracts.rs:83:16
[INFO] [stdout]     |
[INFO] [stdout]  81 | pub(crate) struct TaskInfo {
[INFO] [stdout]     |                   -------- fields in this struct
[INFO] [stdout]  82 |     pub(crate) id: i64,
[INFO] [stdout]  83 |     pub(crate) file_id: Option<i64>,
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout]  84 |     pub(crate) filename: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub(crate) error_message: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout]  88 |     pub(crate) created_at: DateTime<Utc>,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout]  89 |     pub(crate) deleted_at: Option<DateTime<Utc>>,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub(crate) resolved_system_prompt: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 106 |     pub(crate) resolved_user_prompt: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub(crate) quality_last_failure: Option<String>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TaskInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskSummary` is never constructed
[INFO] [stdout]    --> src/contracts.rs:131:19
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub(crate) struct TaskSummary {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatusUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:170:19
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub(crate) struct StatusUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerPayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:175:19
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub(crate) struct DrawerPayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerAssignment` is never constructed
[INFO] [stdout]    --> src/contracts.rs:181:19
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub(crate) struct DrawerAssignment {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePresetCreatePayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:186:19
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub(crate) struct EnginePresetCreatePayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePresetUpdatePayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:193:19
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub(crate) struct EnginePresetUpdatePayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TitleUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:199:19
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(crate) struct TitleUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadataUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:204:19
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub(crate) struct FileMetadataUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TagUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub(crate) struct TagUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScrapRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:215:19
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub(crate) struct ScrapRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActionRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:224:19
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub(crate) struct ActionRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiResearchRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:229:19
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub(crate) struct MultiResearchRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TopicResearchRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:243:19
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub(crate) struct TopicResearchRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PushRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:257:19
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub(crate) struct PushRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ModelOption` is never constructed
[INFO] [stdout]    --> src/contracts.rs:284:19
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub(crate) struct ModelOption {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RetryTaskPayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:312:19
[INFO] [stdout]     |
[INFO] [stdout] 312 | pub(crate) struct RetryTaskPayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]    --> src/contracts.rs:355:19
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub(crate) struct AppConfig {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchQuery` is never constructed
[INFO] [stdout]    --> src/contracts.rs:775:19
[INFO] [stdout]     |
[INFO] [stdout] 775 | pub(crate) struct SearchQuery {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `research_implementation_id` is never read
[INFO] [stdout]   --> src/state.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub(crate) struct AppState {
[INFO] [stdout]    |                   -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub(crate) research_implementation_id: &'static str,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assign_file_tags` is never used
[INFO] [stdout]  --> src/application/file_tags.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(crate) async fn assign_file_tags(
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TaskRepository` is never used
[INFO] [stdout]   --> src/application/ports.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub(crate) trait TaskRepository {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `research_focus_section` is never used
[INFO] [stdout]    --> src/application/ports.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub(crate) trait ResearchImplementation: Send + Sync {
[INFO] [stdout]     |                  ---------------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 150 |     fn research_focus_section(&self, instructions: Option<&str>) -> String;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_allows_web_search` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn research_allows_web_search(file_prefix: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_search_provider_for` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) fn web_search_provider_for(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_search_audit_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:31:15
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(crate) fn web_search_audit_prompt(requested: bool, provider: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `intensity_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) fn intensity_prompt(intensity: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_controller_contract_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:39:15
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub(crate) fn research_controller_contract_prompt(format: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fallback_disclosure_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) fn fallback_disclosure_prompt(reason: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_research_type` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub(crate) fn normalize_research_type(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_mode_lens` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub(crate) fn research_mode_lens(mode: &str) -> &'static str {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_research_system_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) fn build_research_system_prompt(mode: &str, format: &str) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `research_focus_section` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub(crate) fn research_focus_section(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_document_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub(crate) fn build_document_research_user_prompt(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_follow_up_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub(crate) fn build_follow_up_research_user_prompt(instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_topic_research_user_prompt` is never used
[INFO] [stdout]   --> src/application/research_prompts.rs:79:15
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub(crate) fn build_topic_research_user_prompt(topic: &str, instructions: Option<&str>) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_smart_content_with_strategy` is never used
[INFO] [stdout]    --> src/application/scraping.rs:232:15
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub(crate) fn get_smart_content_with_strategy(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extracted_content_is_sufficient` is never used
[INFO] [stdout]    --> src/application/scraping.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub(crate) fn extracted_content_is_sufficient(title: &str, content_html: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `markdown_plain_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:258:15
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub(crate) fn markdown_plain_text(markdown: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_text_for_quality` is never used
[INFO] [stdout]    --> src/application/scraping.rs:262:15
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub(crate) fn normalize_text_for_quality(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_document_title` is never used
[INFO] [stdout]    --> src/application/scraping.rs:278:15
[INFO] [stdout]     |
[INFO] [stdout] 278 | pub(crate) fn extract_document_title(document: &scraper::Html) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_line_span_pre` is never used
[INFO] [stdout]    --> src/application/scraping.rs:909:15
[INFO] [stdout]     |
[INFO] [stdout] 909 | pub(crate) fn normalize_line_span_pre(pre_html: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_pre_code_lines` is never used
[INFO] [stdout]    --> src/application/scraping.rs:913:15
[INFO] [stdout]     |
[INFO] [stdout] 913 | pub(crate) fn select_pre_code_lines(fragment: &scraper::Html) -> Vec<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_pandoc_line_span_id` is never used
[INFO] [stdout]    --> src/application/scraping.rs:917:15
[INFO] [stdout]     |
[INFO] [stdout] 917 | pub(crate) fn is_pandoc_line_span_id(id: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_ascii_case_insensitive` is never used
[INFO] [stdout]    --> src/application/scraping.rs:921:15
[INFO] [stdout]     |
[INFO] [stdout] 921 | pub(crate) fn find_ascii_case_insensitive(haystack: &str, needle: &str) -> Option<usize> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_markdown_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:929:15
[INFO] [stdout]     |
[INFO] [stdout] 929 | pub(crate) fn escape_markdown_text(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_multiline_linked_image` is never used
[INFO] [stdout]    --> src/application/scraping.rs:937:15
[INFO] [stdout]     |
[INFO] [stdout] 937 | pub(crate) fn parse_multiline_linked_image(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trim_markdown_content_indent` is never used
[INFO] [stdout]    --> src/application/scraping.rs:944:15
[INFO] [stdout]     |
[INFO] [stdout] 944 | pub(crate) fn trim_markdown_content_indent(line: &str) -> Option<(usize, &str)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_markdown_link_target_with_trailing_text` is never used
[INFO] [stdout]    --> src/application/scraping.rs:948:15
[INFO] [stdout]     |
[INFO] [stdout] 948 | pub(crate) fn parse_markdown_link_target_with_trailing_text(line: &str) -> Option<(String, &str)> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_markdown_link_target_close` is never used
[INFO] [stdout]    --> src/application/scraping.rs:952:15
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub(crate) fn find_markdown_link_target_close(target_and_trailing: &str) -> Option<usize> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opens_markdown_fence` is never used
[INFO] [stdout]    --> src/application/scraping.rs:956:15
[INFO] [stdout]     |
[INFO] [stdout] 956 | pub(crate) fn opens_markdown_fence(line: &str) -> Option<String> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `closes_markdown_fence` is never used
[INFO] [stdout]    --> src/application/scraping.rs:960:15
[INFO] [stdout]     |
[INFO] [stdout] 960 | pub(crate) fn closes_markdown_fence(line: &str, marker: &str) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `escape_html_attribute` is never used
[INFO] [stdout]    --> src/application/scraping.rs:964:15
[INFO] [stdout]     |
[INFO] [stdout] 964 | pub(crate) fn escape_html_attribute(text: &str) -> String {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/application/tasks/benchmark_runtime.rs:6:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct ResearchBenchmarkDebugCaseResult {
[INFO] [stdout]    |            -------------------------------- fields in this struct
[INFO] [stdout]  6 |     pub case_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]  7 |     pub title: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]  8 |     pub category: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]  9 |     pub mode: ResearchBenchmarkMode,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 10 |     pub data_dir: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 11 |     pub task_id: i64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 12 |     pub status: String,
[INFO] [stdout] 13 |     pub error_message: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub output_filename: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub model_input: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ResearchBenchmarkDebugCaseResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `safe_result` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_runtime.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl ResearchBenchmarkDebugCaseResult {
[INFO] [stdout]    | ------------------------------------- method in this implementation
[INFO] [stdout] 29 |     pub fn safe_result(&self) -> ResearchBenchmarkCaseResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_research_benchmark_case` is never used
[INFO] [stdout]   --> src/application/tasks/benchmark_runtime.rs:54:14
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub async fn run_research_benchmark_case(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay_research_benchmark_case` is never used
[INFO] [stdout]    --> src/application/tasks/benchmark_runtime.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub fn replay_research_benchmark_case(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_repair_search_hints_block` is never used
[INFO] [stdout]   --> src/application/tasks/repair_helpers.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub(super) fn render_repair_search_hints_block(hints: &[RepairSearchHint]) -> String {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SqliteTaskRepository` is never constructed
[INFO] [stdout]  --> src/application/tasks/runtime_adapters.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub(super) struct SqliteTaskRepository<'a> {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/application/tasks/runtime_adapters.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl<'a> SqliteTaskRepository<'a> {
[INFO] [stdout]   | --------------------------------- associated function in this implementation
[INFO] [stdout] 8 |     pub(super) fn new(db: &'a sqlx::SqlitePool) -> Self {
[INFO] [stdout]   |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerInfo` is never constructed
[INFO] [stdout]   --> src/contracts.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) struct DrawerInfo {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file_id`, `created_at`, and `deleted_at` are never read
[INFO] [stdout]   --> src/contracts.rs:83:16
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub(crate) struct TaskInfo {
[INFO] [stdout]    |                   -------- fields in this struct
[INFO] [stdout] 82 |     pub(crate) id: i64,
[INFO] [stdout] 83 |     pub(crate) file_id: Option<i64>,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub(crate) created_at: DateTime<Utc>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 89 |     pub(crate) deleted_at: Option<DateTime<Utc>>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TaskInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskSummary` is never constructed
[INFO] [stdout]    --> src/contracts.rs:131:19
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub(crate) struct TaskSummary {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatusUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:170:19
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub(crate) struct StatusUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerPayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:175:19
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub(crate) struct DrawerPayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrawerAssignment` is never constructed
[INFO] [stdout]    --> src/contracts.rs:181:19
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub(crate) struct DrawerAssignment {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePresetCreatePayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:186:19
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub(crate) struct EnginePresetCreatePayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnginePresetUpdatePayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:193:19
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub(crate) struct EnginePresetUpdatePayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TitleUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:199:19
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(crate) struct TitleUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadataUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:204:19
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub(crate) struct FileMetadataUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TagUpdate` is never constructed
[INFO] [stdout]    --> src/contracts.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub(crate) struct TagUpdate {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScrapRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:215:19
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub(crate) struct ScrapRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActionRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:224:19
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub(crate) struct ActionRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiResearchRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:229:19
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub(crate) struct MultiResearchRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TopicResearchRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:243:19
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub(crate) struct TopicResearchRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PushRequest` is never constructed
[INFO] [stdout]    --> src/contracts.rs:257:19
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub(crate) struct PushRequest {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ModelOption` is never constructed
[INFO] [stdout]    --> src/contracts.rs:284:19
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub(crate) struct ModelOption {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RetryTaskPayload` is never constructed
[INFO] [stdout]    --> src/contracts.rs:312:19
[INFO] [stdout]     |
[INFO] [stdout] 312 | pub(crate) struct RetryTaskPayload {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]    --> src/contracts.rs:355:19
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub(crate) struct AppConfig {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchQuery` is never constructed
[INFO] [stdout]    --> src/contracts.rs:775:19
[INFO] [stdout]     |
[INFO] [stdout] 775 | pub(crate) struct SearchQuery {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `research_implementation_id` is never read
[INFO] [stdout]   --> src/state.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub(crate) struct AppState {
[INFO] [stdout]    |                   -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub(crate) research_implementation_id: &'static str,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_state_with_historical_phase_engine` is never used
[INFO] [stdout]   --> src/test_support.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub(crate) fn test_state_with_historical_phase_engine(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `table_exists` is never used
[INFO] [stdout]   --> src/test_support.rs:96:21
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub(crate) async fn table_exists(db: &SqlitePool, table: &str) -> bool {
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `schema_snapshot` is never used
[INFO] [stdout]    --> src/test_support.rs:107:21
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub(crate) async fn schema_snapshot(db: &SqlitePool) -> Vec<String> {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 21s
[INFO] running `Command { std: "docker" "inspect" "7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999", kill_on_drop: false }`
[INFO] [stdout] 7e9daddc54ece090edf61f40939916acbe91af4f70338934f683ef94c0d29999
