[INFO] cloning repository https://github.com/sanniekwan1214/driftbot
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sanniekwan1214/driftbot" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsanniekwan1214%2Fdriftbot", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsanniekwan1214%2Fdriftbot'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2bffc20382f495ef89b83a8210420b6ea990d718
[INFO] checking sanniekwan1214/driftbot against master#2aabf3ce0569dd7c8c2d2a27944850056dcf2566 for pr-156508
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsanniekwan1214%2Fdriftbot" "/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/sanniekwan1214/driftbot
[INFO] finished tweaking git repo https://github.com/sanniekwan1214/driftbot
[INFO] tweaked toml for git repo https://github.com/sanniekwan1214/driftbot written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sanniekwan1214/driftbot on toolchain 2aabf3ce0569dd7c8c2d2a27944850056dcf2566
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sanniekwan1214/driftbot 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" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.28
[INFO] [stderr]   Downloaded cc v1.2.46
[INFO] [stderr]   Downloaded zerocopy v0.8.28
[INFO] [stderr]   Downloaded async-compression v0.4.33
[INFO] [stderr]   Downloaded compression-codecs v0.4.32
[INFO] [stderr]   Downloaded compression-core v0.4.30
[INFO] [stderr]   Downloaded caps v0.5.6
[INFO] [stderr]   Downloaded solana-security-txt v1.1.2
[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" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9b656fe94cf4fcbd197b6be3ee38331f1d9f417e2f1f40bc80eaed4d0f662a15
[INFO] running `Command { std: "docker" "start" "-a" "9b656fe94cf4fcbd197b6be3ee38331f1d9f417e2f1f40bc80eaed4d0f662a15", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9b656fe94cf4fcbd197b6be3ee38331f1d9f417e2f1f40bc80eaed4d0f662a15", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9b656fe94cf4fcbd197b6be3ee38331f1d9f417e2f1f40bc80eaed4d0f662a15", kill_on_drop: false }`
[INFO] [stdout] 9b656fe94cf4fcbd197b6be3ee38331f1d9f417e2f1f40bc80eaed4d0f662a15
[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" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 38a1ad8049cf0beeb58032b02eaf1dd50d1dbd1cc29ecd50e404bd74538cb07b
[INFO] running `Command { std: "docker" "start" "-a" "38a1ad8049cf0beeb58032b02eaf1dd50d1dbd1cc29ecd50e404bd74538cb07b", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling find-msvc-tools v0.1.5
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking subtle v2.4.1
[INFO] [stderr]    Compiling zerocopy v0.8.28
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling syn v2.0.110
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.105
[INFO] [stderr]     Checking block-padding v0.2.1
[INFO] [stderr]    Compiling winnow v0.7.13
[INFO] [stderr]    Compiling toml_datetime v0.7.3
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking tinyvec v1.10.0
[INFO] [stderr]    Compiling ahash v0.7.8
[INFO] [stderr]    Compiling feature-probe v0.1.1
[INFO] [stderr]    Compiling bv v0.11.1
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking bitmaps v2.1.0
[INFO] [stderr]    Compiling solana-frozen-abi-macro v1.18.26
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]    Compiling cc v1.2.46
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling digest v0.9.0
[INFO] [stderr]    Compiling im v15.1.0
[INFO] [stderr]    Compiling libsecp256k1-core v0.2.2
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]    Compiling bumpalo v3.19.0
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]     Checking keccak v0.1.5
[INFO] [stderr]    Compiling borsh v1.5.7
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking rand_xoshiro v0.6.0
[INFO] [stderr]    Compiling wasm-bindgen v0.2.105
[INFO] [stderr]     Checking sized-chunks v0.6.5
[INFO] [stderr]    Compiling solana-frozen-abi v1.18.26
[INFO] [stderr]    Compiling toml_parser v1.0.4
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking hashbrown v0.11.2
[INFO] [stderr]     Checking unicode-normalization v0.1.25
[INFO] [stderr]     Checking hashbrown v0.13.2
[INFO] [stderr]    Compiling toml_edit v0.23.7
[INFO] [stderr]    Compiling libsecp256k1-gen-ecmult v0.2.1
[INFO] [stderr]    Compiling libsecp256k1-gen-genmult v0.2.1
[INFO] [stderr]     Checking memmap2 v0.5.10
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]    Compiling bs58 v0.4.0
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]    Compiling libsecp256k1 v0.6.0
[INFO] [stderr]     Checking base64 v0.12.3
[INFO] [stderr]     Checking constant_time_eq v0.3.1
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking serde_bytes v0.11.19
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]     Checking signature v1.6.4
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling solana-sdk v1.18.26
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]     Checking ed25519 v1.5.3
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]     Checking derivation-path v0.2.0
[INFO] [stderr]     Checking qstring v0.7.2
[INFO] [stderr]     Checking uriparse v0.6.4
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]    Compiling blake3 v1.8.2
[INFO] [stderr]    Compiling solana-program v1.18.26
[INFO] [stderr]     Checking assert_matches v1.5.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]     Checking ark-std v0.4.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling num-bigint v0.2.6
[INFO] [stderr]     Checking compression-core v0.4.30
[INFO] [stderr]    Compiling num-complex v0.2.4
[INFO] [stderr]    Compiling num-rational v0.2.4
[INFO] [stderr]     Checking webpki-roots v0.25.4
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking unreachable v1.0.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking gethostname v0.2.3
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]     Checking ascii v0.9.3
[INFO] [stderr]     Checking plain v0.2.3
[INFO] [stderr]    Compiling solana-program-runtime v1.18.26
[INFO] [stderr]     Checking hash32 v0.2.1
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling winnow v0.5.40
[INFO] [stderr]     Checking rustc-demangle v0.1.26
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]     Checking eager v0.1.0
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]     Checking combine v3.8.1
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]    Compiling time-macros v0.2.24
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]     Checking hashbrown v0.15.2
[INFO] [stderr]    Compiling zstd-safe v5.0.2+zstd.1.5.2
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]     Checking compression-codecs v0.4.32
[INFO] [stderr]    Compiling solana-version v1.18.26
[INFO] [stderr]     Checking num v0.2.1
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]     Checking percentage v0.1.0
[INFO] [stderr]    Compiling solana-vote-program v1.18.26
[INFO] [stderr]     Checking untrusted v0.7.1
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking spin v0.5.2
[INFO] [stderr]    Compiling bs58 v0.5.1
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]     Checking pem v1.1.1
[INFO] [stderr]    Compiling borsh-derive-internal v0.10.4
[INFO] [stderr]    Compiling borsh-schema-derive-internal v0.10.4
[INFO] [stderr]    Compiling borsh-schema-derive-internal v0.9.3
[INFO] [stderr]    Compiling borsh-derive-internal v0.9.3
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.105
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking solana-security-txt v1.1.2
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]    Compiling synstructure v0.12.6
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking const-oid v0.7.1
[INFO] [stderr]    Compiling oid-registry v0.6.1
[INFO] [stderr]     Checking der v0.5.1
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]    Compiling ark-serialize-derive v0.4.2
[INFO] [stderr]    Compiling ark-ff-macros v0.4.2
[INFO] [stderr]    Compiling ark-ff-asm v0.4.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling borsh-derive v1.5.7
[INFO] [stderr]     Checking zeroize v1.3.0
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling solana-sdk-macro v1.18.26
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling num_enum_derive v0.7.5
[INFO] [stderr]    Compiling qualifier_attr v0.2.2
[INFO] [stderr]     Checking env_logger v0.9.3
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling serde_with_macros v2.3.3
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]     Checking solana-logger v1.18.26
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.105
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling spl-discriminator-syn v0.1.2
[INFO] [stderr]     Checking merlin v3.0.0
[INFO] [stderr]     Checking num_enum v0.7.5
[INFO] [stderr]    Compiling spl-program-error-derive v0.3.2
[INFO] [stderr]    Compiling scroll_derive v0.11.1
[INFO] [stderr]    Compiling spl-discriminator-derive v0.1.2
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling enum-iterator-derive v1.5.0
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]    Compiling num-derive v0.3.3
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking scroll v0.11.0
[INFO] [stderr]    Compiling num_enum_derive v0.6.1
[INFO] [stderr]     Checking Inflector v0.11.4
[INFO] [stderr]     Checking goblin v0.5.4
[INFO] [stderr]     Checking yasna v0.5.2
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking enum-iterator v1.5.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.4.0
[INFO] [stderr]    Compiling asn1-rs-impl v0.1.0
[INFO] [stderr]    Compiling dlopen2_derive v0.3.0
[INFO] [stderr]     Checking num_enum v0.6.1
[INFO] [stderr]     Checking rustls-native-certs v0.6.3
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]    Compiling solana-perf v1.18.26
[INFO] [stderr]     Checking rcgen v0.10.0
[INFO] [stderr]     Checking number_prefix v0.4.0
[INFO] [stderr]     Checking event-listener v2.5.3
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]     Checking os_str_bytes v6.6.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking base64ct v1.8.0
[INFO] [stderr]     Checking dlopen2 v0.5.0
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking clap_lex v0.2.4
[INFO] [stderr]     Checking solana-rayon-threadlimit v1.18.26
[INFO] [stderr]     Checking quinn-proto v0.10.6
[INFO] [stderr]     Checking spki v0.5.4
[INFO] [stderr]     Checking quinn-udp v0.4.1
[INFO] [stderr]     Checking webpki-roots v0.24.0
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking asn1-rs v0.5.2
[INFO] [stderr]     Checking caps v0.5.6
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking shell-words v1.1.0
[INFO] [stderr]    Compiling toml v0.5.11
[INFO] [stderr]    Compiling anchor-syn v0.30.1
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking serde_with v2.3.3
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking textwrap v0.16.2
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]     Checking solana_rbpf v0.8.3
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking clap v3.2.25
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]     Checking crypto-mac v0.8.0
[INFO] [stderr]     Checking cipher v0.3.0
[INFO] [stderr]     Checking curve25519-dalek v3.2.1
[INFO] [stderr]     Checking hmac v0.8.1
[INFO] [stderr]     Checking hmac-drbg v0.3.0
[INFO] [stderr]     Checking sha2 v0.9.9
[INFO] [stderr]     Checking pbkdf2 v0.4.0
[INFO] [stderr]    Compiling proc-macro-crate v0.1.5
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking ark-serialize v0.4.2
[INFO] [stderr]     Checking tiny-bip39 v0.8.2
[INFO] [stderr]     Checking sha3 v0.10.8
[INFO] [stderr]     Checking ark-ff v0.4.2
[INFO] [stderr]    Compiling borsh-derive v0.10.4
[INFO] [stderr]    Compiling borsh-derive v0.9.3
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking pbkdf2 v0.11.0
[INFO] [stderr]     Checking universal-hash v0.4.1
[INFO] [stderr]     Checking ctr v0.8.0
[INFO] [stderr]     Checking polyval v0.5.3
[INFO] [stderr]     Checking aes v0.7.5
[INFO] [stderr]     Checking borsh v0.10.4
[INFO] [stderr]     Checking aead v0.4.3
[INFO] [stderr]     Checking ed25519-dalek v1.0.1
[INFO] [stderr]     Checking sha3 v0.9.1
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking borsh v0.9.3
[INFO] [stderr]     Checking jsonrpc-core v18.0.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking der-parser v8.2.0
[INFO] [stderr]     Checking ed25519-dalek-bip32 v0.2.0
[INFO] [stderr]     Checking aes-gcm-siv v0.10.3
[INFO] [stderr]     Checking tungstenite v0.20.1
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking dialoguer v0.10.4
[INFO] [stderr]     Checking pkcs8 v0.8.0
[INFO] [stderr]     Checking rtoolbox v0.0.3
[INFO] [stderr]     Checking ansi_term v0.12.1
[INFO] [stderr]     Checking strsim v0.8.0
[INFO] [stderr]     Checking histogram v0.6.9
[INFO] [stderr]     Checking rpassword v7.4.0
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking async-compression v0.4.33
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]    Compiling anchor-lang-idl-spec v0.1.0
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]     Checking x509-parser v0.14.0
[INFO] [stderr]     Checking quinn v0.10.2
[INFO] [stderr]    Compiling schemars v0.8.22
[INFO] [stderr]     Checking tokio-tungstenite v0.20.1
[INFO] [stderr]     Checking async-mutex v1.4.1
[INFO] [stderr]     Checking dyn-clone v1.0.20
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]    Compiling anchor-derive-space v0.30.1
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]    Compiling schemars_derive v0.8.22
[INFO] [stderr]    Compiling anchor-lang-idl v0.1.2
[INFO] [stderr]    Compiling anchor-attribute-event v0.30.1
[INFO] [stderr]    Compiling anchor-derive-accounts v0.30.1
[INFO] [stderr]    Compiling anchor-derive-serde v0.30.1
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]    Compiling anchor-attribute-account v0.30.1
[INFO] [stderr]    Compiling anchor-attribute-constant v0.30.1
[INFO] [stderr]    Compiling anchor-attribute-error v0.30.1
[INFO] [stderr]    Compiling anchor-attribute-access-control v0.30.1
[INFO] [stderr]     Checking zstd v0.11.2+zstd.1.5.2
[INFO] [stderr]     Checking pyth-sdk v0.8.0
[INFO] [stderr]    Compiling anchor-attribute-program v0.30.1
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking ark-poly v0.4.2
[INFO] [stderr]     Checking ark-ec v0.4.2
[INFO] [stderr]     Checking ark-bn254 v0.4.0
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking light-poseidon v0.2.0
[INFO] [stderr]     Checking spl-program-error v0.3.0
[INFO] [stderr]     Checking spl-discriminator v0.1.0
[INFO] [stderr]     Checking spl-token v4.0.0
[INFO] [stderr]     Checking spl-memo v4.0.0
[INFO] [stderr]     Checking anchor-lang v0.30.1
[INFO] [stderr]     Checking pyth-sdk-solana v0.10.6
[INFO] [stderr]     Checking solana-zk-token-sdk v1.18.26
[INFO] [stderr]     Checking solana-metrics v1.18.26
[INFO] [stderr]     Checking solana-measure v1.18.26
[INFO] [stderr]     Checking solana-remote-wallet v1.18.26
[INFO] [stderr]     Checking solana-connection-cache v1.18.26
[INFO] [stderr]     Checking solana-net-utils v1.18.26
[INFO] [stderr]     Checking solana-clap-utils v1.18.26
[INFO] [stderr]     Checking solana-config-program v1.18.26
[INFO] [stderr]     Checking spl-pod v0.1.0
[INFO] [stderr]     Checking spl-type-length-value v0.3.0
[INFO] [stderr]     Checking spl-token-group-interface v0.1.0
[INFO] [stderr]     Checking solana-streamer v1.18.26
[INFO] [stderr]     Checking spl-tlv-account-resolution v0.5.1
[INFO] [stderr]     Checking spl-token-metadata-interface v0.2.0
[INFO] [stderr]     Checking spl-transfer-hook-interface v0.4.1
[INFO] [stderr]     Checking spl-token-2022 v1.0.0
[INFO] [stderr]     Checking solana-udp-client v1.18.26
[INFO] [stderr]     Checking solana-account-decoder v1.18.26
[INFO] [stderr]     Checking spl-associated-token-account v2.3.0
[INFO] [stderr]     Checking solana-transaction-status v1.18.26
[INFO] [stderr]     Checking solana-rpc-client-api v1.18.26
[INFO] [stderr]     Checking solana-rpc-client v1.18.26
[INFO] [stderr]     Checking solana-pubsub-client v1.18.26
[INFO] [stderr]     Checking solana-quic-client v1.18.26
[INFO] [stderr]     Checking solana-tpu-client v1.18.26
[INFO] [stderr]     Checking solana-thin-client v1.18.26
[INFO] [stderr]     Checking solana-rpc-client-nonce-utils v1.18.26
[INFO] [stderr]     Checking solana-client v1.18.26
[INFO] [stderr]     Checking anchor-client v0.30.1
[INFO] [stderr]     Checking driftbot v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `TradeLogEntry` and `log_trade`
[INFO] [stdout]  --> src/bot.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::logger::{log_trade, TradeLogEntry};
[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: `Serialize`
[INFO] [stdout]  --> src/bot.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]  --> src/bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde_json::Value;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pubkey::Pubkey`
[INFO] [stdout]   --> src/bot.rs:11:42
[INFO] [stdout]    |
[INFO] [stdout] 11 |     commitment_config::CommitmentConfig, pubkey::Pubkey, signature::Keypair, signer::Signer,
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]   --> src/bot.rs:13:33
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/bot.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/bot.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `system_instruction`
[INFO] [stdout]  --> src/drift/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     system_instruction,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Signer` and `pubkey::Pubkey`
[INFO] [stdout]  --> src/exec/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pubkey::Pubkey,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 8 |     signature::{Keypair, Signer},
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TradeLogEntry` and `log_trade`
[INFO] [stdout]  --> src/bot.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::logger::{log_trade, TradeLogEntry};
[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: `anyhow::Result`
[INFO] [stdout]  --> src/fetcher.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/bot.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]  --> src/bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde_json::Value;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pubkey::Pubkey`
[INFO] [stdout]   --> src/bot.rs:11:42
[INFO] [stdout]    |
[INFO] [stdout] 11 |     commitment_config::CommitmentConfig, pubkey::Pubkey, signature::Keypair, signer::Signer,
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]   --> src/bot.rs:13:33
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/bot.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/bot.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `system_instruction`
[INFO] [stdout]  --> src/drift/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     system_instruction,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Signer` and `pubkey::Pubkey`
[INFO] [stdout]  --> src/exec/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pubkey::Pubkey,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 8 |     signature::{Keypair, Signer},
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/fetcher.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boll_middle`
[INFO] [stdout]    --> src/bot.rs:587:22
[INFO] [stdout]     |
[INFO] [stdout] 587 |     let (boll_upper, boll_middle, boll_lower) = match (
[INFO] [stdout]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boll_middle`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_account`
[INFO] [stdout]    --> src/drift/mod.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |     let user_account = match user_account_result {
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_HOLD_MS` is never used
[INFO] [stdout]   --> src/bot.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const MAX_HOLD_MS: i64 = 24 * 60 * 60 * 1000; // 24 hours max hold
[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 `TAKER_FEE_RATE` is never used
[INFO] [stdout]   --> src/bot.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const TAKER_FEE_RATE: f64 = 0.0005;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FUNDING_INTERVAL_MS` is never used
[INFO] [stdout]   --> src/bot.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const FUNDING_INTERVAL_MS: i64 = 60 * 60 * 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RECENT_TRADES_TRACKED` is never used
[INFO] [stdout]   --> src/bot.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const RECENT_TRADES_TRACKED: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOSS_COOLDOWN_MS` is never used
[INFO] [stdout]   --> src/bot.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const LOSS_COOLDOWN_MS: i64 = 60_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_CONSEC_LOSSES` is never used
[INFO] [stdout]   --> src/bot.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 | const MAX_CONSEC_LOSSES: u32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATR_SLOPE_LOOKBACK_MS` is never used
[INFO] [stdout]   --> src/bot.rs:45:7
[INFO] [stdout]    |
[INFO] [stdout] 45 | const ATR_SLOPE_LOOKBACK_MS: i64 = 60_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_PROFIT_LOCK_PCT` is never used
[INFO] [stdout]   --> src/bot.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const MIN_PROFIT_LOCK_PCT: f64 = 0.0015;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_R_MULT_FOR_TRAIL` is never used
[INFO] [stdout]   --> src/bot.rs:47:7
[INFO] [stdout]    |
[INFO] [stdout] 47 | const MIN_R_MULT_FOR_TRAIL: f64 = 1.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRAIL_ENTRY_LOCK` is never used
[INFO] [stdout]   --> src/bot.rs:48:7
[INFO] [stdout]    |
[INFO] [stdout] 48 | const TRAIL_ENTRY_LOCK: f64 = 0.4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARTIAL_TP_MULT` is never used
[INFO] [stdout]   --> src/bot.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const PARTIAL_TP_MULT: f64 = 1.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARTIAL_TP_FRACTION` is never used
[INFO] [stdout]   --> src/bot.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const PARTIAL_TP_FRACTION: f64 = 0.5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATR_TRAIL_MULT` is never used
[INFO] [stdout]   --> src/bot.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const ATR_TRAIL_MULT: f64 = 0.8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTROL_FILE` is never used
[INFO] [stdout]   --> src/bot.rs:52:7
[INFO] [stdout]    |
[INFO] [stdout] 52 | const CONTROL_FILE: &str = "controls.json";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTROL_REFRESH_MS` is never used
[INFO] [stdout]   --> src/bot.rs:53:7
[INFO] [stdout]    |
[INFO] [stdout] 53 | const CONTROL_REFRESH_MS: i64 = 2_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PST_OFFSET_MS` is never used
[INFO] [stdout]   --> src/bot.rs:54:7
[INFO] [stdout]    |
[INFO] [stdout] 54 | const PST_OFFSET_MS: i64 = 8 * 60 * 60 * 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PST_NO_COOLDOWN_START_MIN` is never used
[INFO] [stdout]   --> src/bot.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const PST_NO_COOLDOWN_START_MIN: i64 = 6 * 60 + 30;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PST_NO_COOLDOWN_END_MIN` is never used
[INFO] [stdout]   --> src/bot.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 | const PST_NO_COOLDOWN_END_MIN: i64 = 15 * 60;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_HOLD_STOP_MS` is never used
[INFO] [stdout]   --> src/bot.rs:57:7
[INFO] [stdout]    |
[INFO] [stdout] 57 | const MIN_HOLD_STOP_MS: i64 = 60_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_ADVERSE_MOVE_PCT` is never used
[INFO] [stdout]   --> src/bot.rs:58:7
[INFO] [stdout]    |
[INFO] [stdout] 58 | const MIN_ADVERSE_MOVE_PCT: f64 = 0.002;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STOP_LOCK_MS` is never used
[INFO] [stdout]   --> src/bot.rs:60:7
[INFO] [stdout]    |
[INFO] [stdout] 60 | const STOP_LOCK_MS: i64 = 5 * 60 * 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_MID_RECLAIM_BUFFER` is never used
[INFO] [stdout]   --> src/bot.rs:76:7
[INFO] [stdout]    |
[INFO] [stdout] 76 | const MIN_MID_RECLAIM_BUFFER: f64 = 0.001;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATR_MID_RECLAIM_MULT` is never used
[INFO] [stdout]   --> src/bot.rs:77:7
[INFO] [stdout]    |
[INFO] [stdout] 77 | const ATR_MID_RECLAIM_MULT: f64 = 1.5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PER_MARKET_LOSS_COOLDOWN_MS` is never used
[INFO] [stdout]   --> src/bot.rs:78:7
[INFO] [stdout]    |
[INFO] [stdout] 78 | const PER_MARKET_LOSS_COOLDOWN_MS: i64 = 10 * 60 * 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LIQUID_MARKETS` is never used
[INFO] [stdout]   --> src/bot.rs:84:7
[INFO] [stdout]    |
[INFO] [stdout] 84 | const LIQUID_MARKETS: &[&str] = &[
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ACTIVE_MARKET_STATUSES` is never used
[INFO] [stdout]   --> src/bot.rs:92:7
[INFO] [stdout]    |
[INFO] [stdout] 92 | const ACTIVE_MARKET_STATUSES: &[u8] = &[0, 1];
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reason` is never read
[INFO] [stdout]    --> src/bot.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub struct SignalEvaluation {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 103 |     pub signal: Option<TradeSignal>,
[INFO] [stdout] 104 |     pub reason: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SignalEvaluation` 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 `PositionMeta` is never constructed
[INFO] [stdout]    --> src/bot.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct PositionMeta {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ManualControlEntry` is never constructed
[INFO] [stdout]    --> src/bot.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct ManualControlEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stop_price`, `target_price`, `reward`, and `stop_pct` are never read
[INFO] [stdout]    --> src/bot.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub struct StopTargetResult {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 137 |     pub stop_distance: f64,
[INFO] [stdout] 138 |     pub stop_price: f64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 139 |     pub target_price: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 140 |     pub reward: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 141 |     pub stop_pct: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `StopTargetResult` 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 `direction_to_text` is never used
[INFO] [stdout]    --> src/bot.rs:151:4
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn direction_to_text(dir: PositionDirection) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_in_pst_no_cooldown_window` is never used
[INFO] [stdout]    --> src/bot.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn is_in_pst_no_cooldown_window(ts: i64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_funding` is never used
[INFO] [stdout]    --> src/bot.rs:236:4
[INFO] [stdout]     |
[INFO] [stdout] 236 | fn update_funding(meta: &mut PositionMeta, state: &MarketState, now: i64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_pnl` is never used
[INFO] [stdout]    --> src/bot.rs:250:4
[INFO] [stdout]     |
[INFO] [stdout] 250 | fn compute_pnl(meta: &PositionMeta, exit_price: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRADE_MARKETS` is never used
[INFO] [stdout]   --> src/config.rs:64:11
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub const TRADE_MARKETS: &[&str] = &["SOL-PERP", "BTC-PERP", "ETH-PERP"];
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUOTE_PRECISION` is never used
[INFO] [stdout]   --> src/drift/mod.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const QUOTE_PRECISION: f64 = 1e6;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRICE_PRECISION` is never used
[INFO] [stdout]   --> src/drift/mod.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const PRICE_PRECISION: f64 = 1e6;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FUNDING_RATE_PRECISION` is never used
[INFO] [stdout]   --> src/drift/mod.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const FUNDING_RATE_PRECISION: f64 = 1e9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AmmSimplified` is never constructed
[INFO] [stdout]   --> src/drift/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct AmmSimplified {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerpMarketSimplified` is never constructed
[INFO] [stdout]   --> src/drift/mod.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct PerpMarketSimplified {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerpPositionSimplified` is never constructed
[INFO] [stdout]   --> src/drift/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct PerpPositionSimplified {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_position` is never used
[INFO] [stdout]    --> src/drift/mod.rs:235:14
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub async fn close_position(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `initialize_user_if_needed` is never used
[INFO] [stdout]    --> src/drift/mod.rs:317:14
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub async fn initialize_user_if_needed(rpc_client: &RpcClient, keypair: &Keypair) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerpMarketAccount` is never constructed
[INFO] [stdout]    --> src/drift/mod.rs:337:12
[INFO] [stdout]     |
[INFO] [stdout] 337 | pub struct PerpMarketAccount {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserAccount` is never constructed
[INFO] [stdout]    --> src/drift/mod.rs:345:12
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub struct UserAccount {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerpPosition` is never constructed
[INFO] [stdout]    --> src/drift/mod.rs:351:12
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub struct PerpPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `derive_user_stats_pda` is never used
[INFO] [stdout]    --> src/drift/mod.rs:373:8
[INFO] [stdout]     |
[INFO] [stdout] 373 | pub fn derive_user_stats_pda(authority: &Pubkey) -> Result<Pubkey> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `market_name_to_index` is never used
[INFO] [stdout]    --> src/drift/mod.rs:387:8
[INFO] [stdout]     |
[INFO] [stdout] 387 | pub fn market_name_to_index(name: &str) -> Option<u16> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `market_index`, `name`, `base_position`, `atr`, and `timestamp` are never read
[INFO] [stdout]   --> src/fetcher.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct MarketState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 25 |     pub market_index: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 26 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub base_position: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub atr: f64,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub timestamp: 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: field `tf_1m` is never read
[INFO] [stdout]   --> src/fetcher.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct MultiTimeframeMA {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 55 |     pub tf_1m: TimeframeMA,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MultiTimeframeMA` 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 `LOG_FILE` is never used
[INFO] [stdout]  --> src/logger/mod.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const LOG_FILE: &str = "trades.log";
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CSV_FILE` is never used
[INFO] [stdout]  --> src/logger/mod.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const CSV_FILE: &str = "trades.csv";
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeLogEntry` is never constructed
[INFO] [stdout]   --> src/logger/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct TradeLogEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_csv_header` is never used
[INFO] [stdout]   --> src/logger/mod.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn ensure_csv_header() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_trade` is never used
[INFO] [stdout]   --> src/logger/mod.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn log_trade(entry: &TradeLogEntry) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boll_middle`
[INFO] [stdout]    --> src/bot.rs:587:22
[INFO] [stdout]     |
[INFO] [stdout] 587 |     let (boll_upper, boll_middle, boll_lower) = match (
[INFO] [stdout]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boll_middle`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_account`
[INFO] [stdout]    --> src/drift/mod.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |     let user_account = match user_account_result {
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_HOLD_MS` is never used
[INFO] [stdout]   --> src/bot.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const MAX_HOLD_MS: i64 = 24 * 60 * 60 * 1000; // 24 hours max hold
[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 `TAKER_FEE_RATE` is never used
[INFO] [stdout]   --> src/bot.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const TAKER_FEE_RATE: f64 = 0.0005;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FUNDING_INTERVAL_MS` is never used
[INFO] [stdout]   --> src/bot.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const FUNDING_INTERVAL_MS: i64 = 60 * 60 * 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RECENT_TRADES_TRACKED` is never used
[INFO] [stdout]   --> src/bot.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const RECENT_TRADES_TRACKED: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOSS_COOLDOWN_MS` is never used
[INFO] [stdout]   --> src/bot.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const LOSS_COOLDOWN_MS: i64 = 60_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_CONSEC_LOSSES` is never used
[INFO] [stdout]   --> src/bot.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 | const MAX_CONSEC_LOSSES: u32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATR_SLOPE_LOOKBACK_MS` is never used
[INFO] [stdout]   --> src/bot.rs:45:7
[INFO] [stdout]    |
[INFO] [stdout] 45 | const ATR_SLOPE_LOOKBACK_MS: i64 = 60_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_PROFIT_LOCK_PCT` is never used
[INFO] [stdout]   --> src/bot.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const MIN_PROFIT_LOCK_PCT: f64 = 0.0015;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_R_MULT_FOR_TRAIL` is never used
[INFO] [stdout]   --> src/bot.rs:47:7
[INFO] [stdout]    |
[INFO] [stdout] 47 | const MIN_R_MULT_FOR_TRAIL: f64 = 1.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRAIL_ENTRY_LOCK` is never used
[INFO] [stdout]   --> src/bot.rs:48:7
[INFO] [stdout]    |
[INFO] [stdout] 48 | const TRAIL_ENTRY_LOCK: f64 = 0.4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARTIAL_TP_MULT` is never used
[INFO] [stdout]   --> src/bot.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const PARTIAL_TP_MULT: f64 = 1.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARTIAL_TP_FRACTION` is never used
[INFO] [stdout]   --> src/bot.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const PARTIAL_TP_FRACTION: f64 = 0.5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATR_TRAIL_MULT` is never used
[INFO] [stdout]   --> src/bot.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const ATR_TRAIL_MULT: f64 = 0.8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTROL_FILE` is never used
[INFO] [stdout]   --> src/bot.rs:52:7
[INFO] [stdout]    |
[INFO] [stdout] 52 | const CONTROL_FILE: &str = "controls.json";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTROL_REFRESH_MS` is never used
[INFO] [stdout]   --> src/bot.rs:53:7
[INFO] [stdout]    |
[INFO] [stdout] 53 | const CONTROL_REFRESH_MS: i64 = 2_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PST_OFFSET_MS` is never used
[INFO] [stdout]   --> src/bot.rs:54:7
[INFO] [stdout]    |
[INFO] [stdout] 54 | const PST_OFFSET_MS: i64 = 8 * 60 * 60 * 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PST_NO_COOLDOWN_START_MIN` is never used
[INFO] [stdout]   --> src/bot.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const PST_NO_COOLDOWN_START_MIN: i64 = 6 * 60 + 30;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PST_NO_COOLDOWN_END_MIN` is never used
[INFO] [stdout]   --> src/bot.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 | const PST_NO_COOLDOWN_END_MIN: i64 = 15 * 60;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_HOLD_STOP_MS` is never used
[INFO] [stdout]   --> src/bot.rs:57:7
[INFO] [stdout]    |
[INFO] [stdout] 57 | const MIN_HOLD_STOP_MS: i64 = 60_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_ADVERSE_MOVE_PCT` is never used
[INFO] [stdout]   --> src/bot.rs:58:7
[INFO] [stdout]    |
[INFO] [stdout] 58 | const MIN_ADVERSE_MOVE_PCT: f64 = 0.002;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STOP_LOCK_MS` is never used
[INFO] [stdout]   --> src/bot.rs:60:7
[INFO] [stdout]    |
[INFO] [stdout] 60 | const STOP_LOCK_MS: i64 = 5 * 60 * 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_MID_RECLAIM_BUFFER` is never used
[INFO] [stdout]   --> src/bot.rs:76:7
[INFO] [stdout]    |
[INFO] [stdout] 76 | const MIN_MID_RECLAIM_BUFFER: f64 = 0.001;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATR_MID_RECLAIM_MULT` is never used
[INFO] [stdout]   --> src/bot.rs:77:7
[INFO] [stdout]    |
[INFO] [stdout] 77 | const ATR_MID_RECLAIM_MULT: f64 = 1.5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PER_MARKET_LOSS_COOLDOWN_MS` is never used
[INFO] [stdout]   --> src/bot.rs:78:7
[INFO] [stdout]    |
[INFO] [stdout] 78 | const PER_MARKET_LOSS_COOLDOWN_MS: i64 = 10 * 60 * 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LIQUID_MARKETS` is never used
[INFO] [stdout]   --> src/bot.rs:84:7
[INFO] [stdout]    |
[INFO] [stdout] 84 | const LIQUID_MARKETS: &[&str] = &[
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ACTIVE_MARKET_STATUSES` is never used
[INFO] [stdout]   --> src/bot.rs:92:7
[INFO] [stdout]    |
[INFO] [stdout] 92 | const ACTIVE_MARKET_STATUSES: &[u8] = &[0, 1];
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reason` is never read
[INFO] [stdout]    --> src/bot.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub struct SignalEvaluation {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 103 |     pub signal: Option<TradeSignal>,
[INFO] [stdout] 104 |     pub reason: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SignalEvaluation` 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 `PositionMeta` is never constructed
[INFO] [stdout]    --> src/bot.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct PositionMeta {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ManualControlEntry` is never constructed
[INFO] [stdout]    --> src/bot.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct ManualControlEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stop_price`, `target_price`, `reward`, and `stop_pct` are never read
[INFO] [stdout]    --> src/bot.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub struct StopTargetResult {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 137 |     pub stop_distance: f64,
[INFO] [stdout] 138 |     pub stop_price: f64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 139 |     pub target_price: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 140 |     pub reward: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 141 |     pub stop_pct: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `StopTargetResult` 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 `direction_to_text` is never used
[INFO] [stdout]    --> src/bot.rs:151:4
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn direction_to_text(dir: PositionDirection) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_in_pst_no_cooldown_window` is never used
[INFO] [stdout]    --> src/bot.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn is_in_pst_no_cooldown_window(ts: i64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_funding` is never used
[INFO] [stdout]    --> src/bot.rs:236:4
[INFO] [stdout]     |
[INFO] [stdout] 236 | fn update_funding(meta: &mut PositionMeta, state: &MarketState, now: i64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_pnl` is never used
[INFO] [stdout]    --> src/bot.rs:250:4
[INFO] [stdout]     |
[INFO] [stdout] 250 | fn compute_pnl(meta: &PositionMeta, exit_price: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRADE_MARKETS` is never used
[INFO] [stdout]   --> src/config.rs:64:11
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub const TRADE_MARKETS: &[&str] = &["SOL-PERP", "BTC-PERP", "ETH-PERP"];
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUOTE_PRECISION` is never used
[INFO] [stdout]   --> src/drift/mod.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const QUOTE_PRECISION: f64 = 1e6;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRICE_PRECISION` is never used
[INFO] [stdout]   --> src/drift/mod.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const PRICE_PRECISION: f64 = 1e6;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FUNDING_RATE_PRECISION` is never used
[INFO] [stdout]   --> src/drift/mod.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const FUNDING_RATE_PRECISION: f64 = 1e9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AmmSimplified` is never constructed
[INFO] [stdout]   --> src/drift/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct AmmSimplified {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerpMarketSimplified` is never constructed
[INFO] [stdout]   --> src/drift/mod.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct PerpMarketSimplified {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerpPositionSimplified` is never constructed
[INFO] [stdout]   --> src/drift/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct PerpPositionSimplified {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_position` is never used
[INFO] [stdout]    --> src/drift/mod.rs:235:14
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub async fn close_position(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `initialize_user_if_needed` is never used
[INFO] [stdout]    --> src/drift/mod.rs:317:14
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub async fn initialize_user_if_needed(rpc_client: &RpcClient, keypair: &Keypair) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerpMarketAccount` is never constructed
[INFO] [stdout]    --> src/drift/mod.rs:337:12
[INFO] [stdout]     |
[INFO] [stdout] 337 | pub struct PerpMarketAccount {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserAccount` is never constructed
[INFO] [stdout]    --> src/drift/mod.rs:345:12
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub struct UserAccount {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerpPosition` is never constructed
[INFO] [stdout]    --> src/drift/mod.rs:351:12
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub struct PerpPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `derive_user_stats_pda` is never used
[INFO] [stdout]    --> src/drift/mod.rs:373:8
[INFO] [stdout]     |
[INFO] [stdout] 373 | pub fn derive_user_stats_pda(authority: &Pubkey) -> Result<Pubkey> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `market_name_to_index` is never used
[INFO] [stdout]    --> src/drift/mod.rs:387:8
[INFO] [stdout]     |
[INFO] [stdout] 387 | pub fn market_name_to_index(name: &str) -> Option<u16> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `market_index`, `name`, `base_position`, `atr`, and `timestamp` are never read
[INFO] [stdout]   --> src/fetcher.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct MarketState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 25 |     pub market_index: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 26 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub base_position: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub atr: f64,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub timestamp: 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: field `tf_1m` is never read
[INFO] [stdout]   --> src/fetcher.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct MultiTimeframeMA {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 55 |     pub tf_1m: TimeframeMA,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MultiTimeframeMA` 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 `LOG_FILE` is never used
[INFO] [stdout]  --> src/logger/mod.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const LOG_FILE: &str = "trades.log";
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CSV_FILE` is never used
[INFO] [stdout]  --> src/logger/mod.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const CSV_FILE: &str = "trades.csv";
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeLogEntry` is never constructed
[INFO] [stdout]   --> src/logger/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct TradeLogEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_csv_header` is never used
[INFO] [stdout]   --> src/logger/mod.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn ensure_csv_header() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_trade` is never used
[INFO] [stdout]   --> src/logger/mod.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn log_trade(entry: &TradeLogEntry) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 33s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: solana-client v1.18.26
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] running `Command { std: "docker" "inspect" "38a1ad8049cf0beeb58032b02eaf1dd50d1dbd1cc29ecd50e404bd74538cb07b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "38a1ad8049cf0beeb58032b02eaf1dd50d1dbd1cc29ecd50e404bd74538cb07b", kill_on_drop: false }`
[INFO] [stdout] 38a1ad8049cf0beeb58032b02eaf1dd50d1dbd1cc29ecd50e404bd74538cb07b
