[INFO] cloning repository https://github.com/trexx101/MarketMove-LogiaLabs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/trexx101/MarketMove-LogiaLabs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftrexx101%2FMarketMove-LogiaLabs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftrexx101%2FMarketMove-LogiaLabs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 049d5ea3292c1f94f06e88d828d0e90cb840b576
[INFO] checking trexx101/MarketMove-LogiaLabs/049d5ea3292c1f94f06e88d828d0e90cb840b576 against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6 for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftrexx101%2FMarketMove-LogiaLabs" "/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/trexx101/MarketMove-LogiaLabs
[INFO] finished tweaking git repo https://github.com/trexx101/MarketMove-LogiaLabs
[INFO] tweaked toml for git repo https://github.com/trexx101/MarketMove-LogiaLabs written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/trexx101/MarketMove-LogiaLabs on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/trexx101/MarketMove-LogiaLabs 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" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a
[INFO] running `Command { std: "docker" "start" "4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a", 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" "4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a", 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" "4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]    Compiling portable-atomic v1.14.0
[INFO] [stderr]     Checking bytes v1.12.1
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling zerocopy v0.8.54
[INFO] [stderr]     Checking writeable v0.6.3
[INFO] [stderr]     Checking litemap v0.8.2
[INFO] [stderr]     Checking http v1.4.2
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling jobserver v0.1.35
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking socket2 v0.6.4
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling cc v1.2.67
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking zeroize v1.9.0
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]     Checking rustls-pki-types v1.15.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustls v0.23.41
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]    Compiling hybrid-array v0.4.13
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling no_std_io2 v0.9.4
[INFO] [stderr]     Checking bitflags v2.13.0
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling rle-decode-fast v1.0.3
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling libflate_lz77 v2.3.0
[INFO] [stderr]    Compiling hashbrown v0.15.5
[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.6
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling dary_heap v0.3.9
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]     Checking foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling adler32 v1.2.0
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling crc-catalog v2.5.0
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling libflate v2.3.1
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking foreign-types v0.3.2
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling crossbeam-queue v0.3.13
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking webpki-roots v1.0.8
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling proc-macro-error-attr3 v3.0.3
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]     Checking mime v0.3.17
[INFO] [stderr]     Checking regex-syntax v0.8.11
[INFO] [stderr]     Checking ipnet v2.12.0
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling proc-macro-error3 v3.0.3
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]     Checking regex-automata v0.4.15
[INFO] [stderr]    Compiling include-flate-compress v0.3.4
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]     Checking sha1 v0.10.7
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling include-flate-codegen v0.3.4
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking rand v0.8.7
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling libz-sys v1.1.29
[INFO] [stderr]    Compiling smartstring v1.0.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]     Checking data-encoding v2.11.0
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]     Checking saa v5.6.0
[INFO] [stderr]     Checking utf-8 v0.7.6
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking sdd v4.8.8
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]     Checking include-flate v0.3.4
[INFO] [stderr]    Compiling rust-embed-utils v8.12.0
[INFO] [stderr]     Checking rand v0.9.5
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking simd-adler32 v0.3.10
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking uuid v1.23.4
[INFO] [stderr]    Compiling rust-embed-impl v8.12.0
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking scc v3.8.4
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking regex v1.13.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking asynchronous-codec v0.7.0
[INFO] [stderr]    Compiling rhai_codegen v3.2.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.10
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking base32 v0.5.1
[INFO] [stderr]     Checking constant_time_eq v0.3.1
[INFO] [stderr]     Checking thin-vec v0.2.19
[INFO] [stderr]    Compiling engine v0.1.0 (/opt/rustwide/workdir/engine)
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr] warning: engine@0.1.0: frontend/dist/ not found — running npm run build
[INFO] [stderr] warning: engine@0.1.0: npm not found — run `cd frontend && npm install && npm run build` manually
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking rhai v1.25.1
[INFO] [stderr]     Checking zeromq v0.6.0
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking totp-rs v5.7.2
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking rust-embed v8.12.0
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stdout] warning: unused import: `hash_context`
[INFO] [stdout]   --> engine/src/advisor/briefing.rs:15:74
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::{AdvisorBriefing, AdvisorConfig, AdvisorState, BriefingError, hash_context};
[INFO] [stdout]    |                                                                          ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::warn`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::warn;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdvisorConfig`
[INFO] [stdout]   --> engine/src/advisor/chat.rs:11:13
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{AdvisorConfig, AdvisorState, BriefingError};
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> engine/src/advisor/context.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EarningsEvent` and `MacroRelease`
[INFO] [stdout]   --> engine/src/advisor/context.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{AdvisorContext, EarningsEvent, FeatureSnapshot, MacroRelease, MacroSnapshot,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EquityPredictionRow`
[INFO] [stdout]   --> engine/src/advisor/context.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::db::{DbPool, EquityPredictionRow};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract::State`
[INFO] [stdout]  --> engine/src/api/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     extract::State,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DbPool`
[INFO] [stdout]  --> engine/src/api/status.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::db::{self, DbPool};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash_context`
[INFO] [stdout]   --> engine/src/advisor/briefing.rs:15:74
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::{AdvisorBriefing, AdvisorConfig, AdvisorState, BriefingError, hash_context};
[INFO] [stdout]    |                                                                          ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::strategy::EquityStrategyParams`
[INFO] [stdout]   --> engine/src/api/strategy_config.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::strategy::EquityStrategyParams;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `internal_error`
[INFO] [stdout]   --> engine/src/api/strategy_config.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::{internal_error, ApiResult, AppState};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> engine/src/api/advisor.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `http::StatusCode`
[INFO] [stdout]  --> engine/src/api/events.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     http::StatusCode,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::warn`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::warn;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::DbPool`
[INFO] [stdout]   --> engine/src/api/events.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::db::DbPool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdvisorConfig`
[INFO] [stdout]   --> engine/src/advisor/chat.rs:11:13
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{AdvisorConfig, AdvisorState, BriefingError};
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> engine/src/advisor/context.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EarningsEvent` and `MacroRelease`
[INFO] [stdout]   --> engine/src/advisor/context.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{AdvisorContext, EarningsEvent, FeatureSnapshot, MacroRelease, MacroSnapshot,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EquityPredictionRow`
[INFO] [stdout]   --> engine/src/advisor/context.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::db::{DbPool, EquityPredictionRow};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract::State`
[INFO] [stdout]  --> engine/src/api/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     extract::State,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DbPool`
[INFO] [stdout]  --> engine/src/api/status.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::db::{self, DbPool};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> engine/src/data/moomoo.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::strategy::EquityStrategyParams`
[INFO] [stdout]   --> engine/src/api/strategy_config.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::strategy::EquityStrategyParams;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `internal_error`
[INFO] [stdout]   --> engine/src/api/strategy_config.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::{internal_error, ApiResult, AppState};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> engine/src/api/advisor.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `http::StatusCode`
[INFO] [stdout]  --> engine/src/api/events.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     http::StatusCode,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::DbPool`
[INFO] [stdout]   --> engine/src/api/events.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::db::DbPool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> engine/src/archive.rs:16:21
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> engine/src/data/moomoo.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> engine/src/archive.rs:16:21
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeZone`
[INFO] [stdout]   --> engine/src/advisor/briefing.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chrono::{TimeZone, Utc};
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `qty`
[INFO] [stdout]    --> engine/src/advisor/context.rs:318:21
[INFO] [stdout]     |
[INFO] [stdout] 318 |                 let qty: f64 = r.get(2);
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_qty`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cfg`
[INFO] [stdout]    --> engine/src/advisor/mod.rs:222:21
[INFO] [stdout]     |
[INFO] [stdout] 222 |     pub fn from_env(cfg: &Config) -> Self {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_cfg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeZone`
[INFO] [stdout]   --> engine/src/advisor/briefing.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chrono::{TimeZone, Utc};
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `qty`
[INFO] [stdout]    --> engine/src/advisor/context.rs:318:21
[INFO] [stdout]     |
[INFO] [stdout] 318 |                 let qty: f64 = r.get(2);
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_qty`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `backfill_err`
[INFO] [stdout]   --> engine/src/api/chart.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |     let backfill_err = match crate::data::yahoo::backfill(
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_backfill_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `equity_multiplier` is never read
[INFO] [stdout]    --> engine/src/strategy_lab/replay.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         equity_multiplier *= 1.0 + realized_pnl;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cfg`
[INFO] [stdout]    --> engine/src/advisor/mod.rs:222:21
[INFO] [stdout]     |
[INFO] [stdout] 222 |     pub fn from_env(cfg: &Config) -> Self {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_cfg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `backfill_err`
[INFO] [stdout]   --> engine/src/api/chart.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |     let backfill_err = match crate::data::yahoo::backfill(
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_backfill_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `equity_multiplier` is never read
[INFO] [stdout]    --> engine/src/strategy_lab/replay.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         equity_multiplier *= 1.0 + realized_pnl;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:302:9
[INFO] [stdout]     |
[INFO] [stdout] 302 |     let mut atr = wilder_smooth(&tr, period);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let mut smoothed_plus = wilder_smooth(&plus_dm, period);
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:304:9
[INFO] [stdout]     |
[INFO] [stdout] 304 |     let mut smoothed_minus = wilder_smooth(&minus_dm, period);
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_close`
[INFO] [stdout]    --> engine/src/scheduler.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let last_close = candles.last().map(|c| c.close).unwrap_or(1.0).max(1.0);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `atr` is never read
[INFO] [stdout]    --> engine/src/scheduler.rs:457:19
[INFO] [stdout]     |
[INFO] [stdout] 457 |     let mut atr = 0.0_f64;
[INFO] [stdout]     |                   ^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 460 |     atr = warmup;
[INFO] [stdout]     |     ------------ `atr` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_generate_briefing` is never used
[INFO] [stdout]    --> engine/src/advisor/briefing.rs:267:10
[INFO] [stdout]     |
[INFO] [stdout] 267 | async fn try_generate_briefing(state: &Arc<AdvisorState>, pool: &DbPool, symbol: &str) {
[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 `prediction_to_dto` is never used
[INFO] [stdout]   --> engine/src/api/predictions.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub(crate) fn prediction_to_dto(row: &db::PredictionRow) -> PredictionDto {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `date` is never read
[INFO] [stdout]   --> engine/src/api/advisor.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct AskRequest {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub date: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nth_weekday_of_month` is never used
[INFO] [stdout]    --> engine/src/market_hours.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn nth_weekday_of_month(year: i32, month: u32, weekday: u32, n: u32) -> Option<u32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `easter_sunday` is never used
[INFO] [stdout]    --> engine/src/market_hours.rs:190:4
[INFO] [stdout]     |
[INFO] [stdout] 190 | fn easter_sunday(year: i32) -> (i32, u32, u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `current_pos` is never read
[INFO] [stdout]   --> engine/src/strategy_lab/mod.rs:98:9
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub(crate) struct BarInput {
[INFO] [stdout]    |                   -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub current_pos: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BarInput` 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: unused import: `router`
[INFO] [stdout]   --> engine/tests/mode_toggle.rs:19:19
[INFO] [stdout]    |
[INFO] [stdout] 19 | use engine::api::{router, AppState};
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `basis_z`, `funding_rate` and `ob_imbalance` in initializer of `Candle`
[INFO] [stdout]   --> engine/tests/parity_harness.rs:59:18
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map(|c| engine::db::Candle {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^ missing `basis_z`, `funding_rate` and `ob_imbalance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `basis_z`, `funding_rate` and `ob_imbalance` in initializer of `Candle`
[INFO] [stdout]    --> engine/tests/parity_harness.rs:111:18
[INFO] [stdout]     |
[INFO] [stdout] 111 |         .map(|c| engine::db::Candle {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ missing `basis_z`, `funding_rate` and `ob_imbalance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `basis_z`, `funding_rate` and `ob_imbalance` in initializer of `Candle`
[INFO] [stdout]    --> engine/tests/parity_harness.rs:157:18
[INFO] [stdout]     |
[INFO] [stdout] 157 |         .map(|c| engine::db::Candle {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ missing `basis_z`, `funding_rate` and `ob_imbalance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `basis_z`, `funding_rate` and `ob_imbalance` in initializer of `Candle`
[INFO] [stdout]    --> engine/tests/parity_harness.rs:182:18
[INFO] [stdout]     |
[INFO] [stdout] 182 |         .map(|c| engine::db::Candle {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ missing `basis_z`, `funding_rate` and `ob_imbalance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `entry_threshold`, `exit_threshold`, `finnhub_api_key` and 1 other field in initializer of `Config`
[INFO] [stdout]   --> engine/tests/mode_toggle.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Config {
[INFO] [stdout]    |     ^^^^^^ missing `entry_threshold`, `exit_threshold`, `finnhub_api_key` and 1 other field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stderr] warning: engine@0.1.0: frontend/dist/ not found — running npm run build
[INFO] [stderr] warning: engine@0.1.0: npm not found — run `cd frontend && npm install && npm run build` manually
[INFO] [stderr] error: could not compile `engine` (test "parity_harness") due to 4 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:302:9
[INFO] [stdout]     |
[INFO] [stdout] 302 |     let mut atr = wilder_smooth(&tr, period);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let mut smoothed_plus = wilder_smooth(&plus_dm, period);
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:304:9
[INFO] [stdout]     |
[INFO] [stdout] 304 |     let mut smoothed_minus = wilder_smooth(&minus_dm, period);
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stderr] warning: engine@0.1.0: frontend/dist/ not found — running npm run build
[INFO] [stderr] warning: engine@0.1.0: npm not found — run `cd frontend && npm install && npm run build` manually
[INFO] [stderr] error: could not compile `engine` (test "mode_toggle") due to 1 previous error; 1 warning emitted
[INFO] [stdout] warning: unused variable: `last_close`
[INFO] [stdout]    --> engine/src/scheduler.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let last_close = candles.last().map(|c| c.close).unwrap_or(1.0).max(1.0);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `atr` is never read
[INFO] [stdout]    --> engine/src/scheduler.rs:457:19
[INFO] [stdout]     |
[INFO] [stdout] 457 |     let mut atr = 0.0_f64;
[INFO] [stdout]     |                   ^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 460 |     atr = warmup;
[INFO] [stdout]     |     ------------ `atr` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> engine/src/strategy.rs:500:13
[INFO] [stdout]     |
[INFO] [stdout] 500 |         let input = eq_signal(0.003, -0.010, 400.0, 380.0, true); // bearish regime
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_generate_briefing` is never used
[INFO] [stdout]    --> engine/src/advisor/briefing.rs:267:10
[INFO] [stdout]     |
[INFO] [stdout] 267 | async fn try_generate_briefing(state: &Arc<AdvisorState>, pool: &DbPool, symbol: &str) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `date` is never read
[INFO] [stdout]   --> engine/src/api/advisor.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct AskRequest {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub date: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `current_pos` is never read
[INFO] [stdout]   --> engine/src/strategy_lab/mod.rs:98:9
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub(crate) struct BarInput {
[INFO] [stdout]    |                   -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub current_pos: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BarInput` 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: unused import: `hash_context`
[INFO] [stdout]   --> engine/src/advisor/briefing.rs:15:74
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::{AdvisorBriefing, AdvisorConfig, AdvisorState, BriefingError, hash_context};
[INFO] [stdout]    |                                                                          ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::warn`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::warn;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdvisorConfig`
[INFO] [stdout]   --> engine/src/advisor/chat.rs:11:13
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{AdvisorConfig, AdvisorState, BriefingError};
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> engine/src/advisor/context.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EarningsEvent` and `MacroRelease`
[INFO] [stdout]   --> engine/src/advisor/context.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{AdvisorContext, EarningsEvent, FeatureSnapshot, MacroRelease, MacroSnapshot,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EquityPredictionRow`
[INFO] [stdout]   --> engine/src/advisor/context.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::db::{DbPool, EquityPredictionRow};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract::State`
[INFO] [stdout]  --> engine/src/api/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     extract::State,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DbPool`
[INFO] [stdout]  --> engine/src/api/status.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::db::{self, DbPool};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::strategy::EquityStrategyParams`
[INFO] [stdout]   --> engine/src/api/strategy_config.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::strategy::EquityStrategyParams;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `internal_error`
[INFO] [stdout]   --> engine/src/api/strategy_config.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::{internal_error, ApiResult, AppState};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> engine/src/api/advisor.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `http::StatusCode`
[INFO] [stdout]  --> engine/src/api/events.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     http::StatusCode,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::DbPool`
[INFO] [stdout]   --> engine/src/api/events.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::db::DbPool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> engine/src/data/moomoo.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> engine/src/archive.rs:16:21
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash_context`
[INFO] [stdout]   --> engine/src/advisor/briefing.rs:15:74
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::{AdvisorBriefing, AdvisorConfig, AdvisorState, BriefingError, hash_context};
[INFO] [stdout]    |                                                                          ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::warn`
[INFO] [stdout]  --> engine/src/advisor/chat.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::warn;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdvisorConfig`
[INFO] [stdout]   --> engine/src/advisor/chat.rs:11:13
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{AdvisorConfig, AdvisorState, BriefingError};
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> engine/src/advisor/context.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EarningsEvent` and `MacroRelease`
[INFO] [stdout]   --> engine/src/advisor/context.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{AdvisorContext, EarningsEvent, FeatureSnapshot, MacroRelease, MacroSnapshot,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EquityPredictionRow`
[INFO] [stdout]   --> engine/src/advisor/context.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::db::{DbPool, EquityPredictionRow};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract::State`
[INFO] [stdout]  --> engine/src/api/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     extract::State,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DbPool`
[INFO] [stdout]  --> engine/src/api/status.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::db::{self, DbPool};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::strategy::EquityStrategyParams`
[INFO] [stdout]   --> engine/src/api/strategy_config.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::strategy::EquityStrategyParams;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `internal_error`
[INFO] [stdout]   --> engine/src/api/strategy_config.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::{internal_error, ApiResult, AppState};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> engine/src/api/advisor.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `http::StatusCode`
[INFO] [stdout]  --> engine/src/api/events.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     http::StatusCode,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::DbPool`
[INFO] [stdout]   --> engine/src/api/events.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::db::DbPool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> engine/src/data/moomoo.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> engine/src/archive.rs:16:21
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeZone`
[INFO] [stdout]   --> engine/src/advisor/briefing.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chrono::{TimeZone, Utc};
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `qty`
[INFO] [stdout]    --> engine/src/advisor/context.rs:318:21
[INFO] [stdout]     |
[INFO] [stdout] 318 |                 let qty: f64 = r.get(2);
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_qty`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cfg`
[INFO] [stdout]    --> engine/src/advisor/mod.rs:222:21
[INFO] [stdout]     |
[INFO] [stdout] 222 |     pub fn from_env(cfg: &Config) -> Self {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_cfg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `backfill_err`
[INFO] [stdout]   --> engine/src/api/chart.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |     let backfill_err = match crate::data::yahoo::backfill(
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_backfill_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `equity_multiplier` is never read
[INFO] [stdout]    --> engine/src/strategy_lab/replay.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         equity_multiplier *= 1.0 + realized_pnl;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:302:9
[INFO] [stdout]     |
[INFO] [stdout] 302 |     let mut atr = wilder_smooth(&tr, period);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let mut smoothed_plus = wilder_smooth(&plus_dm, period);
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:304:9
[INFO] [stdout]     |
[INFO] [stdout] 304 |     let mut smoothed_minus = wilder_smooth(&minus_dm, period);
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeZone`
[INFO] [stdout]   --> engine/src/advisor/briefing.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chrono::{TimeZone, Utc};
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `qty`
[INFO] [stdout]    --> engine/src/advisor/context.rs:318:21
[INFO] [stdout]     |
[INFO] [stdout] 318 |                 let qty: f64 = r.get(2);
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_qty`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_close`
[INFO] [stdout]    --> engine/src/scheduler.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let last_close = candles.last().map(|c| c.close).unwrap_or(1.0).max(1.0);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `atr` is never read
[INFO] [stdout]    --> engine/src/scheduler.rs:457:19
[INFO] [stdout]     |
[INFO] [stdout] 457 |     let mut atr = 0.0_f64;
[INFO] [stdout]     |                   ^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 460 |     atr = warmup;
[INFO] [stdout]     |     ------------ `atr` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cfg`
[INFO] [stdout]    --> engine/src/advisor/mod.rs:222:21
[INFO] [stdout]     |
[INFO] [stdout] 222 |     pub fn from_env(cfg: &Config) -> Self {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_cfg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `backfill_err`
[INFO] [stdout]   --> engine/src/api/chart.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |     let backfill_err = match crate::data::yahoo::backfill(
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_backfill_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `staleness_secs` is never read
[INFO] [stdout]   --> engine/src/advisor/mod.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub staleness_secs: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FeatureSnapshot` has derived impls for the traits `Clone` and `Debug`, but these are 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 `raw` is never read
[INFO] [stdout]    --> engine/src/advisor/mod.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     ParseFailed {
[INFO] [stdout]     |     ----------- field in this variant
[INFO] [stdout] 163 |         raw: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BriefingError` 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: field `context_hash` is never read
[INFO] [stdout]    --> engine/src/advisor/mod.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub struct CachedBriefing {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 201 |     pub briefing: AdvisorBriefing,
[INFO] [stdout] 202 |     pub context_hash: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CachedBriefing` 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: fields `chat_rate_limit_per_min` and `cache_ttl_seconds` are never read
[INFO] [stdout]    --> engine/src/advisor/mod.rs:214:9
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct AdvisorConfig {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub chat_rate_limit_per_min: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 215 |     pub cache_ttl_seconds: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AdvisorConfig` 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: function `hash_context` is never used
[INFO] [stdout]    --> engine/src/advisor/mod.rs:301:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | pub fn hash_context(ctx: &AdvisorContext) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_generate_briefing` is never used
[INFO] [stdout]    --> engine/src/advisor/briefing.rs:267:10
[INFO] [stdout]     |
[INFO] [stdout] 267 | async fn try_generate_briefing(state: &Arc<AdvisorState>, pool: &DbPool, symbol: &str) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prediction_to_dto` is never used
[INFO] [stdout]   --> engine/src/api/predictions.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub(crate) fn prediction_to_dto(row: &db::PredictionRow) -> PredictionDto {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `date` is never read
[INFO] [stdout]   --> engine/src/api/advisor.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct AskRequest {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub date: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pred_1h`, `pred_4h`, and `pred_24h` are never read
[INFO] [stdout]   --> engine/src/bridge.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Prediction {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 13 |     pub pred_1h: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 14 |     pub pred_4h: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |     pub pred_24h: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Prediction` 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: methods `predict` and `predict_with_retry` are never used
[INFO] [stdout]    --> engine/src/bridge.rs:48:18
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl ZmqBridge {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub async fn predict(
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn predict_with_retry(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceConfig` is never constructed
[INFO] [stdout]   --> engine/src/config.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct BinanceConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LlmConfig` is never constructed
[INFO] [stdout]   --> engine/src/config.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct LlmConfig {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MACRO_SYMBOLS` is never used
[INFO] [stdout]   --> engine/src/data/mod.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const MACRO_SYMBOLS: &[&str] = &["$VIX", "$UST10Y", "$DXY"];
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `symbol` is never read
[INFO] [stdout]   --> engine/src/data/finnhub.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct NewsSentiment {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub symbol: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NewsSentiment` 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: field `bearish` is never read
[INFO] [stdout]   --> engine/src/data/finnhub.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct SentimentStats {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub bearish: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SentimentStats` 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 `EarningsCalendarEntry` is never constructed
[INFO] [stdout]    --> engine/src/data/finnhub.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct EarningsCalendarEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_earnings_calendar` is never used
[INFO] [stdout]    --> engine/src/data/finnhub.rs:137:14
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub async fn fetch_earnings_calendar(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `kline_to_equity_candle` is never used
[INFO] [stdout]    --> engine/src/data/moomoo.rs:265:8
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub fn kline_to_equity_candle(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `open`, `vwap`, `funding_rate`, `basis_z`, and `ob_imbalance` are never read
[INFO] [stdout]    --> engine/src/db.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub struct Candle {
[INFO] [stdout]     |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub open: f64,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub vwap: f64,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 226 |     /// Binance perpetual funding rate (per funding interval). 0.0 if unknown.
[INFO] [stdout] 227 |     pub funding_rate: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 228 |     /// Spot-vs-perp basis Z-score (computed from spot vs futures price). 0.0 if unknown.
[INFO] [stdout] 229 |     pub basis_z: f64,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 230 |     /// Order-book imbalance from the depth stream in [-1, 1]. 0.0 if unknown.
[INFO] [stdout] 231 |     pub ob_imbalance: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Candle` 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: fields `id`, `symbol`, `regime`, and `source` are never read
[INFO] [stdout]    --> engine/src/db.rs:255:9
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub struct EquityPredictionRow {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 255 |     pub id: i64,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 256 |     pub symbol: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub regime: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub source: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EquityPredictionRow` 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: function `upsert_candle` is never used
[INFO] [stdout]    --> engine/src/db.rs:413:14
[INFO] [stdout]     |
[INFO] [stdout] 413 | pub async fn upsert_candle(pool: &DbPool, c: &Candle) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prune_old` is never used
[INFO] [stdout]    --> engine/src/db.rs:445:14
[INFO] [stdout]     |
[INFO] [stdout] 445 | pub async fn prune_old(pool: &DbPool, keep: usize) -> Result<u64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_candles` is never used
[INFO] [stdout]    --> engine/src/db.rs:459:14
[INFO] [stdout]     |
[INFO] [stdout] 459 | pub async fn count_candles(pool: &DbPool) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insert_prediction` is never used
[INFO] [stdout]    --> engine/src/db.rs:479:14
[INFO] [stdout]     |
[INFO] [stdout] 479 | pub async fn insert_prediction(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_recent_candles` is never used
[INFO] [stdout]    --> engine/src/db.rs:511:14
[INFO] [stdout]     |
[INFO] [stdout] 511 | pub async fn fetch_recent_candles(pool: &DbPool, limit: usize) -> Result<Vec<Candle>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insert_trade` is never used
[INFO] [stdout]    --> engine/src/db.rs:598:14
[INFO] [stdout]     |
[INFO] [stdout] 598 | pub async fn insert_trade(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_recent_predictions` is never used
[INFO] [stdout]    --> engine/src/db.rs:695:14
[INFO] [stdout]     |
[INFO] [stdout] 695 | pub async fn fetch_recent_predictions(pool: &DbPool, limit: usize) -> Result<Vec<PredictionRow>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_realized_pnl` is never used
[INFO] [stdout]    --> engine/src/db.rs:755:14
[INFO] [stdout]     |
[INFO] [stdout] 755 | pub async fn sum_realized_pnl(pool: &DbPool) -> Result<f64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_latest_candle` is never used
[INFO] [stdout]    --> engine/src/db.rs:832:14
[INFO] [stdout]     |
[INFO] [stdout] 832 | pub async fn fetch_latest_candle(pool: &DbPool) -> Result<Option<Candle>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_accuracy` is never used
[INFO] [stdout]    --> engine/src/db.rs:988:14
[INFO] [stdout]     |
[INFO] [stdout] 988 | pub async fn fetch_accuracy(pool: &DbPool) -> Result<AccuracyStats> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_equity_candles_desc` is never used
[INFO] [stdout]     --> engine/src/db.rs:1152:14
[INFO] [stdout]      |
[INFO] [stdout] 1152 | pub async fn fetch_equity_candles_desc(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `previous_mode`, `new_mode`, `parity_marker_age_secs`, and `authorized_by` are never read
[INFO] [stdout]     --> engine/src/db.rs:1838:9
[INFO] [stdout]      |
[INFO] [stdout] 1837 | pub struct ModeSwitchRow {
[INFO] [stdout]      |            ------------- fields in this struct
[INFO] [stdout] 1838 |     pub id: i64,
[INFO] [stdout]      |         ^^
[INFO] [stdout] 1839 |     pub previous_mode: String,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1840 |     pub new_mode: String,
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 1841 |     pub parity_marker_age_secs: i64,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 1842 |     pub authorized_by: String,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ModeSwitchRow` 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: function `insert_advisor_briefing_log` is never used
[INFO] [stdout]     --> engine/src/db.rs:1912:14
[INFO] [stdout]      |
[INFO] [stdout] 1912 | pub async fn insert_advisor_briefing_log(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `data_fetch_failed`, `staleness_alert`, `advisor_briefing`, and `backtest_completed` are never used
[INFO] [stdout]    --> engine/src/event.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl EngineEvent {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn data_fetch_failed(source: &'static str, symbol: &str, error: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn staleness_alert(last_ts: Option<i64>, secs: i64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn advisor_briefing(for_date: &str, model: &str, latency_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn backtest_completed(strategy_id: &str, cagr: f64, sharpe: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `plan_trades` is never used
[INFO] [stdout]    --> engine/src/exec/moomoo.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl MoomooExecutor {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn plan_trades(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SHORT_SYMBOL` is never used
[INFO] [stdout]   --> engine/src/exec/paper.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const DEFAULT_SHORT_SYMBOL: &str = "PSQ";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> engine/src/exec/paper.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl PaperExecutor {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn new(pool: DbPool, fee_rate: f64, tx: Option<TelemetrySender>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FeatureSource` is never used
[INFO] [stdout]   --> engine/src/features/mod.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub trait FeatureSource: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureRowV2` is never constructed
[INFO] [stdout]   --> engine/src/features/core.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct FeatureRowV2 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_array` is never used
[INFO] [stdout]   --> engine/src/features/core.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl FeatureRowV2 {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 33 |     /// Assemble the fixed-order feature vector for ZMQ / TCN inference.
[INFO] [stdout] 34 |     pub fn to_array(&self) -> [f64; FEATURE_DIM] {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_rows`, `save`, and `load` are never used
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl EquityNormStats {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 170 |     /// Compute norm stats from a set of feature rows.
[INFO] [stdout] 171 |     pub fn from_rows(rows: &[EquityFeatureRow]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn save(&self, path: &str) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn load(path: &str) -> anyhow::Result<Self> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `median` is never used
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:473:4
[INFO] [stdout]     |
[INFO] [stdout] 473 | fn median(values: &[f64]) -> f64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_cached_bull_prob` is never used
[INFO] [stdout]   --> engine/src/features/llm.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn read_cached_bull_prob() -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NormStats` is never constructed
[INFO] [stdout]   --> engine/src/normalize.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct NormStats {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> engine/src/normalize.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl NormStats {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn load(path: &str) -> Result<Self> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_row` is never used
[INFO] [stdout]   --> engine/src/normalize.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn normalize_row(feat: &FeatureRow, stats: &NormStats) -> [f64; 3] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_schema_version` is never used
[INFO] [stdout]   --> engine/src/normalize.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn default_schema_version() -> u32 { 1 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NormStatsV2` is never constructed
[INFO] [stdout]   --> engine/src/normalize.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NormStatsV2 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load` and `normalize_row_v2` are never used
[INFO] [stdout]   --> engine/src/normalize.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl NormStatsV2 {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn load(path: &str) -> Result<Self> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn normalize_row_v2(&self, feat: &FeatureRowV2) -> Result<[f64; FEATURE_DIM]> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> engine/src/market_hours.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl MarketSession {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 24 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nth_weekday_of_month` is never used
[INFO] [stdout]    --> engine/src/market_hours.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn nth_weekday_of_month(year: i32, month: u32, weekday: u32, n: u32) -> Option<u32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `easter_sunday` is never used
[INFO] [stdout]    --> engine/src/market_hours.rs:190:4
[INFO] [stdout]     |
[INFO] [stdout] 190 | fn easter_sunday(year: i32) -> (i32, u32, u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `strategy_id` is never read
[INFO] [stdout]   --> engine/src/strategy_lab/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct BacktestRequest {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub strategy_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BacktestRequest` 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: field `current_pos` is never read
[INFO] [stdout]   --> engine/src/strategy_lab/mod.rs:98:9
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub(crate) struct BarInput {
[INFO] [stdout]    |                   -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub current_pos: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BarInput` 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: value assigned to `equity_multiplier` is never read
[INFO] [stdout]    --> engine/src/strategy_lab/replay.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         equity_multiplier *= 1.0 + realized_pnl;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:302:9
[INFO] [stdout]     |
[INFO] [stdout] 302 |     let mut atr = wilder_smooth(&tr, period);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let mut smoothed_plus = wilder_smooth(&plus_dm, period);
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> engine/src/features/equities_v2.rs:304:9
[INFO] [stdout]     |
[INFO] [stdout] 304 |     let mut smoothed_minus = wilder_smooth(&minus_dm, period);
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_close`
[INFO] [stdout]    --> engine/src/scheduler.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let last_close = candles.last().map(|c| c.close).unwrap_or(1.0).max(1.0);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `atr` is never read
[INFO] [stdout]    --> engine/src/scheduler.rs:457:19
[INFO] [stdout]     |
[INFO] [stdout] 457 |     let mut atr = 0.0_f64;
[INFO] [stdout]     |                   ^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 460 |     atr = warmup;
[INFO] [stdout]     |     ------------ `atr` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> engine/src/strategy.rs:500:13
[INFO] [stdout]     |
[INFO] [stdout] 500 |         let input = eq_signal(0.003, -0.010, 400.0, 380.0, true); // bearish regime
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `staleness_secs` is never read
[INFO] [stdout]   --> engine/src/advisor/mod.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub staleness_secs: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FeatureSnapshot` has derived impls for the traits `Clone` and `Debug`, but these are 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 `raw` is never read
[INFO] [stdout]    --> engine/src/advisor/mod.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     ParseFailed {
[INFO] [stdout]     |     ----------- field in this variant
[INFO] [stdout] 163 |         raw: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BriefingError` 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: field `context_hash` is never read
[INFO] [stdout]    --> engine/src/advisor/mod.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub struct CachedBriefing {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 201 |     pub briefing: AdvisorBriefing,
[INFO] [stdout] 202 |     pub context_hash: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CachedBriefing` 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: fields `chat_rate_limit_per_min` and `cache_ttl_seconds` are never read
[INFO] [stdout]    --> engine/src/advisor/mod.rs:214:9
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct AdvisorConfig {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub chat_rate_limit_per_min: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 215 |     pub cache_ttl_seconds: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AdvisorConfig` 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: function `hash_context` is never used
[INFO] [stdout]    --> engine/src/advisor/mod.rs:301:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | pub fn hash_context(ctx: &AdvisorContext) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_generate_briefing` is never used
[INFO] [stdout]    --> engine/src/advisor/briefing.rs:267:10
[INFO] [stdout]     |
[INFO] [stdout] 267 | async fn try_generate_briefing(state: &Arc<AdvisorState>, pool: &DbPool, symbol: &str) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `date` is never read
[INFO] [stdout]   --> engine/src/api/advisor.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct AskRequest {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub date: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pred_1h`, `pred_4h`, and `pred_24h` are never read
[INFO] [stdout]   --> engine/src/bridge.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Prediction {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 13 |     pub pred_1h: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 14 |     pub pred_4h: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |     pub pred_24h: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Prediction` 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: methods `predict` and `predict_with_retry` are never used
[INFO] [stdout]    --> engine/src/bridge.rs:48:18
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl ZmqBridge {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub async fn predict(
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn predict_with_retry(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceConfig` is never constructed
[INFO] [stdout]   --> engine/src/config.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct BinanceConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LlmConfig` is never constructed
[INFO] [stdout]   --> engine/src/config.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct LlmConfig {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MACRO_SYMBOLS` is never used
[INFO] [stdout]   --> engine/src/data/mod.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const MACRO_SYMBOLS: &[&str] = &["$VIX", "$UST10Y", "$DXY"];
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `symbol` is never read
[INFO] [stdout]   --> engine/src/data/finnhub.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct NewsSentiment {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub symbol: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NewsSentiment` 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: field `bearish` is never read
[INFO] [stdout]   --> engine/src/data/finnhub.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct SentimentStats {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub bearish: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SentimentStats` 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 `EarningsCalendarEntry` is never constructed
[INFO] [stdout]    --> engine/src/data/finnhub.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct EarningsCalendarEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_earnings_calendar` is never used
[INFO] [stdout]    --> engine/src/data/finnhub.rs:137:14
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub async fn fetch_earnings_calendar(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `symbol`, `regime`, and `source` are never read
[INFO] [stdout]    --> engine/src/db.rs:255:9
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub struct EquityPredictionRow {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 255 |     pub id: i64,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 256 |     pub symbol: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub regime: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub source: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EquityPredictionRow` 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: function `prune_old` is never used
[INFO] [stdout]    --> engine/src/db.rs:445:14
[INFO] [stdout]     |
[INFO] [stdout] 445 | pub async fn prune_old(pool: &DbPool, keep: usize) -> Result<u64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_candles` is never used
[INFO] [stdout]    --> engine/src/db.rs:459:14
[INFO] [stdout]     |
[INFO] [stdout] 459 | pub async fn count_candles(pool: &DbPool) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_recent_candles` is never used
[INFO] [stdout]    --> engine/src/db.rs:511:14
[INFO] [stdout]     |
[INFO] [stdout] 511 | pub async fn fetch_recent_candles(pool: &DbPool, limit: usize) -> Result<Vec<Candle>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insert_trade` is never used
[INFO] [stdout]    --> engine/src/db.rs:598:14
[INFO] [stdout]     |
[INFO] [stdout] 598 | pub async fn insert_trade(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_realized_pnl` is never used
[INFO] [stdout]    --> engine/src/db.rs:755:14
[INFO] [stdout]     |
[INFO] [stdout] 755 | pub async fn sum_realized_pnl(pool: &DbPool) -> Result<f64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_latest_candle` is never used
[INFO] [stdout]    --> engine/src/db.rs:832:14
[INFO] [stdout]     |
[INFO] [stdout] 832 | pub async fn fetch_latest_candle(pool: &DbPool) -> Result<Option<Candle>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_equity_candles_desc` is never used
[INFO] [stdout]     --> engine/src/db.rs:1152:14
[INFO] [stdout]      |
[INFO] [stdout] 1152 | pub async fn fetch_equity_candles_desc(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `previous_mode`, `new_mode`, `parity_marker_age_secs`, and `authorized_by` are never read
[INFO] [stdout]     --> engine/src/db.rs:1838:9
[INFO] [stdout]      |
[INFO] [stdout] 1837 | pub struct ModeSwitchRow {
[INFO] [stdout]      |            ------------- fields in this struct
[INFO] [stdout] 1838 |     pub id: i64,
[INFO] [stdout]      |         ^^
[INFO] [stdout] 1839 |     pub previous_mode: String,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1840 |     pub new_mode: String,
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 1841 |     pub parity_marker_age_secs: i64,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 1842 |     pub authorized_by: String,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ModeSwitchRow` 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: function `insert_advisor_briefing_log` is never used
[INFO] [stdout]     --> engine/src/db.rs:1912:14
[INFO] [stdout]      |
[INFO] [stdout] 1912 | pub async fn insert_advisor_briefing_log(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `data_fetch_failed`, `advisor_briefing`, and `backtest_completed` are never used
[INFO] [stdout]    --> engine/src/event.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl EngineEvent {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn data_fetch_failed(source: &'static str, symbol: &str, error: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn advisor_briefing(for_date: &str, model: &str, latency_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn backtest_completed(strategy_id: &str, cagr: f64, sharpe: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FeatureSource` is never used
[INFO] [stdout]   --> engine/src/features/mod.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub trait FeatureSource: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureRowV2` is never constructed
[INFO] [stdout]   --> engine/src/features/core.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct FeatureRowV2 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_array` is never used
[INFO] [stdout]   --> engine/src/features/core.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl FeatureRowV2 {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 33 |     /// Assemble the fixed-order feature vector for ZMQ / TCN inference.
[INFO] [stdout] 34 |     pub fn to_array(&self) -> [f64; FEATURE_DIM] {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_schema_version` is never used
[INFO] [stdout]   --> engine/src/normalize.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn default_schema_version() -> u32 { 1 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NormStatsV2` is never constructed
[INFO] [stdout]   --> engine/src/normalize.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NormStatsV2 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load` and `normalize_row_v2` are never used
[INFO] [stdout]   --> engine/src/normalize.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl NormStatsV2 {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn load(path: &str) -> Result<Self> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn normalize_row_v2(&self, feat: &FeatureRowV2) -> Result<[f64; FEATURE_DIM]> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> engine/src/market_hours.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl MarketSession {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 24 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `strategy_id` is never read
[INFO] [stdout]   --> engine/src/strategy_lab/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct BacktestRequest {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub strategy_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BacktestRequest` 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: field `current_pos` is never read
[INFO] [stdout]   --> engine/src/strategy_lab/mod.rs:98:9
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub(crate) struct BarInput {
[INFO] [stdout]    |                   -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub current_pos: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BarInput` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `rust-embed`
[INFO] [stderr]   --> engine/Cargo.toml:29:1
[INFO] [stderr]    |
[INFO] [stderr] 29 | rust-embed = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `rust-embed`
[INFO] [stderr] warning: `engine` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "inspect" "4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a", kill_on_drop: false }`
[INFO] [stdout] 4efe4dc457e90293569c4e7e102a7aea2264192a8364d7a9ee795acc8a44764a
