[INFO] cloning repository https://github.com/dmytro-yemelianov/raps-demo
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dmytro-yemelianov/raps-demo" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdmytro-yemelianov%2Fraps-demo", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdmytro-yemelianov%2Fraps-demo'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3466b3177213b96a15607ddde4921797ce3f99a1
[INFO] checking dmytro-yemelianov/raps-demo/3466b3177213b96a15607ddde4921797ce3f99a1 against c999cef531ea9059e189e82fe0e82c5daf249bc9 for pr-152972
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdmytro-yemelianov%2Fraps-demo" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/dmytro-yemelianov/raps-demo
[INFO] finished tweaking git repo https://github.com/dmytro-yemelianov/raps-demo
[INFO] tweaked toml for git repo https://github.com/dmytro-yemelianov/raps-demo written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/dmytro-yemelianov/raps-demo on toolchain c999cef531ea9059e189e82fe0e82c5daf249bc9
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/dmytro-yemelianov/raps-demo 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" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tracing-appender v0.2.4
[INFO] [stderr]   Downloaded stability v0.1.1
[INFO] [stderr]   Downloaded ratatui v0.25.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690
[INFO] running `Command { std: "docker" "start" "c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690" "/opt/rustwide/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690" "/opt/rustwide/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.112
[INFO] [stderr]    Compiling libc v0.2.179
[INFO] [stderr]    Compiling zmij v1.0.9
[INFO] [stderr]    Compiling serde_json v1.0.148
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking base64ct v1.8.2
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking is-docker v0.2.0
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]     Checking clap_builder v4.5.54
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]    Compiling stability v0.1.1
[INFO] [stderr]     Checking password-hash v0.4.2
[INFO] [stderr]     Checking is-wsl v0.4.0
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]     Checking pbkdf2 v0.11.0
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking open v5.3.3
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]    Compiling cc v1.2.51
[INFO] [stderr]     Checking tempfile v3.24.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]     Checking bzip2 v0.4.4
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling strum_macros v0.25.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking strum v0.25.0
[INFO] [stderr]     Checking ratatui v0.25.0
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking clap v4.5.54
[INFO] [stderr]    Compiling zstd-safe v5.0.2+zstd.1.5.2
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking zstd v0.11.2+zstd.1.5.2
[INFO] [stderr]     Checking zip v0.6.6
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking tracing-appender v0.2.4
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking raps-demo-workflows v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Borders`
[INFO] [stdout]   --> src/tui/flowchart.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 |     widgets::{Block, Borders, Paragraph, Widget, StatefulWidget},
[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: `Borders`
[INFO] [stdout]   --> src/tui/flowchart.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 |     widgets::{Block, Borders, Paragraph, Widget, StatefulWidget},
[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 variable: `label_style`
[INFO] [stdout]    --> src/tui/flowchart.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let label_style = Style::default().fg(Color::White).add_modifier(Modifier::DIM);
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_label_style`
[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/resource/cleanup.rs:731:14
[INFO] [stdout]     |
[INFO] [stdout] 731 |         let (mut orchestrator, _temp_dir) = create_test_orchestrator().await;
[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: `label_style`
[INFO] [stdout]    --> src/tui/flowchart.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let label_style = Style::default().fg(Color::White).add_modifier(Modifier::DIM);
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_label_style`
[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/workflow/discovery.rs:543:13
[INFO] [stdout]     |
[INFO] [stdout] 543 |         let mut discovery = WorkflowDiscovery::new(temp_dir.path()).unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_selected_workflow` is never used
[INFO] [stdout]     --> src/tui/mod.rs:1317:8
[INFO] [stdout]      |
[INFO] [stdout]  120 | impl TuiApp {
[INFO] [stdout]      | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1317 |     fn get_selected_workflow(&self) -> Option<&crate::workflow::WorkflowMetadata> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 |     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout]    |     -------------- ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` 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] 28 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 28 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:32:17
[INFO] [stdout]    |
[INFO] [stdout] 32 |     Instruction(String),
[INFO] [stdout]    |     ----------- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` 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] 32 -     Instruction(String),
[INFO] [stdout] 32 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     RunCommand(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]   --> src/tui/preflight.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 44 |     /// Get a short summary string for display
[INFO] [stdout] 45 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_assets_dir`, `get_asset_status`, and `download_workflow_assets` are never used
[INFO] [stdout]    --> src/tui/preflight.rs:88:12
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |     pub fn download_workflow_assets(&self, workflow: &WorkflowMetadata) -> anyhow::Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_selected_workflow` is never used
[INFO] [stdout]     --> src/tui/mod.rs:1317:8
[INFO] [stdout]      |
[INFO] [stdout]  120 | impl TuiApp {
[INFO] [stdout]      | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1317 |     fn get_selected_workflow(&self) -> Option<&crate::workflow::WorkflowMetadata> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 |     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout]    |     -------------- ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` 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] 28 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 28 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:32:17
[INFO] [stdout]    |
[INFO] [stdout] 32 |     Instruction(String),
[INFO] [stdout]    |     ----------- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` 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] 32 -     Instruction(String),
[INFO] [stdout] 32 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     RunCommand(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]   --> src/tui/preflight.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 44 |     /// Get a short summary string for display
[INFO] [stdout] 45 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_assets_dir`, `get_asset_status`, and `download_workflow_assets` are never used
[INFO] [stdout]    --> src/tui/preflight.rs:88:12
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |     pub fn download_workflow_assets(&self, workflow: &WorkflowMetadata) -> anyhow::Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `manager::ConfigManager`
[INFO] [stdout]   --> src/config/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use manager::ConfigManager;
[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: `AuthTokens`, `DemoConfig`, `Profile`, `RapsConfig`, and `ValidationResult`
[INFO] [stdout]   --> src/config/mod.rs:12:17
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use types::{RapsConfig, DemoConfig, AuthTokens, Profile, ValidationResult};
[INFO] [stdout]    |                 ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CleanupResult`, `ResourceType`, and `TrackedResource`
[INFO] [stdout]   --> src/resource/mod.rs:15:32
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use types::{CleanupPolicy, CleanupResult, ResourceId, ResourceType, TrackedResource};
[INFO] [stdout]    |                                ^^^^^^^^^^^^^              ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Borders`
[INFO] [stdout]   --> src/tui/flowchart.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 |     widgets::{Block, Borders, Paragraph, Widget, StatefulWidget},
[INFO] [stdout]    |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `manager::ConfigManager`
[INFO] [stdout]   --> src/config/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use manager::ConfigManager;
[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: `AuthTokens`, `DemoConfig`, `Profile`, `RapsConfig`, and `ValidationResult`
[INFO] [stdout]   --> src/config/mod.rs:12:17
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use types::{RapsConfig, DemoConfig, AuthTokens, Profile, ValidationResult};
[INFO] [stdout]    |                 ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CleanupResult`, `ResourceType`, and `TrackedResource`
[INFO] [stdout]   --> src/resource/mod.rs:15:32
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use types::{CleanupPolicy, CleanupResult, ResourceId, ResourceType, TrackedResource};
[INFO] [stdout]    |                                ^^^^^^^^^^^^^              ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Borders`
[INFO] [stdout]   --> src/tui/flowchart.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 |     widgets::{Block, Borders, Paragraph, Widget, StatefulWidget},
[INFO] [stdout]    |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label_style`
[INFO] [stdout]    --> src/tui/flowchart.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let label_style = Style::default().fg(Color::White).add_modifier(Modifier::DIM);
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_label_style`
[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/resource/cleanup.rs:731:14
[INFO] [stdout]     |
[INFO] [stdout] 731 |         let (mut orchestrator, _temp_dir) = create_test_orchestrator().await;
[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: method `total_size_mb` is never used
[INFO] [stdout]    --> src/assets/mod.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout]  93 | impl AssetRegistry {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn total_size_mb(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_progress`, `download_category`, `download_all`, and `status` are never used
[INFO] [stdout]    --> src/assets/mod.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | impl AssetDownloader {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn with_progress<F>(mut self, callback: F) -> Self
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn download_category(&self, category: AssetCategory) -> Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn download_all(&self) -> Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn status(&self) -> AssetStatus {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AssetStatus` is never constructed
[INFO] [stdout]    --> src/assets/mod.rs:420:12
[INFO] [stdout]     |
[INFO] [stdout] 420 | pub struct AssetStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_complete`, `missing_size_mb`, and `summary` are never used
[INFO] [stdout]    --> src/assets/mod.rs:428:12
[INFO] [stdout]     |
[INFO] [stdout] 426 | impl AssetStatus {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 427 |     /// Check if all assets are downloaded
[INFO] [stdout] 428 |     pub fn is_complete(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn missing_size_mb(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 438 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_attribution` is never used
[INFO] [stdout]    --> src/assets/mod.rs:449:8
[INFO] [stdout]     |
[INFO] [stdout] 449 | pub fn print_attribution() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthValidator` is never constructed
[INFO] [stdout]   --> src/config/auth.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct AuthValidator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `validate_credentials`, `validate_token`, and `check_connectivity` are never used
[INFO] [stdout]   --> src/config/auth.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl AuthValidator {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 21 |     /// Create a new authentication validator
[INFO] [stdout] 22 |     pub fn new(base_url: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub async fn validate_credentials(&self, config: &RapsConfig) -> Result<ValidationResult> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     async fn validate_token(&self, tokens: &AuthTokens) -> Result<bool> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub async fn check_connectivity(&self) -> Result<bool> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthSetupGuide` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct AuthSetupGuide;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `generate_setup_instructions` and `generate_troubleshooting_guide` are never used
[INFO] [stdout]    --> src/config/auth.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | impl AuthSetupGuide {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] 115 |     /// Generate setup instructions for missing credentials
[INFO] [stdout] 116 |     pub fn generate_setup_instructions(config: &RapsConfig) -> SetupInstructions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn generate_troubleshooting_guide(validation_result: &ValidationResult) -> TroubleshootingGuide {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetupInstructions` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub struct SetupInstructions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_step`, `required_steps`, and `optional_steps` are never used
[INFO] [stdout]    --> src/config/auth.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl SetupInstructions {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 235 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn add_step(&mut self, step: SetupStep) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn required_steps(&self) -> Vec<&SetupStep> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn optional_steps(&self) -> Vec<&SetupStep> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetupStep` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:260:12
[INFO] [stdout]     |
[INFO] [stdout] 260 | pub struct SetupStep {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SetupAction` is never used
[INFO] [stdout]    --> src/config/auth.rs:270:10
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub enum SetupAction {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TroubleshootingGuide` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:290:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub struct TroubleshootingGuide {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_solution`, and `is_empty` are never used
[INFO] [stdout]    --> src/config/auth.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 294 | impl TroubleshootingGuide {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 295 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn add_solution(&mut self, solution: TroubleshootingSolution) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TroubleshootingSolution` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:318:12
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub struct TroubleshootingSolution {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenRefreshResponse` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:327:8
[INFO] [stdout]     |
[INFO] [stdout] 327 | struct TokenRefreshResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenRefresher` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:338:12
[INFO] [stdout]     |
[INFO] [stdout] 338 | pub struct TokenRefresher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `refresh_token` is never used
[INFO] [stdout]    --> src/config/auth.rs:342:18
[INFO] [stdout]     |
[INFO] [stdout] 340 | impl TokenRefresher {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 341 |     /// Attempt to refresh an access token using the refresh token
[INFO] [stdout] 342 |     pub async fn refresh_token(config: &RapsConfig) -> Result<Option<AuthTokens>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigManager` is never constructed
[INFO] [stdout]   --> src/config/manager.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct ConfigManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/config/manager.rs:34:18
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl ConfigManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  33 |     /// Create a new configuration manager
[INFO] [stdout]  34 |     pub async fn new() -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     fn determine_config_dir() -> Result<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     async fn load_configuration(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     fn load_from_environment(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     async fn load_raps_config(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     async fn load_demo_config(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     async fn load_profiles(&mut self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     async fn load_profile(&mut self, path: &PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     fn apply_profile(&mut self, profile_name: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn raps_config(&self) -> &RapsConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn demo_config(&self) -> &DemoConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn profiles(&self) -> &HashMap<String, Profile> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn current_profile(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn switch_profile(&mut self, profile_name: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn validate(&self) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn is_ready(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub async fn save(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub async fn create_profile(&mut self, name: String, description: Option<String>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 395 |     pub async fn validate_and_refresh_auth(&mut self) -> Result<ValidationResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 426 |     pub fn get_setup_instructions(&self) -> SetupInstructions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn get_troubleshooting_guide(&self, validation_result: &ValidationResult) -> TroubleshootingGuide {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 436 |     pub async fn check_aps_connectivity(&self) -> Result<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 441 |     pub async fn validate_auth_only(&self) -> Result<ValidationResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 446 |     pub fn update_auth_tokens(&mut self, tokens: AuthTokens) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub fn clear_auth_tokens(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     pub fn is_auth_healthy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |     pub async fn delete_profile(&mut self, name: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `LogLevelParse` is never used
[INFO] [stdout]    --> src/config/manager.rs:492:7
[INFO] [stdout]     |
[INFO] [stdout] 492 | trait LogLevelParse {
[INFO] [stdout]     |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LogLevel` is never used
[INFO] [stdout]   --> src/config/types.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum LogLevel {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoConfig` is never constructed
[INFO] [stdout]   --> src/config/types.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct DemoConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthTokens` is never constructed
[INFO] [stdout]   --> src/config/types.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct AuthTokens {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_expired`, `expires_within`, and `has_scope` are never used
[INFO] [stdout]    --> src/config/types.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl AuthTokens {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout]  92 |     /// Check if the access token is expired
[INFO] [stdout]  93 |     pub fn is_expired(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn expires_within(&self, seconds: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn has_scope(&self, scope: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RapsConfig` is never constructed
[INFO] [stdout]    --> src/config/types.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct RapsConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_credentials`, `is_authenticated`, and `get_access_token` are never used
[INFO] [stdout]    --> src/config/types.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 141 | impl RapsConfig {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 142 |     /// Check if the configuration has valid credentials
[INFO] [stdout] 143 |     pub fn has_credentials(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn is_authenticated(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn get_access_token(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Profile` is never constructed
[INFO] [stdout]    --> src/config/types.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub struct Profile {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `mark_used`, and `is_ready` are never used
[INFO] [stdout]    --> src/config/types.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl Profile {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 182 |     /// Create a new profile
[INFO] [stdout] 183 |     pub fn new(name: String, description: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn mark_used(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn is_ready(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValidationResult` is never constructed
[INFO] [stdout]    --> src/config/types.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub struct ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_error`, `add_warning`, and `has_issues` are never used
[INFO] [stdout]    --> src/config/types.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | impl ValidationResult {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 217 |     /// Create a new validation result
[INFO] [stdout] 218 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn add_error(&mut self, error: String) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn add_warning(&mut self, warning: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn has_issues(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnvVars` is never constructed
[INFO] [stdout]    --> src/config/types.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub struct EnvVars;
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated constants are never used
[INFO] [stdout]    --> src/config/types.rs:253:15
[INFO] [stdout]     |
[INFO] [stdout] 252 | impl EnvVars {
[INFO] [stdout]     | ------------ associated constants in this implementation
[INFO] [stdout] 253 |     pub const CLIENT_ID: &'static str = "APS_CLIENT_ID";
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 254 |     pub const CLIENT_SECRET: &'static str = "APS_CLIENT_SECRET";
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 255 |     pub const CALLBACK_URL: &'static str = "APS_CALLBACK_URL";
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 256 |     pub const ENVIRONMENT: &'static str = "APS_ENVIRONMENT";
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 257 |     pub const BASE_URL: &'static str = "APS_BASE_URL";
[INFO] [stdout]     |               ^^^^^^^^
[INFO] [stdout] 258 |     pub const ACCESS_TOKEN: &'static str = "APS_ACCESS_TOKEN";
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 259 |     pub const PROFILE: &'static str = "RAPS_PROFILE";
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 260 |     pub const CONFIG_DIR: &'static str = "RAPS_CONFIG_DIR";
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 261 |     pub const LOG_LEVEL: &'static str = "RAPS_LOG_LEVEL";
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigPaths` is never constructed
[INFO] [stdout]    --> src/config/types.rs:265:12
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub struct ConfigPaths;
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/config/types.rs:269:15
[INFO] [stdout]     |
[INFO] [stdout] 267 | impl ConfigPaths {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 268 |     /// Default RAPS configuration directory name
[INFO] [stdout] 269 |     pub const CONFIG_DIR_NAME: &'static str = ".raps";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub const RAPS_CONFIG_FILE: &'static str = "config.toml";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub const DEMO_CONFIG_FILE: &'static str = "demo.toml";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub const PROFILES_DIR: &'static str = "profiles";
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub const CREDENTIALS_FILE: &'static str = "credentials.toml";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn default_config_dir() -> Result<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn raps_config_file() -> Result<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn demo_config_file() -> Result<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn profiles_dir() -> Result<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     pub fn credentials_file() -> Result<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoManager` is never constructed
[INFO] [stdout]   --> src/demo/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct DemoManager {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/demo/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl DemoManager {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 25 |     /// Create a new demo manager instance
[INFO] [stdout] 26 |     pub fn new() -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn with_workflows_dir<P: Into<PathBuf>>(path: P) -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn initialize(&mut self) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn get_workflows(&self) -> &[WorkflowMetadata] {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn get_workflow(&self, id: &WorkflowId) -> Option<&WorkflowDefinition> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn get_workflows_by_category(&self) -> HashMap<String, Vec<&WorkflowMetadata>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceManager` is never constructed
[INFO] [stdout]   --> src/resource/mod.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ResourceManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_state_file`, `default_state_file`, `tracker`, and `tracker_mut` are never used
[INFO] [stdout]   --> src/resource/mod.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl ResourceManager {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 23 |     /// Create a new resource manager instance
[INFO] [stdout] 24 |     pub fn new() -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn with_state_file<P: Into<PathBuf>>(state_file: P) -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fn default_state_file() -> Result<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn tracker(&self) -> &FileBasedResourceTracker {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn tracker_mut(&mut self) -> &mut FileBasedResourceTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CleanupMode` is never used
[INFO] [stdout]   --> src/resource/cleanup.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum CleanupMode {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CleanupStrategy` is never used
[INFO] [stdout]   --> src/resource/cleanup.rs:34:10
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub enum CleanupStrategy {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InterruptedWorkflowCleanup` is never constructed
[INFO] [stdout]   --> src/resource/cleanup.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct InterruptedWorkflowCleanup {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CleanupOrchestrationResult` is never constructed
[INFO] [stdout]   --> src/resource/cleanup.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct CleanupOrchestrationResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CleanupOrchestrator` is never constructed
[INFO] [stdout]   --> src/resource/cleanup.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct CleanupOrchestrator<T: ResourceTracker + CostEstimator> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/resource/cleanup.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl<T: ResourceTracker + CostEstimator + Send + Sync> CleanupOrchestrator<T> {
[INFO] [stdout]     | ----------------------------------------------------------------------------- associated items in this implementation
[INFO] [stdout]  91 |     /// Create a new cleanup orchestrator
[INFO] [stdout]  92 |     pub fn new(tracker: Arc<RwLock<T>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn create_default_policies() -> HashMap<String, CleanupPolicy> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn set_workflow_strategy(&mut self, workflow_id: WorkflowId, strategy: CleanupStrategy) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn get_workflow_strategy(&self, workflow_id: &WorkflowId) -> CleanupStrategy {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub async fn cleanup_completed_workflow(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     async fn execute_immediate_cleanup(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     async fn generate_manual_cleanup_instructions(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     async fn execute_interactive_cleanup(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     async fn execute_dry_run_cleanup(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     async fn schedule_cleanup(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     async fn execute_age_based_cleanup(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 427 |     async fn execute_cost_based_cleanup(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub async fn handle_interrupted_workflow(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 527 |     pub fn get_interrupted_workflows(&self) -> Vec<&InterruptedWorkflowCleanup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 532 |     pub fn clear_interrupted_workflow(&mut self, workflow_id: &WorkflowId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 537 |     fn get_resource_policy(&self, resource_type: &ResourceType) -> CleanupPolicy {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     pub async fn orchestrate_cleanup(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ResourceTypeExt` is never used
[INFO] [stdout]    --> src/resource/cleanup.rs:608:7
[INFO] [stdout]     |
[INFO] [stdout] 608 | trait ResourceTypeExt {
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TrackedResourceExt` is never used
[INFO] [stdout]    --> src/resource/cleanup.rs:628:7
[INFO] [stdout]     |
[INFO] [stdout] 628 | trait TrackedResourceExt {
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ResourceTracker` is never used
[INFO] [stdout]   --> src/resource/tracker.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait ResourceTracker {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CostEstimator` is never used
[INFO] [stdout]   --> src/resource/tracker.rs:45:11
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub trait CostEstimator {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileBasedResourceTracker` is never constructed
[INFO] [stdout]   --> src/resource/tracker.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct FileBasedResourceTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrackerState` is never constructed
[INFO] [stdout]   --> src/resource/tracker.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | struct TrackerState {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `default_cleanup_policies`, `apply_demo_naming`, `get_cleanup_policy`, `should_cleanup_resource`, and `generate_cleanup_commands` are never used
[INFO] [stdout]    --> src/resource/tracker.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  84 | impl FileBasedResourceTracker {
[INFO] [stdout]     | ----------------------------- associated items in this implementation
[INFO] [stdout]  85 |     /// Create a new resource tracker with the specified state file
[INFO] [stdout]  86 |     pub fn new<P: AsRef<Path>>(state_file: P) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn default_cleanup_policies() -> HashMap<String, CleanupPolicy> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn apply_demo_naming(&self, resource_type: &ResourceType, base_name: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn get_cleanup_policy(&self, resource_type: &ResourceType) -> CleanupPolicy {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn should_cleanup_resource(&self, resource: &TrackedResource) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn generate_cleanup_commands(&self, resource: &TrackedResource) -> Vec<RapsCommand> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ResourceType` is never used
[INFO] [stdout]   --> src/resource/types.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum ResourceType {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrackedResource` is never constructed
[INFO] [stdout]   --> src/resource/types.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TrackedResource {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `has_demo_naming`, `age`, `add_tag`, and `estimated_monthly_cost` are never used
[INFO] [stdout]    --> src/resource/types.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  84 | impl TrackedResource {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  85 |     /// Create a new tracked resource
[INFO] [stdout]  86 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn has_demo_naming(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn age(&self) -> Duration {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn add_tag(&mut self, key: String, value: String) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn estimated_monthly_cost(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CleanupPolicy` is never used
[INFO] [stdout]    --> src/resource/types.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum CleanupPolicy {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CleanupResult` is never constructed
[INFO] [stdout]    --> src/resource/types.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub struct CleanupResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CostSummary` is never constructed
[INFO] [stdout]    --> src/resource/types.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub struct CostSummary {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_resource`, and `exceeds_threshold` are never used
[INFO] [stdout]    --> src/resource/types.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl CostSummary {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 191 |     /// Create a new cost summary
[INFO] [stdout] 192 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn add_resource(&mut self, resource: &TrackedResource) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn exceeds_threshold(&self, threshold: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceNaming` is never constructed
[INFO] [stdout]    --> src/resource/types.rs:236:12
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub struct ResourceNaming;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `demo_bucket_name`, `demo_object_key`, `demo_folder_name`, `demo_photoscene_name`, and `is_demo_name` are never used
[INFO] [stdout]    --> src/resource/types.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | impl ResourceNaming {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] 239 |     /// Generate a demo bucket name
[INFO] [stdout] 240 |     pub fn demo_bucket_name() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn demo_object_key(original_name: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn demo_folder_name(base_name: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn demo_photoscene_name() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn is_demo_name(name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_selected_workflow` is never used
[INFO] [stdout]     --> src/tui/mod.rs:1317:8
[INFO] [stdout]      |
[INFO] [stdout]  120 | impl TuiApp {
[INFO] [stdout]      | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1317 |     fn get_selected_workflow(&self) -> Option<&crate::workflow::WorkflowMetadata> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 |     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout]    |     -------------- ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` 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] 28 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 28 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:32:17
[INFO] [stdout]    |
[INFO] [stdout] 32 |     Instruction(String),
[INFO] [stdout]    |     ----------- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` 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] 32 -     Instruction(String),
[INFO] [stdout] 32 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     RunCommand(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]   --> src/tui/preflight.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 44 |     /// Get a short summary string for display
[INFO] [stdout] 45 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_assets_dir`, `get_asset_status`, and `download_workflow_assets` are never used
[INFO] [stdout]    --> src/tui/preflight.rs:88:12
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |     pub fn download_workflow_assets(&self, workflow: &WorkflowMetadata) -> anyhow::Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_duration` is never used
[INFO] [stdout]  --> src/utils/serde_helpers.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn serialize_duration<S>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error>
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deserialize_duration` is never used
[INFO] [stdout]   --> src/utils/serde_helpers.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn deserialize_duration<'de, D>(deserializer: D) -> Result<Duration, D::Error>
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorkflowEngine` is never constructed
[INFO] [stdout]   --> src/workflow/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct WorkflowEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/workflow/mod.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl WorkflowEngine {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 31 |     /// Create a new workflow engine instance
[INFO] [stdout] 32 |     pub fn new<P: AsRef<std::path::Path>>(workflows_dir: P) -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn get_workflows(&self) -> &std::collections::HashMap<WorkflowId, WorkflowDefinition> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn get_workflow(&self, id: &WorkflowId) -> Option<&WorkflowDefinition> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub async fn execute(&self, workflow_id: &WorkflowId, options: ExecutionOptions) -> Result<ExecutionHandle> {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn executor(&self) -> &Arc<WorkflowExecutor> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn take_update_receiver(&mut self) -> Option<mpsc::UnboundedReceiver<ExecutionUpdate>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `duration` is never read
[INFO] [stdout]   --> src/workflow/client.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct CommandResult {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub duration: Duration,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CommandResult` 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 `current_operation`, `progress_percent`, `estimated_remaining`, and `status_info` are never read
[INFO] [stdout]    --> src/workflow/client.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct CommandProgress {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 101 |     /// Current step or operation being performed
[INFO] [stdout] 102 |     pub current_operation: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 103 |     /// Progress percentage (0.0 to 1.0)
[INFO] [stdout] 104 |     pub progress_percent: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 105 |     /// Estimated time remaining
[INFO] [stdout] 106 |     pub estimated_remaining: Option<Duration>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 107 |     /// Additional status information
[INFO] [stdout] 108 |     pub status_info: HashMap<String, String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CommandProgress` 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 `progress_callback` is never read
[INFO] [stdout]    --> src/workflow/client.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct RapsClient {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 116 |     progress_callback: Option<Box<dyn Fn(CommandProgress) + Send + Sync>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_config`, `with_progress_callback`, `execute_with_progress`, `execute_translation_with_progress`, and `config` are never used
[INFO] [stdout]    --> src/workflow/client.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl RapsClient {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn with_config(config: RapsClientConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn with_progress_callback<F>(mut self, callback: F) -> Self
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub async fn execute_with_progress(&self, command: &RapsCommand) -> Result<CommandResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     async fn execute_translation_with_progress(&self, command: &RapsCommand) -> Result<CommandResult> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn config(&self) -> &RapsClientConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValidationResult` is never constructed
[INFO] [stdout]   --> src/workflow/discovery.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ValidationResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `success`, `with_errors`, and `with_warning` are never used
[INFO] [stdout]   --> src/workflow/discovery.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl ValidationResult {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 42 |     /// Create a successful validation result
[INFO] [stdout] 43 |     pub fn success() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn with_errors(errors: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn with_warning(mut self, warning: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate_workflow`, `validate_command`, `get_workflow_dependencies`, `resolve_dependencies_recursive`, `get_workflows_by_category`, and `refresh` are never used
[INFO] [stdout]    --> src/workflow/discovery.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl WorkflowDiscovery {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn validate_workflow(&self, workflow_id: &WorkflowId) -> Result<ValidationResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     fn validate_command(&self, command: &RapsCommand) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn get_workflow_dependencies(&self, workflow_id: &WorkflowId) -> Result<Vec<WorkflowId>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn resolve_dependencies_recursive(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn get_workflows_by_category(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     Started {
[INFO] [stdout]    |     ------- field in this variant
[INFO] [stdout] 54 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     StepStarted {
[INFO] [stdout]    |     ----------- field in this variant
[INFO] [stdout] 59 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     StepCompleted {
[INFO] [stdout]    |     ------------- field in this variant
[INFO] [stdout] 70 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` and `next_step` are never read
[INFO] [stdout]   --> src/workflow/executor.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     Paused {
[INFO] [stdout]    |     ------ fields in this variant
[INFO] [stdout] 75 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 76 |         next_step: ExecutionStep,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     Completed {
[INFO] [stdout]    |     --------- field in this variant
[INFO] [stdout] 80 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |     Failed {
[INFO] [stdout]    |     ------ field in this variant
[INFO] [stdout] 85 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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: variants `StepProgress` and `Cancelled` are never constructed
[INFO] [stdout]   --> src/workflow/executor.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub enum ExecutionUpdate {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 63 |     StepProgress {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     Cancelled { handle: ExecutionHandle },
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `failed_step`, `command_result`, and `is_recoverable` are never read
[INFO] [stdout]    --> src/workflow/executor.rs:98:9
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct ExecutionError {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub failed_step: Option<StepId>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]  99 |     /// RAPS CLI command result (if applicable)
[INFO] [stdout] 100 |     pub command_result: Option<CommandResult>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub is_recoverable: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExecutionError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_suggestion` and `recoverable` are never used
[INFO] [stdout]    --> src/workflow/executor.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl ExecutionError {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn with_suggestion(mut self, suggestion: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn recoverable(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_config`, `get_execution_progress`, `cancel_execution`, `resume_execution`, and `estimate_remaining_time` are never used
[INFO] [stdout]    --> src/workflow/executor.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | impl WorkflowExecutor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn with_config(config: RapsClientConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub async fn get_execution_progress(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub async fn cancel_execution(&self, handle: &ExecutionHandle) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub async fn resume_execution(&self, handle: &ExecutionHandle) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 705 |     fn estimate_remaining_time(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `workflow_id`, `environment`, `temp_dir`, and `start_time` are never read
[INFO] [stdout]    --> src/workflow/types.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub struct ExecutionContext {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 187 |     /// Workflow being executed
[INFO] [stdout] 188 |     pub workflow_id: WorkflowId,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub environment: HashMap<String, String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 193 |     /// Temporary directory for this execution
[INFO] [stdout] 194 |     pub temp_dir: PathBuf,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 195 |     /// Start time of execution
[INFO] [stdout] 196 |     pub start_time: DateTime<Utc>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExecutionContext` 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 `ExecutionProgress` is never constructed
[INFO] [stdout]    --> src/workflow/types.rs:415:12
[INFO] [stdout]     |
[INFO] [stdout] 415 | pub struct ExecutionProgress {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label_style`
[INFO] [stdout]    --> src/tui/flowchart.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let label_style = Style::default().fg(Color::White).add_modifier(Modifier::DIM);
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_label_style`
[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/workflow/discovery.rs:543:13
[INFO] [stdout]     |
[INFO] [stdout] 543 |         let mut discovery = WorkflowDiscovery::new(temp_dir.path()).unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `total_size_mb` is never used
[INFO] [stdout]    --> src/assets/mod.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout]  93 | impl AssetRegistry {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn total_size_mb(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_progress`, `download_category`, `download_all`, and `status` are never used
[INFO] [stdout]    --> src/assets/mod.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | impl AssetDownloader {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn with_progress<F>(mut self, callback: F) -> Self
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn download_category(&self, category: AssetCategory) -> Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn download_all(&self) -> Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn status(&self) -> AssetStatus {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AssetStatus` is never constructed
[INFO] [stdout]    --> src/assets/mod.rs:420:12
[INFO] [stdout]     |
[INFO] [stdout] 420 | pub struct AssetStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_complete`, `missing_size_mb`, and `summary` are never used
[INFO] [stdout]    --> src/assets/mod.rs:428:12
[INFO] [stdout]     |
[INFO] [stdout] 426 | impl AssetStatus {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 427 |     /// Check if all assets are downloaded
[INFO] [stdout] 428 |     pub fn is_complete(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn missing_size_mb(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 438 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_attribution` is never used
[INFO] [stdout]    --> src/assets/mod.rs:449:8
[INFO] [stdout]     |
[INFO] [stdout] 449 | pub fn print_attribution() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check_connectivity` is never used
[INFO] [stdout]   --> src/config/auth.rs:92:18
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl AuthValidator {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub async fn check_connectivity(&self) -> Result<bool> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenRefreshResponse` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:327:8
[INFO] [stdout]     |
[INFO] [stdout] 327 | struct TokenRefreshResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenRefresher` is never constructed
[INFO] [stdout]    --> src/config/auth.rs:338:12
[INFO] [stdout]     |
[INFO] [stdout] 338 | pub struct TokenRefresher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `refresh_token` is never used
[INFO] [stdout]    --> src/config/auth.rs:342:18
[INFO] [stdout]     |
[INFO] [stdout] 340 | impl TokenRefresher {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 341 |     /// Attempt to refresh an access token using the refresh token
[INFO] [stdout] 342 |     pub async fn refresh_token(config: &RapsConfig) -> Result<Option<AuthTokens>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `auth_validator` is never read
[INFO] [stdout]   --> src/config/manager.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct ConfigManager {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     auth_validator: AuthValidator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConfigManager` 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/config/manager.rs:272:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl ConfigManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn raps_config(&self) -> &RapsConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn demo_config(&self) -> &DemoConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn profiles(&self) -> &HashMap<String, Profile> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn validate(&self) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn is_ready(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub async fn save(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 395 |     pub async fn validate_and_refresh_auth(&mut self) -> Result<ValidationResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 426 |     pub fn get_setup_instructions(&self) -> SetupInstructions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn get_troubleshooting_guide(&self, validation_result: &ValidationResult) -> TroubleshootingGuide {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 436 |     pub async fn check_aps_connectivity(&self) -> Result<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 441 |     pub async fn validate_auth_only(&self) -> Result<ValidationResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 446 |     pub fn update_auth_tokens(&mut self, tokens: AuthTokens) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub fn clear_auth_tokens(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     pub fn is_auth_healthy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |     pub async fn delete_profile(&mut self, name: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoManager` is never constructed
[INFO] [stdout]   --> src/demo/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct DemoManager {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/demo/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl DemoManager {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 25 |     /// Create a new demo manager instance
[INFO] [stdout] 26 |     pub fn new() -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn with_workflows_dir<P: Into<PathBuf>>(path: P) -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn initialize(&mut self) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn get_workflows(&self) -> &[WorkflowMetadata] {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn get_workflow(&self, id: &WorkflowId) -> Option<&WorkflowDefinition> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn get_workflows_by_category(&self) -> HashMap<String, Vec<&WorkflowMetadata>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceManager` is never constructed
[INFO] [stdout]   --> src/resource/mod.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ResourceManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_state_file`, `default_state_file`, `tracker`, and `tracker_mut` are never used
[INFO] [stdout]   --> src/resource/mod.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl ResourceManager {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 23 |     /// Create a new resource manager instance
[INFO] [stdout] 24 |     pub fn new() -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn with_state_file<P: Into<PathBuf>>(state_file: P) -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fn default_state_file() -> Result<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn tracker(&self) -> &FileBasedResourceTracker {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn tracker_mut(&mut self) -> &mut FileBasedResourceTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_interrupted_workflows` and `clear_interrupted_workflow` are never used
[INFO] [stdout]    --> src/resource/cleanup.rs:527:12
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl<T: ResourceTracker + CostEstimator + Send + Sync> CleanupOrchestrator<T> {
[INFO] [stdout]     | ----------------------------------------------------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 527 |     pub fn get_interrupted_workflows(&self) -> Vec<&InterruptedWorkflowCleanup> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 532 |     pub fn clear_interrupted_workflow(&mut self, workflow_id: &WorkflowId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `track_actual_cost` and `exceeds_cost_threshold` are never used
[INFO] [stdout]   --> src/resource/tracker.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub trait CostEstimator {
[INFO] [stdout]    |           ------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 50 |     fn track_actual_cost(&mut self, resource_id: &ResourceId, actual_cost: f64);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     fn exceeds_cost_threshold(&self, workflow_id: &WorkflowId, threshold: f64) -> Result<bool>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_tag` is never used
[INFO] [stdout]    --> src/resource/types.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout]  84 | impl TrackedResource {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn add_tag(&mut self, key: String, value: String) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `exceeds_threshold` is never used
[INFO] [stdout]    --> src/resource/types.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl CostSummary {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn exceeds_threshold(&self, threshold: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_selected_workflow` is never used
[INFO] [stdout]     --> src/tui/mod.rs:1317:8
[INFO] [stdout]      |
[INFO] [stdout]  120 | impl TuiApp {
[INFO] [stdout]      | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1317 |     fn get_selected_workflow(&self) -> Option<&crate::workflow::WorkflowMetadata> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 |     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout]    |     -------------- ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` 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] 28 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 28 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:32:17
[INFO] [stdout]    |
[INFO] [stdout] 32 |     Instruction(String),
[INFO] [stdout]    |     ----------- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` 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] 32 -     Instruction(String),
[INFO] [stdout] 32 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     RunCommand(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]   --> src/tui/preflight.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 44 |     /// Get a short summary string for display
[INFO] [stdout] 45 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_assets_dir`, `get_asset_status`, and `download_workflow_assets` are never used
[INFO] [stdout]    --> src/tui/preflight.rs:88:12
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |     pub fn download_workflow_assets(&self, workflow: &WorkflowMetadata) -> anyhow::Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_duration` is never used
[INFO] [stdout]  --> src/utils/serde_helpers.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn serialize_duration<S>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error>
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deserialize_duration` is never used
[INFO] [stdout]   --> src/utils/serde_helpers.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn deserialize_duration<'de, D>(deserializer: D) -> Result<Duration, D::Error>
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorkflowEngine` is never constructed
[INFO] [stdout]   --> src/workflow/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct WorkflowEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/workflow/mod.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl WorkflowEngine {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 31 |     /// Create a new workflow engine instance
[INFO] [stdout] 32 |     pub fn new<P: AsRef<std::path::Path>>(workflows_dir: P) -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn get_workflows(&self) -> &std::collections::HashMap<WorkflowId, WorkflowDefinition> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn get_workflow(&self, id: &WorkflowId) -> Option<&WorkflowDefinition> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub async fn execute(&self, workflow_id: &WorkflowId, options: ExecutionOptions) -> Result<ExecutionHandle> {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn executor(&self) -> &Arc<WorkflowExecutor> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn take_update_receiver(&mut self) -> Option<mpsc::UnboundedReceiver<ExecutionUpdate>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `duration` is never read
[INFO] [stdout]   --> src/workflow/client.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct CommandResult {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub duration: Duration,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CommandResult` 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 `current_operation`, `progress_percent`, `estimated_remaining`, and `status_info` are never read
[INFO] [stdout]    --> src/workflow/client.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct CommandProgress {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 101 |     /// Current step or operation being performed
[INFO] [stdout] 102 |     pub current_operation: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 103 |     /// Progress percentage (0.0 to 1.0)
[INFO] [stdout] 104 |     pub progress_percent: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 105 |     /// Estimated time remaining
[INFO] [stdout] 106 |     pub estimated_remaining: Option<Duration>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 107 |     /// Additional status information
[INFO] [stdout] 108 |     pub status_info: HashMap<String, String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CommandProgress` 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 `progress_callback` is never read
[INFO] [stdout]    --> src/workflow/client.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct RapsClient {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 116 |     progress_callback: Option<Box<dyn Fn(CommandProgress) + Send + Sync>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_config`, `with_progress_callback`, `execute_with_progress`, `execute_translation_with_progress`, and `config` are never used
[INFO] [stdout]    --> src/workflow/client.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl RapsClient {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn with_config(config: RapsClientConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn with_progress_callback<F>(mut self, callback: F) -> Self
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub async fn execute_with_progress(&self, command: &RapsCommand) -> Result<CommandResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     async fn execute_translation_with_progress(&self, command: &RapsCommand) -> Result<CommandResult> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn config(&self) -> &RapsClientConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_workflows_by_category` and `refresh` are never used
[INFO] [stdout]    --> src/workflow/discovery.rs:348:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl WorkflowDiscovery {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn get_workflows_by_category(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     Started {
[INFO] [stdout]    |     ------- field in this variant
[INFO] [stdout] 54 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     StepStarted {
[INFO] [stdout]    |     ----------- field in this variant
[INFO] [stdout] 59 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     StepCompleted {
[INFO] [stdout]    |     ------------- field in this variant
[INFO] [stdout] 70 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` and `next_step` are never read
[INFO] [stdout]   --> src/workflow/executor.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     Paused {
[INFO] [stdout]    |     ------ fields in this variant
[INFO] [stdout] 75 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 76 |         next_step: ExecutionStep,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     Completed {
[INFO] [stdout]    |     --------- field in this variant
[INFO] [stdout] 80 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `handle` is never read
[INFO] [stdout]   --> src/workflow/executor.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |     Failed {
[INFO] [stdout]    |     ------ field in this variant
[INFO] [stdout] 85 |         handle: ExecutionHandle,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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: variants `StepProgress` and `Cancelled` are never constructed
[INFO] [stdout]   --> src/workflow/executor.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub enum ExecutionUpdate {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 63 |     StepProgress {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     Cancelled { handle: ExecutionHandle },
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionUpdate` 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 `failed_step`, `command_result`, and `is_recoverable` are never read
[INFO] [stdout]    --> src/workflow/executor.rs:98:9
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct ExecutionError {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub failed_step: Option<StepId>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]  99 |     /// RAPS CLI command result (if applicable)
[INFO] [stdout] 100 |     pub command_result: Option<CommandResult>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub is_recoverable: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExecutionError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_suggestion` and `recoverable` are never used
[INFO] [stdout]    --> src/workflow/executor.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl ExecutionError {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn with_suggestion(mut self, suggestion: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn recoverable(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_config`, `get_execution_progress`, `cancel_execution`, `resume_execution`, and `estimate_remaining_time` are never used
[INFO] [stdout]    --> src/workflow/executor.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | impl WorkflowExecutor {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn with_config(config: RapsClientConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub async fn get_execution_progress(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub async fn cancel_execution(&self, handle: &ExecutionHandle) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub async fn resume_execution(&self, handle: &ExecutionHandle) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 705 |     fn estimate_remaining_time(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `workflow_id`, `environment`, `temp_dir`, and `start_time` are never read
[INFO] [stdout]    --> src/workflow/types.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub struct ExecutionContext {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 187 |     /// Workflow being executed
[INFO] [stdout] 188 |     pub workflow_id: WorkflowId,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub environment: HashMap<String, String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 193 |     /// Temporary directory for this execution
[INFO] [stdout] 194 |     pub temp_dir: PathBuf,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 195 |     /// Start time of execution
[INFO] [stdout] 196 |     pub start_time: DateTime<Utc>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExecutionContext` 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 `ExecutionProgress` is never constructed
[INFO] [stdout]    --> src/workflow/types.rs:415:12
[INFO] [stdout]     |
[INFO] [stdout] 415 | pub struct ExecutionProgress {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `thiserror`
[INFO] [stderr]   --> Cargo.toml:18:1
[INFO] [stderr]    |
[INFO] [stderr] 18 | thiserror = "1.0"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `thiserror`
[INFO] [stderr] warning: unused dependency `tracing-appender`
[INFO] [stderr]   --> Cargo.toml:21:1
[INFO] [stderr]    |
[INFO] [stderr] 21 | tracing-appender = "0.2"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tracing-appender`
[INFO] [stderr] warning: `raps-demo-workflows` (manifest) generated 2 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 57.90s
[INFO] running `Command { std: "docker" "inspect" "c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690", kill_on_drop: false }`
[INFO] [stdout] c006b3173ec7306a4bc08dde4d0ecbb3aca822fa9d4d15b60a07ffddb266a690
