[INFO] cloning repository https://github.com/johnmichaelgriffin-cmd/BeeBoop
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/johnmichaelgriffin-cmd/BeeBoop" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjohnmichaelgriffin-cmd%2FBeeBoop", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjohnmichaelgriffin-cmd%2FBeeBoop'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] be84aef2e0b848412e6fd54b5933dbd1741dc270
[INFO] checking johnmichaelgriffin-cmd/BeeBoop/be84aef2e0b848412e6fd54b5933dbd1741dc270 against master#e1613686e0efc80a1a18b1263625450a8de3fb04 for pr-154492
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjohnmichaelgriffin-cmd%2FBeeBoop" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/johnmichaelgriffin-cmd/BeeBoop
[INFO] finished tweaking git repo https://github.com/johnmichaelgriffin-cmd/BeeBoop
[INFO] tweaked toml for git repo https://github.com/johnmichaelgriffin-cmd/BeeBoop written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/johnmichaelgriffin-cmd/BeeBoop on toolchain e1613686e0efc80a1a18b1263625450a8de3fb04
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e1613686e0efc80a1a18b1263625450a8de3fb04" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/johnmichaelgriffin-cmd/BeeBoop 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" "+e1613686e0efc80a1a18b1263625450a8de3fb04" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rust_decimal_macros v1.40.0
[INFO] [stderr]   Downloaded borsh-derive v1.6.1
[INFO] [stderr]   Downloaded serde_ignored v0.1.14
[INFO] [stderr]   Downloaded serde_html_form v0.4.0
[INFO] [stderr]   Downloaded alloy-rlp-derive v0.3.13
[INFO] [stderr]   Downloaded alloy-tx-macros v1.7.3
[INFO] [stderr]   Downloaded bitcoin-io v0.1.4
[INFO] [stderr]   Downloaded alloy-rlp v0.3.13
[INFO] [stderr]   Downloaded enum-ordinalize-derive v4.3.2
[INFO] [stderr]   Downloaded alloy-rpc-types-any v1.7.3
[INFO] [stderr]   Downloaded enum-ordinalize v4.3.2
[INFO] [stderr]   Downloaded alloy-eip2930 v0.2.3
[INFO] [stderr]   Downloaded alloy-rpc-types v1.7.3
[INFO] [stderr]   Downloaded alloy-eip7702 v0.6.3
[INFO] [stderr]   Downloaded alloy-sol-type-parser v1.5.7
[INFO] [stderr]   Downloaded alloy-core v1.5.7
[INFO] [stderr]   Downloaded alloy-eip7928 v0.3.3
[INFO] [stderr]   Downloaded alloy-network-primitives v1.7.3
[INFO] [stderr]   Downloaded alloy-sol-macro-expander v1.5.7
[INFO] [stderr]   Downloaded alloy-contract v1.7.3
[INFO] [stderr]   Downloaded alloy-dyn-abi v1.5.7
[INFO] [stderr]   Downloaded alloy-sol-types v1.5.7
[INFO] [stderr]   Downloaded secp256k1 v0.30.0
[INFO] [stderr]   Downloaded alloy-consensus v1.7.3
[INFO] [stderr]   Downloaded ruint v1.17.2
[INFO] [stderr]   Downloaded alloy-rpc-types-eth v1.7.3
[INFO] [stderr]   Downloaded alloy-provider v1.7.3
[INFO] [stderr]   Downloaded aws-lc-rs v1.16.1
[INFO] [stderr]   Downloaded alloy-primitives v1.5.7
[INFO] [stderr]   Downloaded polymarket-client-sdk v0.4.4
[INFO] [stderr]   Downloaded bon-macros v3.9.1
[INFO] [stderr]   Downloaded alloy-rpc-client v1.7.3
[INFO] [stderr]   Downloaded alloy-signer-local v1.7.3
[INFO] [stderr]   Downloaded syn-solidity v1.5.7
[INFO] [stderr]   Downloaded alloy-genesis v1.7.3
[INFO] [stderr]   Downloaded alloy-eips v1.7.3
[INFO] [stderr]   Downloaded blst v0.3.16
[INFO] [stderr]   Downloaded wasmtimer v0.4.3
[INFO] [stderr]   Downloaded alloy-transport v1.7.3
[INFO] [stderr]   Downloaded sha3-asm v0.1.5
[INFO] [stderr]   Downloaded const-hex v1.18.1
[INFO] [stderr]   Downloaded rapidhash v4.4.1
[INFO] [stderr]   Downloaded alloy-trie v0.9.5
[INFO] [stderr]   Downloaded alloy v1.7.3
[INFO] [stderr]   Downloaded alloy-chains v0.2.32
[INFO] [stderr]   Downloaded bitcoin_hashes v0.14.1
[INFO] [stderr]   Downloaded alloy-network v1.7.3
[INFO] [stderr]   Downloaded alloy-json-rpc v1.7.3
[INFO] [stderr]   Downloaded alloy-transport-http v1.7.3
[INFO] [stderr]   Downloaded nybbles v0.4.8
[INFO] [stderr]   Downloaded alloy-serde v1.7.3
[INFO] [stderr]   Downloaded alloy-json-abi v1.5.7
[INFO] [stderr]   Downloaded keccak-asm v0.1.5
[INFO] [stderr]   Downloaded bon v3.9.1
[INFO] [stderr]   Downloaded borsh v1.6.1
[INFO] [stderr]   Downloaded alloy-signer v1.7.3
[INFO] [stderr]   Downloaded alloy-sol-macro-input v1.5.7
[INFO] [stderr]   Downloaded alloy-sol-macro v1.5.7
[INFO] [stderr]   Downloaded alloy-consensus-any v1.7.3
[INFO] [stderr]   Downloaded hex-conservative v0.2.2
[INFO] [stderr]   Downloaded c-kzg v2.1.7
[INFO] [stderr]   Downloaded secp256k1-sys v0.10.1
[INFO] [stderr]   Downloaded aws-lc-sys v0.38.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+e1613686e0efc80a1a18b1263625450a8de3fb04" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4955e5a4e8ca0260ae10eda54e6974a262046b48a34088fdaa9719dd49293cb7
[INFO] running `Command { std: "docker" "start" "-a" "4955e5a4e8ca0260ae10eda54e6974a262046b48a34088fdaa9719dd49293cb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4955e5a4e8ca0260ae10eda54e6974a262046b48a34088fdaa9719dd49293cb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4955e5a4e8ca0260ae10eda54e6974a262046b48a34088fdaa9719dd49293cb7", kill_on_drop: false }`
[INFO] [stdout] 4955e5a4e8ca0260ae10eda54e6974a262046b48a34088fdaa9719dd49293cb7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+e1613686e0efc80a1a18b1263625450a8de3fb04" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b0eda17573799b1d11347972c8a1e63582e702eafc5744c94a3d31c386710c36
[INFO] running `Command { std: "docker" "start" "-a" "b0eda17573799b1d11347972c8a1e63582e702eafc5744c94a3d31c386710c36", kill_on_drop: false }`
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking const-oid v0.9.6
[INFO] [stderr]     Checking foldhash v0.2.0
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling ruint-macro v1.2.1
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]     Checking memchr v2.8.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking base16ct v0.2.0
[INFO] [stderr]     Checking keccak v0.1.6
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling alloy-rlp-derive v0.3.13
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking const-hex v1.18.1
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling sha3 v0.10.8
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling aws-lc-rs v1.16.1
[INFO] [stderr]     Checking alloy-rlp v0.3.13
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling macro-string v0.1.4
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking ruint v1.17.2
[INFO] [stderr]    Compiling syn-solidity v1.5.7
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking sec1 v0.7.3
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking ff v0.13.1
[INFO] [stderr]     Checking crypto-bigint v0.5.5
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking group v0.13.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling auto_impl v1.3.0
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking rfc6979 v0.4.0
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking crc-catalog v2.4.0
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking crc v3.4.0
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]     Checking elliptic-curve v0.13.8
[INFO] [stderr]     Checking ecdsa v0.16.9
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking nybbles v0.4.8
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking k256 v0.13.4
[INFO] [stderr]     Checking alloy-sol-type-parser v1.5.7
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking futures-utils-wasm v0.1.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling num_enum_derive v0.7.6
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling aws-lc-sys v0.38.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling_core v0.21.3
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling serde_with_macros v3.18.0
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking alloy-primitives v1.5.7
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking num_enum v0.7.6
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking pin-project v1.1.11
[INFO] [stderr]    Compiling phf_shared v0.13.1
[INFO] [stderr]     Checking lru v0.16.3
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]    Compiling rust_decimal v1.40.0
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]    Compiling phf_generator v0.13.1
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking serde_with v3.18.0
[INFO] [stderr]    Compiling phf_macros v0.13.1
[INFO] [stderr]     Checking alloy-json-abi v1.5.7
[INFO] [stderr]     Checking alloy-serde v1.7.3
[INFO] [stderr]     Checking alloy-eip7702 v0.6.3
[INFO] [stderr]     Checking alloy-eip7928 v0.3.3
[INFO] [stderr]     Checking alloy-eip2930 v0.2.3
[INFO] [stderr]     Checking alloy-eip2124 v0.2.0
[INFO] [stderr]     Checking alloy-trie v0.9.5
[INFO] [stderr]     Checking alloy-signer v1.7.3
[INFO] [stderr]     Checking strum v0.27.2
[INFO] [stderr]     Checking alloy-chains v0.2.32
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking num-conv v0.2.0
[INFO] [stderr]     Checking time-core v0.1.8
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking backoff v0.4.0
[INFO] [stderr]     Checking phf v0.13.1
[INFO] [stderr]     Checking rand v0.10.0
[INFO] [stderr]    Compiling bon-macros v3.9.1
[INFO] [stderr]     Checking uuid v1.22.0
[INFO] [stderr]     Checking serde_html_form v0.4.0
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking secrecy v0.10.3
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling rust_decimal_macros v1.40.0
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking serde_ignored v0.1.14
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking ndarray v0.16.1
[INFO] [stderr]     Checking dotenvy v0.15.7
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]    Compiling alloy-tx-macros v1.7.3
[INFO] [stderr]    Compiling alloy-sol-macro-input v1.5.7
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hdrhistogram v7.5.4
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling alloy-sol-macro-expander v1.5.7
[INFO] [stderr]     Checking alloy-eips v1.7.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking alloy-consensus v1.7.3
[INFO] [stderr]    Compiling alloy-sol-macro v1.5.7
[INFO] [stderr]     Checking bon v3.9.1
[INFO] [stderr]     Checking alloy-sol-types v1.5.7
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking alloy-network-primitives v1.7.3
[INFO] [stderr]     Checking alloy-consensus-any v1.7.3
[INFO] [stderr]     Checking alloy-json-rpc v1.7.3
[INFO] [stderr]     Checking alloy-rpc-types-eth v1.7.3
[INFO] [stderr]     Checking alloy-dyn-abi v1.5.7
[INFO] [stderr]     Checking alloy-transport v1.7.3
[INFO] [stderr]     Checking alloy-core v1.5.7
[INFO] [stderr]     Checking alloy-rpc-types-any v1.7.3
[INFO] [stderr]     Checking alloy-rpc-types v1.7.3
[INFO] [stderr]     Checking alloy-network v1.7.3
[INFO] [stderr]     Checking alloy-signer-local v1.7.3
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.6.2
[INFO] [stderr]     Checking tungstenite v0.28.0
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking tokio-tungstenite v0.28.0
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking reqwest v0.13.2
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking alloy-transport-http v1.7.3
[INFO] [stderr]     Checking alloy-rpc-client v1.7.3
[INFO] [stderr]     Checking alloy-provider v1.7.3
[INFO] [stderr]     Checking alloy-contract v1.7.3
[INFO] [stderr]     Checking alloy v1.7.3
[INFO] [stderr]     Checking polymarket-client-sdk v0.4.4
[INFO] [stderr]     Checking beeboop v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> src/market_ws/mod.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[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 imports: `OrderRequest`, `OrderSide`, and `OrderType`
[INFO] [stdout]   --> src/strategy/mod.rs:16:64
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BotConfig, ObiSignal, OracleLagDirection, OracleLagSignal, OrderRequest, OrderSide, OrderType,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/execution/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/main.rs:21:25
[INFO] [stdout]    |
[INFO] [stdout] 21 | use tokio::sync::{mpsc, Mutex, RwLock};
[INFO] [stdout]    |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExecutionMode`, `SignalSnapshot`, and `evaluate`
[INFO] [stdout]   --> src/main.rs:27:26
[INFO] [stdout]    |
[INFO] [stdout] 27 |     BinanceReturnSignal, ExecutionMode, MarketState, Position, PositionState, RiskLimits,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^
[INFO] [stdout] 28 |     SignalSnapshot, StrategyAction, compute_signal, evaluate, evaluate_scalp,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[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: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> src/market_ws/mod.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[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 imports: `OrderRequest`, `OrderSide`, and `OrderType`
[INFO] [stdout]   --> src/strategy/mod.rs:16:64
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BotConfig, ObiSignal, OracleLagDirection, OracleLagSignal, OrderRequest, OrderSide, OrderType,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/execution/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/main.rs:21:25
[INFO] [stdout]    |
[INFO] [stdout] 21 | use tokio::sync::{mpsc, Mutex, RwLock};
[INFO] [stdout]    |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExecutionMode`, `SignalSnapshot`, and `evaluate`
[INFO] [stdout]   --> src/main.rs:27:26
[INFO] [stdout]    |
[INFO] [stdout] 27 |     BinanceReturnSignal, ExecutionMode, MarketState, Position, PositionState, RiskLimits,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^
[INFO] [stdout] 28 |     SignalSnapshot, StrategyAction, compute_signal, evaluate, evaluate_scalp,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[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: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/main_lockprofit_xrp.rs:22:27
[INFO] [stdout]    |
[INFO] [stdout] 22 | use tracing::{info, warn, error};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[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: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> src/main_vidarx_btc15.rs:24:21
[INFO] [stdout]    |
[INFO] [stdout] 24 | use tracing::{info, warn, error};
[INFO] [stdout]    |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/execution/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, info, warn};
[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: `error`
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> src/market_ws/mod.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OrderRequest`, `OrderSide`, and `OrderType`
[INFO] [stdout]   --> src/strategy/mod.rs:16:64
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BotConfig, ObiSignal, OracleLagDirection, OracleLagSignal, OrderRequest, OrderSide, OrderType,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/execution/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, info, warn};
[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: `error`
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> src/market_ws/mod.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OrderRequest`, `OrderSide`, and `OrderType`
[INFO] [stdout]   --> src/strategy/mod.rs:16:64
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BotConfig, ObiSignal, OracleLagDirection, OracleLagSignal, OrderRequest, OrderSide, OrderType,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[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: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/main_lockprofit_bnb.rs:22:27
[INFO] [stdout]    |
[INFO] [stdout] 22 | use tracing::{info, warn, error};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[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: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> src/main_vidarx.rs:22:21
[INFO] [stdout]    |
[INFO] [stdout] 22 | use tracing::{info, warn, error};
[INFO] [stdout]    |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[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: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/main_lockprofit_eth.rs:22:27
[INFO] [stdout]    |
[INFO] [stdout] 22 | use tracing::{info, warn, error};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/execution/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, info, warn};
[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: `error`
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> src/market_ws/mod.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OrderRequest`, `OrderSide`, and `OrderType`
[INFO] [stdout]   --> src/strategy/mod.rs:16:64
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BotConfig, ObiSignal, OracleLagDirection, OracleLagSignal, OrderRequest, OrderSide, OrderType,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[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: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[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: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> src/main_vidarx_btc15.rs:24:21
[INFO] [stdout]    |
[INFO] [stdout] 24 | use tracing::{info, warn, error};
[INFO] [stdout]    |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/execution/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, info, warn};
[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: `error`
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> src/market_ws/mod.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OrderRequest`, `OrderSide`, and `OrderType`
[INFO] [stdout]   --> src/strategy/mod.rs:16:64
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BotConfig, ObiSignal, OracleLagDirection, OracleLagSignal, OrderRequest, OrderSide, OrderType,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/execution/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, info, warn};
[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: `error`
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> src/market_ws/mod.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OrderRequest`, `OrderSide`, and `OrderType`
[INFO] [stdout]   --> src/strategy/mod.rs:16:64
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BotConfig, ObiSignal, OracleLagDirection, OracleLagSignal, OrderRequest, OrderSide, OrderType,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/execution/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, info, warn};
[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: `error`
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> src/market_ws/mod.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OrderRequest`, `OrderSide`, and `OrderType`
[INFO] [stdout]   --> src/strategy/mod.rs:16:64
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BotConfig, ObiSignal, OracleLagDirection, OracleLagSignal, OrderRequest, OrderSide, OrderType,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/feeds/polymarket_ws.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Timelike`
[INFO] [stdout]   --> src/feeds/user_ws.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use chrono::Timelike;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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] [stderr] error: could not compile `beeboop` (bin "lockprofit-bnb"); 4 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/e1613686e0efc80a1a18b1263625450a8de3fb04/bin/rustc --crate-name lockprofit_bnb --edition=2021 src/main_lockprofit_bnb.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=94f6c795d6d4cceb -C extra-filename=-3484a658ddaafc90 --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern alloy=/opt/rustwide/target/debug/deps/liballoy-4fe168e2cd2771c8.rmeta --extern anyhow=/opt/rustwide/target/debug/deps/libanyhow-88b36daaacafc31f.rmeta --extern base64=/opt/rustwide/target/debug/deps/libbase64-d8aec028dea2d277.rmeta --extern chrono=/opt/rustwide/target/debug/deps/libchrono-3f98c41db7e5ee81.rmeta --extern dotenvy=/opt/rustwide/target/debug/deps/libdotenvy-9e536007c79e99aa.rmeta --extern futures_util=/opt/rustwide/target/debug/deps/libfutures_util-7184f23feb171dc0.rmeta --extern hdrhistogram=/opt/rustwide/target/debug/deps/libhdrhistogram-e9bb983856b9c661.rmeta --extern hmac=/opt/rustwide/target/debug/deps/libhmac-b3a7b7710d530037.rmeta --extern ndarray=/opt/rustwide/target/debug/deps/libndarray-95c9652eba4bfa60.rmeta --extern parking_lot=/opt/rustwide/target/debug/deps/libparking_lot-543819ac3cfde434.rmeta --extern polymarket_client_sdk=/opt/rustwide/target/debug/deps/libpolymarket_client_sdk-c67182d44ca4cbeb.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-0e5174ef11b96805.rmeta --extern reqwest=/opt/rustwide/target/debug/deps/libreqwest-8850aad797d3bd50.rmeta --extern rust_decimal=/opt/rustwide/target/debug/deps/librust_decimal-23777cba6736c0f8.rmeta --extern rust_decimal_macros=/opt/rustwide/target/debug/deps/librust_decimal_macros-f5a1ccd422e24b99.so --extern rustls=/opt/rustwide/target/debug/deps/librustls-f6879ba477b161d6.rmeta --extern serde=/opt/rustwide/target/debug/deps/libserde-02fad437dadf681f.rmeta --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-a7771b163f79f858.rmeta --extern sha2=/opt/rustwide/target/debug/deps/libsha2-2cc37fbcb60d2420.rmeta --extern time=/opt/rustwide/target/debug/deps/libtime-22e765c3b15722d4.rmeta --extern tokio=/opt/rustwide/target/debug/deps/libtokio-9e9bc33aada61b0f.rmeta --extern tokio_tungstenite=/opt/rustwide/target/debug/deps/libtokio_tungstenite-a08ba3c12b39ad0e.rmeta --extern tracing=/opt/rustwide/target/debug/deps/libtracing-ab8c73fd8b8736b9.rmeta --extern tracing_subscriber=/opt/rustwide/target/debug/deps/libtracing_subscriber-168e8f95da496e51.rmeta --extern url=/opt/rustwide/target/debug/deps/liburl-c4681d21df9c7626.rmeta --extern uuid=/opt/rustwide/target/debug/deps/libuuid-e7a089620b0c8339.rmeta --cap-lints=forbid -L native=/opt/rustwide/target/debug/build/aws-lc-sys-f6d8a7f8463be5e3/out -L native=/opt/rustwide/target/debug/build/ring-be9bb453b21be6d0/out` (signal: 9, SIGKILL: kill)
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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] [stderr] error: could not compile `beeboop` (bin "beeboop-v2" test); 6 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/e1613686e0efc80a1a18b1263625450a8de3fb04/bin/rustc --crate-name beeboop_v2 --edition=2021 src/main_v2.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --test --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=19de12524e551df7 -C extra-filename=-d4fdfe1c677304ef --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern alloy=/opt/rustwide/target/debug/deps/liballoy-4fe168e2cd2771c8.rmeta --extern anyhow=/opt/rustwide/target/debug/deps/libanyhow-88b36daaacafc31f.rmeta --extern base64=/opt/rustwide/target/debug/deps/libbase64-d8aec028dea2d277.rmeta --extern chrono=/opt/rustwide/target/debug/deps/libchrono-3f98c41db7e5ee81.rmeta --extern dotenvy=/opt/rustwide/target/debug/deps/libdotenvy-9e536007c79e99aa.rmeta --extern futures_util=/opt/rustwide/target/debug/deps/libfutures_util-7184f23feb171dc0.rmeta --extern hdrhistogram=/opt/rustwide/target/debug/deps/libhdrhistogram-e9bb983856b9c661.rmeta --extern hmac=/opt/rustwide/target/debug/deps/libhmac-b3a7b7710d530037.rmeta --extern ndarray=/opt/rustwide/target/debug/deps/libndarray-95c9652eba4bfa60.rmeta --extern parking_lot=/opt/rustwide/target/debug/deps/libparking_lot-543819ac3cfde434.rmeta --extern polymarket_client_sdk=/opt/rustwide/target/debug/deps/libpolymarket_client_sdk-c67182d44ca4cbeb.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-0e5174ef11b96805.rmeta --extern reqwest=/opt/rustwide/target/debug/deps/libreqwest-8850aad797d3bd50.rmeta --extern rust_decimal=/opt/rustwide/target/debug/deps/librust_decimal-23777cba6736c0f8.rmeta --extern rust_decimal_macros=/opt/rustwide/target/debug/deps/librust_decimal_macros-f5a1ccd422e24b99.so --extern rustls=/opt/rustwide/target/debug/deps/librustls-f6879ba477b161d6.rmeta --extern serde=/opt/rustwide/target/debug/deps/libserde-02fad437dadf681f.rmeta --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-a7771b163f79f858.rmeta --extern sha2=/opt/rustwide/target/debug/deps/libsha2-2cc37fbcb60d2420.rmeta --extern time=/opt/rustwide/target/debug/deps/libtime-22e765c3b15722d4.rmeta --extern tokio=/opt/rustwide/target/debug/deps/libtokio-9e9bc33aada61b0f.rmeta --extern tokio_tungstenite=/opt/rustwide/target/debug/deps/libtokio_tungstenite-a08ba3c12b39ad0e.rmeta --extern tracing=/opt/rustwide/target/debug/deps/libtracing-ab8c73fd8b8736b9.rmeta --extern tracing_subscriber=/opt/rustwide/target/debug/deps/libtracing_subscriber-168e8f95da496e51.rmeta --extern url=/opt/rustwide/target/debug/deps/liburl-c4681d21df9c7626.rmeta --extern uuid=/opt/rustwide/target/debug/deps/libuuid-e7a089620b0c8339.rmeta --cap-lints=forbid -L native=/opt/rustwide/target/debug/build/aws-lc-sys-f6d8a7f8463be5e3/out -L native=/opt/rustwide/target/debug/build/ring-be9bb453b21be6d0/out` (signal: 9, SIGKILL: kill)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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] [stderr] error: could not compile `beeboop` (bin "beeboop-v3-eth" test); 3 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/e1613686e0efc80a1a18b1263625450a8de3fb04/bin/rustc --crate-name beeboop_v3_eth --edition=2021 src/main_vidarx_eth.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --test --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=db368b3a164457ff -C extra-filename=-4b0bd2cd2398f0e8 --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern alloy=/opt/rustwide/target/debug/deps/liballoy-4fe168e2cd2771c8.rmeta --extern anyhow=/opt/rustwide/target/debug/deps/libanyhow-88b36daaacafc31f.rmeta --extern base64=/opt/rustwide/target/debug/deps/libbase64-d8aec028dea2d277.rmeta --extern chrono=/opt/rustwide/target/debug/deps/libchrono-3f98c41db7e5ee81.rmeta --extern dotenvy=/opt/rustwide/target/debug/deps/libdotenvy-9e536007c79e99aa.rmeta --extern futures_util=/opt/rustwide/target/debug/deps/libfutures_util-7184f23feb171dc0.rmeta --extern hdrhistogram=/opt/rustwide/target/debug/deps/libhdrhistogram-e9bb983856b9c661.rmeta --extern hmac=/opt/rustwide/target/debug/deps/libhmac-b3a7b7710d530037.rmeta --extern ndarray=/opt/rustwide/target/debug/deps/libndarray-95c9652eba4bfa60.rmeta --extern parking_lot=/opt/rustwide/target/debug/deps/libparking_lot-543819ac3cfde434.rmeta --extern polymarket_client_sdk=/opt/rustwide/target/debug/deps/libpolymarket_client_sdk-c67182d44ca4cbeb.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-0e5174ef11b96805.rmeta --extern reqwest=/opt/rustwide/target/debug/deps/libreqwest-8850aad797d3bd50.rmeta --extern rust_decimal=/opt/rustwide/target/debug/deps/librust_decimal-23777cba6736c0f8.rmeta --extern rust_decimal_macros=/opt/rustwide/target/debug/deps/librust_decimal_macros-f5a1ccd422e24b99.so --extern rustls=/opt/rustwide/target/debug/deps/librustls-f6879ba477b161d6.rmeta --extern serde=/opt/rustwide/target/debug/deps/libserde-02fad437dadf681f.rmeta --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-a7771b163f79f858.rmeta --extern sha2=/opt/rustwide/target/debug/deps/libsha2-2cc37fbcb60d2420.rmeta --extern time=/opt/rustwide/target/debug/deps/libtime-22e765c3b15722d4.rmeta --extern tokio=/opt/rustwide/target/debug/deps/libtokio-9e9bc33aada61b0f.rmeta --extern tokio_tungstenite=/opt/rustwide/target/debug/deps/libtokio_tungstenite-a08ba3c12b39ad0e.rmeta --extern tracing=/opt/rustwide/target/debug/deps/libtracing-ab8c73fd8b8736b9.rmeta --extern tracing_subscriber=/opt/rustwide/target/debug/deps/libtracing_subscriber-168e8f95da496e51.rmeta --extern url=/opt/rustwide/target/debug/deps/liburl-c4681d21df9c7626.rmeta --extern uuid=/opt/rustwide/target/debug/deps/libuuid-e7a089620b0c8339.rmeta --cap-lints=forbid -L native=/opt/rustwide/target/debug/build/aws-lc-sys-f6d8a7f8463be5e3/out -L native=/opt/rustwide/target/debug/build/ring-be9bb453b21be6d0/out` (signal: 9, SIGKILL: kill)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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] [stderr] error: could not compile `beeboop` (bin "beeboop-btc-mint" test); 6 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/e1613686e0efc80a1a18b1263625450a8de3fb04/bin/rustc --crate-name beeboop_btc_mint --edition=2021 src/main_btc_mint.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --test --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=77d35273949c36a9 -C extra-filename=-b7d8028b776f58a0 --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern alloy=/opt/rustwide/target/debug/deps/liballoy-4fe168e2cd2771c8.rmeta --extern anyhow=/opt/rustwide/target/debug/deps/libanyhow-88b36daaacafc31f.rmeta --extern base64=/opt/rustwide/target/debug/deps/libbase64-d8aec028dea2d277.rmeta --extern chrono=/opt/rustwide/target/debug/deps/libchrono-3f98c41db7e5ee81.rmeta --extern dotenvy=/opt/rustwide/target/debug/deps/libdotenvy-9e536007c79e99aa.rmeta --extern futures_util=/opt/rustwide/target/debug/deps/libfutures_util-7184f23feb171dc0.rmeta --extern hdrhistogram=/opt/rustwide/target/debug/deps/libhdrhistogram-e9bb983856b9c661.rmeta --extern hmac=/opt/rustwide/target/debug/deps/libhmac-b3a7b7710d530037.rmeta --extern ndarray=/opt/rustwide/target/debug/deps/libndarray-95c9652eba4bfa60.rmeta --extern parking_lot=/opt/rustwide/target/debug/deps/libparking_lot-543819ac3cfde434.rmeta --extern polymarket_client_sdk=/opt/rustwide/target/debug/deps/libpolymarket_client_sdk-c67182d44ca4cbeb.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-0e5174ef11b96805.rmeta --extern reqwest=/opt/rustwide/target/debug/deps/libreqwest-8850aad797d3bd50.rmeta --extern rust_decimal=/opt/rustwide/target/debug/deps/librust_decimal-23777cba6736c0f8.rmeta --extern rust_decimal_macros=/opt/rustwide/target/debug/deps/librust_decimal_macros-f5a1ccd422e24b99.so --extern rustls=/opt/rustwide/target/debug/deps/librustls-f6879ba477b161d6.rmeta --extern serde=/opt/rustwide/target/debug/deps/libserde-02fad437dadf681f.rmeta --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-a7771b163f79f858.rmeta --extern sha2=/opt/rustwide/target/debug/deps/libsha2-2cc37fbcb60d2420.rmeta --extern time=/opt/rustwide/target/debug/deps/libtime-22e765c3b15722d4.rmeta --extern tokio=/opt/rustwide/target/debug/deps/libtokio-9e9bc33aada61b0f.rmeta --extern tokio_tungstenite=/opt/rustwide/target/debug/deps/libtokio_tungstenite-a08ba3c12b39ad0e.rmeta --extern tracing=/opt/rustwide/target/debug/deps/libtracing-ab8c73fd8b8736b9.rmeta --extern tracing_subscriber=/opt/rustwide/target/debug/deps/libtracing_subscriber-168e8f95da496e51.rmeta --extern url=/opt/rustwide/target/debug/deps/liburl-c4681d21df9c7626.rmeta --extern uuid=/opt/rustwide/target/debug/deps/libuuid-e7a089620b0c8339.rmeta --cap-lints=forbid -L native=/opt/rustwide/target/debug/build/aws-lc-sys-f6d8a7f8463be5e3/out -L native=/opt/rustwide/target/debug/build/ring-be9bb453b21be6d0/out` (signal: 9, SIGKILL: kill)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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: unused variable: `token_infos`
[INFO] [stdout]    --> src/market_ws/mod.rs:158:25
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let (token_ids, token_infos) = match fetch_btc_tokens().await {
[INFO] [stdout]     |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_infos`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `beeboop` (bin "beeboop-btc-mint"); 7 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/e1613686e0efc80a1a18b1263625450a8de3fb04/bin/rustc --crate-name beeboop_btc_mint --edition=2021 src/main_btc_mint.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=781cc766308a6861 -C extra-filename=-e41cac83cd7f8d9d --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern alloy=/opt/rustwide/target/debug/deps/liballoy-4fe168e2cd2771c8.rmeta --extern anyhow=/opt/rustwide/target/debug/deps/libanyhow-88b36daaacafc31f.rmeta --extern base64=/opt/rustwide/target/debug/deps/libbase64-d8aec028dea2d277.rmeta --extern chrono=/opt/rustwide/target/debug/deps/libchrono-3f98c41db7e5ee81.rmeta --extern dotenvy=/opt/rustwide/target/debug/deps/libdotenvy-9e536007c79e99aa.rmeta --extern futures_util=/opt/rustwide/target/debug/deps/libfutures_util-7184f23feb171dc0.rmeta --extern hdrhistogram=/opt/rustwide/target/debug/deps/libhdrhistogram-e9bb983856b9c661.rmeta --extern hmac=/opt/rustwide/target/debug/deps/libhmac-b3a7b7710d530037.rmeta --extern ndarray=/opt/rustwide/target/debug/deps/libndarray-95c9652eba4bfa60.rmeta --extern parking_lot=/opt/rustwide/target/debug/deps/libparking_lot-543819ac3cfde434.rmeta --extern polymarket_client_sdk=/opt/rustwide/target/debug/deps/libpolymarket_client_sdk-c67182d44ca4cbeb.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-0e5174ef11b96805.rmeta --extern reqwest=/opt/rustwide/target/debug/deps/libreqwest-8850aad797d3bd50.rmeta --extern rust_decimal=/opt/rustwide/target/debug/deps/librust_decimal-23777cba6736c0f8.rmeta --extern rust_decimal_macros=/opt/rustwide/target/debug/deps/librust_decimal_macros-f5a1ccd422e24b99.so --extern rustls=/opt/rustwide/target/debug/deps/librustls-f6879ba477b161d6.rmeta --extern serde=/opt/rustwide/target/debug/deps/libserde-02fad437dadf681f.rmeta --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-a7771b163f79f858.rmeta --extern sha2=/opt/rustwide/target/debug/deps/libsha2-2cc37fbcb60d2420.rmeta --extern time=/opt/rustwide/target/debug/deps/libtime-22e765c3b15722d4.rmeta --extern tokio=/opt/rustwide/target/debug/deps/libtokio-9e9bc33aada61b0f.rmeta --extern tokio_tungstenite=/opt/rustwide/target/debug/deps/libtokio_tungstenite-a08ba3c12b39ad0e.rmeta --extern tracing=/opt/rustwide/target/debug/deps/libtracing-ab8c73fd8b8736b9.rmeta --extern tracing_subscriber=/opt/rustwide/target/debug/deps/libtracing_subscriber-168e8f95da496e51.rmeta --extern url=/opt/rustwide/target/debug/deps/liburl-c4681d21df9c7626.rmeta --extern uuid=/opt/rustwide/target/debug/deps/libuuid-e7a089620b0c8339.rmeta --cap-lints=forbid -L native=/opt/rustwide/target/debug/build/aws-lc-sys-f6d8a7f8463be5e3/out -L native=/opt/rustwide/target/debug/build/ring-be9bb453b21be6d0/out` (signal: 9, SIGKILL: kill)
[INFO] [stderr] error: could not compile `beeboop` (bin "beeboop-btc15"); 4 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/e1613686e0efc80a1a18b1263625450a8de3fb04/bin/rustc --crate-name beeboop_btc15 --edition=2021 src/main_vidarx_btc15.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=b1fe7ca1b5fadf1e -C extra-filename=-9486798c17e0be6a --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern alloy=/opt/rustwide/target/debug/deps/liballoy-4fe168e2cd2771c8.rmeta --extern anyhow=/opt/rustwide/target/debug/deps/libanyhow-88b36daaacafc31f.rmeta --extern base64=/opt/rustwide/target/debug/deps/libbase64-d8aec028dea2d277.rmeta --extern chrono=/opt/rustwide/target/debug/deps/libchrono-3f98c41db7e5ee81.rmeta --extern dotenvy=/opt/rustwide/target/debug/deps/libdotenvy-9e536007c79e99aa.rmeta --extern futures_util=/opt/rustwide/target/debug/deps/libfutures_util-7184f23feb171dc0.rmeta --extern hdrhistogram=/opt/rustwide/target/debug/deps/libhdrhistogram-e9bb983856b9c661.rmeta --extern hmac=/opt/rustwide/target/debug/deps/libhmac-b3a7b7710d530037.rmeta --extern ndarray=/opt/rustwide/target/debug/deps/libndarray-95c9652eba4bfa60.rmeta --extern parking_lot=/opt/rustwide/target/debug/deps/libparking_lot-543819ac3cfde434.rmeta --extern polymarket_client_sdk=/opt/rustwide/target/debug/deps/libpolymarket_client_sdk-c67182d44ca4cbeb.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-0e5174ef11b96805.rmeta --extern reqwest=/opt/rustwide/target/debug/deps/libreqwest-8850aad797d3bd50.rmeta --extern rust_decimal=/opt/rustwide/target/debug/deps/librust_decimal-23777cba6736c0f8.rmeta --extern rust_decimal_macros=/opt/rustwide/target/debug/deps/librust_decimal_macros-f5a1ccd422e24b99.so --extern rustls=/opt/rustwide/target/debug/deps/librustls-f6879ba477b161d6.rmeta --extern serde=/opt/rustwide/target/debug/deps/libserde-02fad437dadf681f.rmeta --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-a7771b163f79f858.rmeta --extern sha2=/opt/rustwide/target/debug/deps/libsha2-2cc37fbcb60d2420.rmeta --extern time=/opt/rustwide/target/debug/deps/libtime-22e765c3b15722d4.rmeta --extern tokio=/opt/rustwide/target/debug/deps/libtokio-9e9bc33aada61b0f.rmeta --extern tokio_tungstenite=/opt/rustwide/target/debug/deps/libtokio_tungstenite-a08ba3c12b39ad0e.rmeta --extern tracing=/opt/rustwide/target/debug/deps/libtracing-ab8c73fd8b8736b9.rmeta --extern tracing_subscriber=/opt/rustwide/target/debug/deps/libtracing_subscriber-168e8f95da496e51.rmeta --extern url=/opt/rustwide/target/debug/deps/liburl-c4681d21df9c7626.rmeta --extern uuid=/opt/rustwide/target/debug/deps/libuuid-e7a089620b0c8339.rmeta --cap-lints=forbid -L native=/opt/rustwide/target/debug/build/aws-lc-sys-f6d8a7f8463be5e3/out -L native=/opt/rustwide/target/debug/build/ring-be9bb453b21be6d0/out` (signal: 9, SIGKILL: kill)
[INFO] [stdout] warning: unused variable: `token_infos`
[INFO] [stdout]    --> src/market_ws/mod.rs:158:25
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let (token_ids, token_infos) = match fetch_btc_tokens().await {
[INFO] [stdout]     |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_infos`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[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: unused variable: `exec_tokens`
[INFO] [stdout]    --> src/main.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |     let exec_tokens = exec.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exec_tokens`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `BookSide` is never used
[INFO] [stdout]   --> src/types.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type BookSide = BTreeMap<u64, f64>; // price_cents -> size
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token_id`, `bids`, `asks`, `timestamp`, and `local_recv_ts` are never read
[INFO] [stdout]   --> src/types.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OrderBook {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 22 |     pub token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 23 |     pub bids: Vec<PriceLevel>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 24 |     pub asks: Vec<PriceLevel>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 25 |     pub timestamp: i64,       // venue timestamp (ms)
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 26 |     pub local_recv_ts: i64,   // local recv timestamp (us)
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderBook` 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: enum `OrderSide` is never used
[INFO] [stdout]    --> src/types.rs:111:10
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub enum OrderSide {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderType` is never used
[INFO] [stdout]    --> src/types.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum OrderType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderRequest` is never constructed
[INFO] [stdout]    --> src/types.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct OrderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderStatus` is never used
[INFO] [stdout]    --> src/types.rs:134:10
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum OrderStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderState` is never constructed
[INFO] [stdout]    --> src/types.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct OrderState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/types.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct BotConfig {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub market_slug: String,          // e.g. "btc-updown-5m"
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 204 |     pub window_seconds: u64,          // 300
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub max_position: f64,            // max shares per side
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 208 |     pub max_open_orders: usize,       // kill switch
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 209 |     pub stop_loss_usd: f64,           // session kill switch
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 210 |     pub obi_threshold: f64,           // signal threshold
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 211 |     pub oracle_lag_threshold_bps: f64,// signal threshold
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BotConfig` 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 `0` is never read
[INFO] [stdout]    --> src/market_ws/mod.rs:132:10
[INFO] [stdout]     |
[INFO] [stdout] 132 |     Book(OrderBook),
[INFO] [stdout]     |     ---- ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 132 -     Book(OrderBook),
[INFO] [stdout] 132 +     Book(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/market_ws/mod.rs:134:20
[INFO] [stdout]     |
[INFO] [stdout] 134 |     LastTradePrice(Trade),
[INFO] [stdout]     |     -------------- ^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 134 -     LastTradePrice(Trade),
[INFO] [stdout] 134 +     LastTradePrice(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token_id`, `price`, and `timestamp` are never read
[INFO] [stdout]    --> src/market_ws/mod.rs:136:19
[INFO] [stdout]     |
[INFO] [stdout] 136 |     PriceChange { token_id: String, price: f64, timestamp: i64 },
[INFO] [stdout]     |     -----------   ^^^^^^^^          ^^^^^       ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketEvent` 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 `SubscribeMsg` is never constructed
[INFO] [stdout]    --> src/market_ws/mod.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | struct SubscribeMsg {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_WS_URL` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const USER_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/user";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserEvent` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum UserEvent {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:57:10
[INFO] [stdout]    |
[INFO] [stdout] 57 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_and_dispatch` is never used
[INFO] [stdout]    --> src/user_ws/mod.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn parse_and_dispatch(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/binance_l2/mod.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 |     Depth(BinanceDepthUpdate),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 26 -     Depth(BinanceDepthUpdate),
[INFO] [stdout] 26 +     Depth(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/binance_l2/mod.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 |     BookTicker(BinanceBookTicker),
[INFO] [stdout]    |     ---------- ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 27 -     BookTicker(BinanceBookTicker),
[INFO] [stdout] 27 +     BookTicker(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TakerExit` is never constructed
[INFO] [stdout]   --> src/strategy/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum StrategyAction {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 82 |     TakerExit {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StrategyAction` 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 `up_filled` and `dn_filled` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub struct MarketState {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub up_filled: f64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 106 |     pub dn_filled: f64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketState` 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 `max_position_per_side`, `max_open_orders`, and `max_cancel_rate` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct RiskLimits {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 117 |     pub max_position_per_side: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 118 |     pub max_open_orders: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 119 |     pub max_cancel_rate: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RiskLimits` 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 `return_500ms` and `timestamp` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct BinanceReturnSignal {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 146 |     pub return_2s: f64,     // 2-second return (bps)
[INFO] [stdout] 147 |     pub return_500ms: f64,  // 500ms return (bps)
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 148 |     pub timestamp: i64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BinanceReturnSignal` 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 `obi_component`, `oracle_lag_component`, and `binance_return_component` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:156:9
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct SignalSnapshot {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 155 |     pub score: f64,
[INFO] [stdout] 156 |     pub obi_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 157 |     pub oracle_lag_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 158 |     pub binance_return_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SignalSnapshot` 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: type alias `ExecutionMode` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:171:10
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub type ExecutionMode = SignalMode;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_SIGNAL_REVERSAL` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:186:7
[INFO] [stdout]     |
[INFO] [stdout] 186 | const EXIT_SIGNAL_REVERSAL: f64 = -0.20; // exit if signal flips against us
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAKER_EXIT_TIMEOUT_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:188:7
[INFO] [stdout]     |
[INFO] [stdout] 188 | const MAKER_EXIT_TIMEOUT_MS: i64 = 4_000; // 4s GTD timeout, then taker exit
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quantize_buy` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:191:4
[INFO] [stdout]     |
[INFO] [stdout] 191 | fn quantize_buy(price: f64, tick_size: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:427:8
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub fn evaluate(
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/execution/mod.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl TickSizeRegistry {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn update(&mut self, ts: &TickSize) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_us` is never read
[INFO] [stdout]   --> src/execution/mod.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct OrderResult {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub latency_us: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderResult` 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 `token_id`, `side`, `price`, `size`, `order_mode`, and `posted_at_us` are never read
[INFO] [stdout]   --> src/execution/mod.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct OrderTracking {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 74 |     pub token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 75 |     pub side: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 76 |     pub price: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 77 |     pub size: f64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 78 |     pub order_mode: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 79 |     pub posted_at_us: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderTracking` 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: multiple methods are never used
[INFO] [stdout]    --> src/execution/mod.rs:199:18
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn warm_token(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub async fn update_tick_size(&self, ts: &TickSize) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn set_neg_risk(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub async fn maker_gtc_buy(&self, token_id: &str, shares: f64, price: f64, post_only: bool) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     pub async fn get_open_orders(&self) -> Vec<(String, OrderTracking)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn is_paper(&self) -> bool { self.paper_mode }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 436 |     pub fn is_ready(&self) -> bool { self.private_key.is_some() && self.api_key.is_some() }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `do_gtc_buy` and `do_fok_sell` are never used
[INFO] [stdout]    --> src/execution/mod.rs:460:14
[INFO] [stdout]     |
[INFO] [stdout] 441 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 460 |     async fn do_gtc_buy(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, price: f64, post_only: boo...
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     async fn do_fok_sell(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64) -> Result<OrderResult, St...
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `percentiles` and `reset` are never used
[INFO] [stdout]   --> src/telemetry/mod.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl LatencyTracker {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn percentiles(&self, stage: &str) -> Option<Percentiles> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn reset(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Percentiles` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct Percentiles {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheck` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct HealthCheck {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `path` is never read
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct EventRecorder {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 22 |     writer: Arc<Mutex<BufWriter<File>>>,
[INFO] [stdout] 23 |     path: PathBuf,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `path` is never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl EventRecorder {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn path(&self) -> &Path {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PricePoint` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct PricePoint {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LagResult` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct LagResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross_correlate` is never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub fn cross_correlate(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_returns` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn to_returns(points: &[PricePoint]) -> Vec<(i64, f64)> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `correlation_at_lag` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn correlation_at_lag(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_analysis` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn print_analysis(results: &[LagResult], label_a: &str, label_b: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_events` is never used
[INFO] [stdout]   --> src/sim/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn load_events(path: &Path) -> Result<Vec<RecordedEvent>, Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay` is never used
[INFO] [stdout]   --> src/sim/mod.rs:42:14
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub async fn replay<F>(
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx`
[INFO] [stdout]   --> src/feeds/market_ws.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     log_tx: mpsc::Sender<LogEvent>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx`
[INFO] [stdout]   --> src/feeds/market_ws.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     log_tx: mpsc::Sender<LogEvent>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_fast`
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_fast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx_hb`
[INFO] [stdout]    --> src/signals/signal_engine.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let log_tx_hb = log_tx.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx_hb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_fast`
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_fast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx_hb`
[INFO] [stdout]    --> src/signals/signal_engine.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let log_tx_hb = log_tx.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx_hb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latency_ms`
[INFO] [stdout]    --> src/execution_v2/executor.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let latency_ms = start.elapsed().as_millis() as i64;
[INFO] [stdout]     |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latency_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latency_ms`
[INFO] [stdout]    --> src/execution_v2/executor.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let latency_ms = start.elapsed().as_millis() as i64;
[INFO] [stdout]     |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latency_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exec_tokens`
[INFO] [stdout]    --> src/main.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |     let exec_tokens = exec.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exec_tokens`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `BookSide` is never used
[INFO] [stdout]   --> src/types.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type BookSide = BTreeMap<u64, f64>; // price_cents -> size
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token_id`, `bids`, `asks`, `timestamp`, and `local_recv_ts` are never read
[INFO] [stdout]   --> src/types.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OrderBook {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 22 |     pub token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 23 |     pub bids: Vec<PriceLevel>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 24 |     pub asks: Vec<PriceLevel>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 25 |     pub timestamp: i64,       // venue timestamp (ms)
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 26 |     pub local_recv_ts: i64,   // local recv timestamp (us)
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderBook` 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: enum `OrderSide` is never used
[INFO] [stdout]    --> src/types.rs:111:10
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub enum OrderSide {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderType` is never used
[INFO] [stdout]    --> src/types.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum OrderType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderRequest` is never constructed
[INFO] [stdout]    --> src/types.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct OrderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderStatus` is never used
[INFO] [stdout]    --> src/types.rs:134:10
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum OrderStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderState` is never constructed
[INFO] [stdout]    --> src/types.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct OrderState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/types.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct BotConfig {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub market_slug: String,          // e.g. "btc-updown-5m"
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 204 |     pub window_seconds: u64,          // 300
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub max_position: f64,            // max shares per side
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 208 |     pub max_open_orders: usize,       // kill switch
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 209 |     pub stop_loss_usd: f64,           // session kill switch
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 210 |     pub obi_threshold: f64,           // signal threshold
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 211 |     pub oracle_lag_threshold_bps: f64,// signal threshold
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BotConfig` 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 `0` is never read
[INFO] [stdout]    --> src/market_ws/mod.rs:132:10
[INFO] [stdout]     |
[INFO] [stdout] 132 |     Book(OrderBook),
[INFO] [stdout]     |     ---- ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 132 -     Book(OrderBook),
[INFO] [stdout] 132 +     Book(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/market_ws/mod.rs:134:20
[INFO] [stdout]     |
[INFO] [stdout] 134 |     LastTradePrice(Trade),
[INFO] [stdout]     |     -------------- ^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 134 -     LastTradePrice(Trade),
[INFO] [stdout] 134 +     LastTradePrice(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token_id`, `price`, and `timestamp` are never read
[INFO] [stdout]    --> src/market_ws/mod.rs:136:19
[INFO] [stdout]     |
[INFO] [stdout] 136 |     PriceChange { token_id: String, price: f64, timestamp: i64 },
[INFO] [stdout]     |     -----------   ^^^^^^^^          ^^^^^       ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketEvent` 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 `SubscribeMsg` is never constructed
[INFO] [stdout]    --> src/market_ws/mod.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | struct SubscribeMsg {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_WS_URL` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const USER_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/user";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserEvent` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum UserEvent {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:57:10
[INFO] [stdout]    |
[INFO] [stdout] 57 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_and_dispatch` is never used
[INFO] [stdout]    --> src/user_ws/mod.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn parse_and_dispatch(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/binance_l2/mod.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 |     Depth(BinanceDepthUpdate),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 26 -     Depth(BinanceDepthUpdate),
[INFO] [stdout] 26 +     Depth(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/binance_l2/mod.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 |     BookTicker(BinanceBookTicker),
[INFO] [stdout]    |     ---------- ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 27 -     BookTicker(BinanceBookTicker),
[INFO] [stdout] 27 +     BookTicker(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TakerExit` is never constructed
[INFO] [stdout]   --> src/strategy/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum StrategyAction {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 82 |     TakerExit {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StrategyAction` 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 `up_filled` and `dn_filled` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub struct MarketState {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub up_filled: f64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 106 |     pub dn_filled: f64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketState` 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 `max_position_per_side`, `max_open_orders`, and `max_cancel_rate` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct RiskLimits {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 117 |     pub max_position_per_side: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 118 |     pub max_open_orders: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 119 |     pub max_cancel_rate: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RiskLimits` 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 `return_500ms` and `timestamp` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct BinanceReturnSignal {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 146 |     pub return_2s: f64,     // 2-second return (bps)
[INFO] [stdout] 147 |     pub return_500ms: f64,  // 500ms return (bps)
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 148 |     pub timestamp: i64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BinanceReturnSignal` 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 `obi_component`, `oracle_lag_component`, and `binance_return_component` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:156:9
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct SignalSnapshot {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 155 |     pub score: f64,
[INFO] [stdout] 156 |     pub obi_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 157 |     pub oracle_lag_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 158 |     pub binance_return_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SignalSnapshot` 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: type alias `ExecutionMode` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:171:10
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub type ExecutionMode = SignalMode;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_SIGNAL_REVERSAL` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:186:7
[INFO] [stdout]     |
[INFO] [stdout] 186 | const EXIT_SIGNAL_REVERSAL: f64 = -0.20; // exit if signal flips against us
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAKER_EXIT_TIMEOUT_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:188:7
[INFO] [stdout]     |
[INFO] [stdout] 188 | const MAKER_EXIT_TIMEOUT_MS: i64 = 4_000; // 4s GTD timeout, then taker exit
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:427:8
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub fn evaluate(
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/execution/mod.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl TickSizeRegistry {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn update(&mut self, ts: &TickSize) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_us` is never read
[INFO] [stdout]   --> src/execution/mod.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct OrderResult {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub latency_us: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderResult` 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 `token_id`, `side`, `price`, `size`, `order_mode`, and `posted_at_us` are never read
[INFO] [stdout]   --> src/execution/mod.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct OrderTracking {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 74 |     pub token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 75 |     pub side: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 76 |     pub price: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 77 |     pub size: f64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 78 |     pub order_mode: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 79 |     pub posted_at_us: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderTracking` 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: multiple methods are never used
[INFO] [stdout]    --> src/execution/mod.rs:199:18
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn warm_token(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub async fn update_tick_size(&self, ts: &TickSize) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn set_neg_risk(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub async fn maker_gtc_buy(&self, token_id: &str, shares: f64, price: f64, post_only: bool) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     pub async fn get_open_orders(&self) -> Vec<(String, OrderTracking)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn is_paper(&self) -> bool { self.paper_mode }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 436 |     pub fn is_ready(&self) -> bool { self.private_key.is_some() && self.api_key.is_some() }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `do_gtc_buy` and `do_fok_sell` are never used
[INFO] [stdout]    --> src/execution/mod.rs:460:14
[INFO] [stdout]     |
[INFO] [stdout] 441 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 460 |     async fn do_gtc_buy(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, price: f64, post_only: boo...
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     async fn do_fok_sell(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64) -> Result<OrderResult, St...
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `percentiles` and `reset` are never used
[INFO] [stdout]   --> src/telemetry/mod.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl LatencyTracker {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn percentiles(&self, stage: &str) -> Option<Percentiles> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn reset(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Percentiles` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct Percentiles {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheck` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct HealthCheck {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `path` is never read
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct EventRecorder {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 22 |     writer: Arc<Mutex<BufWriter<File>>>,
[INFO] [stdout] 23 |     path: PathBuf,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `path` is never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl EventRecorder {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn path(&self) -> &Path {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PricePoint` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct PricePoint {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LagResult` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct LagResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross_correlate` is never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub fn cross_correlate(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_returns` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn to_returns(points: &[PricePoint]) -> Vec<(i64, f64)> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `correlation_at_lag` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn correlation_at_lag(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_analysis` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn print_analysis(results: &[LagResult], label_a: &str, label_b: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_events` is never used
[INFO] [stdout]   --> src/sim/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn load_events(path: &Path) -> Result<Vec<RecordedEvent>, Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay` is never used
[INFO] [stdout]   --> src/sim/mod.rs:42:14
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub async fn replay<F>(
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signal`
[INFO] [stdout]   --> src/portfolio/position_manager.rs:82:46
[INFO] [stdout]    |
[INFO] [stdout] 82 |                         notional, ack_ts_ms, signal, ..
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `signal: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reason`
[INFO] [stdout]    --> src/portfolio/position_manager.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                         opposite_side, filled_price, filled_size, reason, ..
[INFO] [stdout]     |                                                                   ^^^^^^ help: try ignoring the field: `reason: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signal`
[INFO] [stdout]   --> src/portfolio/position_manager.rs:82:46
[INFO] [stdout]    |
[INFO] [stdout] 82 |                         notional, ack_ts_ms, signal, ..
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `signal: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reason`
[INFO] [stdout]    --> src/portfolio/position_manager.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                         opposite_side, filled_price, filled_size, reason, ..
[INFO] [stdout]     |                                                                   ^^^^^^ help: try ignoring the field: `reason: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/main_vidarx.rs:189:5
[INFO] [stdout]     |
[INFO] [stdout] 189 |     config: Config,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx`
[INFO] [stdout]   --> src/feeds/market_ws.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     log_tx: mpsc::Sender<LogEvent>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub lookback_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub maker_max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub take_profit_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub stop_loss_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub max_hold_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub cooldown_ms: i64,
[INFO] [stdout] 26 |     pub opposite_signal_exit_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub base_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub max_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub max_one_position: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub session_stop_loss: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub max_spread_cents: f64,
[INFO] [stdout] 38 |     pub min_entry_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub wallet_check_interval_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub window_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub tune: TuneConfig,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TuneConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 64 |     // Pair-cost gates
[INFO] [stdout] 65 |     pub pair_cost_full_size_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub pair_cost_reduce_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pair_cost_strong_only_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     // Residual controls
[INFO] [stdout] 69 |     pub weak_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub med_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub strong_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     pub extreme_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     pub soft_cap_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     pub soft_freeze_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     // Exp-heavy override
[INFO] [stdout] 76 |     pub exp_heavy_override_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub exp_heavy_strong_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub exp_heavy_pair_cost_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub base_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub neutral_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub exp_heavy_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 82 |     // Extreme-price filter
[INFO] [stdout] 83 |     pub extreme_reduce_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub extreme_reduce_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub extreme_hard_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     pub extreme_hard_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub extreme_size_multiplier: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 88 |     pub extreme_edge_add_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     // Rolling regime filter
[INFO] [stdout] 90 |     pub rolling_short_windows: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pub rolling_pause_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub rolling_pause_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 93 |     pub rolling_resume_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub rolling_resume_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     // Min pairs before pair-cost gating activates
[INFO] [stdout] 96 |     pub min_pairs_for_cost_gate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TuneConfig` 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: enum `SignalBand` is never used
[INFO] [stdout]    --> src/config_v2.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum SignalBand {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PairCostMode` is never used
[INFO] [stdout]    --> src/config_v2.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum PairCostMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `signal_band`, `max_ratio_for_band`, `pair_cost_mode`, and `cheap_target` are never used
[INFO] [stdout]    --> src/config_v2.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl TuneConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn signal_band(&self, score: f64) -> SignalBand {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn max_ratio_for_band(&self, band: SignalBand) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn pair_cost_mode(&self, pair_cost: f64, matched_pairs: f64) -> PairCostMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cheap_target(&self, score: f64, pred_winner_is_exp: bool, pair_cost: Option<f64>) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureSnapshot` is never constructed
[INFO] [stdout]   --> src/types_v2.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current_position`, `realized_pnl`, and `session_start_balance` are never read
[INFO] [stdout]   --> src/state.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SharedState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout]  9 |     pub strategy_state: Arc<RwLock<StrategyState>>,
[INFO] [stdout] 10 |     pub current_position: Arc<RwLock<Option<Position>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub cooldown_until_ms: Arc<RwLock<Option<i64>>>,
[INFO] [stdout] 12 |     pub realized_pnl: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub session_start_balance: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SharedState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/state.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SharedState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn set_state(&self, new_state: StrategyState) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_state(&self) -> StrategyState {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_position(&self, pos: Position) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn clear_position(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_position(&self) -> Option<Position> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_cooldown(&self, until_ms: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_cooling_down(&self, now_ms: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn add_pnl(&self, pnl: f64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_pnl(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn should_stop(&self, stop_loss: f64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLL_INTERVAL_MS` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const POLL_INTERVAL_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polymarket_ws_task` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub async fn run_polymarket_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_price` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | async fn fetch_price(client: &reqwest::Client, token_id: &str, side: &str) -> Option<f64> {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `order_id`, `status`, and `ts_ms` are never read
[INFO] [stdout]   --> src/feeds/user_ws.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct UserFillEvent {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 28 |     pub order_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub status: String,  // "ORDER_UPDATE" or "TRADE_MATCHED"
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 34 |     pub ts_ms: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserFillEvent` 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 `compute_move_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_move_bps(mid_now: f64, mid_then: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_basis_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn compute_basis_bps(binance_mid: f64, chainlink_price: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_ms` is never read
[INFO] [stdout]    --> src/execution_v2/executor.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct FillResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub latency_ms: i64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutorHandle` is never constructed
[INFO] [stdout]    --> src/execution_v2/executor.rs:466:12
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub struct ExecutorHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sell_fok`, and `buy_fok` are never used
[INFO] [stdout]    --> src/execution_v2/executor.rs:472:18
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl ExecutorHandle {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 472 |     pub async fn new(config: &Config) -> Option<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub async fn sell_fok(&self, token_id: &str, shares: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     pub async fn buy_fok(&self, token_id: &str, share_base: f64, ask_price: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_matches` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn sign_matches(side: Side, x: f64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_notional` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn compute_notional(signal: &Signal, base: f64, max: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_strategy_task` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn run_strategy_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PairTrade` is never constructed
[INFO] [stdout]   --> src/portfolio/position_manager.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct PairTrade {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_position_manager_task` is never used
[INFO] [stdout]   --> src/portfolio/position_manager.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn run_position_manager_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/main_lockprofit_xrp.rs:173:5
[INFO] [stdout]     |
[INFO] [stdout] 173 |     config: Config,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `exp_fill_shares` is assigned to, but never used
[INFO] [stdout]    --> src/main_lockprofit_xrp.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let mut exp_fill_shares: f64 = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_exp_fill_shares` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cheap_gtc_posted` is assigned to, but never used
[INFO] [stdout]    --> src/main_lockprofit_xrp.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut cheap_gtc_posted = false;    // have we posted the cheap GTC?
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_cheap_gtc_posted` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `exp_fill_shares` is never read
[INFO] [stdout]    --> src/main_lockprofit_xrp.rs:273:17
[INFO] [stdout]     |
[INFO] [stdout] 273 |                 exp_fill_shares = 0.0;
[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: value assigned to `exp_fill_shares` is never read
[INFO] [stdout]    --> src/main_lockprofit_xrp.rs:402:21
[INFO] [stdout]     |
[INFO] [stdout] 402 |                     exp_fill_shares = shares_per_leg;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cheap_gtc_posted` is never read
[INFO] [stdout]    --> src/main_lockprofit_xrp.rs:274:17
[INFO] [stdout]     |
[INFO] [stdout] 274 |                 cheap_gtc_posted = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cheap_gtc_posted` is never read
[INFO] [stdout]    --> src/main_lockprofit_xrp.rs:427:25
[INFO] [stdout]     |
[INFO] [stdout] 427 |                         cheap_gtc_posted = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_fast`
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_fast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx_hb`
[INFO] [stdout]    --> src/signals/signal_engine.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let log_tx_hb = log_tx.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx_hb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latency_ms`
[INFO] [stdout]    --> src/execution_v2/executor.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let latency_ms = start.elapsed().as_millis() as i64;
[INFO] [stdout]     |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latency_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub lookback_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub maker_max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub take_profit_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub stop_loss_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub max_hold_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub cooldown_ms: i64,
[INFO] [stdout] 26 |     pub opposite_signal_exit_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub base_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub max_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub max_one_position: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub session_stop_loss: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub max_spread_cents: f64,
[INFO] [stdout] 38 |     pub min_entry_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub wallet_check_interval_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub window_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub tune: TuneConfig,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TuneConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 64 |     // Pair-cost gates
[INFO] [stdout] 65 |     pub pair_cost_full_size_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub pair_cost_reduce_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pair_cost_strong_only_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     // Residual controls
[INFO] [stdout] 69 |     pub weak_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub med_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub strong_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     pub extreme_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     pub soft_cap_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     pub soft_freeze_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     // Exp-heavy override
[INFO] [stdout] 76 |     pub exp_heavy_override_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub exp_heavy_strong_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub exp_heavy_pair_cost_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub base_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub neutral_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub exp_heavy_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 82 |     // Extreme-price filter
[INFO] [stdout] 83 |     pub extreme_reduce_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub extreme_reduce_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub extreme_hard_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     pub extreme_hard_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub extreme_size_multiplier: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 88 |     pub extreme_edge_add_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     // Rolling regime filter
[INFO] [stdout] 90 |     pub rolling_short_windows: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pub rolling_pause_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub rolling_pause_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 93 |     pub rolling_resume_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub rolling_resume_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     // Min pairs before pair-cost gating activates
[INFO] [stdout] 96 |     pub min_pairs_for_cost_gate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TuneConfig` 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: enum `SignalBand` is never used
[INFO] [stdout]    --> src/config_v2.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum SignalBand {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PairCostMode` is never used
[INFO] [stdout]    --> src/config_v2.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum PairCostMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `signal_band`, `max_ratio_for_band`, `pair_cost_mode`, and `cheap_target` are never used
[INFO] [stdout]    --> src/config_v2.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl TuneConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn signal_band(&self, score: f64) -> SignalBand {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn max_ratio_for_band(&self, band: SignalBand) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn pair_cost_mode(&self, pair_cost: f64, matched_pairs: f64) -> PairCostMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cheap_target(&self, score: f64, pred_winner_is_exp: bool, pair_cost: Option<f64>) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureSnapshot` is never constructed
[INFO] [stdout]   --> src/types_v2.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current_position`, `realized_pnl`, and `session_start_balance` are never read
[INFO] [stdout]   --> src/state.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SharedState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout]  9 |     pub strategy_state: Arc<RwLock<StrategyState>>,
[INFO] [stdout] 10 |     pub current_position: Arc<RwLock<Option<Position>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub cooldown_until_ms: Arc<RwLock<Option<i64>>>,
[INFO] [stdout] 12 |     pub realized_pnl: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub session_start_balance: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SharedState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/state.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SharedState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn set_state(&self, new_state: StrategyState) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_state(&self) -> StrategyState {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_position(&self, pos: Position) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn clear_position(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_position(&self) -> Option<Position> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_cooldown(&self, until_ms: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_cooling_down(&self, now_ms: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn add_pnl(&self, pnl: f64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_pnl(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn should_stop(&self, stop_loss: f64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_binance_feed_task` is never used
[INFO] [stdout]   --> src/feeds/binance.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub async fn run_binance_feed_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLL_INTERVAL_MS` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const POLL_INTERVAL_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polymarket_ws_task` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub async fn run_polymarket_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_price` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | async fn fetch_price(client: &reqwest::Client, token_id: &str, side: &str) -> Option<f64> {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_rtds_task` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub async fn run_rtds_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `order_id`, `status`, and `ts_ms` are never read
[INFO] [stdout]   --> src/feeds/user_ws.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct UserFillEvent {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 28 |     pub order_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub status: String,  // "ORDER_UPDATE" or "TRADE_MATCHED"
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 34 |     pub ts_ms: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserFillEvent` 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 `compute_move_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_move_bps(mid_now: f64, mid_then: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_basis_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn compute_basis_bps(binance_mid: f64, chainlink_price: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_ms` is never read
[INFO] [stdout]    --> src/execution_v2/executor.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct FillResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub latency_ms: i64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutorHandle` is never constructed
[INFO] [stdout]    --> src/execution_v2/executor.rs:466:12
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub struct ExecutorHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sell_fok`, and `buy_fok` are never used
[INFO] [stdout]    --> src/execution_v2/executor.rs:472:18
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl ExecutorHandle {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 472 |     pub async fn new(config: &Config) -> Option<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub async fn sell_fok(&self, token_id: &str, shares: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     pub async fn buy_fok(&self, token_id: &str, share_base: f64, ask_price: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_matches` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn sign_matches(side: Side, x: f64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_notional` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn compute_notional(signal: &Signal, base: f64, max: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_strategy_task` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn run_strategy_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PairTrade` is never constructed
[INFO] [stdout]   --> src/portfolio/position_manager.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct PairTrade {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_position_manager_task` is never used
[INFO] [stdout]   --> src/portfolio/position_manager.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn run_position_manager_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signal`
[INFO] [stdout]   --> src/portfolio/position_manager.rs:82:46
[INFO] [stdout]    |
[INFO] [stdout] 82 |                         notional, ack_ts_ms, signal, ..
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `signal: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reason`
[INFO] [stdout]    --> src/portfolio/position_manager.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                         opposite_side, filled_price, filled_size, reason, ..
[INFO] [stdout]     |                                                                   ^^^^^^ help: try ignoring the field: `reason: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/main_vidarx_btc15.rs:194:5
[INFO] [stdout]     |
[INFO] [stdout] 194 |     config: Config,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx`
[INFO] [stdout]   --> src/feeds/market_ws.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     log_tx: mpsc::Sender<LogEvent>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub lookback_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub maker_max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub take_profit_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub stop_loss_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub max_hold_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub cooldown_ms: i64,
[INFO] [stdout] 26 |     pub opposite_signal_exit_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub base_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub max_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub max_one_position: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub session_stop_loss: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub max_spread_cents: f64,
[INFO] [stdout] 38 |     pub min_entry_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub wallet_check_interval_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub window_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub tune: TuneConfig,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TuneConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 64 |     // Pair-cost gates
[INFO] [stdout] 65 |     pub pair_cost_full_size_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub pair_cost_reduce_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pair_cost_strong_only_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     // Residual controls
[INFO] [stdout] 69 |     pub weak_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub med_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub strong_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     pub extreme_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     pub soft_cap_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     pub soft_freeze_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     // Exp-heavy override
[INFO] [stdout] 76 |     pub exp_heavy_override_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub exp_heavy_strong_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub exp_heavy_pair_cost_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub base_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub neutral_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub exp_heavy_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 82 |     // Extreme-price filter
[INFO] [stdout] 83 |     pub extreme_reduce_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub extreme_reduce_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub extreme_hard_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     pub extreme_hard_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub extreme_size_multiplier: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 88 |     pub extreme_edge_add_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     // Rolling regime filter
[INFO] [stdout] 90 |     pub rolling_short_windows: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pub rolling_pause_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub rolling_pause_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 93 |     pub rolling_resume_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub rolling_resume_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     // Min pairs before pair-cost gating activates
[INFO] [stdout] 96 |     pub min_pairs_for_cost_gate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TuneConfig` 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: enum `SignalBand` is never used
[INFO] [stdout]    --> src/config_v2.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum SignalBand {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PairCostMode` is never used
[INFO] [stdout]    --> src/config_v2.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum PairCostMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `signal_band`, `max_ratio_for_band`, `pair_cost_mode`, and `cheap_target` are never used
[INFO] [stdout]    --> src/config_v2.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl TuneConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn signal_band(&self, score: f64) -> SignalBand {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn max_ratio_for_band(&self, band: SignalBand) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn pair_cost_mode(&self, pair_cost: f64, matched_pairs: f64) -> PairCostMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cheap_target(&self, score: f64, pred_winner_is_exp: bool, pair_cost: Option<f64>) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureSnapshot` is never constructed
[INFO] [stdout]   --> src/types_v2.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current_position`, `realized_pnl`, and `session_start_balance` are never read
[INFO] [stdout]   --> src/state.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SharedState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout]  9 |     pub strategy_state: Arc<RwLock<StrategyState>>,
[INFO] [stdout] 10 |     pub current_position: Arc<RwLock<Option<Position>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub cooldown_until_ms: Arc<RwLock<Option<i64>>>,
[INFO] [stdout] 12 |     pub realized_pnl: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub session_start_balance: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SharedState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/state.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SharedState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn set_state(&self, new_state: StrategyState) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_state(&self) -> StrategyState {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_position(&self, pos: Position) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn clear_position(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_position(&self) -> Option<Position> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_cooldown(&self, until_ms: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_cooling_down(&self, now_ms: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn add_pnl(&self, pnl: f64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_pnl(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn should_stop(&self, stop_loss: f64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLL_INTERVAL_MS` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const POLL_INTERVAL_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polymarket_ws_task` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub async fn run_polymarket_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_price` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | async fn fetch_price(client: &reqwest::Client, token_id: &str, side: &str) -> Option<f64> {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `order_id`, `status`, and `ts_ms` are never read
[INFO] [stdout]   --> src/feeds/user_ws.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct UserFillEvent {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 28 |     pub order_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub status: String,  // "ORDER_UPDATE" or "TRADE_MATCHED"
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 34 |     pub ts_ms: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserFillEvent` 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 `compute_move_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_move_bps(mid_now: f64, mid_then: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_basis_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn compute_basis_bps(binance_mid: f64, chainlink_price: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_ms` is never read
[INFO] [stdout]    --> src/execution_v2/executor.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct FillResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub latency_ms: i64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutorHandle` is never constructed
[INFO] [stdout]    --> src/execution_v2/executor.rs:466:12
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub struct ExecutorHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sell_fok`, and `buy_fok` are never used
[INFO] [stdout]    --> src/execution_v2/executor.rs:472:18
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl ExecutorHandle {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 472 |     pub async fn new(config: &Config) -> Option<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub async fn sell_fok(&self, token_id: &str, shares: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     pub async fn buy_fok(&self, token_id: &str, share_base: f64, ask_price: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_matches` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn sign_matches(side: Side, x: f64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_notional` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn compute_notional(signal: &Signal, base: f64, max: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_strategy_task` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn run_strategy_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PairTrade` is never constructed
[INFO] [stdout]   --> src/portfolio/position_manager.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct PairTrade {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_position_manager_task` is never used
[INFO] [stdout]   --> src/portfolio/position_manager.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn run_position_manager_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_fast`
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_fast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx_hb`
[INFO] [stdout]    --> src/signals/signal_engine.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let log_tx_hb = log_tx.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx_hb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latency_ms`
[INFO] [stdout]    --> src/execution_v2/executor.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let latency_ms = start.elapsed().as_millis() as i64;
[INFO] [stdout]     |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latency_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx`
[INFO] [stdout]   --> src/feeds/market_ws.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     log_tx: mpsc::Sender<LogEvent>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_fast`
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_fast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx_hb`
[INFO] [stdout]    --> src/signals/signal_engine.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let log_tx_hb = log_tx.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx_hb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latency_ms`
[INFO] [stdout]    --> src/execution_v2/executor.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let latency_ms = start.elapsed().as_millis() as i64;
[INFO] [stdout]     |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latency_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signal`
[INFO] [stdout]   --> src/portfolio/position_manager.rs:82:46
[INFO] [stdout]    |
[INFO] [stdout] 82 |                         notional, ack_ts_ms, signal, ..
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `signal: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reason`
[INFO] [stdout]    --> src/portfolio/position_manager.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                         opposite_side, filled_price, filled_size, reason, ..
[INFO] [stdout]     |                                                                   ^^^^^^ help: try ignoring the field: `reason: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signal`
[INFO] [stdout]   --> src/portfolio/position_manager.rs:82:46
[INFO] [stdout]    |
[INFO] [stdout] 82 |                         notional, ack_ts_ms, signal, ..
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `signal: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reason`
[INFO] [stdout]    --> src/portfolio/position_manager.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                         opposite_side, filled_price, filled_size, reason, ..
[INFO] [stdout]     |                                                                   ^^^^^^ help: try ignoring the field: `reason: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `exp_shares` is assigned to, but never used
[INFO] [stdout]    --> src/main_vidarx_eth.rs:196:9
[INFO] [stdout]     |
[INFO] [stdout] 196 |     let mut exp_shares: f64 = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_exp_shares` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cheap_cost` is assigned to, but never used
[INFO] [stdout]    --> src/main_vidarx_eth.rs:197:9
[INFO] [stdout]     |
[INFO] [stdout] 197 |     let mut cheap_cost: f64 = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_cheap_cost` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `exp_cost` is assigned to, but never used
[INFO] [stdout]    --> src/main_vidarx_eth.rs:198:9
[INFO] [stdout]     |
[INFO] [stdout] 198 |     let mut exp_cost: f64 = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_exp_cost` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `up_shares_posted` is assigned to, but never used
[INFO] [stdout]    --> src/main_vidarx_eth.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |     let mut up_shares_posted: f64 = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_up_shares_posted` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `dn_shares_posted` is assigned to, but never used
[INFO] [stdout]    --> src/main_vidarx_eth.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let mut dn_shares_posted: f64 = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_dn_shares_posted` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side`
[INFO] [stdout]    --> src/main_vidarx_eth.rs:322:76
[INFO] [stdout]     |
[INFO] [stdout] 322 |                     ExecutionEvent::MakerOrderPosted { order_id, token_id, side, price, size, ladder_key, was_cheap } => {
[INFO] [stdout]     |                                                                            ^^^^ help: try ignoring the field: `side: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `market`
[INFO] [stdout]    --> src/main_vidarx_eth.rs:419:21
[INFO] [stdout]     |
[INFO] [stdout] 419 |                 let market = market_rx.borrow().clone();
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_market`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_cheap`
[INFO] [stdout]    --> src/main_vidarx_eth.rs:632:25
[INFO] [stdout]     |
[INFO] [stdout] 632 |                     let is_cheap = true;
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_cheap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `exp_shares` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:286:17
[INFO] [stdout]     |
[INFO] [stdout] 286 |                 exp_shares = 0.0;
[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: value assigned to `exp_shares` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:394:21
[INFO] [stdout]     |
[INFO] [stdout] 394 |                     exp_shares += fill.size;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cheap_cost` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:287:17
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 cheap_cost = 0.0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cheap_cost` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:392:21
[INFO] [stdout]     |
[INFO] [stdout] 392 |                     cheap_cost += fill.size * fill.price;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `exp_cost` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:288:17
[INFO] [stdout]     |
[INFO] [stdout] 288 |                 exp_cost = 0.0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `exp_cost` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:395:21
[INFO] [stdout]     |
[INFO] [stdout] 395 |                     exp_cost += fill.size * fill.price;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `up_shares_posted` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:289:17
[INFO] [stdout]     |
[INFO] [stdout] 289 |                 up_shares_posted = 0.0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `up_shares_posted` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:732:25
[INFO] [stdout]     |
[INFO] [stdout] 732 |                         up_shares_posted += *size;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `dn_shares_posted` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:290:17
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 dn_shares_posted = 0.0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `dn_shares_posted` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:734:25
[INFO] [stdout]     |
[INFO] [stdout] 734 |                         dn_shares_posted += *size;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `posted_price` is never read
[INFO] [stdout]    --> src/main_vidarx_eth.rs:228:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |     struct PostedOrderMeta {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 228 |         posted_price: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub lookback_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub maker_max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub take_profit_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub stop_loss_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub max_hold_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub cooldown_ms: i64,
[INFO] [stdout] 26 |     pub opposite_signal_exit_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub base_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub max_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub max_one_position: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub session_stop_loss: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub max_spread_cents: f64,
[INFO] [stdout] 38 |     pub min_entry_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub wallet_check_interval_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub window_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub tune: TuneConfig,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TuneConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 64 |     // Pair-cost gates
[INFO] [stdout] 65 |     pub pair_cost_full_size_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub pair_cost_reduce_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pair_cost_strong_only_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     // Residual controls
[INFO] [stdout] 69 |     pub weak_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub med_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub strong_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     pub extreme_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     pub soft_cap_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     pub soft_freeze_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     // Exp-heavy override
[INFO] [stdout] 76 |     pub exp_heavy_override_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub exp_heavy_strong_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub exp_heavy_pair_cost_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub base_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub neutral_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub exp_heavy_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 82 |     // Extreme-price filter
[INFO] [stdout] 83 |     pub extreme_reduce_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub extreme_reduce_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub extreme_hard_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     pub extreme_hard_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub extreme_size_multiplier: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 88 |     pub extreme_edge_add_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     // Rolling regime filter
[INFO] [stdout] 90 |     pub rolling_short_windows: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pub rolling_pause_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub rolling_pause_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 93 |     pub rolling_resume_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub rolling_resume_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     // Min pairs before pair-cost gating activates
[INFO] [stdout] 96 |     pub min_pairs_for_cost_gate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TuneConfig` 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: enum `SignalBand` is never used
[INFO] [stdout]    --> src/config_v2.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum SignalBand {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PairCostMode` is never used
[INFO] [stdout]    --> src/config_v2.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum PairCostMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `signal_band`, `max_ratio_for_band`, `pair_cost_mode`, and `cheap_target` are never used
[INFO] [stdout]    --> src/config_v2.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl TuneConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn signal_band(&self, score: f64) -> SignalBand {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn max_ratio_for_band(&self, band: SignalBand) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn pair_cost_mode(&self, pair_cost: f64, matched_pairs: f64) -> PairCostMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cheap_target(&self, score: f64, pred_winner_is_exp: bool, pair_cost: Option<f64>) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureSnapshot` is never constructed
[INFO] [stdout]   --> src/types_v2.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current_position`, `realized_pnl`, and `session_start_balance` are never read
[INFO] [stdout]   --> src/state.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SharedState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout]  9 |     pub strategy_state: Arc<RwLock<StrategyState>>,
[INFO] [stdout] 10 |     pub current_position: Arc<RwLock<Option<Position>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub cooldown_until_ms: Arc<RwLock<Option<i64>>>,
[INFO] [stdout] 12 |     pub realized_pnl: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub session_start_balance: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SharedState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/state.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SharedState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn set_state(&self, new_state: StrategyState) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_state(&self) -> StrategyState {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_position(&self, pos: Position) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn clear_position(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_position(&self) -> Option<Position> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_cooldown(&self, until_ms: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_cooling_down(&self, now_ms: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn add_pnl(&self, pnl: f64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_pnl(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn should_stop(&self, stop_loss: f64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_binance_feed_task` is never used
[INFO] [stdout]   --> src/feeds/binance.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub async fn run_binance_feed_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLL_INTERVAL_MS` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const POLL_INTERVAL_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polymarket_ws_task` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub async fn run_polymarket_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_price` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | async fn fetch_price(client: &reqwest::Client, token_id: &str, side: &str) -> Option<f64> {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_rtds_task` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub async fn run_rtds_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ts_ms` is never read
[INFO] [stdout]   --> src/feeds/user_ws.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct UserFillEvent {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub ts_ms: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserFillEvent` 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 `compute_move_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_move_bps(mid_now: f64, mid_then: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_basis_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn compute_basis_bps(binance_mid: f64, chainlink_price: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_ms` is never read
[INFO] [stdout]    --> src/execution_v2/executor.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct FillResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub latency_ms: i64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutorHandle` is never constructed
[INFO] [stdout]    --> src/execution_v2/executor.rs:466:12
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub struct ExecutorHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sell_fok`, and `buy_fok` are never used
[INFO] [stdout]    --> src/execution_v2/executor.rs:472:18
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl ExecutorHandle {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 472 |     pub async fn new(config: &Config) -> Option<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub async fn sell_fok(&self, token_id: &str, shares: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     pub async fn buy_fok(&self, token_id: &str, share_base: f64, ask_price: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_matches` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn sign_matches(side: Side, x: f64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_notional` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn compute_notional(signal: &Signal, base: f64, max: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_strategy_task` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn run_strategy_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PairTrade` is never constructed
[INFO] [stdout]   --> src/portfolio/position_manager.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct PairTrade {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_position_manager_task` is never used
[INFO] [stdout]   --> src/portfolio/position_manager.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn run_position_manager_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/main_lockprofit_eth.rs:173:5
[INFO] [stdout]     |
[INFO] [stdout] 173 |     config: Config,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `exp_fill_shares` is assigned to, but never used
[INFO] [stdout]    --> src/main_lockprofit_eth.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let mut exp_fill_shares: f64 = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_exp_fill_shares` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cheap_gtc_posted` is assigned to, but never used
[INFO] [stdout]    --> src/main_lockprofit_eth.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut cheap_gtc_posted = false;    // have we posted the cheap GTC?
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_cheap_gtc_posted` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `exp_fill_shares` is never read
[INFO] [stdout]    --> src/main_lockprofit_eth.rs:273:17
[INFO] [stdout]     |
[INFO] [stdout] 273 |                 exp_fill_shares = 0.0;
[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: value assigned to `exp_fill_shares` is never read
[INFO] [stdout]    --> src/main_lockprofit_eth.rs:402:21
[INFO] [stdout]     |
[INFO] [stdout] 402 |                     exp_fill_shares = shares_per_leg;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cheap_gtc_posted` is never read
[INFO] [stdout]    --> src/main_lockprofit_eth.rs:274:17
[INFO] [stdout]     |
[INFO] [stdout] 274 |                 cheap_gtc_posted = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cheap_gtc_posted` is never read
[INFO] [stdout]    --> src/main_lockprofit_eth.rs:427:25
[INFO] [stdout]     |
[INFO] [stdout] 427 |                         cheap_gtc_posted = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub lookback_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub maker_max_signal_age_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub take_profit_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub stop_loss_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub max_hold_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub cooldown_ms: i64,
[INFO] [stdout] 26 |     pub opposite_signal_exit_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub base_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub max_notional: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub max_one_position: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub session_stop_loss: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub max_spread_cents: f64,
[INFO] [stdout] 38 |     pub min_entry_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub wallet_check_interval_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub window_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub tune: TuneConfig,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TuneConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 64 |     // Pair-cost gates
[INFO] [stdout] 65 |     pub pair_cost_full_size_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub pair_cost_reduce_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pair_cost_strong_only_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     // Residual controls
[INFO] [stdout] 69 |     pub weak_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub med_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub strong_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     pub extreme_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     pub soft_cap_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     pub soft_freeze_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     // Exp-heavy override
[INFO] [stdout] 76 |     pub exp_heavy_override_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub exp_heavy_strong_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub exp_heavy_pair_cost_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub base_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub neutral_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub exp_heavy_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 82 |     // Extreme-price filter
[INFO] [stdout] 83 |     pub extreme_reduce_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub extreme_reduce_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub extreme_hard_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     pub extreme_hard_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub extreme_size_multiplier: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 88 |     pub extreme_edge_add_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     // Rolling regime filter
[INFO] [stdout] 90 |     pub rolling_short_windows: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pub rolling_pause_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub rolling_pause_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 93 |     pub rolling_resume_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub rolling_resume_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     // Min pairs before pair-cost gating activates
[INFO] [stdout] 96 |     pub min_pairs_for_cost_gate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TuneConfig` 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: enum `SignalBand` is never used
[INFO] [stdout]    --> src/config_v2.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum SignalBand {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PairCostMode` is never used
[INFO] [stdout]    --> src/config_v2.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum PairCostMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `signal_band`, `max_ratio_for_band`, `pair_cost_mode`, and `cheap_target` are never used
[INFO] [stdout]    --> src/config_v2.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl TuneConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn signal_band(&self, score: f64) -> SignalBand {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn max_ratio_for_band(&self, band: SignalBand) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn pair_cost_mode(&self, pair_cost: f64, matched_pairs: f64) -> PairCostMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cheap_target(&self, score: f64, pred_winner_is_exp: bool, pair_cost: Option<f64>) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureSnapshot` is never constructed
[INFO] [stdout]   --> src/types_v2.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current_position`, `realized_pnl`, and `session_start_balance` are never read
[INFO] [stdout]   --> src/state.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SharedState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout]  9 |     pub strategy_state: Arc<RwLock<StrategyState>>,
[INFO] [stdout] 10 |     pub current_position: Arc<RwLock<Option<Position>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub cooldown_until_ms: Arc<RwLock<Option<i64>>>,
[INFO] [stdout] 12 |     pub realized_pnl: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub session_start_balance: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SharedState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/state.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SharedState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn set_state(&self, new_state: StrategyState) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_state(&self) -> StrategyState {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_position(&self, pos: Position) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn clear_position(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_position(&self) -> Option<Position> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_cooldown(&self, until_ms: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_cooling_down(&self, now_ms: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn add_pnl(&self, pnl: f64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_pnl(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn should_stop(&self, stop_loss: f64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_binance_feed_task` is never used
[INFO] [stdout]   --> src/feeds/binance.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub async fn run_binance_feed_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLL_INTERVAL_MS` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const POLL_INTERVAL_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polymarket_ws_task` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub async fn run_polymarket_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_price` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | async fn fetch_price(client: &reqwest::Client, token_id: &str, side: &str) -> Option<f64> {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_rtds_task` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub async fn run_rtds_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `order_id`, `status`, and `ts_ms` are never read
[INFO] [stdout]   --> src/feeds/user_ws.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct UserFillEvent {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 28 |     pub order_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub status: String,  // "ORDER_UPDATE" or "TRADE_MATCHED"
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 34 |     pub ts_ms: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserFillEvent` 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 `compute_move_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_move_bps(mid_now: f64, mid_then: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_basis_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn compute_basis_bps(binance_mid: f64, chainlink_price: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_ms` is never read
[INFO] [stdout]    --> src/execution_v2/executor.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct FillResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub latency_ms: i64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutorHandle` is never constructed
[INFO] [stdout]    --> src/execution_v2/executor.rs:466:12
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub struct ExecutorHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sell_fok`, and `buy_fok` are never used
[INFO] [stdout]    --> src/execution_v2/executor.rs:472:18
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl ExecutorHandle {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 472 |     pub async fn new(config: &Config) -> Option<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub async fn sell_fok(&self, token_id: &str, shares: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     pub async fn buy_fok(&self, token_id: &str, share_base: f64, ask_price: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_matches` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn sign_matches(side: Side, x: f64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_notional` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn compute_notional(signal: &Signal, base: f64, max: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_strategy_task` is never used
[INFO] [stdout]   --> src/strategy_v2/sniper.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn run_strategy_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PairTrade` is never constructed
[INFO] [stdout]   --> src/portfolio/position_manager.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct PairTrade {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_position_manager_task` is never used
[INFO] [stdout]   --> src/portfolio/position_manager.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn run_position_manager_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_infos`
[INFO] [stdout]    --> src/market_ws/mod.rs:158:25
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let (token_ids, token_infos) = match fetch_btc_tokens().await {
[INFO] [stdout]     |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_infos`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_infos`
[INFO] [stdout]    --> src/market_ws/mod.rs:158:25
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let (token_ids, token_infos) = match fetch_btc_tokens().await {
[INFO] [stdout]     |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_infos`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_infos`
[INFO] [stdout]    --> src/market_ws/mod.rs:158:25
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let (token_ids, token_infos) = match fetch_btc_tokens().await {
[INFO] [stdout]     |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_infos`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx`
[INFO] [stdout]   --> src/feeds/market_ws.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     log_tx: mpsc::Sender<LogEvent>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_fast`
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_fast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx_hb`
[INFO] [stdout]    --> src/signals/signal_engine.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let log_tx_hb = log_tx.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx_hb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latency_ms`
[INFO] [stdout]    --> src/execution_v2/executor.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let latency_ms = start.elapsed().as_millis() as i64;
[INFO] [stdout]     |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latency_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signal`
[INFO] [stdout]   --> src/portfolio/position_manager.rs:82:46
[INFO] [stdout]    |
[INFO] [stdout] 82 |                         notional, ack_ts_ms, signal, ..
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `signal: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reason`
[INFO] [stdout]    --> src/portfolio/position_manager.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                         opposite_side, filled_price, filled_size, reason, ..
[INFO] [stdout]     |                                                                   ^^^^^^ help: try ignoring the field: `reason: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEPTH_URL` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const DEPTH_URL: &str = "wss://fstream.binance.com/ws/btcusdt@depth10@100ms";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOOKTICKER_URL` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const BOOKTICKER_URL: &str = "wss://fstream.binance.com/ws/btcusdt@bookTicker";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BinanceEvent` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum BinanceEvent {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_obi` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn compute_obi(bids: &[PriceLevel], asks: &[PriceLevel], max_levels: usize) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:55:14
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub async fn run(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_depth` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:63:10
[INFO] [stdout]    |
[INFO] [stdout] 63 | async fn run_depth(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_depth` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | async fn connect_depth(
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:136:10
[INFO] [stdout]     |
[INFO] [stdout] 136 | async fn run_bookticker(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:147:10
[INFO] [stdout]     |
[INFO] [stdout] 147 | async fn connect_bookticker(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_depth` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:195:4
[INFO] [stdout]     |
[INFO] [stdout] 195 | fn parse_depth(text: &str, local_recv_us: i64) -> Result<BinanceDepthUpdate, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:223:4
[INFO] [stdout]     |
[INFO] [stdout] 223 | fn parse_bookticker(text: &str, local_recv_us: i64) -> Result<BinanceBookTicker, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AuthedClient` is never used
[INFO] [stdout]   --> src/execution/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 28 | type AuthedClient = Client<Authenticated<Normal>>;
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `U256` is never used
[INFO] [stdout]   --> src/execution/mod.rs:29:6
[INFO] [stdout]    |
[INFO] [stdout] 29 | type U256 = polymarket_client_sdk::types::U256;
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Decimal` is never used
[INFO] [stdout]   --> src/execution/mod.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | type Decimal = polymarket_client_sdk::types::Decimal;
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/execution/mod.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLYGON_RPC` is never used
[INFO] [stdout]   --> src/execution/mod.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const POLYGON_RPC: &str = "https://polygon-bor-rpc.publicnode.com";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CTF_CONTRACT` is never used
[INFO] [stdout]   --> src/execution/mod.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const CTF_CONTRACT: &str = "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickSizeRegistry` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct TickSizeRegistry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `quantize` are never used
[INFO] [stdout]   --> src/execution/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl TickSizeRegistry {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 45 |     pub fn new() -> Self { Self { tick_sizes: HashMap::new() } }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 46 |
[INFO] [stdout] 47 |     pub fn update(&mut self, ts: &TickSize) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn quantize(&self, token_id: &str, price: f64) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderResult` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct OrderResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderTracking` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct OrderTracking {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenCache` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct TokenCache {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_or_parse` are never used
[INFO] [stdout]   --> src/execution/mod.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | impl TokenCache {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 90 |     fn new() -> Self { Self { cache: HashMap::with_capacity(8) } }
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 91 |
[INFO] [stdout] 92 |     fn get_or_parse(&mut self, token_id: &str) -> Result<U256, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutionEngine` is never constructed
[INFO] [stdout]    --> src/execution/mod.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct ExecutionEngine {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/execution/mod.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 127 |     pub fn new(telemetry: Arc<LatencyTracker>, paper_mode: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn set_credentials(&mut self, private_key: String, api_key: String, api_secret: String, api_passphrase: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn ensure_auth(&self) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn warm_token(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub async fn update_tick_size(&self, ts: &TickSize) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn set_neg_risk(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub async fn check_token_balance(&self, wallet_address: &str, token_id: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn wallet_address(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub async fn check_usdc_balance(&self, wallet_address: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub async fn check_clob_balance(&self, token_id: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn taker_fok_buy(&self, token_id: &str, spend_usdc: f64) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub async fn maker_gtc_buy(&self, token_id: &str, shares: f64, price: f64, post_only: bool) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub async fn taker_fok_sell(&self, token_id: &str, shares: f64, min_price: f64) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub async fn maker_gtc_sell(&self, token_id: &str, shares: f64, price: f64, post_only: bool) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     pub async fn cancel_order(&self, order_id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn cancel_all(&self) -> Result<usize, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub async fn open_order_count(&self) -> usize { self.open_orders.read().await.len() }
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 432 |     pub async fn get_open_orders(&self) -> Vec<(String, OrderTracking)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn is_paper(&self) -> bool { self.paper_mode }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 436 |     pub fn is_ready(&self) -> bool { self.private_key.is_some() && self.api_key.is_some() }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `do_fok_buy`, `do_gtc_buy`, `do_fok_sell`, `do_fok_sell_at_price`, and `do_gtc_sell` are never used
[INFO] [stdout]    --> src/execution/mod.rs:444:14
[INFO] [stdout]     |
[INFO] [stdout] 441 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 444 |     async fn do_fok_buy(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, spend_usdc: f64) -> Result<OrderResult,...
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     async fn do_gtc_buy(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, price: f64, post_only: boo...
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     async fn do_fok_sell(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64) -> Result<OrderResult, St...
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub async fn do_fok_sell_at_price(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, min_price: f...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     async fn do_gtc_sell(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, price: f64, post_only: bo...
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventRecorder` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct EventRecorder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record`, `count`, and `path` are never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl EventRecorder {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 28 |     /// Create a new recorder. Creates output directory if needed.
[INFO] [stdout] 29 |     pub fn new(output_dir: &Path) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn record(&self, event: &RecordedEvent) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn count(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn path(&self) -> &Path {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PricePoint` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct PricePoint {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LagResult` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct LagResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross_correlate` is never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub fn cross_correlate(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_returns` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn to_returns(points: &[PricePoint]) -> Vec<(i64, f64)> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `correlation_at_lag` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn correlation_at_lag(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_analysis` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn print_analysis(results: &[LagResult], label_a: &str, label_b: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MARKET_WS_URL` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const MARKET_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/market";
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAMMA_API` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const GAMMA_API: &str = "https://gamma-api.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_API` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const CLOB_API: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poll_book_rest` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn poll_book_rest(token_id: &str) -> Option<(f64, f64)> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenInfo` is never constructed
[INFO] [stdout]   --> src/market_ws/mod.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct TokenInfo {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_btc_tokens` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub async fn fetch_btc_tokens() -> Result<(Vec<String>, Vec<TokenInfo>), Box<dyn std::error::Error + Send + Sync>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MarketEvent` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:131:10
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum MarketEvent {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SubscribeMsg` is never constructed
[INFO] [stdout]    --> src/market_ws/mod.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | struct SubscribeMsg {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:151:14
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub async fn run(
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:187:10
[INFO] [stdout]     |
[INFO] [stdout] 187 | async fn connect_and_stream(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_and_dispatch` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn parse_and_dispatch(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_book` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:358:4
[INFO] [stdout]     |
[INFO] [stdout] 358 | fn parse_book(v: &serde_json::Value, local_recv_us: i64) -> Result<OrderBook, String> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bbo` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn parse_bbo(v: &serde_json::Value, local_recv_us: i64) -> Result<BBO, String> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_trade` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:399:4
[INFO] [stdout]     |
[INFO] [stdout] 399 | fn parse_trade(v: &serde_json::Value, local_recv_us: i64) -> Result<Trade, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_tick_size` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:409:4
[INFO] [stdout]     |
[INFO] [stdout] 409 | fn parse_tick_size(v: &serde_json::Value) -> Result<TickSize, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RTDS_WS_URL` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const RTDS_WS_URL: &str = "wss://ws-live-data.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PING_INTERVAL_S` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const PING_INTERVAL_S: u64 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RtdsEvent` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum RtdsEvent {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RtdsSubscription` is never constructed
[INFO] [stdout]   --> src/rtds/mod.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | struct RtdsSubscription {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RtdsSubTopic` is never constructed
[INFO] [stdout]   --> src/rtds/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct RtdsSubTopic {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:42:14
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rtds_price` is never used
[INFO] [stdout]    --> src/rtds/mod.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn parse_rtds_price(text: &str, local_recv_us: i64) -> Result<RefPrice, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_events` is never used
[INFO] [stdout]   --> src/sim/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn load_events(path: &Path) -> Result<Vec<RecordedEvent>, Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay` is never used
[INFO] [stdout]   --> src/sim/mod.rs:42:14
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub async fn replay<F>(
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PositionState` is never used
[INFO] [stdout]   --> src/strategy/mod.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum PositionState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/strategy/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Position {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_flat` and `hold_time_ms` are never used
[INFO] [stdout]   --> src/strategy/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl Position {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 43 |     pub fn new_flat() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn hold_time_ms(&self) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StrategyAction` is never used
[INFO] [stdout]   --> src/strategy/mod.rs:66:10
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum StrategyAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarketState` is never constructed
[INFO] [stdout]   --> src/strategy/mod.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct MarketState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskLimits` is never constructed
[INFO] [stdout]    --> src/strategy/mod.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct RiskLimits {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceReturnSignal` is never constructed
[INFO] [stdout]    --> src/strategy/mod.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct BinanceReturnSignal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalSnapshot` is never constructed
[INFO] [stdout]    --> src/strategy/mod.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct SignalSnapshot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SignalMode` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:165:10
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub enum SignalMode {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ExecutionMode` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:171:10
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub type ExecutionMode = SignalMode;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W_OBI` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:175:7
[INFO] [stdout]     |
[INFO] [stdout] 175 | const W_OBI: f64 = 0.25;
[INFO] [stdout]     |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W_ORACLE_LAG` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:176:7
[INFO] [stdout]     |
[INFO] [stdout] 176 | const W_ORACLE_LAG: f64 = 0.40;
[INFO] [stdout]     |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W_BINANCE_RETURN` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:177:7
[INFO] [stdout]     |
[INFO] [stdout] 177 | const W_BINANCE_RETURN: f64 = 0.35;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENTRY_THRESHOLD` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:181:7
[INFO] [stdout]     |
[INFO] [stdout] 181 | const ENTRY_THRESHOLD: f64 = 0.40;       // score > this → enter
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_ORACLE_LAG_BPS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:182:7
[INFO] [stdout]     |
[INFO] [stdout] 182 | const MIN_ORACLE_LAG_BPS: f64 = 1.5;     // oracle must be lagging
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENTRY_SPEND_USDC` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:183:7
[INFO] [stdout]     |
[INFO] [stdout] 183 | const ENTRY_SPEND_USDC: f64 = 20.0;      // dollars per entry
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_TARGET_PCT` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:184:7
[INFO] [stdout]     |
[INFO] [stdout] 184 | const EXIT_TARGET_PCT: f64 = 0.10;       // 10% profit target
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_TIME_STOP_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:185:7
[INFO] [stdout]     |
[INFO] [stdout] 185 | const EXIT_TIME_STOP_MS: i64 = 8_000;    // 8s max hold
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_SIGNAL_REVERSAL` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:186:7
[INFO] [stdout]     |
[INFO] [stdout] 186 | const EXIT_SIGNAL_REVERSAL: f64 = -0.20; // exit if signal flips against us
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COOLDOWN_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:187:7
[INFO] [stdout]     |
[INFO] [stdout] 187 | const COOLDOWN_MS: i64 = 3_000;          // 3s between scalps
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAKER_EXIT_TIMEOUT_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:188:7
[INFO] [stdout]     |
[INFO] [stdout] 188 | const MAKER_EXIT_TIMEOUT_MS: i64 = 4_000; // 4s GTD timeout, then taker exit
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quantize_buy` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:191:4
[INFO] [stdout]     |
[INFO] [stdout] 191 | fn quantize_buy(price: f64, tick_size: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quantize_sell` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:200:4
[INFO] [stdout]     |
[INFO] [stdout] 200 | fn quantize_sell(price: f64, tick_size: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_signal` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn compute_signal(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_scalp` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn evaluate_scalp(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:427:8
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub fn evaluate(
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LatencyTracker` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LatencyTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record`, `percentiles`, `log_summary`, and `reset` are never used
[INFO] [stdout]   --> src/telemetry/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl LatencyTracker {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn record(&self, stage: &str, latency_us: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn percentiles(&self, stage: &str) -> Option<Percentiles> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn log_summary(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn reset(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Percentiles` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct Percentiles {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheck` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct HealthCheck {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PriceLevel` is never constructed
[INFO] [stdout]   --> src/types.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct PriceLevel {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `BookSide` is never used
[INFO] [stdout]   --> src/types.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type BookSide = BTreeMap<u64, f64>; // price_cents -> size
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderBook` is never constructed
[INFO] [stdout]   --> src/types.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OrderBook {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BBO` is never constructed
[INFO] [stdout]   --> src/types.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct BBO {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickSize` is never constructed
[INFO] [stdout]   --> src/types.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct TickSize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trade` is never constructed
[INFO] [stdout]   --> src/types.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct Trade {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RefPrice` is never constructed
[INFO] [stdout]   --> src/types.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct RefPrice {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RefSource` is never used
[INFO] [stdout]   --> src/types.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub enum RefSource {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceDepthUpdate` is never constructed
[INFO] [stdout]   --> src/types.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct BinanceDepthUpdate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceBookTicker` is never constructed
[INFO] [stdout]   --> src/types.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct BinanceBookTicker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderSide` is never used
[INFO] [stdout]    --> src/types.rs:111:10
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub enum OrderSide {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderType` is never used
[INFO] [stdout]    --> src/types.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum OrderType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderRequest` is never constructed
[INFO] [stdout]    --> src/types.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct OrderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderStatus` is never used
[INFO] [stdout]    --> src/types.rs:134:10
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum OrderStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderState` is never constructed
[INFO] [stdout]    --> src/types.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct OrderState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ObiSignal` is never constructed
[INFO] [stdout]    --> src/types.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub struct ObiSignal {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OracleLagSignal` is never constructed
[INFO] [stdout]    --> src/types.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct OracleLagSignal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OracleLagDirection` is never used
[INFO] [stdout]    --> src/types.rs:178:10
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub enum OracleLagDirection {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecordedEvent` is never constructed
[INFO] [stdout]    --> src/types.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct RecordedEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BotConfig` is never constructed
[INFO] [stdout]    --> src/types.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct BotConfig {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_WS_URL` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const USER_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/user";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserEvent` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum UserEvent {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:57:10
[INFO] [stdout]    |
[INFO] [stdout] 57 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_and_dispatch` is never used
[INFO] [stdout]    --> src/user_ws/mod.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn parse_and_dispatch(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub lookback_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub opposite_signal_exit_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub max_one_position: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub wallet_check_interval_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub window_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     pub start_delay_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 46 |     pub cancel_at_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub tune: TuneConfig,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TuneConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 64 |     // Pair-cost gates
[INFO] [stdout] 65 |     pub pair_cost_full_size_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub pair_cost_reduce_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pair_cost_strong_only_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     // Residual controls
[INFO] [stdout] 69 |     pub weak_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub med_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub strong_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     pub extreme_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     pub soft_cap_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     pub soft_freeze_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     // Exp-heavy override
[INFO] [stdout] 76 |     pub exp_heavy_override_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub exp_heavy_strong_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub exp_heavy_pair_cost_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub base_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub neutral_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub exp_heavy_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 82 |     // Extreme-price filter
[INFO] [stdout] 83 |     pub extreme_reduce_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub extreme_reduce_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub extreme_hard_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     pub extreme_hard_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub extreme_size_multiplier: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 88 |     pub extreme_edge_add_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     // Rolling regime filter
[INFO] [stdout] 90 |     pub rolling_short_windows: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pub rolling_pause_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub rolling_pause_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 93 |     pub rolling_resume_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub rolling_resume_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     // Min pairs before pair-cost gating activates
[INFO] [stdout] 96 |     pub min_pairs_for_cost_gate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TuneConfig` 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: enum `SignalBand` is never used
[INFO] [stdout]    --> src/config_v2.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum SignalBand {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PairCostMode` is never used
[INFO] [stdout]    --> src/config_v2.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum PairCostMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `signal_band`, `max_ratio_for_band`, `pair_cost_mode`, and `cheap_target` are never used
[INFO] [stdout]    --> src/config_v2.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl TuneConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn signal_band(&self, score: f64) -> SignalBand {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn max_ratio_for_band(&self, band: SignalBand) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn pair_cost_mode(&self, pair_cost: f64, matched_pairs: f64) -> PairCostMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cheap_target(&self, score: f64, pred_winner_is_exp: bool, pair_cost: Option<f64>) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `session_start_balance` is never read
[INFO] [stdout]   --> src/state.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SharedState {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub session_start_balance: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SharedState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_position`, `get_position`, `is_cooling_down`, and `add_pnl` are never used
[INFO] [stdout]   --> src/state.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SharedState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_position(&self, pos: Position) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_position(&self) -> Option<Position> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_cooling_down(&self, now_ms: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn add_pnl(&self, pnl: f64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureSnapshot` is never constructed
[INFO] [stdout]   --> src/types_v2.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_binance_feed_task` is never used
[INFO] [stdout]   --> src/feeds/binance.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub async fn run_binance_feed_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_rtds_task` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub async fn run_rtds_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_WS_URL` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const USER_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/user";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEARTBEAT_SECS` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const HEARTBEAT_SECS: u64 = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RECONNECT_DELAY_MS` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const RECONNECT_DELAY_MS: u64 = 2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserFillEvent` is never constructed
[INFO] [stdout]   --> src/feeds/user_ws.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct UserFillEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_user_ws_task` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub async fn run_user_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_move_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_move_bps(mid_now: f64, mid_then: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_basis_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn compute_basis_bps(binance_mid: f64, chainlink_price: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_ms` is never read
[INFO] [stdout]    --> src/execution_v2/executor.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct FillResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub latency_ms: i64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutorHandle` is never constructed
[INFO] [stdout]    --> src/execution_v2/executor.rs:466:12
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub struct ExecutorHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sell_fok`, and `buy_fok` are never used
[INFO] [stdout]    --> src/execution_v2/executor.rs:472:18
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl ExecutorHandle {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 472 |     pub async fn new(config: &Config) -> Option<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub async fn sell_fok(&self, token_id: &str, shares: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     pub async fn buy_fok(&self, token_id: &str, share_base: f64, ask_price: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `leg1_token_id` is never read
[INFO] [stdout]   --> src/portfolio/position_manager.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct PairTrade {
[INFO] [stdout]    |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     leg1_token_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PairTrade` 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 variable: `log_tx`
[INFO] [stdout]   --> src/feeds/market_ws.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     log_tx: mpsc::Sender<LogEvent>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_fast`
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_fast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx_hb`
[INFO] [stdout]    --> src/signals/signal_engine.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let log_tx_hb = log_tx.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx_hb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latency_ms`
[INFO] [stdout]    --> src/execution_v2/executor.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let latency_ms = start.elapsed().as_millis() as i64;
[INFO] [stdout]     |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latency_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signal`
[INFO] [stdout]   --> src/portfolio/position_manager.rs:82:46
[INFO] [stdout]    |
[INFO] [stdout] 82 |                         notional, ack_ts_ms, signal, ..
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `signal: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reason`
[INFO] [stdout]    --> src/portfolio/position_manager.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                         opposite_side, filled_price, filled_size, reason, ..
[INFO] [stdout]     |                                                                   ^^^^^^ help: try ignoring the field: `reason: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEPTH_URL` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const DEPTH_URL: &str = "wss://fstream.binance.com/ws/btcusdt@depth10@100ms";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOOKTICKER_URL` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const BOOKTICKER_URL: &str = "wss://fstream.binance.com/ws/btcusdt@bookTicker";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BinanceEvent` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum BinanceEvent {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_obi` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn compute_obi(bids: &[PriceLevel], asks: &[PriceLevel], max_levels: usize) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:55:14
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub async fn run(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_depth` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:63:10
[INFO] [stdout]    |
[INFO] [stdout] 63 | async fn run_depth(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_depth` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | async fn connect_depth(
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:136:10
[INFO] [stdout]     |
[INFO] [stdout] 136 | async fn run_bookticker(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:147:10
[INFO] [stdout]     |
[INFO] [stdout] 147 | async fn connect_bookticker(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_depth` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:195:4
[INFO] [stdout]     |
[INFO] [stdout] 195 | fn parse_depth(text: &str, local_recv_us: i64) -> Result<BinanceDepthUpdate, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:223:4
[INFO] [stdout]     |
[INFO] [stdout] 223 | fn parse_bookticker(text: &str, local_recv_us: i64) -> Result<BinanceBookTicker, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AuthedClient` is never used
[INFO] [stdout]   --> src/execution/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 28 | type AuthedClient = Client<Authenticated<Normal>>;
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `U256` is never used
[INFO] [stdout]   --> src/execution/mod.rs:29:6
[INFO] [stdout]    |
[INFO] [stdout] 29 | type U256 = polymarket_client_sdk::types::U256;
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Decimal` is never used
[INFO] [stdout]   --> src/execution/mod.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | type Decimal = polymarket_client_sdk::types::Decimal;
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/execution/mod.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLYGON_RPC` is never used
[INFO] [stdout]   --> src/execution/mod.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const POLYGON_RPC: &str = "https://polygon-bor-rpc.publicnode.com";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CTF_CONTRACT` is never used
[INFO] [stdout]   --> src/execution/mod.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const CTF_CONTRACT: &str = "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickSizeRegistry` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct TickSizeRegistry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `quantize` are never used
[INFO] [stdout]   --> src/execution/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl TickSizeRegistry {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 45 |     pub fn new() -> Self { Self { tick_sizes: HashMap::new() } }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 46 |
[INFO] [stdout] 47 |     pub fn update(&mut self, ts: &TickSize) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn quantize(&self, token_id: &str, price: f64) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderResult` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct OrderResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderTracking` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct OrderTracking {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenCache` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct TokenCache {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_or_parse` are never used
[INFO] [stdout]   --> src/execution/mod.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | impl TokenCache {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 90 |     fn new() -> Self { Self { cache: HashMap::with_capacity(8) } }
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 91 |
[INFO] [stdout] 92 |     fn get_or_parse(&mut self, token_id: &str) -> Result<U256, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutionEngine` is never constructed
[INFO] [stdout]    --> src/execution/mod.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct ExecutionEngine {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/execution/mod.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 127 |     pub fn new(telemetry: Arc<LatencyTracker>, paper_mode: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn set_credentials(&mut self, private_key: String, api_key: String, api_secret: String, api_passphrase: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn ensure_auth(&self) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn warm_token(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub async fn update_tick_size(&self, ts: &TickSize) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn set_neg_risk(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub async fn check_token_balance(&self, wallet_address: &str, token_id: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn wallet_address(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub async fn check_usdc_balance(&self, wallet_address: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub async fn check_clob_balance(&self, token_id: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn taker_fok_buy(&self, token_id: &str, spend_usdc: f64) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub async fn maker_gtc_buy(&self, token_id: &str, shares: f64, price: f64, post_only: bool) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub async fn taker_fok_sell(&self, token_id: &str, shares: f64, min_price: f64) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub async fn maker_gtc_sell(&self, token_id: &str, shares: f64, price: f64, post_only: bool) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     pub async fn cancel_order(&self, order_id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn cancel_all(&self) -> Result<usize, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub async fn open_order_count(&self) -> usize { self.open_orders.read().await.len() }
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 432 |     pub async fn get_open_orders(&self) -> Vec<(String, OrderTracking)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn is_paper(&self) -> bool { self.paper_mode }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 436 |     pub fn is_ready(&self) -> bool { self.private_key.is_some() && self.api_key.is_some() }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `do_fok_buy`, `do_gtc_buy`, `do_fok_sell`, `do_fok_sell_at_price`, and `do_gtc_sell` are never used
[INFO] [stdout]    --> src/execution/mod.rs:444:14
[INFO] [stdout]     |
[INFO] [stdout] 441 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 444 |     async fn do_fok_buy(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, spend_usdc: f64) -> Result<OrderResult,...
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     async fn do_gtc_buy(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, price: f64, post_only: boo...
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     async fn do_fok_sell(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64) -> Result<OrderResult, St...
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub async fn do_fok_sell_at_price(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, min_price: f...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     async fn do_gtc_sell(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, price: f64, post_only: bo...
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventRecorder` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct EventRecorder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record`, `count`, and `path` are never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl EventRecorder {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 28 |     /// Create a new recorder. Creates output directory if needed.
[INFO] [stdout] 29 |     pub fn new(output_dir: &Path) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn record(&self, event: &RecordedEvent) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn count(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn path(&self) -> &Path {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PricePoint` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct PricePoint {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LagResult` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct LagResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross_correlate` is never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub fn cross_correlate(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_returns` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn to_returns(points: &[PricePoint]) -> Vec<(i64, f64)> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `correlation_at_lag` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn correlation_at_lag(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_analysis` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn print_analysis(results: &[LagResult], label_a: &str, label_b: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MARKET_WS_URL` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const MARKET_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/market";
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAMMA_API` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const GAMMA_API: &str = "https://gamma-api.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_API` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const CLOB_API: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poll_book_rest` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn poll_book_rest(token_id: &str) -> Option<(f64, f64)> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenInfo` is never constructed
[INFO] [stdout]   --> src/market_ws/mod.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct TokenInfo {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_btc_tokens` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub async fn fetch_btc_tokens() -> Result<(Vec<String>, Vec<TokenInfo>), Box<dyn std::error::Error + Send + Sync>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MarketEvent` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:131:10
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum MarketEvent {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SubscribeMsg` is never constructed
[INFO] [stdout]    --> src/market_ws/mod.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | struct SubscribeMsg {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:151:14
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub async fn run(
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:187:10
[INFO] [stdout]     |
[INFO] [stdout] 187 | async fn connect_and_stream(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_and_dispatch` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn parse_and_dispatch(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_book` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:358:4
[INFO] [stdout]     |
[INFO] [stdout] 358 | fn parse_book(v: &serde_json::Value, local_recv_us: i64) -> Result<OrderBook, String> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bbo` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn parse_bbo(v: &serde_json::Value, local_recv_us: i64) -> Result<BBO, String> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_trade` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:399:4
[INFO] [stdout]     |
[INFO] [stdout] 399 | fn parse_trade(v: &serde_json::Value, local_recv_us: i64) -> Result<Trade, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_tick_size` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:409:4
[INFO] [stdout]     |
[INFO] [stdout] 409 | fn parse_tick_size(v: &serde_json::Value) -> Result<TickSize, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RTDS_WS_URL` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const RTDS_WS_URL: &str = "wss://ws-live-data.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PING_INTERVAL_S` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const PING_INTERVAL_S: u64 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RtdsEvent` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum RtdsEvent {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RtdsSubscription` is never constructed
[INFO] [stdout]   --> src/rtds/mod.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | struct RtdsSubscription {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RtdsSubTopic` is never constructed
[INFO] [stdout]   --> src/rtds/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct RtdsSubTopic {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:42:14
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rtds_price` is never used
[INFO] [stdout]    --> src/rtds/mod.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn parse_rtds_price(text: &str, local_recv_us: i64) -> Result<RefPrice, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_events` is never used
[INFO] [stdout]   --> src/sim/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn load_events(path: &Path) -> Result<Vec<RecordedEvent>, Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay` is never used
[INFO] [stdout]   --> src/sim/mod.rs:42:14
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub async fn replay<F>(
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PositionState` is never used
[INFO] [stdout]   --> src/strategy/mod.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum PositionState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/strategy/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Position {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_flat` and `hold_time_ms` are never used
[INFO] [stdout]   --> src/strategy/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl Position {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 43 |     pub fn new_flat() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn hold_time_ms(&self) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StrategyAction` is never used
[INFO] [stdout]   --> src/strategy/mod.rs:66:10
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum StrategyAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarketState` is never constructed
[INFO] [stdout]   --> src/strategy/mod.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct MarketState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskLimits` is never constructed
[INFO] [stdout]    --> src/strategy/mod.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct RiskLimits {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceReturnSignal` is never constructed
[INFO] [stdout]    --> src/strategy/mod.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct BinanceReturnSignal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalSnapshot` is never constructed
[INFO] [stdout]    --> src/strategy/mod.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct SignalSnapshot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SignalMode` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:165:10
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub enum SignalMode {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ExecutionMode` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:171:10
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub type ExecutionMode = SignalMode;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W_OBI` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:175:7
[INFO] [stdout]     |
[INFO] [stdout] 175 | const W_OBI: f64 = 0.25;
[INFO] [stdout]     |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W_ORACLE_LAG` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:176:7
[INFO] [stdout]     |
[INFO] [stdout] 176 | const W_ORACLE_LAG: f64 = 0.40;
[INFO] [stdout]     |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W_BINANCE_RETURN` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:177:7
[INFO] [stdout]     |
[INFO] [stdout] 177 | const W_BINANCE_RETURN: f64 = 0.35;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENTRY_THRESHOLD` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:181:7
[INFO] [stdout]     |
[INFO] [stdout] 181 | const ENTRY_THRESHOLD: f64 = 0.40;       // score > this → enter
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_ORACLE_LAG_BPS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:182:7
[INFO] [stdout]     |
[INFO] [stdout] 182 | const MIN_ORACLE_LAG_BPS: f64 = 1.5;     // oracle must be lagging
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENTRY_SPEND_USDC` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:183:7
[INFO] [stdout]     |
[INFO] [stdout] 183 | const ENTRY_SPEND_USDC: f64 = 20.0;      // dollars per entry
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_TARGET_PCT` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:184:7
[INFO] [stdout]     |
[INFO] [stdout] 184 | const EXIT_TARGET_PCT: f64 = 0.10;       // 10% profit target
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_TIME_STOP_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:185:7
[INFO] [stdout]     |
[INFO] [stdout] 185 | const EXIT_TIME_STOP_MS: i64 = 8_000;    // 8s max hold
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_SIGNAL_REVERSAL` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:186:7
[INFO] [stdout]     |
[INFO] [stdout] 186 | const EXIT_SIGNAL_REVERSAL: f64 = -0.20; // exit if signal flips against us
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COOLDOWN_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:187:7
[INFO] [stdout]     |
[INFO] [stdout] 187 | const COOLDOWN_MS: i64 = 3_000;          // 3s between scalps
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAKER_EXIT_TIMEOUT_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:188:7
[INFO] [stdout]     |
[INFO] [stdout] 188 | const MAKER_EXIT_TIMEOUT_MS: i64 = 4_000; // 4s GTD timeout, then taker exit
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quantize_buy` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:191:4
[INFO] [stdout]     |
[INFO] [stdout] 191 | fn quantize_buy(price: f64, tick_size: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quantize_sell` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:200:4
[INFO] [stdout]     |
[INFO] [stdout] 200 | fn quantize_sell(price: f64, tick_size: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_signal` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn compute_signal(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_scalp` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn evaluate_scalp(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:427:8
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub fn evaluate(
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LatencyTracker` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LatencyTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record`, `percentiles`, `log_summary`, and `reset` are never used
[INFO] [stdout]   --> src/telemetry/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl LatencyTracker {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn record(&self, stage: &str, latency_us: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn percentiles(&self, stage: &str) -> Option<Percentiles> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn log_summary(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn reset(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Percentiles` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct Percentiles {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheck` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct HealthCheck {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PriceLevel` is never constructed
[INFO] [stdout]   --> src/types.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct PriceLevel {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `BookSide` is never used
[INFO] [stdout]   --> src/types.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type BookSide = BTreeMap<u64, f64>; // price_cents -> size
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderBook` is never constructed
[INFO] [stdout]   --> src/types.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OrderBook {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BBO` is never constructed
[INFO] [stdout]   --> src/types.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct BBO {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickSize` is never constructed
[INFO] [stdout]   --> src/types.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct TickSize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trade` is never constructed
[INFO] [stdout]   --> src/types.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct Trade {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RefPrice` is never constructed
[INFO] [stdout]   --> src/types.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct RefPrice {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RefSource` is never used
[INFO] [stdout]   --> src/types.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub enum RefSource {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceDepthUpdate` is never constructed
[INFO] [stdout]   --> src/types.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct BinanceDepthUpdate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceBookTicker` is never constructed
[INFO] [stdout]   --> src/types.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct BinanceBookTicker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderSide` is never used
[INFO] [stdout]    --> src/types.rs:111:10
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub enum OrderSide {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderType` is never used
[INFO] [stdout]    --> src/types.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum OrderType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderRequest` is never constructed
[INFO] [stdout]    --> src/types.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct OrderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderStatus` is never used
[INFO] [stdout]    --> src/types.rs:134:10
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum OrderStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderState` is never constructed
[INFO] [stdout]    --> src/types.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct OrderState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ObiSignal` is never constructed
[INFO] [stdout]    --> src/types.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub struct ObiSignal {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OracleLagSignal` is never constructed
[INFO] [stdout]    --> src/types.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct OracleLagSignal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OracleLagDirection` is never used
[INFO] [stdout]    --> src/types.rs:178:10
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub enum OracleLagDirection {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecordedEvent` is never constructed
[INFO] [stdout]    --> src/types.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct RecordedEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BotConfig` is never constructed
[INFO] [stdout]    --> src/types.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct BotConfig {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_WS_URL` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const USER_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/user";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserEvent` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum UserEvent {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:57:10
[INFO] [stdout]    |
[INFO] [stdout] 57 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx`
[INFO] [stdout]   --> src/feeds/market_ws.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     log_tx: mpsc::Sender<LogEvent>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_and_dispatch` is never used
[INFO] [stdout]    --> src/user_ws/mod.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn parse_and_dispatch(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub lookback_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub opposite_signal_exit_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub max_one_position: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub wallet_check_interval_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub window_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     pub start_delay_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 46 |     pub cancel_at_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub tune: TuneConfig,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TuneConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 64 |     // Pair-cost gates
[INFO] [stdout] 65 |     pub pair_cost_full_size_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub pair_cost_reduce_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pair_cost_strong_only_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     // Residual controls
[INFO] [stdout] 69 |     pub weak_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub med_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub strong_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     pub extreme_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     pub soft_cap_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     pub soft_freeze_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     // Exp-heavy override
[INFO] [stdout] 76 |     pub exp_heavy_override_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub exp_heavy_strong_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub exp_heavy_pair_cost_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub base_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub neutral_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub exp_heavy_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 82 |     // Extreme-price filter
[INFO] [stdout] 83 |     pub extreme_reduce_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub extreme_reduce_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub extreme_hard_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     pub extreme_hard_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub extreme_size_multiplier: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 88 |     pub extreme_edge_add_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     // Rolling regime filter
[INFO] [stdout] 90 |     pub rolling_short_windows: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pub rolling_pause_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub rolling_pause_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 93 |     pub rolling_resume_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub rolling_resume_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     // Min pairs before pair-cost gating activates
[INFO] [stdout] 96 |     pub min_pairs_for_cost_gate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TuneConfig` 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: enum `SignalBand` is never used
[INFO] [stdout]    --> src/config_v2.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum SignalBand {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PairCostMode` is never used
[INFO] [stdout]    --> src/config_v2.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum PairCostMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `signal_band`, `max_ratio_for_band`, `pair_cost_mode`, and `cheap_target` are never used
[INFO] [stdout]    --> src/config_v2.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl TuneConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn signal_band(&self, score: f64) -> SignalBand {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn max_ratio_for_band(&self, band: SignalBand) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn pair_cost_mode(&self, pair_cost: f64, matched_pairs: f64) -> PairCostMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cheap_target(&self, score: f64, pred_winner_is_exp: bool, pair_cost: Option<f64>) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `session_start_balance` is never read
[INFO] [stdout]   --> src/state.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SharedState {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub session_start_balance: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SharedState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_position`, `get_position`, `is_cooling_down`, and `add_pnl` are never used
[INFO] [stdout]   --> src/state.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SharedState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_position(&self, pos: Position) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_position(&self) -> Option<Position> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_cooling_down(&self, now_ms: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn add_pnl(&self, pnl: f64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureSnapshot` is never constructed
[INFO] [stdout]   --> src/types_v2.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLL_INTERVAL_MS` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const POLL_INTERVAL_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polymarket_ws_task` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub async fn run_polymarket_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_price` is never used
[INFO] [stdout]   --> src/feeds/polymarket_ws.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | async fn fetch_price(client: &reqwest::Client, token_id: &str, side: &str) -> Option<f64> {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_WS_URL` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const USER_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/user";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEARTBEAT_SECS` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const HEARTBEAT_SECS: u64 = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RECONNECT_DELAY_MS` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const RECONNECT_DELAY_MS: u64 = 2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserFillEvent` is never constructed
[INFO] [stdout]   --> src/feeds/user_ws.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct UserFillEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_user_ws_task` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub async fn run_user_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_move_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_move_bps(mid_now: f64, mid_then: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_basis_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn compute_basis_bps(binance_mid: f64, chainlink_price: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_ms` is never read
[INFO] [stdout]    --> src/execution_v2/executor.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct FillResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub latency_ms: i64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutorHandle` is never constructed
[INFO] [stdout]    --> src/execution_v2/executor.rs:466:12
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub struct ExecutorHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sell_fok`, and `buy_fok` are never used
[INFO] [stdout]    --> src/execution_v2/executor.rs:472:18
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl ExecutorHandle {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 472 |     pub async fn new(config: &Config) -> Option<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub async fn sell_fok(&self, token_id: &str, shares: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     pub async fn buy_fok(&self, token_id: &str, share_base: f64, ask_price: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `leg1_token_id` is never read
[INFO] [stdout]   --> src/portfolio/position_manager.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct PairTrade {
[INFO] [stdout]    |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     leg1_token_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PairTrade` 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 variable: `max_fast`
[INFO] [stdout]    --> src/signals/signal_engine.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut max_fast = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_fast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_tx_hb`
[INFO] [stdout]    --> src/signals/signal_engine.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let log_tx_hb = log_tx.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_tx_hb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latency_ms`
[INFO] [stdout]    --> src/execution_v2/executor.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let latency_ms = start.elapsed().as_millis() as i64;
[INFO] [stdout]     |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latency_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signal`
[INFO] [stdout]   --> src/portfolio/position_manager.rs:82:46
[INFO] [stdout]    |
[INFO] [stdout] 82 |                         notional, ack_ts_ms, signal, ..
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `signal: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reason`
[INFO] [stdout]    --> src/portfolio/position_manager.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                         opposite_side, filled_price, filled_size, reason, ..
[INFO] [stdout]     |                                                                   ^^^^^^ help: try ignoring the field: `reason: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEPTH_URL` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const DEPTH_URL: &str = "wss://fstream.binance.com/ws/btcusdt@depth10@100ms";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOOKTICKER_URL` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const BOOKTICKER_URL: &str = "wss://fstream.binance.com/ws/btcusdt@bookTicker";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BinanceEvent` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum BinanceEvent {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_obi` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn compute_obi(bids: &[PriceLevel], asks: &[PriceLevel], max_levels: usize) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:55:14
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub async fn run(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_depth` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:63:10
[INFO] [stdout]    |
[INFO] [stdout] 63 | async fn run_depth(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_depth` is never used
[INFO] [stdout]   --> src/binance_l2/mod.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | async fn connect_depth(
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:136:10
[INFO] [stdout]     |
[INFO] [stdout] 136 | async fn run_bookticker(tx: mpsc::UnboundedSender<BinanceEvent>) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:147:10
[INFO] [stdout]     |
[INFO] [stdout] 147 | async fn connect_bookticker(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_depth` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:195:4
[INFO] [stdout]     |
[INFO] [stdout] 195 | fn parse_depth(text: &str, local_recv_us: i64) -> Result<BinanceDepthUpdate, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bookticker` is never used
[INFO] [stdout]    --> src/binance_l2/mod.rs:223:4
[INFO] [stdout]     |
[INFO] [stdout] 223 | fn parse_bookticker(text: &str, local_recv_us: i64) -> Result<BinanceBookTicker, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AuthedClient` is never used
[INFO] [stdout]   --> src/execution/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 28 | type AuthedClient = Client<Authenticated<Normal>>;
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `U256` is never used
[INFO] [stdout]   --> src/execution/mod.rs:29:6
[INFO] [stdout]    |
[INFO] [stdout] 29 | type U256 = polymarket_client_sdk::types::U256;
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Decimal` is never used
[INFO] [stdout]   --> src/execution/mod.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | type Decimal = polymarket_client_sdk::types::Decimal;
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_BASE` is never used
[INFO] [stdout]   --> src/execution/mod.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const CLOB_BASE: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POLYGON_RPC` is never used
[INFO] [stdout]   --> src/execution/mod.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const POLYGON_RPC: &str = "https://polygon-bor-rpc.publicnode.com";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CTF_CONTRACT` is never used
[INFO] [stdout]   --> src/execution/mod.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const CTF_CONTRACT: &str = "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickSizeRegistry` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct TickSizeRegistry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `quantize` are never used
[INFO] [stdout]   --> src/execution/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl TickSizeRegistry {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 45 |     pub fn new() -> Self { Self { tick_sizes: HashMap::new() } }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 46 |
[INFO] [stdout] 47 |     pub fn update(&mut self, ts: &TickSize) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn quantize(&self, token_id: &str, price: f64) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderResult` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct OrderResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderTracking` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct OrderTracking {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenCache` is never constructed
[INFO] [stdout]   --> src/execution/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct TokenCache {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_or_parse` are never used
[INFO] [stdout]   --> src/execution/mod.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | impl TokenCache {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 90 |     fn new() -> Self { Self { cache: HashMap::with_capacity(8) } }
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 91 |
[INFO] [stdout] 92 |     fn get_or_parse(&mut self, token_id: &str) -> Result<U256, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutionEngine` is never constructed
[INFO] [stdout]    --> src/execution/mod.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct ExecutionEngine {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/execution/mod.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 127 |     pub fn new(telemetry: Arc<LatencyTracker>, paper_mode: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn set_credentials(&mut self, private_key: String, api_key: String, api_secret: String, api_passphrase: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn ensure_auth(&self) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn warm_token(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub async fn update_tick_size(&self, ts: &TickSize) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn set_neg_risk(&self, token_id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub async fn check_token_balance(&self, wallet_address: &str, token_id: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn wallet_address(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub async fn check_usdc_balance(&self, wallet_address: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub async fn check_clob_balance(&self, token_id: &str) -> Result<f64, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn taker_fok_buy(&self, token_id: &str, spend_usdc: f64) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub async fn maker_gtc_buy(&self, token_id: &str, shares: f64, price: f64, post_only: bool) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub async fn taker_fok_sell(&self, token_id: &str, shares: f64, min_price: f64) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub async fn maker_gtc_sell(&self, token_id: &str, shares: f64, price: f64, post_only: bool) -> Result<OrderResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     pub async fn cancel_order(&self, order_id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn cancel_all(&self) -> Result<usize, String> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub async fn open_order_count(&self) -> usize { self.open_orders.read().await.len() }
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 432 |     pub async fn get_open_orders(&self) -> Vec<(String, OrderTracking)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn is_paper(&self) -> bool { self.paper_mode }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 436 |     pub fn is_ready(&self) -> bool { self.private_key.is_some() && self.api_key.is_some() }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `do_fok_buy`, `do_gtc_buy`, `do_fok_sell`, `do_fok_sell_at_price`, and `do_gtc_sell` are never used
[INFO] [stdout]    --> src/execution/mod.rs:444:14
[INFO] [stdout]     |
[INFO] [stdout] 441 | impl ExecutionEngine {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 444 |     async fn do_fok_buy(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, spend_usdc: f64) -> Result<OrderResult,...
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     async fn do_gtc_buy(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, price: f64, post_only: boo...
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     async fn do_fok_sell(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64) -> Result<OrderResult, St...
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub async fn do_fok_sell_at_price(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, min_price: f...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     async fn do_gtc_sell(client: &AuthedClient, signer: &PrivateKeySigner, token_u256: U256, shares: f64, price: f64, post_only: bo...
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventRecorder` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct EventRecorder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record`, `count`, and `path` are never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl EventRecorder {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 28 |     /// Create a new recorder. Creates output directory if needed.
[INFO] [stdout] 29 |     pub fn new(output_dir: &Path) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn record(&self, event: &RecordedEvent) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn count(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn path(&self) -> &Path {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PricePoint` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct PricePoint {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LagResult` is never constructed
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct LagResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross_correlate` is never used
[INFO] [stdout]   --> src/leadlag_lab/mod.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub fn cross_correlate(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_returns` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn to_returns(points: &[PricePoint]) -> Vec<(i64, f64)> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `correlation_at_lag` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn correlation_at_lag(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_analysis` is never used
[INFO] [stdout]    --> src/leadlag_lab/mod.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn print_analysis(results: &[LagResult], label_a: &str, label_b: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MARKET_WS_URL` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const MARKET_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/market";
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAMMA_API` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const GAMMA_API: &str = "https://gamma-api.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOB_API` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const CLOB_API: &str = "https://clob.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poll_book_rest` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn poll_book_rest(token_id: &str) -> Option<(f64, f64)> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenInfo` is never constructed
[INFO] [stdout]   --> src/market_ws/mod.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct TokenInfo {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_btc_tokens` is never used
[INFO] [stdout]   --> src/market_ws/mod.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub async fn fetch_btc_tokens() -> Result<(Vec<String>, Vec<TokenInfo>), Box<dyn std::error::Error + Send + Sync>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MarketEvent` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:131:10
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum MarketEvent {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SubscribeMsg` is never constructed
[INFO] [stdout]    --> src/market_ws/mod.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | struct SubscribeMsg {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:151:14
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub async fn run(
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:187:10
[INFO] [stdout]     |
[INFO] [stdout] 187 | async fn connect_and_stream(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_and_dispatch` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn parse_and_dispatch(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_book` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:358:4
[INFO] [stdout]     |
[INFO] [stdout] 358 | fn parse_book(v: &serde_json::Value, local_recv_us: i64) -> Result<OrderBook, String> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bbo` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn parse_bbo(v: &serde_json::Value, local_recv_us: i64) -> Result<BBO, String> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_trade` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:399:4
[INFO] [stdout]     |
[INFO] [stdout] 399 | fn parse_trade(v: &serde_json::Value, local_recv_us: i64) -> Result<Trade, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_tick_size` is never used
[INFO] [stdout]    --> src/market_ws/mod.rs:409:4
[INFO] [stdout]     |
[INFO] [stdout] 409 | fn parse_tick_size(v: &serde_json::Value) -> Result<TickSize, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RTDS_WS_URL` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const RTDS_WS_URL: &str = "wss://ws-live-data.polymarket.com";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PING_INTERVAL_S` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const PING_INTERVAL_S: u64 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RtdsEvent` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum RtdsEvent {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RtdsSubscription` is never constructed
[INFO] [stdout]   --> src/rtds/mod.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | struct RtdsSubscription {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RtdsSubTopic` is never constructed
[INFO] [stdout]   --> src/rtds/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct RtdsSubTopic {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:42:14
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/rtds/mod.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rtds_price` is never used
[INFO] [stdout]    --> src/rtds/mod.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn parse_rtds_price(text: &str, local_recv_us: i64) -> Result<RefPrice, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_events` is never used
[INFO] [stdout]   --> src/sim/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn load_events(path: &Path) -> Result<Vec<RecordedEvent>, Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay` is never used
[INFO] [stdout]   --> src/sim/mod.rs:42:14
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub async fn replay<F>(
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Entering` and `Exiting` are never constructed
[INFO] [stdout]   --> src/strategy/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum PositionState {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 23 |     Flat,       // No position
[INFO] [stdout] 24 |     Entering,   // Entry order submitted, waiting for fill
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 25 |     Long,       // Holding shares, waiting for exit signal
[INFO] [stdout] 26 |     Exiting,    // Exit order submitted, waiting for fill
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PositionState` 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 `exit_posted_at_us` is never read
[INFO] [stdout]   --> src/strategy/mod.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Position {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub exit_posted_at_us: i64,   // when exit order was posted
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Position` 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 `token_id`, `spend_usdc`, `side_label`, and `reason` are never read
[INFO] [stdout]   --> src/strategy/mod.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     TakerEntry {
[INFO] [stdout]    |     ---------- fields in this variant
[INFO] [stdout] 69 |         token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 70 |         spend_usdc: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 71 |         side_label: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 72 |         reason: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StrategyAction` 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 `token_id`, `shares`, `price`, and `reason` are never read
[INFO] [stdout]   --> src/strategy/mod.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     MakerExit {
[INFO] [stdout]    |     --------- fields in this variant
[INFO] [stdout] 76 |         token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 77 |         shares: f64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 78 |         price: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 79 |         reason: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StrategyAction` 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 `0` is never read
[INFO] [stdout]   --> src/strategy/mod.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |     CancelOrder(String),
[INFO] [stdout]    |     ----------- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StrategyAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 88 -     CancelOrder(String),
[INFO] [stdout] 88 +     CancelOrder(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TakerExit` is never constructed
[INFO] [stdout]   --> src/strategy/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum StrategyAction {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 82 |     TakerExit {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StrategyAction` 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 `up_filled`, `dn_filled`, and `window_start_ts` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub struct MarketState {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub up_filled: f64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 106 |     pub dn_filled: f64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 107 |     pub window_start_ts: i64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MarketState` 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 `max_position_per_side`, `max_open_orders`, `max_cancel_rate`, `cancel_count_this_window`, and `order_count_this_window` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct RiskLimits {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 117 |     pub max_position_per_side: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 118 |     pub max_open_orders: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 119 |     pub max_cancel_rate: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 120 |     pub cancel_count_this_window: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 121 |     pub order_count_this_window: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RiskLimits` 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 `return_500ms` and `timestamp` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct BinanceReturnSignal {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 146 |     pub return_2s: f64,     // 2-second return (bps)
[INFO] [stdout] 147 |     pub return_500ms: f64,  // 500ms return (bps)
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 148 |     pub timestamp: i64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BinanceReturnSignal` 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 `obi_component`, `oracle_lag_component`, `binance_return_component`, and `basis_bps` are never read
[INFO] [stdout]    --> src/strategy/mod.rs:156:9
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct SignalSnapshot {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 155 |     pub score: f64,
[INFO] [stdout] 156 |     pub obi_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 157 |     pub oracle_lag_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 158 |     pub binance_return_component: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 159 |     pub basis_bps: f64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SignalSnapshot` 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: type alias `ExecutionMode` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:171:10
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub type ExecutionMode = SignalMode;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXIT_SIGNAL_REVERSAL` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:186:7
[INFO] [stdout]     |
[INFO] [stdout] 186 | const EXIT_SIGNAL_REVERSAL: f64 = -0.20; // exit if signal flips against us
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAKER_EXIT_TIMEOUT_MS` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:188:7
[INFO] [stdout]     |
[INFO] [stdout] 188 | const MAKER_EXIT_TIMEOUT_MS: i64 = 4_000; // 4s GTD timeout, then taker exit
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate` is never used
[INFO] [stdout]    --> src/strategy/mod.rs:427:8
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub fn evaluate(
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LatencyTracker` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LatencyTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record`, `percentiles`, `log_summary`, and `reset` are never used
[INFO] [stdout]   --> src/telemetry/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl LatencyTracker {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn record(&self, stage: &str, latency_us: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn percentiles(&self, stage: &str) -> Option<Percentiles> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn log_summary(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn reset(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Percentiles` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct Percentiles {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheck` is never constructed
[INFO] [stdout]   --> src/telemetry/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct HealthCheck {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PriceLevel` is never constructed
[INFO] [stdout]   --> src/types.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct PriceLevel {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `BookSide` is never used
[INFO] [stdout]   --> src/types.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type BookSide = BTreeMap<u64, f64>; // price_cents -> size
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderBook` is never constructed
[INFO] [stdout]   --> src/types.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct OrderBook {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BBO` is never constructed
[INFO] [stdout]   --> src/types.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct BBO {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickSize` is never constructed
[INFO] [stdout]   --> src/types.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct TickSize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trade` is never constructed
[INFO] [stdout]   --> src/types.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct Trade {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RefPrice` is never constructed
[INFO] [stdout]   --> src/types.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct RefPrice {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RefSource` is never used
[INFO] [stdout]   --> src/types.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub enum RefSource {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceDepthUpdate` is never constructed
[INFO] [stdout]   --> src/types.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct BinanceDepthUpdate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BinanceBookTicker` is never constructed
[INFO] [stdout]   --> src/types.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct BinanceBookTicker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderSide` is never used
[INFO] [stdout]    --> src/types.rs:111:10
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub enum OrderSide {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderType` is never used
[INFO] [stdout]    --> src/types.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum OrderType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderRequest` is never constructed
[INFO] [stdout]    --> src/types.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct OrderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderStatus` is never used
[INFO] [stdout]    --> src/types.rs:134:10
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum OrderStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderState` is never constructed
[INFO] [stdout]    --> src/types.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct OrderState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecordedEvent` is never constructed
[INFO] [stdout]    --> src/types.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct RecordedEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/types.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct BotConfig {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 199 |     pub poly_private_key: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 200 |     pub poly_api_key: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 201 |     pub poly_api_secret: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 202 |     pub poly_api_passphrase: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 203 |     pub market_slug: String,          // e.g. "btc-updown-5m"
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 204 |     pub window_seconds: u64,          // 300
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub max_position: f64,            // max shares per side
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 208 |     pub max_open_orders: usize,       // kill switch
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 209 |     pub stop_loss_usd: f64,           // session kill switch
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 210 |     pub obi_threshold: f64,           // signal threshold
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 211 |     pub oracle_lag_threshold_bps: f64,// signal threshold
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BotConfig` 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: constant `USER_WS_URL` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const USER_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/user";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserEvent` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum UserEvent {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/user_ws/mod.rs:57:10
[INFO] [stdout]    |
[INFO] [stdout] 57 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_and_dispatch` is never used
[INFO] [stdout]    --> src/user_ws/mod.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn parse_and_dispatch(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub lookback_ms: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub opposite_signal_exit_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub max_one_position: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub wallet_check_interval_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub window_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     pub start_delay_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 46 |     pub cancel_at_s: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub tune: TuneConfig,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: multiple fields are never read
[INFO] [stdout]   --> src/config_v2.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TuneConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 64 |     // Pair-cost gates
[INFO] [stdout] 65 |     pub pair_cost_full_size_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub pair_cost_reduce_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pair_cost_strong_only_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     // Residual controls
[INFO] [stdout] 69 |     pub weak_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub med_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     pub strong_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     pub extreme_signal_max_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     pub soft_cap_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     pub soft_freeze_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     // Exp-heavy override
[INFO] [stdout] 76 |     pub exp_heavy_override_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub exp_heavy_strong_score: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub exp_heavy_pair_cost_max: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub base_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub neutral_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub exp_heavy_cheap_target: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 82 |     // Extreme-price filter
[INFO] [stdout] 83 |     pub extreme_reduce_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub extreme_reduce_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub extreme_hard_exp_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     pub extreme_hard_cheap_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub extreme_size_multiplier: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 88 |     pub extreme_edge_add_cents: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     // Rolling regime filter
[INFO] [stdout] 90 |     pub rolling_short_windows: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pub rolling_pause_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub rolling_pause_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 93 |     pub rolling_resume_pnl_per_window: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub rolling_resume_pair_cost: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     // Min pairs before pair-cost gating activates
[INFO] [stdout] 96 |     pub min_pairs_for_cost_gate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TuneConfig` 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: enum `SignalBand` is never used
[INFO] [stdout]    --> src/config_v2.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum SignalBand {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PairCostMode` is never used
[INFO] [stdout]    --> src/config_v2.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum PairCostMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `signal_band`, `max_ratio_for_band`, `pair_cost_mode`, and `cheap_target` are never used
[INFO] [stdout]    --> src/config_v2.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl TuneConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn signal_band(&self, score: f64) -> SignalBand {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn max_ratio_for_band(&self, band: SignalBand) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn pair_cost_mode(&self, pair_cost: f64, matched_pairs: f64) -> PairCostMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cheap_target(&self, score: f64, pred_winner_is_exp: bool, pair_cost: Option<f64>) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `session_start_balance` is never read
[INFO] [stdout]   --> src/state.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SharedState {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub session_start_balance: Arc<RwLock<f64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SharedState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_position`, `get_position`, `is_cooling_down`, and `add_pnl` are never used
[INFO] [stdout]   --> src/state.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SharedState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_position(&self, pos: Position) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_position(&self) -> Option<Position> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_cooling_down(&self, now_ms: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn add_pnl(&self, pnl: f64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeatureSnapshot` is never constructed
[INFO] [stdout]   --> src/types_v2.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_binance_feed_task` is never used
[INFO] [stdout]   --> src/feeds/binance.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub async fn run_binance_feed_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_rtds_task` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub async fn run_rtds_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_stream` is never used
[INFO] [stdout]   --> src/feeds/rtds.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn connect_and_stream(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_WS_URL` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const USER_WS_URL: &str = "wss://ws-subscriptions-clob.polymarket.com/ws/user";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEARTBEAT_SECS` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const HEARTBEAT_SECS: u64 = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RECONNECT_DELAY_MS` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const RECONNECT_DELAY_MS: u64 = 2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserFillEvent` is never constructed
[INFO] [stdout]   --> src/feeds/user_ws.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct UserFillEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_user_ws_task` is never used
[INFO] [stdout]   --> src/feeds/user_ws.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub async fn run_user_ws_task(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_move_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn compute_move_bps(mid_now: f64, mid_then: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_basis_bps` is never used
[INFO] [stdout]  --> src/signals/features.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn compute_basis_bps(binance_mid: f64, chainlink_price: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latency_ms` is never read
[INFO] [stdout]    --> src/execution_v2/executor.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct FillResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub latency_ms: i64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutorHandle` is never constructed
[INFO] [stdout]    --> src/execution_v2/executor.rs:466:12
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub struct ExecutorHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sell_fok`, and `buy_fok` are never used
[INFO] [stdout]    --> src/execution_v2/executor.rs:472:18
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl ExecutorHandle {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 472 |     pub async fn new(config: &Config) -> Option<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub async fn sell_fok(&self, token_id: &str, shares: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     pub async fn buy_fok(&self, token_id: &str, share_base: f64, ask_price: f64) -> Result<FillResult, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `leg1_token_id` is never read
[INFO] [stdout]   --> src/portfolio/position_manager.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct PairTrade {
[INFO] [stdout]    |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     leg1_token_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PairTrade` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "b0eda17573799b1d11347972c8a1e63582e702eafc5744c94a3d31c386710c36", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b0eda17573799b1d11347972c8a1e63582e702eafc5744c94a3d31c386710c36", kill_on_drop: false }`
[INFO] [stdout] b0eda17573799b1d11347972c8a1e63582e702eafc5744c94a3d31c386710c36
